Class: Whop_sdk::Users::Passkeys::Client
- Inherits:
-
Object
- Object
- Whop_sdk::Users::Passkeys::Client
- Defined in:
- lib/whop_sdk/users/passkeys/client.rb
Instance Method Summary collapse
-
#challenge(request_options: {}, **params) ⇒ Whop_sdk::Users::Passkeys::Types::ChallengePasskeysResponse
Mints the challenge a browser needs to run a WebAuthn ceremony against the authenticated user's own passkeys.
-
#create(request_options: {}, **params) ⇒ Whop_sdk::Types::Passkey
Registers a passkey for the authenticated user from the attestation a browser produced for a
registrationchallenge. -
#delete(request_options: {}, **params) ⇒ Whop_sdk::Users::Passkeys::Types::DeletePasskeysResponse
Deletes one of the authenticated user's own passkeys.
- #initialize(client:) ⇒ void constructor
-
#list(request_options: {}, **params) ⇒ Whop_sdk::Users::Passkeys::Types::ListPasskeysResponse
Lists the authenticated user's own passkeys, newest first.
Constructor Details
#initialize(client:) ⇒ void
10 11 12 |
# File 'lib/whop_sdk/users/passkeys/client.rb', line 10 def initialize(client:) @client = client end |
Instance Method Details
#challenge(request_options: {}, **params) ⇒ Whop_sdk::Users::Passkeys::Types::ChallengePasskeysResponse
Mints the challenge a browser needs to run a WebAuthn ceremony against the authenticated user's own passkeys.
A registration challenge enrolls a new passkey; a deletion challenge is bound to the one passkey named by
passkey_id and proves the user still holds it. Challenges are single-use and expire 5 minutes after they are
issued, so send a fresh Idempotency-Key per ceremony — a replayed key returns the original challenge, which
may already have expired. Requires a user session.
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/whop_sdk/users/passkeys/client.rb', line 137 def challenge(request_options: {}, **params) params = Whop_sdk::Internal::Types::Utils.normalize_keys(params) request = Whop_sdk::Internal::JSON::Request.new( base_url: [:base_url], method: "POST", path: "users/me/passkeys/challenge", body: Whop_sdk::Users::Passkeys::Types::ChallengePasskeysRequest.new(params).to_h, request_options: ) begin response = @client.send(request) rescue Net::HTTPRequestTimeout raise Whop_sdk::Errors::TimeoutError end code = response.code.to_i if code.between?(200, 299) Whop_sdk::Users::Passkeys::Types::ChallengePasskeysResponse.load(response.body) else error_class = Whop_sdk::Errors::ResponseError.subclass_for_code(code) raise error_class.new(response.body, code: code) end end |
#create(request_options: {}, **params) ⇒ Whop_sdk::Types::Passkey
Registers a passkey for the authenticated user from the attestation a browser produced for a registration
challenge. Mint that challenge first with POST /users/me/passkeys/challenge; it is single-use and expires 5
minutes after it is issued. Requires a user session.
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/whop_sdk/users/passkeys/client.rb', line 96 def create(request_options: {}, **params) params = Whop_sdk::Internal::Types::Utils.normalize_keys(params) request = Whop_sdk::Internal::JSON::Request.new( base_url: [:base_url], method: "POST", path: "users/me/passkeys", body: Whop_sdk::Users::Passkeys::Types::CreatePasskeysRequest.new(params).to_h, request_options: ) begin response = @client.send(request) rescue Net::HTTPRequestTimeout raise Whop_sdk::Errors::TimeoutError end code = response.code.to_i if code.between?(200, 299) Whop_sdk::Types::Passkey.load(response.body) else error_class = Whop_sdk::Errors::ResponseError.subclass_for_code(code) raise error_class.new(response.body, code: code) end end |
#delete(request_options: {}, **params) ⇒ Whop_sdk::Users::Passkeys::Types::DeletePasskeysResponse
Deletes one of the authenticated user's own passkeys. The request body carries a WebAuthn assertion from the
passkey being deleted, so possession of the credential is proven before it is removed: mint a deletion
challenge for it first, run the ceremony with that passkey, and send the result here. Deleting the user's last
passkey is allowed — their other step-up factors remain. Requires a user session.
183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 |
# File 'lib/whop_sdk/users/passkeys/client.rb', line 183 def delete(request_options: {}, **params) params = Whop_sdk::Internal::Types::Utils.normalize_keys(params) request_data = Whop_sdk::Users::Passkeys::Types::DeletePasskeysRequest.new(params).to_h non_body_param_names = %w[id] body = request_data.except(*non_body_param_names) request = Whop_sdk::Internal::JSON::Request.new( base_url: [:base_url], method: "DELETE", path: "users/me/passkeys/#{URI.encode_uri_component(params[:id].to_s)}", body: body, request_options: ) begin response = @client.send(request) rescue Net::HTTPRequestTimeout raise Whop_sdk::Errors::TimeoutError end code = response.code.to_i if code.between?(200, 299) Whop_sdk::Users::Passkeys::Types::DeletePasskeysResponse.load(response.body) else error_class = Whop_sdk::Errors::ResponseError.subclass_for_code(code) raise error_class.new(response.body, code: code) end end |
#list(request_options: {}, **params) ⇒ Whop_sdk::Users::Passkeys::Types::ListPasskeysResponse
Lists the authenticated user's own passkeys, newest first. The list is always the caller's own; there is no parameter for reading another user's passkeys. Requires a user session: an API key or an OAuth token is refused, because a passkey confirms the account holder before a sensitive action and no app may enumerate one.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/whop_sdk/users/passkeys/client.rb', line 36 def list(request_options: {}, **params) params = Whop_sdk::Internal::Types::Utils.normalize_keys(params) query_params = {} query_params["first"] = params[:first] if params.key?(:first) query_params["after"] = params[:after] if params.key?(:after) query_params["last"] = params[:last] if params.key?(:last) query_params["before"] = params[:before] if params.key?(:before) query_params["order"] = params[:order] if params.key?(:order) query_params["direction"] = params[:direction] if params.key?(:direction) Whop_sdk::Internal::CursorItemIterator.new( cursor_field: :end_cursor, item_field: :data, initial_cursor: query_params["after"] ) do |next_cursor| query_params["after"] = next_cursor request = Whop_sdk::Internal::JSON::Request.new( base_url: [:base_url], method: "GET", path: "users/me/passkeys", query: query_params, request_options: ) begin response = @client.send(request) rescue Net::HTTPRequestTimeout raise Whop_sdk::Errors::TimeoutError end code = response.code.to_i if code.between?(200, 299) parsed_response = Whop_sdk::Users::Passkeys::Types::ListPasskeysResponse.load(response.body) [parsed_response, response] else error_class = Whop_sdk::Errors::ResponseError.subclass_for_code(code) raise error_class.new(response.body, code: code) end end end |