solifyn 1.0.0 → 1.0.5
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/README.md +20 -7
- data/docs/BalanceApi.md +1 -1
- data/docs/CheckoutApi.md +1 -1
- data/docs/CheckoutLinksApi.md +1 -1
- data/docs/CheckoutSessionDetailsDto.md +3 -1
- data/docs/CollectionProductDto.md +12 -0
- data/docs/CollectionsApi.md +1 -1
- data/docs/CustomersApi.md +1 -1
- data/docs/DefaultApi.md +285 -1
- data/docs/DeveloperApi.md +1 -1
- data/docs/DigitalFileApi.md +1 -1
- data/docs/DiscordIntegrationApi.md +135 -0
- data/docs/DiscordRolesResponseDto.md +24 -0
- data/docs/DiscountsApi.md +1 -1
- data/docs/DisputesApi.md +1 -1
- data/docs/EntitlementGrantResponseDto.md +54 -0
- data/docs/EntitlementGrantsApi.md +289 -0
- data/docs/GitHubIntegrationApi.md +145 -0
- data/docs/GithubReposResponseDto.md +22 -0
- data/docs/LicenseApi.md +1 -1
- data/docs/LicenseKeysApi.md +1 -1
- data/docs/LicenseKeysClientApi.md +1 -1
- data/docs/MetersApi.md +1 -1
- data/docs/OrdersApi.md +1 -1
- data/docs/Product.md +12 -0
- data/docs/ProductAddOnsApi.md +1 -1
- data/docs/ProductCreate.md +12 -0
- data/docs/ProductUpdate.md +12 -0
- data/docs/ProductsApi.md +1 -1
- data/docs/RefundRequestsApi.md +1 -1
- data/docs/RefundsChargebacksApi.md +1 -1
- data/docs/SubscriptionsApi.md +1 -1
- data/docs/SyncLoginDto.md +18 -0
- data/docs/WebhookApi.md +1 -1
- data/docs/WebhookEndpointApi.md +55 -10
- data/docs/WebhookEntitlementGrantPayload.md +44 -0
- data/git_push.sh +2 -2
- data/lib/solifyn/api/default_api.rb +248 -0
- data/lib/solifyn/api/{partner_api.rb → discord_integration_api.rb} +32 -19
- data/lib/solifyn/api/entitlement_grants_api.rb +271 -0
- data/lib/solifyn/api/git_hub_integration_api.rb +137 -0
- data/lib/solifyn/api/webhook_endpoint_api.rb +9 -9
- data/lib/solifyn/configuration.rb +4 -4
- data/lib/solifyn/models/checkout_session_details_dto.rb +16 -4
- data/lib/solifyn/models/collection_product_dto.rb +115 -1
- data/lib/solifyn/models/{payout_method.rb → discord_roles_response_dto.rb} +41 -34
- data/lib/solifyn/models/{withdrawal.rb → entitlement_grant_response_dto.rb} +149 -109
- data/lib/solifyn/models/{payout_account.rb → github_repos_response_dto.rb} +31 -24
- data/lib/solifyn/models/product.rb +115 -1
- data/lib/solifyn/models/product_create.rb +77 -1
- data/lib/solifyn/models/product_update.rb +77 -1
- data/lib/solifyn/models/{payout_method_list.rb → sync_login_dto.rb} +15 -17
- data/lib/solifyn/models/{payout_verification.rb → webhook_entitlement_grant_payload.rb} +118 -41
- data/lib/solifyn/version.rb +1 -1
- data/lib/solifyn.rb +8 -0
- data/spec/api/checkout_api_spec.rb +12 -0
- data/spec/api/default_api_spec.rb +59 -11
- data/spec/api/developer_api_spec.rb +52 -29
- data/spec/api/{partner_api_spec.rb → discord_integration_api_spec.rb} +16 -11
- data/spec/api/entitlement_grants_api_spec.rb +83 -0
- data/spec/api/git_hub_integration_api_spec.rb +58 -0
- data/spec/models/checkout_session_details_dto_spec.rb +6 -0
- data/spec/models/collection_product_dto_spec.rb +28 -0
- data/spec/models/{payout_method_spec.rb → discord_roles_response_dto_spec.rb} +9 -9
- data/spec/models/{withdrawal_spec.rb → entitlement_grant_response_dto_spec.rb} +18 -18
- data/spec/models/{payout_account_spec.rb → github_repos_response_dto_spec.rb} +8 -8
- data/spec/models/order_spec.rb +6 -0
- data/spec/models/product_create_spec.rb +28 -0
- data/spec/models/product_spec.rb +28 -0
- data/spec/models/product_update_spec.rb +28 -0
- data/spec/models/{business_create_spec.rb → sync_login_dto_spec.rb} +7 -7
- data/spec/models/{business_spec.rb → webhook_entitlement_grant_payload_spec.rb} +17 -53
- metadata +162 -254
- data/docs/AffiliateApi.md +0 -845
- data/docs/BillingApi.md +0 -68
- data/docs/BrandsApi.md +0 -286
- data/docs/Business.md +0 -56
- data/docs/BusinessCreate.md +0 -18
- data/docs/BusinessFullCreate.md +0 -26
- data/docs/BusinessFullCreateResponse.md +0 -20
- data/docs/BusinessesApi.md +0 -350
- data/docs/ChatApi.md +0 -246
- data/docs/CommunityApi.md +0 -497
- data/docs/PartnerApi.md +0 -125
- data/docs/PayoutAccessToken.md +0 -20
- data/docs/PayoutAccount.md +0 -22
- data/docs/PayoutAccountLink.md +0 -20
- data/docs/PayoutMethod.md +0 -24
- data/docs/PayoutMethodList.md +0 -18
- data/docs/PayoutVerification.md +0 -24
- data/docs/PayoutVerificationList.md +0 -18
- data/docs/PayoutsApi.md +0 -579
- data/docs/TicketApi.md +0 -318
- data/docs/UserPage.md +0 -26
- data/docs/UserProfileThemesApi.md +0 -345
- data/docs/UserSettings.md +0 -34
- data/docs/UserSettingsUpdate.md +0 -76
- data/docs/UserStats.md +0 -20
- data/docs/UserTheme.md +0 -26
- data/docs/UserThemeUpdate.md +0 -22
- data/docs/WhopApiKeysRotation.md +0 -18
- data/docs/Withdrawal.md +0 -46
- data/docs/WithdrawalCreate.md +0 -22
- data/docs/WithdrawalList.md +0 -20
- data/lib/solifyn/api/affiliate_api.rb +0 -760
- data/lib/solifyn/api/billing_api.rb +0 -77
- data/lib/solifyn/api/brands_api.rb +0 -284
- data/lib/solifyn/api/businesses_api.rb +0 -338
- data/lib/solifyn/api/chat_api.rb +0 -232
- data/lib/solifyn/api/community_api.rb +0 -466
- data/lib/solifyn/api/payouts_api.rb +0 -520
- data/lib/solifyn/api/ticket_api.rb +0 -328
- data/lib/solifyn/api/user_profile_themes_api.rb +0 -313
- data/lib/solifyn/models/business.rb +0 -482
- data/lib/solifyn/models/business_create.rb +0 -241
- data/lib/solifyn/models/business_full_create.rb +0 -288
- data/lib/solifyn/models/business_full_create_response.rb +0 -239
- data/lib/solifyn/models/payout_access_token.rb +0 -239
- data/lib/solifyn/models/payout_account_link.rb +0 -239
- data/lib/solifyn/models/payout_verification_list.rb +0 -224
- data/lib/solifyn/models/user_page.rb +0 -290
- data/lib/solifyn/models/user_settings.rb +0 -337
- data/lib/solifyn/models/user_settings_update.rb +0 -505
- data/lib/solifyn/models/user_stats.rb +0 -241
- data/lib/solifyn/models/user_theme.rb +0 -276
- data/lib/solifyn/models/user_theme_update.rb +0 -235
- data/lib/solifyn/models/whop_api_keys_rotation.rb +0 -222
- data/lib/solifyn/models/withdrawal_create.rb +0 -249
- data/lib/solifyn/models/withdrawal_list.rb +0 -241
- data/spec/api/affiliate_api_spec.rb +0 -165
- data/spec/api/billing_api_spec.rb +0 -46
- data/spec/api/brands_api_spec.rb +0 -83
- data/spec/api/businesses_api_spec.rb +0 -93
- data/spec/api/chat_api_spec.rb +0 -72
- data/spec/api/community_api_spec.rb +0 -113
- data/spec/api/payouts_api_spec.rb +0 -133
- data/spec/api/ticket_api_spec.rb +0 -86
- data/spec/api/user_profile_themes_api_spec.rb +0 -91
- data/spec/models/business_full_create_response_spec.rb +0 -42
- data/spec/models/business_full_create_spec.rb +0 -60
- data/spec/models/payout_access_token_spec.rb +0 -42
- data/spec/models/payout_account_link_spec.rb +0 -42
- data/spec/models/payout_method_list_spec.rb +0 -36
- data/spec/models/payout_verification_list_spec.rb +0 -36
- data/spec/models/payout_verification_spec.rb +0 -54
- data/spec/models/user_page_spec.rb +0 -60
- data/spec/models/user_settings_spec.rb +0 -84
- data/spec/models/user_settings_update_spec.rb +0 -210
- data/spec/models/user_stats_spec.rb +0 -42
- data/spec/models/user_theme_spec.rb +0 -60
- data/spec/models/user_theme_update_spec.rb +0 -48
- data/spec/models/whop_api_keys_rotation_spec.rb +0 -36
- data/spec/models/withdrawal_create_spec.rb +0 -48
- data/spec/models/withdrawal_list_spec.rb +0 -42
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 78b241014378a634f52440ec15647b0f6cf31c97589de6ba897ab32d15298f4b
|
|
4
|
+
data.tar.gz: 5bcef4881d2f9fd1b33f212a90248e952937e57059ab1cf86406d4389d3b1de8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f45f03bb2bc50ab2fc2c2d2989b4617339365b897d846bb14240daababa2f28b9a52494404d1dc10c1611977a70d32031f4ccd22573f5e2544462b26c5897d99
|
|
7
|
+
data.tar.gz: 78868a2d5bf123452716fc7d722514519aa54ec80d7066e531a8251a10d316170e99953af2a264e3067c21f5bcc01ccedffa6c693a921b96b289ced4645bde6f
|
data/README.md
CHANGED
|
@@ -7,7 +7,7 @@ Welcome to the Solifyn API Reference. Leverage our secure endpoints to manage pr
|
|
|
7
7
|
This SDK is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
|
|
8
8
|
|
|
9
9
|
- API version: 1.0.0
|
|
10
|
-
- Package version: 1.0.
|
|
10
|
+
- Package version: 1.0.5
|
|
11
11
|
- Generator version: 7.10.0
|
|
12
12
|
- Build package: org.openapitools.codegen.languages.RubyClientCodegen
|
|
13
13
|
|
|
@@ -24,22 +24,22 @@ gem build solifyn.gemspec
|
|
|
24
24
|
Then either install the gem locally:
|
|
25
25
|
|
|
26
26
|
```shell
|
|
27
|
-
gem install ./solifyn-1.0.
|
|
27
|
+
gem install ./solifyn-1.0.5.gem
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
(for development, run `gem install --dev ./solifyn-1.0.
|
|
30
|
+
(for development, run `gem install --dev ./solifyn-1.0.5.gem` to install the development dependencies)
|
|
31
31
|
|
|
32
32
|
or publish the gem to a gem hosting service, e.g. [RubyGems](https://rubygems.org/).
|
|
33
33
|
|
|
34
34
|
Finally add this to the Gemfile:
|
|
35
35
|
|
|
36
|
-
gem 'solifyn', '~> 1.0.
|
|
36
|
+
gem 'solifyn', '~> 1.0.5'
|
|
37
37
|
|
|
38
38
|
### Install from Git
|
|
39
39
|
|
|
40
|
-
If the Ruby gem is hosted at a git repository: https://github.com/
|
|
40
|
+
If the Ruby gem is hosted at a git repository: https://github.com/solifyn/solifyn-ruby, then add the following in the Gemfile:
|
|
41
41
|
|
|
42
|
-
gem 'solifyn', :git => 'https://github.com/
|
|
42
|
+
gem 'solifyn', :git => 'https://github.com/solifyn/solifyn-ruby.git'
|
|
43
43
|
|
|
44
44
|
### Include the Ruby code directly
|
|
45
45
|
|
|
@@ -69,7 +69,7 @@ end
|
|
|
69
69
|
|
|
70
70
|
## Documentation for API Endpoints
|
|
71
71
|
|
|
72
|
-
All URIs are relative to *
|
|
72
|
+
All URIs are relative to *https://api.solifyn.com*
|
|
73
73
|
|
|
74
74
|
Class | Method | HTTP request | Description
|
|
75
75
|
------------ | ------------- | ------------- | -------------
|
|
@@ -115,6 +115,8 @@ Class | Method | HTTP request | Description
|
|
|
115
115
|
*Solifyn::DigitalFileApi* | [**digital_file_controller_create**](docs/DigitalFileApi.md#digital_file_controller_create) | **POST** /v1/digital-files |
|
|
116
116
|
*Solifyn::DigitalFileApi* | [**digital_file_controller_find_all**](docs/DigitalFileApi.md#digital_file_controller_find_all) | **GET** /v1/digital-files |
|
|
117
117
|
*Solifyn::DigitalFileApi* | [**digital_file_controller_remove**](docs/DigitalFileApi.md#digital_file_controller_remove) | **DELETE** /v1/digital-files/{id} |
|
|
118
|
+
*Solifyn::DiscordIntegrationApi* | [**discord_get_install_url**](docs/DiscordIntegrationApi.md#discord_get_install_url) | **GET** /v1/discord/install | Get Discord Bot Installation URL
|
|
119
|
+
*Solifyn::DiscordIntegrationApi* | [**discord_list_roles**](docs/DiscordIntegrationApi.md#discord_list_roles) | **GET** /v1/discord/roles | List Guild Discord Roles
|
|
118
120
|
*Solifyn::DiscountsApi* | [**discounts_create**](docs/DiscountsApi.md#discounts_create) | **POST** /v1/discounts | Create Discount
|
|
119
121
|
*Solifyn::DiscountsApi* | [**discounts_delete**](docs/DiscountsApi.md#discounts_delete) | **DELETE** /v1/discounts/{id} | Delete Discount
|
|
120
122
|
*Solifyn::DiscountsApi* | [**discounts_get**](docs/DiscountsApi.md#discounts_get) | **GET** /v1/discounts/{id} | Retrieve Discount
|
|
@@ -127,6 +129,12 @@ Class | Method | HTTP request | Description
|
|
|
127
129
|
*Solifyn::DisputesApi* | [**disputes_submit_evidence**](docs/DisputesApi.md#disputes_submit_evidence) | **POST** /v1/transactions/disputes/{id}/submit | Submit Dispute Evidence
|
|
128
130
|
*Solifyn::DisputesApi* | [**disputes_update_evidence**](docs/DisputesApi.md#disputes_update_evidence) | **PATCH** /v1/transactions/disputes/{id}/evidence | Update Dispute Evidence
|
|
129
131
|
*Solifyn::DisputesApi* | [**disputes_upload_evidence_file**](docs/DisputesApi.md#disputes_upload_evidence_file) | **POST** /v1/transactions/disputes/upload | Upload Evidence File
|
|
132
|
+
*Solifyn::EntitlementGrantsApi* | [**entitlement_grants_get**](docs/EntitlementGrantsApi.md#entitlement_grants_get) | **GET** /v1/entitlement-grants/{id} | Retrieve Entitlement Grant
|
|
133
|
+
*Solifyn::EntitlementGrantsApi* | [**entitlement_grants_list**](docs/EntitlementGrantsApi.md#entitlement_grants_list) | **GET** /v1/entitlement-grants | List Entitlement Grants
|
|
134
|
+
*Solifyn::EntitlementGrantsApi* | [**entitlement_grants_retry**](docs/EntitlementGrantsApi.md#entitlement_grants_retry) | **POST** /v1/entitlement-grants/{id}/retry | Retry Entitlement Grant Delivery
|
|
135
|
+
*Solifyn::EntitlementGrantsApi* | [**entitlement_grants_revoke**](docs/EntitlementGrantsApi.md#entitlement_grants_revoke) | **POST** /v1/entitlement-grants/{id}/revoke | Manually Revoke Entitlement Grant
|
|
136
|
+
*Solifyn::GitHubIntegrationApi* | [**github_get_install_url**](docs/GitHubIntegrationApi.md#github_get_install_url) | **GET** /v1/github/install | Get GitHub App Installation URL
|
|
137
|
+
*Solifyn::GitHubIntegrationApi* | [**github_list_repos**](docs/GitHubIntegrationApi.md#github_list_repos) | **GET** /v1/github/repos | List Available GitHub Repositories
|
|
130
138
|
*Solifyn::LicenseApi* | [**licenses_create**](docs/LicenseApi.md#licenses_create) | **POST** /v1/licenses | Create License Key
|
|
131
139
|
*Solifyn::LicenseApi* | [**licenses_delete_instance**](docs/LicenseApi.md#licenses_delete_instance) | **DELETE** /v1/licenses/instances/{instanceId} | Force Delete Instance
|
|
132
140
|
*Solifyn::LicenseApi* | [**licenses_get**](docs/LicenseApi.md#licenses_get) | **GET** /v1/licenses/{id} | Get License Key
|
|
@@ -238,6 +246,7 @@ Class | Method | HTTP request | Description
|
|
|
238
246
|
- [Solifyn::CustomerResponseDto](docs/CustomerResponseDto.md)
|
|
239
247
|
- [Solifyn::CustomerSharedInviteResponseDto](docs/CustomerSharedInviteResponseDto.md)
|
|
240
248
|
- [Solifyn::DashboardStatsDto](docs/DashboardStatsDto.md)
|
|
249
|
+
- [Solifyn::DiscordRolesResponseDto](docs/DiscordRolesResponseDto.md)
|
|
241
250
|
- [Solifyn::Discount](docs/Discount.md)
|
|
242
251
|
- [Solifyn::DiscountCreate](docs/DiscountCreate.md)
|
|
243
252
|
- [Solifyn::DiscountUpdate](docs/DiscountUpdate.md)
|
|
@@ -250,6 +259,8 @@ Class | Method | HTTP request | Description
|
|
|
250
259
|
- [Solifyn::DisputeFileUpload](docs/DisputeFileUpload.md)
|
|
251
260
|
- [Solifyn::DisputeList](docs/DisputeList.md)
|
|
252
261
|
- [Solifyn::DisputeListMetaDto](docs/DisputeListMetaDto.md)
|
|
262
|
+
- [Solifyn::EntitlementGrantResponseDto](docs/EntitlementGrantResponseDto.md)
|
|
263
|
+
- [Solifyn::GithubReposResponseDto](docs/GithubReposResponseDto.md)
|
|
253
264
|
- [Solifyn::Instance](docs/Instance.md)
|
|
254
265
|
- [Solifyn::Invoice](docs/Invoice.md)
|
|
255
266
|
- [Solifyn::License](docs/License.md)
|
|
@@ -317,6 +328,7 @@ Class | Method | HTTP request | Description
|
|
|
317
328
|
- [Solifyn::SubscriptionUserDto](docs/SubscriptionUserDto.md)
|
|
318
329
|
- [Solifyn::SubscriptionsAction201Response](docs/SubscriptionsAction201Response.md)
|
|
319
330
|
- [Solifyn::SupportedCurrenciesResponseDto](docs/SupportedCurrenciesResponseDto.md)
|
|
331
|
+
- [Solifyn::SyncLoginDto](docs/SyncLoginDto.md)
|
|
320
332
|
- [Solifyn::UpdateCheckoutLinkDto](docs/UpdateCheckoutLinkDto.md)
|
|
321
333
|
- [Solifyn::UpdateCollectionDto](docs/UpdateCollectionDto.md)
|
|
322
334
|
- [Solifyn::UpdateCollectionProductDto](docs/UpdateCollectionProductDto.md)
|
|
@@ -327,6 +339,7 @@ Class | Method | HTTP request | Description
|
|
|
327
339
|
- [Solifyn::WebhookDeliveryResponseDto](docs/WebhookDeliveryResponseDto.md)
|
|
328
340
|
- [Solifyn::WebhookDisputePayload](docs/WebhookDisputePayload.md)
|
|
329
341
|
- [Solifyn::WebhookEndpointResponseDto](docs/WebhookEndpointResponseDto.md)
|
|
342
|
+
- [Solifyn::WebhookEntitlementGrantPayload](docs/WebhookEntitlementGrantPayload.md)
|
|
330
343
|
- [Solifyn::WebhookLicensePayload](docs/WebhookLicensePayload.md)
|
|
331
344
|
- [Solifyn::WebhookPaymentPayload](docs/WebhookPaymentPayload.md)
|
|
332
345
|
- [Solifyn::WebhookPaymentPayloadBillingAddress](docs/WebhookPaymentPayloadBillingAddress.md)
|
data/docs/BalanceApi.md
CHANGED
data/docs/CheckoutApi.md
CHANGED
data/docs/CheckoutLinksApi.md
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
| **payment_id** | **String** | Database payment transaction ID | [optional] |
|
|
16
16
|
| **checkout_url** | **String** | Checkout session redirect URL if loaded in link mode | [optional] |
|
|
17
17
|
| **product** | [**Product**](Product.md) | The details of the product being purchased | [optional] |
|
|
18
|
+
| **entitlement_grants** | **Array<Object>** | List of entitlement grants (e.g. GitHub repo invites) associated with this checkout. | [optional] |
|
|
18
19
|
|
|
19
20
|
## Example
|
|
20
21
|
|
|
@@ -32,7 +33,8 @@ instance = Solifyn::CheckoutSessionDetailsDto.new(
|
|
|
32
33
|
session_id: ch_XXXXXXXXX,
|
|
33
34
|
payment_id: pay_XXXXXXXXX,
|
|
34
35
|
checkout_url: https://solifyn.com/checkout/prod_XXXXXXXXX?checkout_id=019e56ba-9832-72ae-XXXXXXXXXXX,
|
|
35
|
-
product: null
|
|
36
|
+
product: null,
|
|
37
|
+
entitlement_grants: null
|
|
36
38
|
)
|
|
37
39
|
```
|
|
38
40
|
|
|
@@ -16,6 +16,12 @@
|
|
|
16
16
|
| **discount** | **Float** | Discount value as a percentage or fixed amount. | |
|
|
17
17
|
| **has_license_key** | **Boolean** | Indicates if the product issues a cryptographically secure software license key upon checkout completion. | |
|
|
18
18
|
| **has_digital_delivery** | **Boolean** | Whether the product includes digital file downloads upon purchase. | |
|
|
19
|
+
| **has_github_access** | **Boolean** | Whether the product includes GitHub repository access. | |
|
|
20
|
+
| **github_repo** | **String** | GitHub repository to grant access to (format: owner/repo). | |
|
|
21
|
+
| **github_permission** | **String** | GitHub collaborator permission level. | |
|
|
22
|
+
| **has_discord_access** | **Boolean** | Whether the product includes Discord role access. | |
|
|
23
|
+
| **discord_guild_id** | **String** | Discord Guild (Server) ID to grant access to. | |
|
|
24
|
+
| **discord_role_id** | **String** | Discord Role ID to assign to the user. | |
|
|
19
25
|
| **is_tax_inclusive** | **Boolean** | Whether the product price already includes applicable sales taxes. | |
|
|
20
26
|
| **billing_period** | **Integer** | The subscription billing cycle interval in days (for subscription products). | |
|
|
21
27
|
| **trial_period_days** | **Integer** | Trial duration in days for subscription products. | |
|
|
@@ -57,6 +63,12 @@ instance = Solifyn::CollectionProductDto.new(
|
|
|
57
63
|
discount: 0,
|
|
58
64
|
has_license_key: true,
|
|
59
65
|
has_digital_delivery: false,
|
|
66
|
+
has_github_access: false,
|
|
67
|
+
github_repo: solifyn/premium-app,
|
|
68
|
+
github_permission: pull,
|
|
69
|
+
has_discord_access: false,
|
|
70
|
+
discord_guild_id: 123456789012345678,
|
|
71
|
+
discord_role_id: 876543210987654321,
|
|
60
72
|
is_tax_inclusive: false,
|
|
61
73
|
billing_period: null,
|
|
62
74
|
trial_period_days: null,
|
data/docs/CollectionsApi.md
CHANGED
data/docs/CustomersApi.md
CHANGED
data/docs/DefaultApi.md
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
# Solifyn::DefaultApi
|
|
2
2
|
|
|
3
|
-
All URIs are relative to *
|
|
3
|
+
All URIs are relative to *https://api.solifyn.com*
|
|
4
4
|
|
|
5
5
|
| Method | HTTP request | Description |
|
|
6
6
|
| ------ | ------------ | ----------- |
|
|
7
7
|
| [**dispute_created_post**](DefaultApi.md#dispute_created_post) | **POST** /dispute.created | Dispute Created |
|
|
8
8
|
| [**dispute_lost_post**](DefaultApi.md#dispute_lost_post) | **POST** /dispute.lost | Dispute Lost |
|
|
9
9
|
| [**dispute_won_post**](DefaultApi.md#dispute_won_post) | **POST** /dispute.won | Dispute Won |
|
|
10
|
+
| [**entitlement_grant_created_post**](DefaultApi.md#entitlement_grant_created_post) | **POST** /entitlement_grant.created | Entitlement Grant Created |
|
|
11
|
+
| [**entitlement_grant_delivered_post**](DefaultApi.md#entitlement_grant_delivered_post) | **POST** /entitlement_grant.delivered | Entitlement Grant Delivered |
|
|
12
|
+
| [**entitlement_grant_failed_post**](DefaultApi.md#entitlement_grant_failed_post) | **POST** /entitlement_grant.failed | Entitlement Grant Failed |
|
|
13
|
+
| [**entitlement_grant_revoked_post**](DefaultApi.md#entitlement_grant_revoked_post) | **POST** /entitlement_grant.revoked | Entitlement Grant Revoked |
|
|
10
14
|
| [**license_created_post**](DefaultApi.md#license_created_post) | **POST** /license.created | License Created |
|
|
11
15
|
| [**license_revoked_post**](DefaultApi.md#license_revoked_post) | **POST** /license.revoked | License Revoked |
|
|
12
16
|
| [**payment_created_post**](DefaultApi.md#payment_created_post) | **POST** /payment.created | Payment Created |
|
|
@@ -229,6 +233,286 @@ nil (empty response body)
|
|
|
229
233
|
- **Accept**: Not defined
|
|
230
234
|
|
|
231
235
|
|
|
236
|
+
## entitlement_grant_created_post
|
|
237
|
+
|
|
238
|
+
> entitlement_grant_created_post(opts)
|
|
239
|
+
|
|
240
|
+
Entitlement Grant Created
|
|
241
|
+
|
|
242
|
+
Occurs when a new entitlement grant is created (e.g., at checkout completion if the product has GitHub access). The collaborator invitation is pending.
|
|
243
|
+
|
|
244
|
+
### Examples
|
|
245
|
+
|
|
246
|
+
```ruby
|
|
247
|
+
require 'time'
|
|
248
|
+
require 'solifyn'
|
|
249
|
+
# setup authorization
|
|
250
|
+
Solifyn.configure do |config|
|
|
251
|
+
# Configure Bearer authorization (API Key): ApiKeyAuth
|
|
252
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
api_instance = Solifyn::DefaultApi.new
|
|
256
|
+
opts = {
|
|
257
|
+
webhook_entitlement_grant_payload: # WebhookEntitlementGrantPayload |
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
begin
|
|
261
|
+
# Entitlement Grant Created
|
|
262
|
+
api_instance.entitlement_grant_created_post(opts)
|
|
263
|
+
rescue Solifyn::ApiError => e
|
|
264
|
+
puts "Error when calling DefaultApi->entitlement_grant_created_post: #{e}"
|
|
265
|
+
end
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
#### Using the entitlement_grant_created_post_with_http_info variant
|
|
269
|
+
|
|
270
|
+
This returns an Array which contains the response data (`nil` in this case), status code and headers.
|
|
271
|
+
|
|
272
|
+
> <Array(nil, Integer, Hash)> entitlement_grant_created_post_with_http_info(opts)
|
|
273
|
+
|
|
274
|
+
```ruby
|
|
275
|
+
begin
|
|
276
|
+
# Entitlement Grant Created
|
|
277
|
+
data, status_code, headers = api_instance.entitlement_grant_created_post_with_http_info(opts)
|
|
278
|
+
p status_code # => 2xx
|
|
279
|
+
p headers # => { ... }
|
|
280
|
+
p data # => nil
|
|
281
|
+
rescue Solifyn::ApiError => e
|
|
282
|
+
puts "Error when calling DefaultApi->entitlement_grant_created_post_with_http_info: #{e}"
|
|
283
|
+
end
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### Parameters
|
|
287
|
+
|
|
288
|
+
| Name | Type | Description | Notes |
|
|
289
|
+
| ---- | ---- | ----------- | ----- |
|
|
290
|
+
| **webhook_entitlement_grant_payload** | [**WebhookEntitlementGrantPayload**](WebhookEntitlementGrantPayload.md) | | [optional] |
|
|
291
|
+
|
|
292
|
+
### Return type
|
|
293
|
+
|
|
294
|
+
nil (empty response body)
|
|
295
|
+
|
|
296
|
+
### Authorization
|
|
297
|
+
|
|
298
|
+
[ApiKeyAuth](../README.md#ApiKeyAuth)
|
|
299
|
+
|
|
300
|
+
### HTTP request headers
|
|
301
|
+
|
|
302
|
+
- **Content-Type**: application/json
|
|
303
|
+
- **Accept**: Not defined
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
## entitlement_grant_delivered_post
|
|
307
|
+
|
|
308
|
+
> entitlement_grant_delivered_post(opts)
|
|
309
|
+
|
|
310
|
+
Entitlement Grant Delivered
|
|
311
|
+
|
|
312
|
+
Occurs when the customer successfully connects their GitHub account and the collaborator invitation is successfully delivered.
|
|
313
|
+
|
|
314
|
+
### Examples
|
|
315
|
+
|
|
316
|
+
```ruby
|
|
317
|
+
require 'time'
|
|
318
|
+
require 'solifyn'
|
|
319
|
+
# setup authorization
|
|
320
|
+
Solifyn.configure do |config|
|
|
321
|
+
# Configure Bearer authorization (API Key): ApiKeyAuth
|
|
322
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
api_instance = Solifyn::DefaultApi.new
|
|
326
|
+
opts = {
|
|
327
|
+
webhook_entitlement_grant_payload: # WebhookEntitlementGrantPayload |
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
begin
|
|
331
|
+
# Entitlement Grant Delivered
|
|
332
|
+
api_instance.entitlement_grant_delivered_post(opts)
|
|
333
|
+
rescue Solifyn::ApiError => e
|
|
334
|
+
puts "Error when calling DefaultApi->entitlement_grant_delivered_post: #{e}"
|
|
335
|
+
end
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
#### Using the entitlement_grant_delivered_post_with_http_info variant
|
|
339
|
+
|
|
340
|
+
This returns an Array which contains the response data (`nil` in this case), status code and headers.
|
|
341
|
+
|
|
342
|
+
> <Array(nil, Integer, Hash)> entitlement_grant_delivered_post_with_http_info(opts)
|
|
343
|
+
|
|
344
|
+
```ruby
|
|
345
|
+
begin
|
|
346
|
+
# Entitlement Grant Delivered
|
|
347
|
+
data, status_code, headers = api_instance.entitlement_grant_delivered_post_with_http_info(opts)
|
|
348
|
+
p status_code # => 2xx
|
|
349
|
+
p headers # => { ... }
|
|
350
|
+
p data # => nil
|
|
351
|
+
rescue Solifyn::ApiError => e
|
|
352
|
+
puts "Error when calling DefaultApi->entitlement_grant_delivered_post_with_http_info: #{e}"
|
|
353
|
+
end
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
### Parameters
|
|
357
|
+
|
|
358
|
+
| Name | Type | Description | Notes |
|
|
359
|
+
| ---- | ---- | ----------- | ----- |
|
|
360
|
+
| **webhook_entitlement_grant_payload** | [**WebhookEntitlementGrantPayload**](WebhookEntitlementGrantPayload.md) | | [optional] |
|
|
361
|
+
|
|
362
|
+
### Return type
|
|
363
|
+
|
|
364
|
+
nil (empty response body)
|
|
365
|
+
|
|
366
|
+
### Authorization
|
|
367
|
+
|
|
368
|
+
[ApiKeyAuth](../README.md#ApiKeyAuth)
|
|
369
|
+
|
|
370
|
+
### HTTP request headers
|
|
371
|
+
|
|
372
|
+
- **Content-Type**: application/json
|
|
373
|
+
- **Accept**: Not defined
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
## entitlement_grant_failed_post
|
|
377
|
+
|
|
378
|
+
> entitlement_grant_failed_post(opts)
|
|
379
|
+
|
|
380
|
+
Entitlement Grant Failed
|
|
381
|
+
|
|
382
|
+
Occurs when invitation delivery fails (e.g., if the user GitHub account is flagged or invitation limit is reached).
|
|
383
|
+
|
|
384
|
+
### Examples
|
|
385
|
+
|
|
386
|
+
```ruby
|
|
387
|
+
require 'time'
|
|
388
|
+
require 'solifyn'
|
|
389
|
+
# setup authorization
|
|
390
|
+
Solifyn.configure do |config|
|
|
391
|
+
# Configure Bearer authorization (API Key): ApiKeyAuth
|
|
392
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
393
|
+
end
|
|
394
|
+
|
|
395
|
+
api_instance = Solifyn::DefaultApi.new
|
|
396
|
+
opts = {
|
|
397
|
+
webhook_entitlement_grant_payload: # WebhookEntitlementGrantPayload |
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
begin
|
|
401
|
+
# Entitlement Grant Failed
|
|
402
|
+
api_instance.entitlement_grant_failed_post(opts)
|
|
403
|
+
rescue Solifyn::ApiError => e
|
|
404
|
+
puts "Error when calling DefaultApi->entitlement_grant_failed_post: #{e}"
|
|
405
|
+
end
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
#### Using the entitlement_grant_failed_post_with_http_info variant
|
|
409
|
+
|
|
410
|
+
This returns an Array which contains the response data (`nil` in this case), status code and headers.
|
|
411
|
+
|
|
412
|
+
> <Array(nil, Integer, Hash)> entitlement_grant_failed_post_with_http_info(opts)
|
|
413
|
+
|
|
414
|
+
```ruby
|
|
415
|
+
begin
|
|
416
|
+
# Entitlement Grant Failed
|
|
417
|
+
data, status_code, headers = api_instance.entitlement_grant_failed_post_with_http_info(opts)
|
|
418
|
+
p status_code # => 2xx
|
|
419
|
+
p headers # => { ... }
|
|
420
|
+
p data # => nil
|
|
421
|
+
rescue Solifyn::ApiError => e
|
|
422
|
+
puts "Error when calling DefaultApi->entitlement_grant_failed_post_with_http_info: #{e}"
|
|
423
|
+
end
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
### Parameters
|
|
427
|
+
|
|
428
|
+
| Name | Type | Description | Notes |
|
|
429
|
+
| ---- | ---- | ----------- | ----- |
|
|
430
|
+
| **webhook_entitlement_grant_payload** | [**WebhookEntitlementGrantPayload**](WebhookEntitlementGrantPayload.md) | | [optional] |
|
|
431
|
+
|
|
432
|
+
### Return type
|
|
433
|
+
|
|
434
|
+
nil (empty response body)
|
|
435
|
+
|
|
436
|
+
### Authorization
|
|
437
|
+
|
|
438
|
+
[ApiKeyAuth](../README.md#ApiKeyAuth)
|
|
439
|
+
|
|
440
|
+
### HTTP request headers
|
|
441
|
+
|
|
442
|
+
- **Content-Type**: application/json
|
|
443
|
+
- **Accept**: Not defined
|
|
444
|
+
|
|
445
|
+
|
|
446
|
+
## entitlement_grant_revoked_post
|
|
447
|
+
|
|
448
|
+
> entitlement_grant_revoked_post(opts)
|
|
449
|
+
|
|
450
|
+
Entitlement Grant Revoked
|
|
451
|
+
|
|
452
|
+
Occurs when the customer access is removed from the repository (manually or automatically via subscription cancel/refund).
|
|
453
|
+
|
|
454
|
+
### Examples
|
|
455
|
+
|
|
456
|
+
```ruby
|
|
457
|
+
require 'time'
|
|
458
|
+
require 'solifyn'
|
|
459
|
+
# setup authorization
|
|
460
|
+
Solifyn.configure do |config|
|
|
461
|
+
# Configure Bearer authorization (API Key): ApiKeyAuth
|
|
462
|
+
config.access_token = 'YOUR_BEARER_TOKEN'
|
|
463
|
+
end
|
|
464
|
+
|
|
465
|
+
api_instance = Solifyn::DefaultApi.new
|
|
466
|
+
opts = {
|
|
467
|
+
webhook_entitlement_grant_payload: # WebhookEntitlementGrantPayload |
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
begin
|
|
471
|
+
# Entitlement Grant Revoked
|
|
472
|
+
api_instance.entitlement_grant_revoked_post(opts)
|
|
473
|
+
rescue Solifyn::ApiError => e
|
|
474
|
+
puts "Error when calling DefaultApi->entitlement_grant_revoked_post: #{e}"
|
|
475
|
+
end
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
#### Using the entitlement_grant_revoked_post_with_http_info variant
|
|
479
|
+
|
|
480
|
+
This returns an Array which contains the response data (`nil` in this case), status code and headers.
|
|
481
|
+
|
|
482
|
+
> <Array(nil, Integer, Hash)> entitlement_grant_revoked_post_with_http_info(opts)
|
|
483
|
+
|
|
484
|
+
```ruby
|
|
485
|
+
begin
|
|
486
|
+
# Entitlement Grant Revoked
|
|
487
|
+
data, status_code, headers = api_instance.entitlement_grant_revoked_post_with_http_info(opts)
|
|
488
|
+
p status_code # => 2xx
|
|
489
|
+
p headers # => { ... }
|
|
490
|
+
p data # => nil
|
|
491
|
+
rescue Solifyn::ApiError => e
|
|
492
|
+
puts "Error when calling DefaultApi->entitlement_grant_revoked_post_with_http_info: #{e}"
|
|
493
|
+
end
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
### Parameters
|
|
497
|
+
|
|
498
|
+
| Name | Type | Description | Notes |
|
|
499
|
+
| ---- | ---- | ----------- | ----- |
|
|
500
|
+
| **webhook_entitlement_grant_payload** | [**WebhookEntitlementGrantPayload**](WebhookEntitlementGrantPayload.md) | | [optional] |
|
|
501
|
+
|
|
502
|
+
### Return type
|
|
503
|
+
|
|
504
|
+
nil (empty response body)
|
|
505
|
+
|
|
506
|
+
### Authorization
|
|
507
|
+
|
|
508
|
+
[ApiKeyAuth](../README.md#ApiKeyAuth)
|
|
509
|
+
|
|
510
|
+
### HTTP request headers
|
|
511
|
+
|
|
512
|
+
- **Content-Type**: application/json
|
|
513
|
+
- **Accept**: Not defined
|
|
514
|
+
|
|
515
|
+
|
|
232
516
|
## license_created_post
|
|
233
517
|
|
|
234
518
|
> license_created_post(opts)
|
data/docs/DeveloperApi.md
CHANGED
data/docs/DigitalFileApi.md
CHANGED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
# Solifyn::DiscordIntegrationApi
|
|
2
|
+
|
|
3
|
+
All URIs are relative to *https://api.solifyn.com*
|
|
4
|
+
|
|
5
|
+
| Method | HTTP request | Description |
|
|
6
|
+
| ------ | ------------ | ----------- |
|
|
7
|
+
| [**discord_get_install_url**](DiscordIntegrationApi.md#discord_get_install_url) | **GET** /v1/discord/install | Get Discord Bot Installation URL |
|
|
8
|
+
| [**discord_list_roles**](DiscordIntegrationApi.md#discord_list_roles) | **GET** /v1/discord/roles | List Guild Discord Roles |
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## discord_get_install_url
|
|
12
|
+
|
|
13
|
+
> discord_get_install_url(opts)
|
|
14
|
+
|
|
15
|
+
Get Discord Bot Installation URL
|
|
16
|
+
|
|
17
|
+
Generates the URL to invite the system-wide Discord Bot onto the merchant's Discord server.
|
|
18
|
+
|
|
19
|
+
### Examples
|
|
20
|
+
|
|
21
|
+
```ruby
|
|
22
|
+
require 'time'
|
|
23
|
+
require 'solifyn'
|
|
24
|
+
|
|
25
|
+
api_instance = Solifyn::DiscordIntegrationApi.new
|
|
26
|
+
opts = {
|
|
27
|
+
product_id: 'product_id_example' # String | Optional Product ID to redirect back to after installation
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
begin
|
|
31
|
+
# Get Discord Bot Installation URL
|
|
32
|
+
api_instance.discord_get_install_url(opts)
|
|
33
|
+
rescue Solifyn::ApiError => e
|
|
34
|
+
puts "Error when calling DiscordIntegrationApi->discord_get_install_url: #{e}"
|
|
35
|
+
end
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
#### Using the discord_get_install_url_with_http_info variant
|
|
39
|
+
|
|
40
|
+
This returns an Array which contains the response data (`nil` in this case), status code and headers.
|
|
41
|
+
|
|
42
|
+
> <Array(nil, Integer, Hash)> discord_get_install_url_with_http_info(opts)
|
|
43
|
+
|
|
44
|
+
```ruby
|
|
45
|
+
begin
|
|
46
|
+
# Get Discord Bot Installation URL
|
|
47
|
+
data, status_code, headers = api_instance.discord_get_install_url_with_http_info(opts)
|
|
48
|
+
p status_code # => 2xx
|
|
49
|
+
p headers # => { ... }
|
|
50
|
+
p data # => nil
|
|
51
|
+
rescue Solifyn::ApiError => e
|
|
52
|
+
puts "Error when calling DiscordIntegrationApi->discord_get_install_url_with_http_info: #{e}"
|
|
53
|
+
end
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### Parameters
|
|
57
|
+
|
|
58
|
+
| Name | Type | Description | Notes |
|
|
59
|
+
| ---- | ---- | ----------- | ----- |
|
|
60
|
+
| **product_id** | **String** | Optional Product ID to redirect back to after installation | [optional] |
|
|
61
|
+
|
|
62
|
+
### Return type
|
|
63
|
+
|
|
64
|
+
nil (empty response body)
|
|
65
|
+
|
|
66
|
+
### Authorization
|
|
67
|
+
|
|
68
|
+
No authorization required
|
|
69
|
+
|
|
70
|
+
### HTTP request headers
|
|
71
|
+
|
|
72
|
+
- **Content-Type**: Not defined
|
|
73
|
+
- **Accept**: Not defined
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
## discord_list_roles
|
|
77
|
+
|
|
78
|
+
> <Array<DiscordRolesResponseDto>> discord_list_roles
|
|
79
|
+
|
|
80
|
+
List Guild Discord Roles
|
|
81
|
+
|
|
82
|
+
Retrieves all roles available in the connected merchant's Discord server/guild.
|
|
83
|
+
|
|
84
|
+
### Examples
|
|
85
|
+
|
|
86
|
+
```ruby
|
|
87
|
+
require 'time'
|
|
88
|
+
require 'solifyn'
|
|
89
|
+
|
|
90
|
+
api_instance = Solifyn::DiscordIntegrationApi.new
|
|
91
|
+
|
|
92
|
+
begin
|
|
93
|
+
# List Guild Discord Roles
|
|
94
|
+
result = api_instance.discord_list_roles
|
|
95
|
+
p result
|
|
96
|
+
rescue Solifyn::ApiError => e
|
|
97
|
+
puts "Error when calling DiscordIntegrationApi->discord_list_roles: #{e}"
|
|
98
|
+
end
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
#### Using the discord_list_roles_with_http_info variant
|
|
102
|
+
|
|
103
|
+
This returns an Array which contains the response data, status code and headers.
|
|
104
|
+
|
|
105
|
+
> <Array(<Array<DiscordRolesResponseDto>>, Integer, Hash)> discord_list_roles_with_http_info
|
|
106
|
+
|
|
107
|
+
```ruby
|
|
108
|
+
begin
|
|
109
|
+
# List Guild Discord Roles
|
|
110
|
+
data, status_code, headers = api_instance.discord_list_roles_with_http_info
|
|
111
|
+
p status_code # => 2xx
|
|
112
|
+
p headers # => { ... }
|
|
113
|
+
p data # => <Array<DiscordRolesResponseDto>>
|
|
114
|
+
rescue Solifyn::ApiError => e
|
|
115
|
+
puts "Error when calling DiscordIntegrationApi->discord_list_roles_with_http_info: #{e}"
|
|
116
|
+
end
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Parameters
|
|
120
|
+
|
|
121
|
+
This endpoint does not need any parameter.
|
|
122
|
+
|
|
123
|
+
### Return type
|
|
124
|
+
|
|
125
|
+
[**Array<DiscordRolesResponseDto>**](DiscordRolesResponseDto.md)
|
|
126
|
+
|
|
127
|
+
### Authorization
|
|
128
|
+
|
|
129
|
+
No authorization required
|
|
130
|
+
|
|
131
|
+
### HTTP request headers
|
|
132
|
+
|
|
133
|
+
- **Content-Type**: Not defined
|
|
134
|
+
- **Accept**: application/json
|
|
135
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Solifyn::DiscordRolesResponseDto
|
|
2
|
+
|
|
3
|
+
## Properties
|
|
4
|
+
|
|
5
|
+
| Name | Type | Description | Notes |
|
|
6
|
+
| ---- | ---- | ----------- | ----- |
|
|
7
|
+
| **id** | **String** | The Discord Role ID | |
|
|
8
|
+
| **name** | **String** | The Discord Role Name | |
|
|
9
|
+
| **position** | **Float** | The position of the role in the server hierarchy | |
|
|
10
|
+
| **color** | **Float** | The color of the role (hex integer code) | |
|
|
11
|
+
|
|
12
|
+
## Example
|
|
13
|
+
|
|
14
|
+
```ruby
|
|
15
|
+
require 'solifyn'
|
|
16
|
+
|
|
17
|
+
instance = Solifyn::DiscordRolesResponseDto.new(
|
|
18
|
+
id: 876543210987654321,
|
|
19
|
+
name: VIP Member,
|
|
20
|
+
position: 3,
|
|
21
|
+
color: 3447003
|
|
22
|
+
)
|
|
23
|
+
```
|
|
24
|
+
|