whop_sdk 0.0.5 → 0.0.7

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 (93) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +28 -0
  3. data/README.md +4 -7
  4. data/lib/whop_sdk/client.rb +17 -6
  5. data/lib/whop_sdk/models/access_token_create_params.rb +26 -36
  6. data/lib/whop_sdk/models/card_brands.rb +1 -0
  7. data/lib/whop_sdk/models/checkout_configuration_create_params.rb +9 -9
  8. data/lib/whop_sdk/models/company.rb +1 -0
  9. data/lib/whop_sdk/models/currency.rb +1 -0
  10. data/lib/whop_sdk/models/dispute.rb +672 -0
  11. data/lib/whop_sdk/models/dispute_created_webhook_event.rb +48 -0
  12. data/lib/whop_sdk/models/dispute_list_params.rb +62 -0
  13. data/lib/whop_sdk/models/dispute_list_response.rb +187 -0
  14. data/lib/whop_sdk/models/dispute_retrieve_params.rb +14 -0
  15. data/lib/whop_sdk/models/dispute_statuses.rb +23 -0
  16. data/lib/whop_sdk/models/dispute_submit_evidence_params.rb +14 -0
  17. data/lib/whop_sdk/models/dispute_update_evidence_params.rb +342 -0
  18. data/lib/whop_sdk/models/dispute_updated_webhook_event.rb +48 -0
  19. data/lib/whop_sdk/models/forum_post_create_params.rb +20 -1
  20. data/lib/whop_sdk/models/forum_post_update_params.rb +20 -1
  21. data/lib/whop_sdk/models/ledger_account_retrieve_response.rb +1 -0
  22. data/lib/whop_sdk/models/notification_create_params.rb +88 -0
  23. data/lib/whop_sdk/models/notification_create_response.rb +19 -0
  24. data/lib/whop_sdk/models/shipment.rb +3 -3
  25. data/lib/whop_sdk/models/shipment_list_response.rb +3 -3
  26. data/lib/whop_sdk/models/unwrap_webhook_event.rb +5 -1
  27. data/lib/whop_sdk/models.rb +18 -0
  28. data/lib/whop_sdk/resources/access_tokens.rb +9 -7
  29. data/lib/whop_sdk/resources/disputes.rb +182 -0
  30. data/lib/whop_sdk/resources/forum_posts.rb +6 -2
  31. data/lib/whop_sdk/resources/notifications.rb +53 -0
  32. data/lib/whop_sdk/resources/webhooks.rb +1 -1
  33. data/lib/whop_sdk/version.rb +1 -1
  34. data/lib/whop_sdk.rb +13 -0
  35. data/rbi/whop_sdk/client.rbi +11 -2
  36. data/rbi/whop_sdk/models/access_token_create_params.rbi +34 -77
  37. data/rbi/whop_sdk/models/card_brands.rbi +1 -0
  38. data/rbi/whop_sdk/models/checkout_configuration_create_params.rbi +8 -8
  39. data/rbi/whop_sdk/models/company.rbi +2 -0
  40. data/rbi/whop_sdk/models/currency.rbi +1 -0
  41. data/rbi/whop_sdk/models/dispute.rbi +938 -0
  42. data/rbi/whop_sdk/models/dispute_created_webhook_event.rbi +72 -0
  43. data/rbi/whop_sdk/models/dispute_list_params.rbi +83 -0
  44. data/rbi/whop_sdk/models/dispute_list_response.rbi +287 -0
  45. data/rbi/whop_sdk/models/dispute_retrieve_params.rbi +27 -0
  46. data/rbi/whop_sdk/models/dispute_statuses.rbi +32 -0
  47. data/rbi/whop_sdk/models/dispute_submit_evidence_params.rbi +30 -0
  48. data/rbi/whop_sdk/models/dispute_update_evidence_params.rbi +566 -0
  49. data/rbi/whop_sdk/models/dispute_updated_webhook_event.rbi +72 -0
  50. data/rbi/whop_sdk/models/forum_post_create_params.rbi +42 -0
  51. data/rbi/whop_sdk/models/forum_post_update_params.rbi +42 -0
  52. data/rbi/whop_sdk/models/ledger_account_retrieve_response.rbi +5 -0
  53. data/rbi/whop_sdk/models/notification_create_params.rbi +113 -0
  54. data/rbi/whop_sdk/models/notification_create_response.rbi +31 -0
  55. data/rbi/whop_sdk/models/shipment.rbi +6 -4
  56. data/rbi/whop_sdk/models/shipment_list_response.rbi +6 -4
  57. data/rbi/whop_sdk/models/unwrap_webhook_event.rbi +3 -1
  58. data/rbi/whop_sdk/models.rbi +18 -0
  59. data/rbi/whop_sdk/resources/access_tokens.rbi +19 -14
  60. data/rbi/whop_sdk/resources/disputes.rbi +194 -0
  61. data/rbi/whop_sdk/resources/forum_posts.rbi +8 -0
  62. data/rbi/whop_sdk/resources/notifications.rbi +54 -0
  63. data/rbi/whop_sdk/resources/webhooks.rbi +3 -1
  64. data/sig/whop_sdk/client.rbs +5 -1
  65. data/sig/whop_sdk/models/access_token_create_params.rbs +14 -29
  66. data/sig/whop_sdk/models/card_brands.rbs +2 -0
  67. data/sig/whop_sdk/models/checkout_configuration_create_params.rbs +5 -5
  68. data/sig/whop_sdk/models/company.rbs +2 -0
  69. data/sig/whop_sdk/models/currency.rbs +2 -0
  70. data/sig/whop_sdk/models/dispute.rbs +437 -0
  71. data/sig/whop_sdk/models/dispute_created_webhook_event.rbs +40 -0
  72. data/sig/whop_sdk/models/dispute_list_params.rbs +51 -0
  73. data/sig/whop_sdk/models/dispute_list_response.rbs +124 -0
  74. data/sig/whop_sdk/models/dispute_retrieve_params.rbs +15 -0
  75. data/sig/whop_sdk/models/dispute_statuses.rbs +30 -0
  76. data/sig/whop_sdk/models/dispute_submit_evidence_params.rbs +15 -0
  77. data/sig/whop_sdk/models/dispute_update_evidence_params.rbs +215 -0
  78. data/sig/whop_sdk/models/dispute_updated_webhook_event.rbs +40 -0
  79. data/sig/whop_sdk/models/forum_post_create_params.rbs +17 -1
  80. data/sig/whop_sdk/models/forum_post_update_params.rbs +17 -1
  81. data/sig/whop_sdk/models/ledger_account_retrieve_response.rbs +2 -0
  82. data/sig/whop_sdk/models/notification_create_params.rbs +61 -0
  83. data/sig/whop_sdk/models/notification_create_response.rbs +13 -0
  84. data/sig/whop_sdk/models/shipment.rbs +4 -4
  85. data/sig/whop_sdk/models/shipment_list_response.rbs +4 -4
  86. data/sig/whop_sdk/models/unwrap_webhook_event.rbs +2 -0
  87. data/sig/whop_sdk/models.rbs +18 -0
  88. data/sig/whop_sdk/resources/access_tokens.rbs +3 -3
  89. data/sig/whop_sdk/resources/disputes.rbs +46 -0
  90. data/sig/whop_sdk/resources/forum_posts.rbs +2 -0
  91. data/sig/whop_sdk/resources/notifications.rbs +19 -0
  92. data/sig/whop_sdk/resources/webhooks.rbs +3 -1
  93. metadata +41 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 47dbcf6d251bc786986b0862e0ed904004a5ed20ba919298f7c3405f0cb3b508
4
- data.tar.gz: a32801e2c4cb776d9d140b96dfe7ddfed67276a505836ab747e753e1b2ea1ae9
3
+ metadata.gz: 3eecc254b8ba9c6ee8fd458763a9749b1478efc921f4f3c696823cae79f31a1c
4
+ data.tar.gz: 0b085d7a2c1551bc99016a562266d326312f8da3b3a6104a08426677f9b89c1e
5
5
  SHA512:
6
- metadata.gz: 0a9770a71da93ee3e6bf5e6d19936c53bd534e546809a4e9d9dfa56dbff804ead817e512a4e815bb71c983c088260422a729ab2dd3003d8bf69bf6180bcdc7b2
7
- data.tar.gz: 4a3ec25658c045e9cd3789a0d9bfde24993dd1f4092dc46dd3808d04b244b4af954bf1b4a3e54688f796ba865cc13151ebba8693fb18808f82fbf889c8971e80
6
+ metadata.gz: 4ed891547df3d339cbec397a7d78e55e7c00610187dc5cb80acf05e6fc2e93e0952020f55723e98b2f5230a220424d3bdf8498f70ac472f8f5e2aed37dfa0e6e
7
+ data.tar.gz: 9d9ca43b7fc87ff4df8a9e050d15503631e25070369381116c362b6cae95cf0740de7a3488325538928974349c1687e7147f729d8794bbbe44ca2ef79b125259
data/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.0.7 (2025-11-13)
4
+
5
+ Full Changelog: [v0.0.6...v0.0.7](https://github.com/whopio/whopsdk-ruby/compare/v0.0.6...v0.0.7)
6
+
7
+ ### Features
8
+
9
+ * **api:** api update ([ebffee5](https://github.com/whopio/whopsdk-ruby/commit/ebffee5d68b29d6a7219b6f5446229c1734a9c58))
10
+ * **api:** api update ([9984831](https://github.com/whopio/whopsdk-ruby/commit/9984831a51353e776c0e3dd6c4e58bc7ecf94cb3))
11
+ * **api:** api update ([89cb635](https://github.com/whopio/whopsdk-ruby/commit/89cb635fcb034579638e5946bf7d773639848f80))
12
+ * **api:** api update ([71c9708](https://github.com/whopio/whopsdk-ruby/commit/71c9708ff5359af68c59e22eafe8c9b2af8be588))
13
+ * **api:** api update ([f0ed1e2](https://github.com/whopio/whopsdk-ruby/commit/f0ed1e29b2293b5bb408b7d3c12722df36add5b7))
14
+ * **api:** api update ([117f8ff](https://github.com/whopio/whopsdk-ruby/commit/117f8ff26be6ccd0e004d74e65c3ad866ae31d64))
15
+
16
+ ## 0.0.6 (2025-11-10)
17
+
18
+ Full Changelog: [v0.0.5...v0.0.6](https://github.com/whopio/whopsdk-ruby/compare/v0.0.5...v0.0.6)
19
+
20
+ ### Features
21
+
22
+ * **api:** api update ([40bd47a](https://github.com/whopio/whopsdk-ruby/commit/40bd47ab707c869f865202b879d2818a1365c785))
23
+ * **api:** manual updates ([59f44e4](https://github.com/whopio/whopsdk-ruby/commit/59f44e454e7c1727a1d8566b316f7e61e98ce00b))
24
+ * **api:** manual updates ([f4dcf3a](https://github.com/whopio/whopsdk-ruby/commit/f4dcf3a5be316eaa0452b4786c7c986c75a3d8b2))
25
+
26
+
27
+ ### Bug Fixes
28
+
29
+ * **api:** allow optional app id in constructor ([#4](https://github.com/whopio/whopsdk-ruby/issues/4)) ([7e6bd87](https://github.com/whopio/whopsdk-ruby/commit/7e6bd873a73acb9f76c24a51945f94fb0eb65d13))
30
+
3
31
  ## 0.0.5 (2025-11-08)
4
32
 
5
33
  Full Changelog: [v0.0.4...v0.0.5](https://github.com/whopio/whopsdk-ruby/compare/v0.0.4...v0.0.5)
data/README.md CHANGED
@@ -17,7 +17,7 @@ To use this gem, install via Bundler by adding the following to your application
17
17
  <!-- x-release-please-start-version -->
18
18
 
19
19
  ```ruby
20
- gem "whop_sdk", "~> 0.0.5"
20
+ gem "whop_sdk", "~> 0.0.7"
21
21
  ```
22
22
 
23
23
  <!-- x-release-please-end -->
@@ -29,8 +29,7 @@ require "bundler/setup"
29
29
  require "whop_sdk"
30
30
 
31
31
  whop = WhopSDK::Client.new(
32
- api_key: ENV["WHOP_API_KEY"], # This is the default and can be omitted
33
- app_id: "app_xxxxxxxxxxxxxx"
32
+ api_key: ENV["WHOP_API_KEY"] # This is the default and can be omitted
34
33
  )
35
34
 
36
35
  page = whop.payments.list(company_id: "biz_xxxxxxxxxxxxxx")
@@ -111,8 +110,7 @@ You can use the `max_retries` option to configure or disable this:
111
110
  ```ruby
112
111
  # Configure the default for all requests:
113
112
  whop = WhopSDK::Client.new(
114
- max_retries: 0, # default is 2
115
- app_id: "app_xxxxxxxxxxxxxx"
113
+ max_retries: 0 # default is 2
116
114
  )
117
115
 
118
116
  # Or, configure per-request:
@@ -126,8 +124,7 @@ By default, requests will time out after 60 seconds. You can use the timeout opt
126
124
  ```ruby
127
125
  # Configure the default for all requests:
128
126
  whop = WhopSDK::Client.new(
129
- timeout: nil, # default is 60
130
- app_id: "app_xxxxxxxxxxxxxx"
127
+ timeout: nil # default is 60
131
128
  )
132
129
 
133
130
  # Or, configure per-request:
@@ -19,7 +19,9 @@ module WhopSDK
19
19
  # @return [String]
20
20
  attr_reader :api_key
21
21
 
22
- # @return [String]
22
+ # When using the SDK in app mode pass this parameter to allow verifying user
23
+ # tokens
24
+ # @return [String, nil]
23
25
  attr_reader :app_id
24
26
 
25
27
  # @return [WhopSDK::Resources::Apps]
@@ -118,6 +120,12 @@ module WhopSDK
118
120
  # @return [WhopSDK::Resources::AccessTokens]
119
121
  attr_reader :access_tokens
120
122
 
123
+ # @return [WhopSDK::Resources::Notifications]
124
+ attr_reader :notifications
125
+
126
+ # @return [WhopSDK::Resources::Disputes]
127
+ attr_reader :disputes
128
+
121
129
  # @api private
122
130
  #
123
131
  # @return [Hash{String=>String}]
@@ -132,7 +140,8 @@ module WhopSDK
132
140
  # @param api_key [String, nil] The app API key from an app from the /dashboard/developer page Defaults to
133
141
  # `ENV["WHOP_API_KEY"]`
134
142
  #
135
- # @param app_id [String, nil] Defaults to `ENV["WHOP_APP_ID"]`
143
+ # @param app_id [String, nil] When using the SDK in app mode pass this parameter to allow verifying user
144
+ # tokens Defaults to `ENV["WHOP_APP_ID"]`
136
145
  #
137
146
  # @param base_url [String, nil] Override the default base URL for the API, e.g.,
138
147
  # `"https://api.example.com/v2/"`. Defaults to `ENV["WHOP_BASE_URL"]`
@@ -155,15 +164,12 @@ module WhopSDK
155
164
  )
156
165
  base_url ||= "https://api.whop.com/api/v1"
157
166
 
158
- if app_id.nil?
159
- raise ArgumentError.new("app_id is required, and can be set via environ: \"WHOP_APP_ID\"")
160
- end
161
167
  if api_key.nil?
162
168
  raise ArgumentError.new("api_key is required, and can be set via environ: \"WHOP_API_KEY\"")
163
169
  end
164
170
 
165
171
  headers = {
166
- "x-whop-app-id" => (@app_id = app_id.to_s)
172
+ "x-whop-app-id" => (@app_id = app_id&.to_s)
167
173
  }
168
174
 
169
175
  @api_key = api_key.to_s
@@ -209,6 +215,8 @@ module WhopSDK
209
215
  @reviews = WhopSDK::Resources::Reviews.new(client: self)
210
216
  @course_students = WhopSDK::Resources::CourseStudents.new(client: self)
211
217
  @access_tokens = WhopSDK::Resources::AccessTokens.new(client: self)
218
+ @notifications = WhopSDK::Resources::Notifications.new(client: self)
219
+ @disputes = WhopSDK::Resources::Disputes.new(client: self)
212
220
  end
213
221
 
214
222
  # Verifies a Whop user token
@@ -221,6 +229,9 @@ module WhopSDK
221
229
  # @raise [StandardError] If verification fails
222
230
  def verify_user_token!(token_or_headers, **opts)
223
231
  opts[:app_id] ||= app_id
232
+ unless opts[:app_id]
233
+ raise StandardError, "You must set app_id in the Whop client if you want to verify user tokens"
234
+ end
224
235
  Helpers::VerifyUserToken.verify_user_token!(token_or_headers, **opts)
225
236
  end
226
237
 
@@ -7,25 +7,13 @@ module WhopSDK
7
7
  extend WhopSDK::Internal::Type::RequestParameters::Converter
8
8
  include WhopSDK::Internal::Type::RequestParameters
9
9
 
10
- # @!attribute scoped_actions
11
- # Array of desired scoped actions for the access token. This list must be a subset
12
- # of the API keys's existing permissions. Otherwise, an error will be raised.
13
- #
14
- # @return [Array<String>]
15
- required :scoped_actions, WhopSDK::Internal::Type::ArrayOf[String]
16
-
17
- # @!attribute target_resource_id
18
- # The ID of the target resource (Company, User, etc.) for which the access token
19
- # is being created.
10
+ # @!attribute company_id
11
+ # The ID of the Company to generate the token for. The API key must have
12
+ # permission to access this Company, such as the being the company the API key
13
+ # belongs to or a sub-merchant of it
20
14
  #
21
15
  # @return [String]
22
- required :target_resource_id, String
23
-
24
- # @!attribute target_resource_type
25
- # The type of the target resource (company, user, product, experience, etc.).
26
- #
27
- # @return [Symbol, WhopSDK::Models::AccessTokenCreateParams::TargetResourceType]
28
- required :target_resource_type, enum: -> { WhopSDK::AccessTokenCreateParams::TargetResourceType }
16
+ required :company_id, String
29
17
 
30
18
  # @!attribute expires_at
31
19
  # The expiration timestamp for the access token. If not provided, a default
@@ -35,33 +23,35 @@ module WhopSDK
35
23
  # @return [Time, nil]
36
24
  optional :expires_at, Time, nil?: true
37
25
 
38
- # @!method initialize(scoped_actions:, target_resource_id:, target_resource_type:, expires_at: nil, request_options: {})
26
+ # @!attribute scoped_actions
27
+ # Array of desired scoped actions for the access token. If sent as an empty array
28
+ # or not provided, all permissions from the API key making the request will be
29
+ # available on the token. If sending an explicit list, they must be a subset of
30
+ # the API keys's existing permissions. Otherwise, an error will be raised.
31
+ #
32
+ # @return [Array<String>, nil]
33
+ optional :scoped_actions, WhopSDK::Internal::Type::ArrayOf[String], nil?: true
34
+
35
+ # @!attribute user_id
36
+ # The ID of the User to generate the token for. The API key must have permission
37
+ # to access this User.
38
+ #
39
+ # @return [String]
40
+ required :user_id, String
41
+
42
+ # @!method initialize(company_id:, user_id:, expires_at: nil, scoped_actions: nil, request_options: {})
39
43
  # Some parameter documentations has been truncated, see
40
44
  # {WhopSDK::Models::AccessTokenCreateParams} for more details.
41
45
  #
42
- # @param scoped_actions [Array<String>] Array of desired scoped actions for the access token. This list must be a subset
43
- #
44
- # @param target_resource_id [String] The ID of the target resource (Company, User, etc.) for which the access token i
46
+ # @param company_id [String] The ID of the Company to generate the token for. The API key must have permissio
45
47
  #
46
- # @param target_resource_type [Symbol, WhopSDK::Models::AccessTokenCreateParams::TargetResourceType] The type of the target resource (company, user, product, experience, etc.).
48
+ # @param user_id [String] The ID of the User to generate the token for. The API key must have permission t
47
49
  #
48
50
  # @param expires_at [Time, nil] The expiration timestamp for the access token. If not provided, a default expira
49
51
  #
52
+ # @param scoped_actions [Array<String>, nil] Array of desired scoped actions for the access token. If sent as an empty array
53
+ #
50
54
  # @param request_options [WhopSDK::RequestOptions, Hash{Symbol=>Object}]
51
-
52
- # The type of the target resource (company, user, product, experience, etc.).
53
- module TargetResourceType
54
- extend WhopSDK::Internal::Type::Enum
55
-
56
- COMPANY = :company
57
- PRODUCT = :product
58
- EXPERIENCE = :experience
59
- APP = :app
60
- USER = :user
61
-
62
- # @!method self.values
63
- # @return [Array<Symbol>]
64
- end
65
55
  end
66
56
  end
67
57
  end
@@ -21,6 +21,7 @@ module WhopSDK
21
21
  RUPAY = :rupay
22
22
  JCBRUPAY = :jcbrupay
23
23
  ELO = :elo
24
+ MAESTRO = :maestro
24
25
  UNKNOWN = :unknown
25
26
 
26
27
  # @!method self.values
@@ -57,18 +57,18 @@ module WhopSDK
57
57
  # @return [String]
58
58
  required :company_id, String
59
59
 
60
+ # @!attribute currency
61
+ # The respective currency identifier for the plan.
62
+ #
63
+ # @return [Symbol, WhopSDK::Models::Currency]
64
+ required :currency, enum: -> { WhopSDK::Currency }
65
+
60
66
  # @!attribute billing_period
61
67
  # The interval at which the plan charges (renewal plans).
62
68
  #
63
69
  # @return [Integer, nil]
64
70
  optional :billing_period, Integer, nil?: true
65
71
 
66
- # @!attribute currency
67
- # The available currencies on the platform
68
- #
69
- # @return [Symbol, WhopSDK::Models::Currency, nil]
70
- optional :currency, enum: -> { WhopSDK::Currency }, nil?: true
71
-
72
72
  # @!attribute custom_fields
73
73
  # An array of custom field objects.
74
74
  #
@@ -181,7 +181,7 @@ module WhopSDK
181
181
  # @return [Symbol, WhopSDK::Models::Visibility, nil]
182
182
  optional :visibility, enum: -> { WhopSDK::Visibility }, nil?: true
183
183
 
184
- # @!method initialize(company_id:, billing_period: nil, currency: nil, custom_fields: nil, description: nil, expiration_days: nil, force_create_new_plan: nil, image: nil, initial_price: nil, internal_notes: nil, override_tax_type: nil, payment_method_configuration: nil, plan_type: nil, product: nil, product_id: nil, release_method: nil, renewal_price: nil, title: nil, trial_period_days: nil, visibility: nil)
184
+ # @!method initialize(company_id:, currency:, billing_period: nil, custom_fields: nil, description: nil, expiration_days: nil, force_create_new_plan: nil, image: nil, initial_price: nil, internal_notes: nil, override_tax_type: nil, payment_method_configuration: nil, plan_type: nil, product: nil, product_id: nil, release_method: nil, renewal_price: nil, title: nil, trial_period_days: nil, visibility: nil)
185
185
  # Some parameter documentations has been truncated, see
186
186
  # {WhopSDK::Models::CheckoutConfigurationCreateParams::Plan} for more details.
187
187
  #
@@ -189,9 +189,9 @@ module WhopSDK
189
189
  #
190
190
  # @param company_id [String] The company the plan should be created for.
191
191
  #
192
- # @param billing_period [Integer, nil] The interval at which the plan charges (renewal plans).
192
+ # @param currency [Symbol, WhopSDK::Models::Currency] The respective currency identifier for the plan.
193
193
  #
194
- # @param currency [Symbol, WhopSDK::Models::Currency, nil] The available currencies on the platform
194
+ # @param billing_period [Integer, nil] The interval at which the plan charges (renewal plans).
195
195
  #
196
196
  # @param custom_fields [Array<WhopSDK::Models::CheckoutConfigurationCreateParams::Plan::CustomField>, nil] An array of custom field objects.
197
197
  #
@@ -220,6 +220,7 @@ module WhopSDK
220
220
  LINKEDIN = :linkedin
221
221
  TWITCH = :twitch
222
222
  WEBSITE = :website
223
+ CUSTOM = :custom
223
224
 
224
225
  # @!method self.values
225
226
  # @return [Array<Symbol>]
@@ -90,6 +90,7 @@ module WhopSDK
90
90
  UZS = :uzs
91
91
  RUB = :rub
92
92
  BTC = :btc
93
+ CNY = :cny
93
94
 
94
95
  # @!method self.values
95
96
  # @return [Array<Symbol>]