kinde_sdk 1.2.3 → 1.3.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1553814bbc9fcac3dc85f89b46680f81626d6a86771f900fae97fabe5bfb12e6
4
- data.tar.gz: a6e89557f44e9483cc9d96e6ec97bcdf402d4995df2e0653ddb11be054913542
3
+ metadata.gz: bc5ca096d7760fdbb44aad50f80581bedad34c59961401731a46fdcfe12de6e8
4
+ data.tar.gz: 7c172304b38b70bb4446e25db64cd3ce98c28aadded415d32a776b82885095d5
5
5
  SHA512:
6
- metadata.gz: e1110fef072979b2a720c84a468943bccef437dd477d39764b9fae8a85f78680365b40f640535bcdb37aee19652de5761dfc8a5093d6df425130754344809649
7
- data.tar.gz: 3d36f72b26a3616967b19c31ac36ed465ae7bc515ef88207bf472ac621704b572de6200ebc0230580a7668b7eca9cf2923b35ef146f69843ea57f44ca6b55832
6
+ metadata.gz: 963aabbb2e5d9ea92c3369d127f21ea3181aa646bbf087a1e4322c7d4721f0c267a8ba0f5f55d5a1c389bdca7d75844193fa039969f6760fd0c59419e6e8897b
7
+ data.tar.gz: 520cd6180f22cf93041b0de2cd89898d6640c275dd4f9d8e19efa4514969b18dc4a440265ab3a1b35aa81ab0707adad6eeb45c11d7bc8ab68eb978c7bb969616
@@ -36,7 +36,7 @@ module KindeSdk
36
36
  yield(self) if block_given?
37
37
  end
38
38
 
39
- def oauth_client
39
+ def oauth_client(client_id: @client_id, client_secret: @client_secret, domain: @domain, authorize_url: @authorize_url, token_url: @token_url )
40
40
  ::OAuth2::Client.new(
41
41
  client_id,
42
42
  client_secret,
@@ -0,0 +1,152 @@
1
+ require 'action_controller'
2
+ require 'uri'
3
+ require 'cgi'
4
+ require 'net/http'
5
+ require 'json'
6
+ require 'jwt'
7
+
8
+ module KindeSdk
9
+ class AuthController < ActionController::Base
10
+ # Add before_action to validate nonce in callback
11
+ before_action :validate_state, only: :callback
12
+
13
+ def auth
14
+ # Generate a secure random nonce
15
+ nonce = SecureRandom.urlsafe_base64(16)
16
+
17
+ # Call KindeSdk.auth_url with nonce
18
+ auth_data = KindeSdk.auth_url(nonce: nonce)
19
+
20
+ # Store in session
21
+ session[:code_verifier] = auth_data[:code_verifier] if auth_data[:code_verifier].present?
22
+ session[:auth_nonce] = nonce
23
+ session[:auth_state] = {
24
+ requested_at: Time.current.to_i,
25
+ redirect_url: auth_data[:url]
26
+ }
27
+
28
+ redirect_to auth_data[:url], allow_other_host: true
29
+ end
30
+
31
+ def callback
32
+ tokens = KindeSdk.fetch_tokens(
33
+ params[:code],
34
+ code_verifier: KindeSdk.config.pkce_enabled ? session[:code_verifier] : nil
35
+ ).slice(:access_token, :id_token, :refresh_token, :expires_at)
36
+
37
+
38
+ # Validate nonce in ID token
39
+ id_token = tokens[:id_token]
40
+ issuer = KindeSdk.config.domain
41
+ client_id = KindeSdk.config.client_id
42
+ original_nonce = session[:auth_nonce]
43
+ unless validate_nonce(id_token, original_nonce, issuer, client_id)
44
+ Rails.logger.warn("Nonce validation failed")
45
+ redirect_to "/", alert: "Invalid authentication nonce"
46
+ return
47
+ end
48
+
49
+ # Store tokens and user in session
50
+ session[:kinde_auth] = OAuth2::AccessToken.from_hash(KindeSdk.config.oauth_client, tokens).to_hash
51
+ .slice(:access_token, :refresh_token, :expires_at)
52
+ session[:kinde_user] = KindeSdk.client(tokens).oauth.get_user.to_hash
53
+
54
+ # Clear nonce and state after successful authentication
55
+ session.delete(:auth_nonce)
56
+ session.delete(:auth_state)
57
+ session.delete(:code_verifier)
58
+ redirect_to "/"
59
+ rescue StandardError => e
60
+ Rails.logger.error("Authentication callback failed: #{e.message}")
61
+ redirect_to "/", alert: "Authentication failed"
62
+ end
63
+
64
+ def client_credentials_auth
65
+ result = KindeSdk.client_credentials_access(
66
+ client_id: ENV["KINDE_MANAGEMENT_CLIENT_ID"],
67
+ client_secret: ENV["KINDE_MANAGEMENT_CLIENT_SECRET"]
68
+ )
69
+
70
+ if result["error"].present?
71
+ Rails.logger.error("Client credentials auth failed: #{result['error']}")
72
+ raise result["error"]
73
+ end
74
+
75
+ $redis.set("kinde_m2m_token", result["access_token"], ex: result["expires_in"].to_i)
76
+ redirect_to mgmt_path
77
+ end
78
+
79
+ def logout
80
+ redirect_to KindeSdk.logout_url, allow_other_host: true
81
+ end
82
+
83
+ def logout_callback
84
+ reset_session
85
+ redirect_to "/"
86
+ end
87
+
88
+ private
89
+
90
+ def validate_state
91
+ # Check if nonce and state exist in session
92
+ unless session[:auth_nonce] && session[:auth_state]
93
+ Rails.logger.warn("Missing session state or nonce")
94
+ redirect_to "/", alert: "Invalid authentication state"
95
+ return
96
+ end
97
+
98
+ # Verify nonce returned matches stored nonce
99
+ returned_state = params[:state]
100
+ stored_state = session[:auth_state]
101
+ stored_url = stored_state["redirect_url"]
102
+
103
+ # Extract the state from the stored redirect_url
104
+ parsed_url = URI.parse(stored_url)
105
+ query_params = CGI.parse(parsed_url.query || "")
106
+ stored_state_from_url = query_params["state"]&.first
107
+
108
+ # Verify returned state matches the state extracted from the redirect_url
109
+ unless returned_state.present? && returned_state == stored_state_from_url
110
+ Rails.logger.warn("State validation failed: returned=#{returned_state}, expected=#{stored_state_from_url}")
111
+ redirect_to "/", alert: "Invalid authentication state"
112
+ return
113
+ end
114
+
115
+ # Optional: Check state age (e.g., expires after 15 minutes)
116
+ if Time.current.to_i - stored_state["requested_at"] > 900
117
+ Rails.logger.warn("Authentication state expired")
118
+ redirect_to "/", alert: "Authentication session expired"
119
+ return
120
+ end
121
+ end
122
+
123
+
124
+ def validate_nonce(id_token, original_nonce, issuer, client_id)
125
+ jwks_uri = URI.parse("#{issuer}/.well-known/jwks.json")
126
+ jwks_response = Net::HTTP.get(jwks_uri)
127
+ jwks = JSON.parse(jwks_response)
128
+
129
+ decoded_token = JWT.decode(
130
+ id_token,
131
+ nil,
132
+ true,
133
+ algorithm: 'RS256',
134
+ iss: issuer,
135
+ aud: client_id,
136
+ verify_iss: true,
137
+ verify_aud: true,
138
+ jwks: { keys: jwks['keys'] }
139
+ )
140
+
141
+ payload = decoded_token[0]
142
+ nonce_from_token = payload['nonce']
143
+
144
+ nonce_from_token == original_nonce
145
+ rescue StandardError => e
146
+ Rails.logger.error("Nonce validation error: #{e.message}")
147
+ false
148
+ end
149
+
150
+
151
+ end
152
+ end
@@ -1,3 +1,3 @@
1
1
  module KindeSdk
2
- VERSION = "1.2.3"
2
+ VERSION = "1.3.1"
3
3
  end
data/lib/kinde_sdk.rb CHANGED
@@ -1,9 +1,10 @@
1
+ require "logger"
1
2
  require "kinde_sdk/version"
2
3
  require "kinde_sdk/configuration"
3
4
  require "kinde_sdk/client/feature_flags"
4
5
  require "kinde_sdk/client/permissions"
6
+ require "kinde_sdk/controllers/auth_controller"
5
7
  require "kinde_sdk/client"
6
-
7
8
  require 'securerandom'
8
9
  require 'oauth2'
9
10
  require 'pkce_challenge'
@@ -27,18 +28,33 @@ module KindeSdk
27
28
  # receive url for authorization in Kinde itself
28
29
  #
29
30
  # @return [Hash]
30
- def auth_url(redirect_uri: @config.callback_url, **kwargs)
31
+ def auth_url(
32
+ client_id: @config.client_id,
33
+ client_secret: @config.client_secret,
34
+ domain: @config.domain,
35
+ redirect_uri: @config.callback_url,
36
+ **kwargs)
31
37
  params = {
32
38
  redirect_uri: redirect_uri,
33
39
  state: SecureRandom.hex,
34
- scope: @config.scope
40
+ scope: @config.scope,
35
41
  }.merge(**kwargs)
36
- return { url: @config.oauth_client.auth_code.authorize_url(params) } unless @config.pkce_enabled
42
+ return { url: @config.oauth_client(
43
+ client_id: client_id,
44
+ client_secret: client_secret,
45
+ domain: domain,
46
+ authorize_url: "#{domain}/oauth2/auth",
47
+ token_url: "#{domain}/oauth2/token").auth_code.authorize_url(params) } unless @config.pkce_enabled
37
48
 
38
49
  pkce_challenge = PkceChallenge.challenge(char_length: 128)
39
50
  params.merge!(code_challenge_method: 'S256', code_challenge: pkce_challenge.code_challenge)
40
51
  {
41
- url: @config.oauth_client.auth_code.authorize_url(params),
52
+ url: @config.oauth_client(
53
+ client_id: client_id,
54
+ client_secret: client_secret,
55
+ domain: domain,
56
+ authorize_url: "#{domain}/oauth2/auth",
57
+ token_url: "#{domain}/oauth2/token").auth_code.authorize_url(params),
42
58
  code_verifier: pkce_challenge.code_verifier
43
59
  }
44
60
  end
@@ -46,14 +62,34 @@ module KindeSdk
46
62
  # when callback processor receives code, it needs to be used for fetching bearer token
47
63
  #
48
64
  # @return [Hash]
49
- def fetch_tokens(params_or_code, code_verifier: nil, redirect_uri: @config.callback_url)
50
- code = params_or_code.kind_of?(Hash) ? params.fetch("code") : params_or_code
65
+ def fetch_tokens(
66
+ params_or_code,
67
+ client_id: @config.client_id,
68
+ client_secret: @config.client_secret,
69
+ domain: @config.domain,
70
+ code_verifier: nil,
71
+ redirect_uri: @config.callback_url)
72
+ code = params_or_code.kind_of?(Hash) ? params_or_code.fetch("code") : params_or_code
51
73
  params = {
52
74
  redirect_uri: redirect_uri,
53
75
  headers: { 'User-Agent' => "Kinde-SDK: Ruby/#{KindeSdk::VERSION}" }
54
76
  }
55
77
  params[:code_verifier] = code_verifier if code_verifier
56
- @config.oauth_client.auth_code.get_token(code.to_s, params).to_hash
78
+ token = @config.oauth_client(
79
+ client_id: client_id,
80
+ client_secret: client_secret,
81
+ domain: domain,
82
+ authorize_url: "#{domain}/oauth2/auth",
83
+ token_url: "#{domain}/oauth2/token").auth_code.get_token(code.to_s, params)
84
+
85
+ {
86
+ access_token: token.token, # The access token
87
+ id_token: token.params['id_token'], # The ID token from params
88
+ expires_at: token.expires_at, # Optional: expiration time
89
+ refresh_token: token.refresh_token, # Optional: if present
90
+ scope: token.params['scope'], # The scopes requested
91
+ token_type: token.params['token_type'] # The token type
92
+ }.compact
57
93
  end
58
94
 
59
95
  # tokens_hash #=>
@@ -66,39 +102,60 @@ module KindeSdk
66
102
  #
67
103
  # @return [KindeSdk::Client]
68
104
  def client(tokens_hash)
69
- sdk_api_client = api_client(tokens_hash["access_token"])
105
+ sdk_api_client = api_client(tokens_hash[:access_token] || tokens_hash["access_token"])
70
106
  KindeSdk::Client.new(sdk_api_client, tokens_hash, @config.auto_refresh_tokens)
71
107
  end
72
108
 
73
- def logout_url
74
- query = @config.logout_url ? URI.encode_www_form(redirect: @config.logout_url) : nil
75
- host = URI::parse(@config.domain).host
109
+ def logout_url(logout_url: @config.logout_url, domain: @config.domain)
110
+ query = logout_url ? URI.encode_www_form(redirect: logout_url) : nil
111
+ host = URI::parse(domain).host
76
112
  URI::HTTP.build(host: host, path: '/logout', query: query).to_s
77
113
  end
78
114
 
79
115
  def client_credentials_access(
80
116
  client_id: @config.client_id,
81
117
  client_secret: @config.client_secret,
82
- audience: "#{@config.domain}/api"
118
+ audience: "#{@config.domain}/api",
119
+ domain: @config.domain
83
120
  )
84
- Faraday.new(url: @config.domain) do |faraday|
121
+ Faraday.new(url: domain) do |faraday|
85
122
  faraday.response :json
86
123
  faraday.use Faraday::FollowRedirects::Middleware
87
124
  end
88
- .post(@config.token_url) do |req|
125
+ .post("#{domain}/oauth2/token") do |req|
89
126
  req.headers[:content_type] = 'application/x-www-form-urlencoded'
90
127
  req.body =
91
128
  "grant_type=client_credentials&client_id=#{client_id}&client_secret=#{client_secret}&audience=#{audience}"
92
129
  end.body
93
130
  end
94
131
 
95
- def token_expired?(hash)
96
- OAuth2::AccessToken.from_hash(@config.oauth_client, hash).expired?
132
+ def token_expired?(hash,
133
+ client_id: @config.client_id,
134
+ client_secret: @config.client_secret,
135
+ audience: "#{@config.domain}/api",
136
+ domain: @config.domain
137
+ )
138
+ OAuth2::AccessToken.from_hash(@config.oauth_client(
139
+ client_id: client_id,
140
+ client_secret: client_secret,
141
+ domain: domain,
142
+ authorize_url: "#{domain}/oauth2/auth",
143
+ token_url: "#{domain}/oauth2/token"), hash).expired?
97
144
  end
98
145
 
99
146
  # @return [Hash]
100
- def refresh_token(hash)
101
- OAuth2::AccessToken.from_hash(@config.oauth_client, hash).refresh.to_hash
147
+ def refresh_token(hash,
148
+ client_id: @config.client_id,
149
+ client_secret: @config.client_secret,
150
+ audience: "#{@config.domain}/api",
151
+ domain: @config.domain
152
+ )
153
+ OAuth2::AccessToken.from_hash(@config.oauth_client(
154
+ client_id: client_id,
155
+ client_secret: client_secret,
156
+ domain: domain,
157
+ authorize_url: "#{domain}/oauth2/auth",
158
+ token_url: "#{domain}/oauth2/token"), hash).refresh.to_hash
102
159
  end
103
160
 
104
161
  # init sdk api client by bearer token
@@ -74,20 +74,20 @@ describe KindeSdk do
74
74
  )
75
75
  .to_return(
76
76
  status: 200,
77
- body: { "access_token": "eyJ", "expires_in": 86399, "scope": "", "token_type": "bearer" }.to_json,
77
+ body: { "access_token": "eyJ", "id_token": "test", "refresh_token": "test","expires_in": 86399, "scope": "", "token_type": "bearer" }.to_json,
78
78
  headers: { "content-type" => "application/json;charset=UTF-8" }
79
79
  )
80
80
  end
81
81
 
82
82
  it "calls /token url with proper body and headers" do
83
- expect(described_class.fetch_tokens(code).keys).to eq(%w[scope token_type access_token refresh_token expires_at])
83
+ expect(described_class.fetch_tokens(code).keys.map(&:to_s)).to eq(%w[access_token id_token expires_at refresh_token scope token_type])
84
84
  end
85
85
 
86
86
  context "with redefined callback_url" do
87
87
  let(:callback_url) { "another-callback" }
88
88
 
89
89
  it "calls /token url with proper body and headers" do
90
- expect(described_class.fetch_tokens(code).keys.size).to eq(5)
90
+ expect(described_class.fetch_tokens(code).keys.size).to eq(6)
91
91
  end
92
92
  end
93
93
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kinde_sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kinde Australia Pty Ltd
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-03-15 00:00:00.000000000 Z
11
+ date: 2025-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: typhoeus
@@ -76,22 +76,22 @@ dependencies:
76
76
  name: rspec
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - ">="
80
- - !ruby/object:Gem::Version
81
- version: 3.6.0
82
79
  - - "~>"
83
80
  - !ruby/object:Gem::Version
84
81
  version: '3.6'
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: 3.6.0
85
85
  type: :development
86
86
  prerelease: false
87
87
  version_requirements: !ruby/object:Gem::Requirement
88
88
  requirements:
89
- - - ">="
90
- - !ruby/object:Gem::Version
91
- version: 3.6.0
92
89
  - - "~>"
93
90
  - !ruby/object:Gem::Version
94
91
  version: '3.6'
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: 3.6.0
95
95
  description: Integrate the Kinde API into any ruby-based applications, Rails or non-Rails
96
96
  email:
97
97
  - support@kinde.com
@@ -422,6 +422,7 @@ files:
422
422
  - lib/kinde_sdk/client/feature_flags.rb
423
423
  - lib/kinde_sdk/client/permissions.rb
424
424
  - lib/kinde_sdk/configuration.rb
425
+ - lib/kinde_sdk/controllers/auth_controller.rb
425
426
  - lib/kinde_sdk/version.rb
426
427
  - spec/kinde_sdk_spec.rb
427
428
  - spec/spec_helper.rb
@@ -429,7 +430,7 @@ homepage: https://kinde.com/
429
430
  licenses:
430
431
  - MIT
431
432
  metadata: {}
432
- post_install_message:
433
+ post_install_message:
433
434
  rdoc_options: []
434
435
  require_paths:
435
436
  - lib
@@ -445,116 +446,116 @@ required_rubygems_version: !ruby/object:Gem::Requirement
445
446
  - !ruby/object:Gem::Version
446
447
  version: '0'
447
448
  requirements: []
448
- rubygems_version: 3.0.3.1
449
- signing_key:
449
+ rubygems_version: 3.2.3
450
+ signing_key:
450
451
  specification_version: 4
451
452
  summary: Kinde Management API Ruby Gem
452
453
  test_files:
453
454
  - spec/kinde_sdk_spec.rb
454
455
  - spec/spec_helper.rb
455
- - kinde_api/spec/api/permissions_api_spec.rb
456
- - kinde_api/spec/api/o_auth_api_spec.rb
457
- - kinde_api/spec/api/organizations_api_spec.rb
458
- - kinde_api/spec/api/business_api_spec.rb
459
- - kinde_api/spec/api/applications_api_spec.rb
460
456
  - kinde_api/spec/api/subscribers_api_spec.rb
461
- - kinde_api/spec/api/timezones_api_spec.rb
462
- - kinde_api/spec/api/connected_apps_api_spec.rb
457
+ - kinde_api/spec/api/apis_api_spec.rb
463
458
  - kinde_api/spec/api/callbacks_api_spec.rb
464
459
  - kinde_api/spec/api/environments_api_spec.rb
465
- - kinde_api/spec/api/apis_api_spec.rb
466
- - kinde_api/spec/api/roles_api_spec.rb
467
- - kinde_api/spec/api/users_api_spec.rb
468
460
  - kinde_api/spec/api/feature_flags_api_spec.rb
461
+ - kinde_api/spec/api/roles_api_spec.rb
469
462
  - kinde_api/spec/api/industries_api_spec.rb
463
+ - kinde_api/spec/api/permissions_api_spec.rb
464
+ - kinde_api/spec/api/timezones_api_spec.rb
465
+ - kinde_api/spec/api/business_api_spec.rb
466
+ - kinde_api/spec/api/users_api_spec.rb
467
+ - kinde_api/spec/api/applications_api_spec.rb
468
+ - kinde_api/spec/api/o_auth_api_spec.rb
469
+ - kinde_api/spec/api/organizations_api_spec.rb
470
+ - kinde_api/spec/api/connected_apps_api_spec.rb
470
471
  - kinde_api/spec/api_client_spec.rb
471
472
  - kinde_api/spec/configuration_spec.rb
472
- - kinde_api/spec/models/error_spec.rb
473
- - kinde_api/spec/models/create_application_response_spec.rb
474
- - kinde_api/spec/models/organization_user_role_permissions_permissions_spec.rb
475
- - kinde_api/spec/models/create_user_request_identities_inner_details_spec.rb
476
- - kinde_api/spec/models/update_api_applications_request_applications_inner_spec.rb
477
- - kinde_api/spec/models/apis_spec.rb
478
- - kinde_api/spec/models/users_response_users_inner_spec.rb
479
- - kinde_api/spec/models/create_organization_request_spec.rb
480
- - kinde_api/spec/models/api_applications_inner_spec.rb
481
- - kinde_api/spec/models/get_redirect_callback_urls_response_spec.rb
482
- - kinde_api/spec/models/get_organizations_user_roles_response_spec.rb
483
- - kinde_api/spec/models/error_response_spec.rb
484
- - kinde_api/spec/models/get_organizations_response_spec.rb
485
- - kinde_api/spec/models/permissions_spec.rb
486
- - kinde_api/spec/models/subscribers_subscriber_spec.rb
487
- - kinde_api/spec/models/get_organizations_user_permissions_response_spec.rb
473
+ - kinde_api/spec/models/create_organization_response_organization_spec.rb
474
+ - kinde_api/spec/models/organization_user_permission_spec.rb
475
+ - kinde_api/spec/models/create_organization_user_role_request_spec.rb
476
+ - kinde_api/spec/models/create_permission_request_spec.rb
477
+ - kinde_api/spec/models/update_organization_users_response_spec.rb
488
478
  - kinde_api/spec/models/logout_redirect_urls_spec.rb
489
479
  - kinde_api/spec/models/api_result_spec.rb
490
- - kinde_api/spec/models/create_subscriber_success_response_subscriber_spec.rb
491
- - kinde_api/spec/models/api_spec.rb
492
- - kinde_api/spec/models/create_role_request_spec.rb
493
- - kinde_api/spec/models/organization_user_permission_spec.rb
480
+ - kinde_api/spec/models/add_organization_users_response_spec.rb
481
+ - kinde_api/spec/models/create_application_request_spec.rb
482
+ - kinde_api/spec/models/redirect_callback_urls_spec.rb
483
+ - kinde_api/spec/models/organization_spec.rb
484
+ - kinde_api/spec/models/replace_redirect_callback_urls_request_spec.rb
485
+ - kinde_api/spec/models/users_response_spec.rb
486
+ - kinde_api/spec/models/role_spec.rb
494
487
  - kinde_api/spec/models/user_identity_spec.rb
495
- - kinde_api/spec/models/update_environement_feature_flag_override_request_spec.rb
496
- - kinde_api/spec/models/get_subscriber_response_spec.rb
488
+ - kinde_api/spec/models/update_role_permissions_request_permissions_inner_spec.rb
489
+ - kinde_api/spec/models/connected_apps_access_token_spec.rb
490
+ - kinde_api/spec/models/update_organization_users_request_spec.rb
491
+ - kinde_api/spec/models/get_applications_response_spec.rb
492
+ - kinde_api/spec/models/update_user_request_spec.rb
493
+ - kinde_api/spec/models/create_user_request_profile_spec.rb
497
494
  - kinde_api/spec/models/get_environment_feature_flags_response_spec.rb
498
- - kinde_api/spec/models/applications_spec.rb
499
- - kinde_api/spec/models/token_error_response_spec.rb
500
- - kinde_api/spec/models/create_application_response_application_spec.rb
501
- - kinde_api/spec/models/update_role_permissions_request_spec.rb
502
- - kinde_api/spec/models/roles_permission_response_inner_spec.rb
503
- - kinde_api/spec/models/get_organization_feature_flags_response_spec.rb
504
- - kinde_api/spec/models/roles_spec.rb
505
- - kinde_api/spec/models/get_organization_users_response_spec.rb
506
- - kinde_api/spec/models/organization_user_spec.rb
507
- - kinde_api/spec/models/organization_user_role_permissions_spec.rb
508
- - kinde_api/spec/models/create_organization_user_permission_request_spec.rb
509
- - kinde_api/spec/models/users_response_spec.rb
510
- - kinde_api/spec/models/organization_spec.rb
495
+ - kinde_api/spec/models/subscribers_subscriber_spec.rb
496
+ - kinde_api/spec/models/get_organizations_response_spec.rb
497
+ - kinde_api/spec/models/create_user_request_identities_inner_spec.rb
498
+ - kinde_api/spec/models/api_spec.rb
499
+ - kinde_api/spec/models/get_application_response_application_spec.rb
511
500
  - kinde_api/spec/models/subscriber_spec.rb
512
- - kinde_api/spec/models/update_api_applications_request_spec.rb
513
- - kinde_api/spec/models/create_organization_user_role_request_spec.rb
514
- - kinde_api/spec/models/create_application_request_spec.rb
515
- - kinde_api/spec/models/update_user_response_spec.rb
516
- - kinde_api/spec/models/add_organization_users_request_spec.rb
517
- - kinde_api/spec/models/update_role_permissions_request_permissions_inner_spec.rb
518
501
  - kinde_api/spec/models/connected_apps_auth_url_spec.rb
519
- - kinde_api/spec/models/update_organization_users_response_spec.rb
520
502
  - kinde_api/spec/models/add_apis_request_spec.rb
521
- - kinde_api/spec/models/user_identities_inner_spec.rb
503
+ - kinde_api/spec/models/create_user_request_identities_inner_details_spec.rb
504
+ - kinde_api/spec/models/organization_user_spec.rb
505
+ - kinde_api/spec/models/roles_spec.rb
506
+ - kinde_api/spec/models/get_subscriber_response_spec.rb
507
+ - kinde_api/spec/models/roles_permission_response_inner_spec.rb
508
+ - kinde_api/spec/models/apis_spec.rb
509
+ - kinde_api/spec/models/create_application_response_application_spec.rb
510
+ - kinde_api/spec/models/update_application_request_spec.rb
511
+ - kinde_api/spec/models/get_organizations_user_permissions_response_spec.rb
512
+ - kinde_api/spec/models/update_environement_feature_flag_override_request_spec.rb
522
513
  - kinde_api/spec/models/create_feature_flag_request_spec.rb
523
514
  - kinde_api/spec/models/update_roles_request_spec.rb
524
- - kinde_api/spec/models/replace_logout_redirect_urls_request_spec.rb
525
- - kinde_api/spec/models/create_user_request_profile_spec.rb
526
- - kinde_api/spec/models/redirect_callback_urls_spec.rb
515
+ - kinde_api/spec/models/token_introspect_spec.rb
527
516
  - kinde_api/spec/models/get_permissions_response_spec.rb
528
- - kinde_api/spec/models/update_organization_users_request_spec.rb
529
- - kinde_api/spec/models/create_user_request_spec.rb
530
- - kinde_api/spec/models/user_identity_result_spec.rb
531
- - kinde_api/spec/models/update_user_request_spec.rb
517
+ - kinde_api/spec/models/create_organization_user_permission_request_spec.rb
518
+ - kinde_api/spec/models/update_role_permissions_request_spec.rb
519
+ - kinde_api/spec/models/create_user_response_spec.rb
520
+ - kinde_api/spec/models/user_profile_v2_spec.rb
521
+ - kinde_api/spec/models/token_error_response_spec.rb
522
+ - kinde_api/spec/models/update_api_applications_request_applications_inner_spec.rb
523
+ - kinde_api/spec/models/get_redirect_callback_urls_response_spec.rb
532
524
  - kinde_api/spec/models/get_organization_feature_flags_response_feature_flags_value_spec.rb
533
- - kinde_api/spec/models/get_application_response_spec.rb
534
- - kinde_api/spec/models/create_subscriber_success_response_spec.rb
535
- - kinde_api/spec/models/connected_apps_access_token_spec.rb
536
- - kinde_api/spec/models/create_organization_response_spec.rb
537
- - kinde_api/spec/models/create_organization_response_organization_spec.rb
538
- - kinde_api/spec/models/create_permission_request_spec.rb
539
- - kinde_api/spec/models/update_organization_request_spec.rb
540
- - kinde_api/spec/models/update_application_request_spec.rb
541
- - kinde_api/spec/models/get_applications_response_spec.rb
542
525
  - kinde_api/spec/models/organization_user_permission_roles_inner_spec.rb
543
- - kinde_api/spec/models/update_organization_users_request_users_inner_spec.rb
544
- - kinde_api/spec/models/add_organization_users_response_spec.rb
545
- - kinde_api/spec/models/get_roles_response_spec.rb
546
- - kinde_api/spec/models/create_user_response_spec.rb
547
- - kinde_api/spec/models/update_role_permissions_response_spec.rb
548
- - kinde_api/spec/models/replace_redirect_callback_urls_request_spec.rb
549
- - kinde_api/spec/models/user_spec.rb
550
- - kinde_api/spec/models/role_spec.rb
551
526
  - kinde_api/spec/models/success_response_spec.rb
527
+ - kinde_api/spec/models/get_organization_feature_flags_response_spec.rb
528
+ - kinde_api/spec/models/permissions_spec.rb
552
529
  - kinde_api/spec/models/organization_user_role_spec.rb
553
- - kinde_api/spec/models/get_application_response_application_spec.rb
554
- - kinde_api/spec/models/user_profile_spec.rb
555
- - kinde_api/spec/models/create_user_request_identities_inner_spec.rb
530
+ - kinde_api/spec/models/organization_user_role_permissions_spec.rb
531
+ - kinde_api/spec/models/error_response_spec.rb
532
+ - kinde_api/spec/models/get_organization_users_response_spec.rb
533
+ - kinde_api/spec/models/organization_user_role_permissions_permissions_spec.rb
534
+ - kinde_api/spec/models/error_spec.rb
535
+ - kinde_api/spec/models/create_role_request_spec.rb
536
+ - kinde_api/spec/models/update_user_response_spec.rb
556
537
  - kinde_api/spec/models/add_organization_users_request_users_inner_spec.rb
557
- - kinde_api/spec/models/user_profile_v2_spec.rb
538
+ - kinde_api/spec/models/replace_logout_redirect_urls_request_spec.rb
539
+ - kinde_api/spec/models/user_spec.rb
540
+ - kinde_api/spec/models/create_application_response_spec.rb
541
+ - kinde_api/spec/models/create_organization_response_spec.rb
558
542
  - kinde_api/spec/models/get_subscribers_response_spec.rb
559
- - kinde_api/spec/models/token_introspect_spec.rb
543
+ - kinde_api/spec/models/get_application_response_spec.rb
544
+ - kinde_api/spec/models/applications_spec.rb
545
+ - kinde_api/spec/models/update_role_permissions_response_spec.rb
546
+ - kinde_api/spec/models/update_api_applications_request_spec.rb
547
+ - kinde_api/spec/models/create_organization_request_spec.rb
548
+ - kinde_api/spec/models/api_applications_inner_spec.rb
549
+ - kinde_api/spec/models/update_organization_users_request_users_inner_spec.rb
550
+ - kinde_api/spec/models/user_profile_spec.rb
551
+ - kinde_api/spec/models/users_response_users_inner_spec.rb
552
+ - kinde_api/spec/models/create_subscriber_success_response_spec.rb
553
+ - kinde_api/spec/models/create_subscriber_success_response_subscriber_spec.rb
554
+ - kinde_api/spec/models/user_identity_result_spec.rb
555
+ - kinde_api/spec/models/get_roles_response_spec.rb
556
+ - kinde_api/spec/models/create_user_request_spec.rb
557
+ - kinde_api/spec/models/update_organization_request_spec.rb
558
+ - kinde_api/spec/models/get_organizations_user_roles_response_spec.rb
559
+ - kinde_api/spec/models/user_identities_inner_spec.rb
560
+ - kinde_api/spec/models/add_organization_users_request_spec.rb
560
561
  - kinde_api/spec/spec_helper.rb