Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "0.0.20"
".": "0.0.22"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 135
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/frostedinc%2Fwhopsdk-c28f76de0001bfa87ee1b13b38528823b96c236b51d3706bc7fbe2ef22ed1c96.yml
openapi_spec_hash: 8476411081a6a94534139b21c3cf74b7
config_hash: c4e43bac321badafc3ba52b6c6c4e646
configured_endpoints: 142
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/frostedinc%2Fwhopsdk-02f632061a0e7f6c587344bfa1aa46b552b6e1d6220b214ad3aeab192a6daba2.yml
openapi_spec_hash: c3fd12d172c45e6d09756677d83de4e0
config_hash: 557f6692f697df2872da82b8dedf538b
31 changes: 31 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,36 @@
# Changelog

## 0.0.22 (2026-01-07)

Full Changelog: [v0.0.20...v0.0.22](https://github.com/whopio/whopsdk-ruby/compare/v0.0.20...v0.0.22)

### Features

* **api:** api update ([3632c09](https://github.com/whopio/whopsdk-ruby/commit/3632c093586872857f605313dc80935152ceb2b4))
* **api:** api update ([1369d6a](https://github.com/whopio/whopsdk-ruby/commit/1369d6a6a970fda437f47d398f14fdbd240326ba))
* **api:** api update ([185c3ca](https://github.com/whopio/whopsdk-ruby/commit/185c3cad5d43af42c98004dfb6320bba79a4eb37))
* **api:** api update ([7b79b5e](https://github.com/whopio/whopsdk-ruby/commit/7b79b5ecb10e297b2b40c6e9bcd8710486738370))
* **api:** api update ([6b01cd6](https://github.com/whopio/whopsdk-ruby/commit/6b01cd6184c20f7b58f6b290afce78daf4fcb4ef))
* **api:** api update ([f6a40eb](https://github.com/whopio/whopsdk-ruby/commit/f6a40eb1748db6b849c3857c8dd80ea2c2ce2402))
* **api:** api update ([131ef7d](https://github.com/whopio/whopsdk-ruby/commit/131ef7d9396af31afbbc4cedb3f62835453cd4ca))
* **api:** api update ([789ca6d](https://github.com/whopio/whopsdk-ruby/commit/789ca6d43533a22f94370de9c05c4ecf9714a044))
* **api:** api update ([d165256](https://github.com/whopio/whopsdk-ruby/commit/d16525653fc3bb992650b120b2b63f3bac07dd77))
* **api:** api update ([fe37424](https://github.com/whopio/whopsdk-ruby/commit/fe37424c5fd9a258bea07a1c003148ab6fbd02bd))
* **api:** api update ([43788a0](https://github.com/whopio/whopsdk-ruby/commit/43788a0bdefecbcd1bea6393fb6959cf082a1b44))
* **api:** api update ([72d8b00](https://github.com/whopio/whopsdk-ruby/commit/72d8b0022e186f3e9e3235fb95cbbe353e3a73a9))
* **api:** manual updates ([6e8e692](https://github.com/whopio/whopsdk-ruby/commit/6e8e692bef8870ba11108e1febdefdeb70e9edbd))


### Bug Fixes

* calling `break` out of streams should be instantaneous ([7503ef5](https://github.com/whopio/whopsdk-ruby/commit/7503ef5800775d0c158500da07554f6f4e3e8d95))
* issue where json.parse errors when receiving HTTP 204 with nobody ([919e4e1](https://github.com/whopio/whopsdk-ruby/commit/919e4e1a8a9dcada6957cbf07884c5cba26663fa))


### Documentation

* prominently feature MCP server setup in root SDK readmes ([8a808ef](https://github.com/whopio/whopsdk-ruby/commit/8a808ef1e408cc29afcdfce17d03dd828c09d7cb))

## 0.0.20 (2025-12-16)

Full Changelog: [v0.0.19...v0.0.20](https://github.com/whopio/whopsdk-ruby/compare/v0.0.19...v0.0.20)
Expand Down
2 changes: 1 addition & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ GIT
PATH
remote: .
specs:
whop_sdk (0.0.20)
whop_sdk (0.0.22)
connection_pool
jwt
openssl
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright 2025 Whop
Copyright 2026 Whop

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
Expand Down
11 changes: 10 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@ The Whop Ruby library provides convenient access to the Whop REST API from any R

It is generated with [Stainless](https://www.stainless.com/).

## MCP Server

Use the Whop MCP Server to enable AI assistants to interact with this API, allowing them to explore endpoints, make test requests, and use documentation to help integrate this SDK into your application.

[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=%40whop%2Fmcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkB3aG9wL21jcCJdfQ)
[![Install in VS Code](https://img.shields.io/badge/_-Add_to_VS_Code-blue?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCA0MCA0MCI+PHBhdGggZmlsbD0iI0VFRSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzAuMjM1IDM5Ljg4NGEyLjQ5MSAyLjQ5MSAwIDAgMS0xLjc4MS0uNzNMMTIuNyAyNC43OGwtMy40NiAyLjYyNC0zLjQwNiAyLjU4MmExLjY2NSAxLjY2NSAwIDAgMS0xLjA4Mi4zMzggMS42NjQgMS42NjQgMCAwIDEtMS4wNDYtLjQzMWwtMi4yLTJhMS42NjYgMS42NjYgMCAwIDEgMC0yLjQ2M0w3LjQ1OCAyMCA0LjY3IDE3LjQ1MyAxLjUwNyAxNC41N2ExLjY2NSAxLjY2NSAwIDAgMSAwLTIuNDYzbDIuMi0yYTEuNjY1IDEuNjY1IDAgMCAxIDIuMTMtLjA5N2w2Ljg2MyA1LjIwOUwyOC40NTIuODQ0YTIuNDg4IDIuNDg4IDAgMCAxIDEuODQxLS43MjljLjM1MS4wMDkuNjk5LjA5MSAxLjAxOS4yNDVsOC4yMzYgMy45NjFhMi41IDIuNSAwIDAgMSAxLjQxNSAyLjI1M3YuMDk5LS4wNDVWMzMuMzd2LS4wNDUuMDk1YTIuNTAxIDIuNTAxIDAgMCAxLTEuNDE2IDIuMjU3bC04LjIzNSAzLjk2MWEyLjQ5MiAyLjQ5MiAwIDAgMS0xLjA3Ny4yNDZabS43MTYtMjguOTQ3LTExLjk0OCA5LjA2MiAxMS45NTIgOS4wNjUtLjAwNC0xOC4xMjdaIi8+PC9zdmc+)](https://vscode.stainless.com/mcp/%7B%22name%22%3A%22%40whop%2Fmcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40whop%2Fmcp%22%5D%7D)

> Note: You may need to set environment variables in your MCP client.

## Documentation

Documentation for releases of this gem can be found [on RubyDoc](https://gemdocs.org/gems/whop_sdk).
Expand All @@ -17,7 +26,7 @@ To use this gem, install via Bundler by adding the following to your application
<!-- x-release-please-start-version -->

```ruby
gem "whop_sdk", "~> 0.0.20"
gem "whop_sdk", "~> 0.0.22"
```

<!-- x-release-please-end -->
Expand Down
20 changes: 20 additions & 0 deletions lib/whop_sdk.rb
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,14 @@
require_relative "whop_sdk/models/invoice_void_params"
require_relative "whop_sdk/models/invoice_void_response"
require_relative "whop_sdk/models/languages"
require_relative "whop_sdk/models/lead_create_params"
require_relative "whop_sdk/models/lead_create_response"
require_relative "whop_sdk/models/lead_list_params"
require_relative "whop_sdk/models/lead_list_response"
require_relative "whop_sdk/models/lead_retrieve_params"
require_relative "whop_sdk/models/lead_retrieve_response"
require_relative "whop_sdk/models/lead_update_params"
require_relative "whop_sdk/models/lead_update_response"
require_relative "whop_sdk/models/ledger_account_retrieve_params"
require_relative "whop_sdk/models/ledger_account_retrieve_response"
require_relative "whop_sdk/models/lesson"
Expand All @@ -227,6 +235,7 @@
require_relative "whop_sdk/models/member_retrieve_response"
require_relative "whop_sdk/models/membership"
require_relative "whop_sdk/models/membership_activated_webhook_event"
require_relative "whop_sdk/models/membership_cancel_at_period_end_changed_webhook_event"
require_relative "whop_sdk/models/membership_cancel_params"
require_relative "whop_sdk/models/membership_deactivated_webhook_event"
require_relative "whop_sdk/models/membership_list_params"
Expand Down Expand Up @@ -266,8 +275,11 @@
require_relative "whop_sdk/models/payment_retry_params"
require_relative "whop_sdk/models/payment_succeeded_webhook_event"
require_relative "whop_sdk/models/payment_void_params"
require_relative "whop_sdk/models/payout_method_created_webhook_event"
require_relative "whop_sdk/models/payout_method_list_params"
require_relative "whop_sdk/models/payout_method_list_response"
require_relative "whop_sdk/models/payout_method_retrieve_params"
require_relative "whop_sdk/models/payout_method_retrieve_response"
require_relative "whop_sdk/models/plan"
require_relative "whop_sdk/models/plan_create_params"
require_relative "whop_sdk/models/plan_delete_params"
Expand Down Expand Up @@ -338,6 +350,8 @@
require_relative "whop_sdk/models/support_channel_list_response"
require_relative "whop_sdk/models/support_channel_retrieve_params"
require_relative "whop_sdk/models/tax_type"
require_relative "whop_sdk/models/topup_create_params"
require_relative "whop_sdk/models/topup_create_response"
require_relative "whop_sdk/models/transfer"
require_relative "whop_sdk/models/transfer_create_params"
require_relative "whop_sdk/models/transfer_list_params"
Expand All @@ -348,6 +362,9 @@
require_relative "whop_sdk/models/user_check_access_response"
require_relative "whop_sdk/models/user_retrieve_params"
require_relative "whop_sdk/models/user_retrieve_response"
require_relative "whop_sdk/models/verification_retrieve_params"
require_relative "whop_sdk/models/verification_retrieve_response"
require_relative "whop_sdk/models/verification_succeeded_webhook_event"
require_relative "whop_sdk/models/visibility"
require_relative "whop_sdk/models/visibility_filter"
require_relative "whop_sdk/models/webhook_unwrap_params"
Expand Down Expand Up @@ -388,6 +405,7 @@
require_relative "whop_sdk/resources/forum_posts"
require_relative "whop_sdk/resources/forums"
require_relative "whop_sdk/resources/invoices"
require_relative "whop_sdk/resources/leads"
require_relative "whop_sdk/resources/ledger_accounts"
require_relative "whop_sdk/resources/members"
require_relative "whop_sdk/resources/memberships"
Expand All @@ -405,8 +423,10 @@
require_relative "whop_sdk/resources/setup_intents"
require_relative "whop_sdk/resources/shipments"
require_relative "whop_sdk/resources/support_channels"
require_relative "whop_sdk/resources/topups"
require_relative "whop_sdk/resources/transfers"
require_relative "whop_sdk/resources/users"
require_relative "whop_sdk/resources/verifications"
require_relative "whop_sdk/resources/webhooks"
require_relative "whop_sdk/resources/withdrawals"
require_relative "whop_sdk/helpers/verify_user_token"
12 changes: 12 additions & 0 deletions lib/whop_sdk/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,15 @@ class Client < WhopSDK::Internal::Transport::BaseClient
# @return [WhopSDK::Resources::PayoutMethods]
attr_reader :payout_methods

# @return [WhopSDK::Resources::Verifications]
attr_reader :verifications

# @return [WhopSDK::Resources::Leads]
attr_reader :leads

# @return [WhopSDK::Resources::Topups]
attr_reader :topups

# @api private
#
# @return [Hash{String=>String}]
Expand Down Expand Up @@ -245,6 +254,9 @@ def initialize(
@payment_methods = WhopSDK::Resources::PaymentMethods.new(client: self)
@fee_markups = WhopSDK::Resources::FeeMarkups.new(client: self)
@payout_methods = WhopSDK::Resources::PayoutMethods.new(client: self)
@verifications = WhopSDK::Resources::Verifications.new(client: self)
@leads = WhopSDK::Resources::Leads.new(client: self)
@topups = WhopSDK::Resources::Topups.new(client: self)
end

# Verifies a Whop user token
Expand Down
22 changes: 12 additions & 10 deletions lib/whop_sdk/internal/transport/pooled_net_requester.rb
Original file line number Diff line number Diff line change
Expand Up @@ -153,17 +153,19 @@ def execute(request)
end

self.class.calibrate_socket_timeout(conn, deadline)
conn.request(req) do |rsp|
y << [req, rsp]
break if finished

rsp.read_body do |bytes|
y << bytes.force_encoding(Encoding::BINARY)
break if finished

self.class.calibrate_socket_timeout(conn, deadline)
::Kernel.catch(:jump) do
conn.request(req) do |rsp|
y << [req, rsp]
::Kernel.throw(:jump) if finished

rsp.read_body do |bytes|
y << bytes.force_encoding(Encoding::BINARY)
::Kernel.throw(:jump) if finished

self.class.calibrate_socket_timeout(conn, deadline)
end
eof = true
end
eof = true
end
end
ensure
Expand Down
9 changes: 7 additions & 2 deletions lib/whop_sdk/internal/util.rb
Original file line number Diff line number Diff line change
Expand Up @@ -657,7 +657,8 @@ def force_charset!(content_type, text:)
def decode_content(headers, stream:, suppress_error: false)
case (content_type = headers["content-type"])
in WhopSDK::Internal::Util::JSON_CONTENT
json = stream.to_a.join
return nil if (json = stream.to_a.join).empty?

begin
JSON.parse(json, symbolize_names: true)
rescue JSON::ParserError => e
Expand All @@ -667,7 +668,11 @@ def decode_content(headers, stream:, suppress_error: false)
in WhopSDK::Internal::Util::JSONL_CONTENT
lines = decode_lines(stream)
chain_fused(lines) do |y|
lines.each { y << JSON.parse(_1, symbolize_names: true) }
lines.each do
next if _1.empty?

y << JSON.parse(_1, symbolize_names: true)
end
end
in %r{^text/event-stream}
lines = decode_lines(stream)
Expand Down
21 changes: 21 additions & 0 deletions lib/whop_sdk/models.rb
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,14 @@ module WhopSDK

Languages = WhopSDK::Models::Languages

LeadCreateParams = WhopSDK::Models::LeadCreateParams

LeadListParams = WhopSDK::Models::LeadListParams

LeadRetrieveParams = WhopSDK::Models::LeadRetrieveParams

LeadUpdateParams = WhopSDK::Models::LeadUpdateParams

LedgerAccountRetrieveParams = WhopSDK::Models::LedgerAccountRetrieveParams

Lesson = WhopSDK::Models::Lesson
Expand All @@ -320,6 +328,9 @@ module WhopSDK

MembershipActivatedWebhookEvent = WhopSDK::Models::MembershipActivatedWebhookEvent

MembershipCancelAtPeriodEndChangedWebhookEvent =
WhopSDK::Models::MembershipCancelAtPeriodEndChangedWebhookEvent

MembershipCancelParams = WhopSDK::Models::MembershipCancelParams

MembershipDeactivatedWebhookEvent = WhopSDK::Models::MembershipDeactivatedWebhookEvent
Expand Down Expand Up @@ -384,8 +395,12 @@ module WhopSDK

PaymentVoidParams = WhopSDK::Models::PaymentVoidParams

PayoutMethodCreatedWebhookEvent = WhopSDK::Models::PayoutMethodCreatedWebhookEvent

PayoutMethodListParams = WhopSDK::Models::PayoutMethodListParams

PayoutMethodRetrieveParams = WhopSDK::Models::PayoutMethodRetrieveParams

Plan = WhopSDK::Models::Plan

PlanCreateParams = WhopSDK::Models::PlanCreateParams
Expand Down Expand Up @@ -500,6 +515,8 @@ module WhopSDK

TaxType = WhopSDK::Models::TaxType

TopupCreateParams = WhopSDK::Models::TopupCreateParams

Transfer = WhopSDK::Models::Transfer

TransferCreateParams = WhopSDK::Models::TransferCreateParams
Expand All @@ -514,6 +531,10 @@ module WhopSDK

UserRetrieveParams = WhopSDK::Models::UserRetrieveParams

VerificationRetrieveParams = WhopSDK::Models::VerificationRetrieveParams

VerificationSucceededWebhookEvent = WhopSDK::Models::VerificationSucceededWebhookEvent

Visibility = WhopSDK::Models::Visibility

VisibilityFilter = WhopSDK::Models::VisibilityFilter
Expand Down
58 changes: 58 additions & 0 deletions lib/whop_sdk/models/lead_create_params.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
# frozen_string_literal: true

module WhopSDK
module Models
# @see WhopSDK::Resources::Leads#create
class LeadCreateParams < WhopSDK::Internal::Type::BaseModel
extend WhopSDK::Internal::Type::RequestParameters::Converter
include WhopSDK::Internal::Type::RequestParameters

# @!attribute company_id
# The ID of the company to create a lead for.
#
# @return [String]
required :company_id, String

# @!attribute metadata
# Custom metadata for the lead.
#
# @return [Hash{Symbol=>Object}, nil]
optional :metadata, WhopSDK::Internal::Type::HashOf[WhopSDK::Internal::Type::Unknown], nil?: true

# @!attribute product_id
# The ID of the product the lead is interested in.
#
# @return [String, nil]
optional :product_id, String, nil?: true

# @!attribute referrer
# The url referrer of the lead, if any.
#
# @return [String, nil]
optional :referrer, String, nil?: true

# @!attribute user_id
# The ID of the user to create a lead for. If the request is made by a user, that
# user will be used.
#
# @return [String, nil]
optional :user_id, String, nil?: true

# @!method initialize(company_id:, metadata: nil, product_id: nil, referrer: nil, user_id: nil, request_options: {})
# Some parameter documentations has been truncated, see
# {WhopSDK::Models::LeadCreateParams} for more details.
#
# @param company_id [String] The ID of the company to create a lead for.
#
# @param metadata [Hash{Symbol=>Object}, nil] Custom metadata for the lead.
#
# @param product_id [String, nil] The ID of the product the lead is interested in.
#
# @param referrer [String, nil] The url referrer of the lead, if any.
#
# @param user_id [String, nil] The ID of the user to create a lead for. If the request is made by a user, that
#
# @param request_options [WhopSDK::RequestOptions, Hash{Symbol=>Object}]
end
end
end
Loading