descope 1.0.7 → 1.2.0

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 (91) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yaml +51 -12
  3. data/.github/workflows/publish-gem.yaml +6 -33
  4. data/.github/workflows/release-please.yaml +36 -0
  5. data/.gitignore +3 -2
  6. data/.release-please-manifest.json +1 -1
  7. data/.rubocop.yml +1 -1
  8. data/.rubocop_todo.yml +1 -1
  9. data/.ruby-version +1 -1
  10. data/CHANGELOG.md +31 -0
  11. data/Gemfile +7 -6
  12. data/Gemfile.lock +46 -45
  13. data/README.md +244 -1
  14. data/examples/ruby-on-rails-api/descope/package-lock.json +16 -10
  15. data/examples/ruby-on-rails-api/descope/yarn.lock +3 -3
  16. data/lib/descope/api/v1/auth/enchantedlink.rb +76 -9
  17. data/lib/descope/api/v1/management/access_key.rb +8 -7
  18. data/lib/descope/api/v1/management/analytics.rb +62 -0
  19. data/lib/descope/api/v1/management/audit.rb +2 -2
  20. data/lib/descope/api/v1/management/authz.rb +15 -15
  21. data/lib/descope/api/v1/management/common.rb +76 -0
  22. data/lib/descope/api/v1/management/descoper.rb +45 -0
  23. data/lib/descope/api/v1/management/engine.rb +44 -0
  24. data/lib/descope/api/v1/management/fga.rb +64 -0
  25. data/lib/descope/api/v1/management/flow.rb +5 -5
  26. data/lib/descope/api/v1/management/group.rb +42 -0
  27. data/lib/descope/api/v1/management/jwt_template.rb +49 -0
  28. data/lib/descope/api/v1/management/lists.rb +96 -0
  29. data/lib/descope/api/v1/management/management_key.rb +54 -0
  30. data/lib/descope/api/v1/management/outbound_app.rb +112 -0
  31. data/lib/descope/api/v1/management/password.rb +2 -2
  32. data/lib/descope/api/v1/management/permission.rb +4 -4
  33. data/lib/descope/api/v1/management/project.rb +5 -5
  34. data/lib/descope/api/v1/management/role.rb +5 -5
  35. data/lib/descope/api/v1/management/scim.rb +14 -14
  36. data/lib/descope/api/v1/management/scope_claim_mapping.rb +34 -0
  37. data/lib/descope/api/v1/management/sso_application.rb +7 -7
  38. data/lib/descope/api/v1/management/sso_settings.rb +5 -5
  39. data/lib/descope/api/v1/management/tenant.rb +8 -6
  40. data/lib/descope/api/v1/management/third_party_application.rb +190 -0
  41. data/lib/descope/api/v1/management/user.rb +36 -36
  42. data/lib/descope/api/v1/management.rb +22 -0
  43. data/lib/descope/http_client.rb +30 -0
  44. data/lib/descope/mixins/common.rb +1 -0
  45. data/lib/descope/mixins/http.rb +25 -18
  46. data/lib/descope/mixins/initializer.rb +23 -11
  47. data/lib/descope/mixins/requests.rb +24 -0
  48. data/lib/descope/mixins.rb +2 -1
  49. data/lib/descope/version.rb +1 -1
  50. data/spec/integration/lib.descope/api/v1/auth/enchantedlink_spec.rb +19 -21
  51. data/spec/integration/lib.descope/api/v1/auth/magiclink_spec.rb +5 -1
  52. data/spec/integration/lib.descope/api/v1/auth/otp_spec.rb +5 -1
  53. data/spec/integration/lib.descope/api/v1/auth/session_spec.rb +24 -5
  54. data/spec/integration/lib.descope/api/v1/auth/totp_spec.rb +5 -1
  55. data/spec/integration/lib.descope/api/v1/management/access_key_spec.rb +10 -2
  56. data/spec/integration/lib.descope/api/v1/management/authz_spec.rb +26 -5
  57. data/spec/integration/lib.descope/api/v1/management/permissions_spec.rb +20 -2
  58. data/spec/integration/lib.descope/api/v1/management/project_spec.rb +16 -2
  59. data/spec/integration/lib.descope/api/v1/management/roles_spec.rb +114 -36
  60. data/spec/integration/lib.descope/api/v1/management/user_spec.rb +21 -4
  61. data/spec/lib.descope/api/v1/auth/enchantedlink_spec.rb +163 -1
  62. data/spec/lib.descope/api/v1/management/access_key_spec.rb +7 -7
  63. data/spec/lib.descope/api/v1/management/analytics_spec.rb +82 -0
  64. data/spec/lib.descope/api/v1/management/audit_spec.rb +2 -2
  65. data/spec/lib.descope/api/v1/management/authz_spec.rb +16 -16
  66. data/spec/lib.descope/api/v1/management/descoper_spec.rb +101 -0
  67. data/spec/lib.descope/api/v1/management/engine_spec.rb +115 -0
  68. data/spec/lib.descope/api/v1/management/fga_spec.rb +169 -0
  69. data/spec/lib.descope/api/v1/management/flow_spec.rb +5 -5
  70. data/spec/lib.descope/api/v1/management/group_spec.rb +72 -0
  71. data/spec/lib.descope/api/v1/management/jwt_template_spec.rb +103 -0
  72. data/spec/lib.descope/api/v1/management/lists_spec.rb +285 -0
  73. data/spec/lib.descope/api/v1/management/management_key_spec.rb +109 -0
  74. data/spec/lib.descope/api/v1/management/outbound_app_spec.rb +236 -0
  75. data/spec/lib.descope/api/v1/management/password_spec.rb +2 -2
  76. data/spec/lib.descope/api/v1/management/permission_spec.rb +4 -4
  77. data/spec/lib.descope/api/v1/management/project_spec.rb +4 -4
  78. data/spec/lib.descope/api/v1/management/role_spec.rb +5 -5
  79. data/spec/lib.descope/api/v1/management/scim_spec.rb +14 -14
  80. data/spec/lib.descope/api/v1/management/scope_claim_mapping_spec.rb +59 -0
  81. data/spec/lib.descope/api/v1/management/sso_application_spec.rb +6 -6
  82. data/spec/lib.descope/api/v1/management/sso_settings_spec.rb +5 -5
  83. data/spec/lib.descope/api/v1/management/tenant_spec.rb +6 -6
  84. data/spec/lib.descope/api/v1/management/third_party_application_spec.rb +171 -0
  85. data/spec/lib.descope/api/v1/management/user_spec.rb +36 -36
  86. data/spec/lib.descope/auth_management_key_spec.rb +151 -0
  87. data/spec/lib.descope/mixins/http_spec.rb +17 -6
  88. data/spec/support/client_config.rb +1 -0
  89. data/spec/support/dummy_class.rb +12 -9
  90. data/spec/support/utils.rb +15 -0
  91. metadata +29 -3
@@ -0,0 +1,112 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Descope
4
+ module Api
5
+ module V1
6
+ module Management
7
+ # Outbound App Management API calls
8
+ # Manage outbound application tokens for users
9
+ # @see https://docs.descope.com/api/management/outbound-apps/
10
+ module OutboundApp
11
+ include Descope::Mixins::Validation
12
+ include Descope::Api::V1::Management::Common
13
+
14
+ # Outbound App paths
15
+ OUTBOUND_APP_FETCH_USER_TOKEN_PATH = '/v1/mgmt/outbound/app/user/token'
16
+ OUTBOUND_APP_DELETE_USER_TOKENS_PATH = '/v1/mgmt/outbound/user/tokens'
17
+ OUTBOUND_APP_DELETE_TOKEN_BY_ID_PATH = '/v1/mgmt/outbound/token'
18
+
19
+ # Fetch outbound application user token with the specified scopes.
20
+ # @see https://docs.descope.com/api/management/outbound-apps/fetch-outbound-app-user-token
21
+ #
22
+ # @param app_id [String] The outbound application ID
23
+ # @param user_id [String] The user ID to fetch the token for
24
+ # @param scopes [Array<String>] Optional list of scopes for the token
25
+ # @param with_refresh_token [Boolean] Optional flag to include refresh token (default: false)
26
+ # @param force_refresh [Boolean] Optional flag to force token refresh (default: false)
27
+ # @param tenant_id [String] Optional tenant ID
28
+ #
29
+ # @return [Hash] Token information including accessToken, accessTokenExpiry, etc.
30
+ def fetch_outbound_app_user_token(app_id:, user_id:, scopes: nil, with_refresh_token: false, force_refresh: false, tenant_id: nil)
31
+ validate_app_id(app_id)
32
+ validate_user_id(user_id)
33
+
34
+ body = {
35
+ appId: app_id,
36
+ userId: user_id
37
+ }
38
+
39
+ body[:scopes] = scopes if scopes.is_a?(Array) && !scopes.empty?
40
+ body[:tenantId] = tenant_id unless tenant_id.nil? || tenant_id.empty?
41
+
42
+ # Only include options if at least one is true
43
+ if with_refresh_token || force_refresh
44
+ body[:options] = {
45
+ withRefreshToken: with_refresh_token,
46
+ forceRefresh: force_refresh
47
+ }
48
+ end
49
+
50
+ mgmt_post(OUTBOUND_APP_FETCH_USER_TOKEN_PATH, body)
51
+ end
52
+
53
+ # Delete outbound application tokens by appId or userId.
54
+ # At least one of app_id or user_id must be provided.
55
+ # @see https://docs.descope.com/api/management/outbound-apps/delete-outbound-app-user-tokens
56
+ #
57
+ # @param app_id [String] Optional outbound application ID
58
+ # @param user_id [String] Optional user ID
59
+ #
60
+ # @return [void]
61
+ def delete_outbound_app_user_tokens(app_id: nil, user_id: nil)
62
+ if (app_id.nil? || app_id.empty?) && (user_id.nil? || user_id.empty?)
63
+ raise Descope::ArgumentException.new(
64
+ 'At least one of app_id or user_id must be provided',
65
+ code: 400
66
+ )
67
+ end
68
+
69
+ query_params = {}
70
+ query_params[:appId] = app_id unless app_id.nil? || app_id.empty?
71
+ query_params[:userId] = user_id unless user_id.nil? || user_id.empty?
72
+
73
+ mgmt_delete(OUTBOUND_APP_DELETE_USER_TOKENS_PATH, query_params)
74
+ end
75
+
76
+ # Delete outbound application token by its ID.
77
+ # @see https://docs.descope.com/api/management/outbound-apps/delete-outbound-app-token-by-id
78
+ #
79
+ # @param token_id [String] The token ID to delete
80
+ #
81
+ # @return [void]
82
+ def delete_outbound_app_token_by_id(token_id:)
83
+ validate_token_id(token_id)
84
+
85
+ query_params = { id: token_id }
86
+ mgmt_delete(OUTBOUND_APP_DELETE_TOKEN_BY_ID_PATH, query_params)
87
+ end
88
+
89
+ private
90
+
91
+ def validate_app_id(app_id)
92
+ return unless app_id.nil? || app_id.empty?
93
+
94
+ raise Descope::ArgumentException.new(
95
+ 'app_id cannot be empty',
96
+ code: 400
97
+ )
98
+ end
99
+
100
+ def validate_token_id(token_id)
101
+ return unless token_id.nil? || token_id.empty?
102
+
103
+ raise Descope::ArgumentException.new(
104
+ 'token_id cannot be empty',
105
+ code: 400
106
+ )
107
+ end
108
+ end
109
+ end
110
+ end
111
+ end
112
+ end
@@ -10,7 +10,7 @@ module Descope
10
10
 
11
11
  def get_password_settings(tenant_id)
12
12
  # Get password settings for the provided tenant id.
13
- get(PASSWORD_SETTINGS_PATH, { tenantId: tenant_id })
13
+ mgmt_get(PASSWORD_SETTINGS_PATH, { tenantId: tenant_id })
14
14
  end
15
15
 
16
16
  def update_password_settings(settings)
@@ -20,7 +20,7 @@ module Descope
20
20
 
21
21
  # Update password settings for the provided tenant id.
22
22
  body = compose_settings_body(settings)
23
- post(PASSWORD_SETTINGS_PATH, body)
23
+ mgmt_post(PASSWORD_SETTINGS_PATH, body)
24
24
  end
25
25
 
26
26
  private
@@ -17,7 +17,7 @@ module Descope
17
17
  name:,
18
18
  description:
19
19
  }
20
- post(PERMISSION_CREATE_PATH, request_params)
20
+ mgmt_post(PERMISSION_CREATE_PATH, request_params)
21
21
  end
22
22
 
23
23
  def update_permission(name: nil, new_name: nil, description: nil)
@@ -29,17 +29,17 @@ module Descope
29
29
  newName: new_name,
30
30
  description:
31
31
  }
32
- post(PERMISSION_UPDATE_PATH, request_params)
32
+ mgmt_post(PERMISSION_UPDATE_PATH, request_params)
33
33
  end
34
34
 
35
35
  def delete_permission(name = nil)
36
36
  # Delete an existing permission. IMPORTANT: This action is irreversible. Use carefully.
37
- post(PERMISSION_DELETE_PATH, { name: })
37
+ mgmt_post(PERMISSION_DELETE_PATH, { name: })
38
38
  end
39
39
 
40
40
  def load_all_permissions
41
41
  # Load all permissions.
42
- get(PERMISSION_LOAD_ALL_PATH)
42
+ mgmt_get(PERMISSION_LOAD_ALL_PATH)
43
43
  end
44
44
  end
45
45
  end
@@ -10,7 +10,7 @@ module Descope
10
10
 
11
11
  def rename_project(name)
12
12
  # Rename a project.
13
- post(PROJECT_UPDATE_NAME, { name: })
13
+ mgmt_post(PROJECT_UPDATE_NAME, { name: })
14
14
  end
15
15
 
16
16
  def export_project
@@ -20,7 +20,7 @@ module Descope
20
20
  # - Users, tenants and access keys are not cloned.
21
21
  # - Secrets, keys and tokens are not stripped from the exported data.
22
22
  # @returns a HASH containing the exported JSON files payload.
23
- post(PROJECT_EXPORT_PATH)
23
+ mgmt_post(PROJECT_EXPORT_PATH)
24
24
  end
25
25
 
26
26
  def import_project(files: nil, excludes: nil)
@@ -28,12 +28,12 @@ module Descope
28
28
  # The argument of files should be the output of the export project endpoint
29
29
  body = { files: }
30
30
  body[:excludes] = excludes unless excludes.nil?
31
- post(PROJECT_IMPORT_PATH, body)
31
+ mgmt_post(PROJECT_IMPORT_PATH, body)
32
32
  end
33
33
 
34
34
  def delete_project
35
35
  # Delete the current project. IMPORTANT: This action is irreversible. Use carefully.
36
- post(PROJECT_DELETE_PATH)
36
+ mgmt_post(PROJECT_DELETE_PATH)
37
37
  end
38
38
 
39
39
  def clone_project(name: nil, tag: nil)
@@ -44,7 +44,7 @@ module Descope
44
44
  name:,
45
45
  tag:
46
46
  }
47
- post(PROJECT_CLONE, request_params)
47
+ mgmt_post(PROJECT_CLONE, request_params)
48
48
  end
49
49
  end
50
50
  end
@@ -17,7 +17,7 @@ module Descope
17
17
  permissionNames: permission_names,
18
18
  tenantId: tenant_id
19
19
  }
20
- post(ROLE_CREATE_PATH, request_params)
20
+ mgmt_post(ROLE_CREATE_PATH, request_params)
21
21
  end
22
22
 
23
23
  def update_role(name: nil, new_name: nil, description: nil, permission_names: nil, tenant_id: nil)
@@ -31,7 +31,7 @@ module Descope
31
31
  permissionNames: permission_names,
32
32
  tenantId: tenant_id
33
33
  }
34
- post(ROLE_UPDATE_PATH, request_params)
34
+ mgmt_post(ROLE_UPDATE_PATH, request_params)
35
35
  end
36
36
 
37
37
  def delete_role(name: nil, tenant_id: nil)
@@ -40,12 +40,12 @@ module Descope
40
40
 
41
41
  request_params = { name: }
42
42
  request_params[:tenantId] = tenant_id if tenant_id
43
- post(ROLE_DELETE_PATH, request_params)
43
+ mgmt_post(ROLE_DELETE_PATH, request_params)
44
44
  end
45
45
 
46
46
  def load_all_roles
47
47
  # Load all roles.
48
- get(ROLE_LOAD_ALL_PATH)
48
+ mgmt_get(ROLE_LOAD_ALL_PATH)
49
49
  end
50
50
 
51
51
  def search_roles(role_names: nil, tenant_ids: nil, role_name_like: nil, permission_names: nil)
@@ -55,7 +55,7 @@ module Descope
55
55
  request_params[:tenantIds] = tenant_ids if tenant_ids
56
56
  request_params[:roleNameLike] = role_name_like if role_name_like
57
57
  request_params[:permissionNames] = permission_names if permission_names
58
- post(ROLE_SEARCH_PATH, request_params)
58
+ mgmt_post(ROLE_SEARCH_PATH, request_params)
59
59
  end
60
60
  end
61
61
  end
@@ -11,21 +11,21 @@ module Descope
11
11
  def scim_search_groups(filter: nil, start_index: nil, count: nil, excluded_attributes: nil)
12
12
  # Search SCIM Groups
13
13
  url = compose_scim_search_groups_url(filter, start_index, count, excluded_attributes)
14
- get(url)
14
+ mgmt_get(url)
15
15
  end
16
16
 
17
17
  def scim_create_group(group_id: nil, display_name: nil, members: nil, external_id: nil,
18
18
  excluded_attributes: nil)
19
19
  # Create SCIM Group
20
20
  body = compose_scim_create_group_body(group_id, display_name, members, external_id, excluded_attributes)
21
- post(SCIM_GROUPS_PATH, body)
21
+ mgmt_post(SCIM_GROUPS_PATH, body)
22
22
  end
23
23
 
24
24
  def scim_load_group(group_id: nil, display_name: nil, external_id: nil, excluded_attributes: nil)
25
25
  # Load SCIM Group, using a valid access key.
26
26
  validate_scim_group_id(group_id)
27
27
  url = compose_scim_create_group_url(group_id, display_name, external_id, excluded_attributes)
28
- get(url)
28
+ mgmt_get(url)
29
29
  end
30
30
 
31
31
  def scim_update_group(group_id: nil, display_name: nil, members: nil, external_id: nil,
@@ -33,38 +33,38 @@ module Descope
33
33
  # Update SCIM Group, using a valid access key.
34
34
  validate_scim_group_id(group_id)
35
35
  body = compose_scim_update_group_body(group_id, display_name, members, external_id, excluded_attributes)
36
- patch("#{SCIM_GROUPS_PATH}/#{group_id}", body)
36
+ mgmt_patch("#{SCIM_GROUPS_PATH}/#{group_id}", body)
37
37
  end
38
38
 
39
39
  def scim_delete_group(group_id)
40
40
  # Delete SCIM Group, using a valid access key.
41
41
  validate_scim_group_id(group_id)
42
42
  url = "#{SCIM_GROUPS_PATH}/#{group_id}"
43
- delete(url)
43
+ mgmt_delete(url)
44
44
  end
45
45
 
46
46
  def scim_patch_group(group_id: nil, user_id: nil, operations: nil)
47
47
  # Patch SCIM Group, using a valid access key.
48
48
  validate_scim_group_id(group_id)
49
49
  url = compose_scim_patch_group_url(group_id, user_id, operations)
50
- patch(url)
50
+ mgmt_patch(url)
51
51
  end
52
52
 
53
53
  # SCIM Users
54
54
  def scim_load_resource_types
55
55
  # Load SCIM Resource Types, using a valid access key.
56
- get(SCIM_RESOURCE_TYPES_PATH)
56
+ mgmt_get(SCIM_RESOURCE_TYPES_PATH)
57
57
  end
58
58
 
59
59
  def scim_load_service_provider_config
60
60
  # Load SCIM Service Provider Config, using a valid access key.
61
- get(SCIM_SERVICE_PROVIDER_CONFIG_PATH)
61
+ mgmt_get(SCIM_SERVICE_PROVIDER_CONFIG_PATH)
62
62
  end
63
63
 
64
64
  def scim_search_users(filter: nil, start_index: nil, count: nil)
65
65
  # Search SCIM Users, using a valid access key.
66
66
  url = compose_scim_search_users_url(filter, start_index, count)
67
- get(url)
67
+ mgmt_get(url)
68
68
  end
69
69
 
70
70
  def scim_create_user(user_id: nil, display_name: nil, emails: nil,
@@ -72,28 +72,28 @@ module Descope
72
72
  # Create SCIM User, using a valid access key.
73
73
  validate_user_id(user_id)
74
74
  body = compose_scim_create_user_body(user_id, display_name, emails, phone_numbers, active, name, user_name)
75
- post(SCIM_USERS_PATH, body)
75
+ mgmt_post(SCIM_USERS_PATH, body)
76
76
  end
77
77
 
78
78
  def scim_load_user(user_id)
79
79
  # Load SCIM User, using a valid access key.
80
80
  validate_user_id(user_id)
81
81
  url = "#{SCIM_USERS_PATH}/#{user_id}"
82
- get(url)
82
+ mgmt_get(url)
83
83
  end
84
84
 
85
85
  def scim_update_user(user_id)
86
86
  # Update SCIM User, using a valid access key.
87
87
  validate_user_id(user_id)
88
88
  url = "#{SCIM_USERS_PATH}/#{user_id}"
89
- patch(url)
89
+ mgmt_patch(url)
90
90
  end
91
91
 
92
92
  def scim_delete_user(user_id)
93
93
  # Delete SCIM User, using a valid access key.
94
94
  validate_user_id(user_id)
95
95
  url = "#{SCIM_USERS_PATH}/#{user_id}"
96
- delete(url)
96
+ mgmt_delete(url)
97
97
  end
98
98
 
99
99
  def scim_patch_user(user_id: nil, group_id: nil, operations: nil)
@@ -101,7 +101,7 @@ module Descope
101
101
  validate_user_id(user_id)
102
102
  validate_scim_group_id(group_id)
103
103
  body = compose_scim_patch_user_body(user_id, group_id, operations)
104
- patch(SCIM_USERS_PATH, body)
104
+ mgmt_patch(SCIM_USERS_PATH, body)
105
105
  end
106
106
 
107
107
  private
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Descope
4
+ module Api
5
+ module V1
6
+ module Management
7
+ # Manage project-wide OIDC scope-to-claim mapping
8
+ module ScopeClaimMapping
9
+ include Descope::Api::V1::Management::Common
10
+
11
+ def get_scope_claim_mapping # rubocop:disable Naming/AccessorMethodName
12
+ # Get the project-wide OIDC scope-to-claim mappings.
13
+ mgmt_post(SCOPE_CLAIM_MAPPING_GET_PATH)
14
+ end
15
+
16
+ def set_scope_claim_mapping(mappings: nil)
17
+ # Set the project-wide OIDC scope-to-claim mappings.
18
+ # mappings (Array[]): the scope-to-claim mappings to set. Each in the following format:
19
+ # {
20
+ # "scope": "name of the OIDC scope",
21
+ # "claims": ["list of claims mapped to the scope"]
22
+ # }
23
+ mgmt_post(SCOPE_CLAIM_MAPPING_SET_PATH, { mappings: })
24
+ end
25
+
26
+ def delete_scope_claim_mapping
27
+ # Delete the project-wide OIDC scope-to-claim mappings.
28
+ mgmt_post(SCOPE_CLAIM_MAPPING_DELETE_PATH)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -18,7 +18,7 @@ module Descope
18
18
  body[:enabled] = enabled if enabled
19
19
  body[:logo] = logo if logo
20
20
  body[:loginPageUrl] = login_page_url if login_page_url
21
- post(SSO_APPLICATION_OIDC_CREATE_PATH, body)
21
+ mgmt_post(SSO_APPLICATION_OIDC_CREATE_PATH, body)
22
22
  end
23
23
 
24
24
  # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
@@ -78,14 +78,14 @@ module Descope
78
78
  force_authentication:,
79
79
  logout_redirect_url:
80
80
  )
81
- post(SSO_APPLICATION_SAML_CREATE_PATH, body)
81
+ mgmt_post(SSO_APPLICATION_SAML_CREATE_PATH, body)
82
82
  end
83
83
 
84
84
  def update_sso_oidc_app(id: nil, name: nil, description: nil, enabled: nil, logo: nil, login_page_url: nil, force_authentication: nil)
85
85
  # Update an existing OIDC sso application with the given parameters. IMPORTANT: All parameters are used as overrides
86
86
  # to the existing sso application. Empty fields will override populated fields. Use carefully.
87
87
  body = compose_create_update_oidc_body(name, login_page_url, id, description, enabled, logo, force_authentication)
88
- post(SSO_APPLICATION_OIDC_UPDATE_PATH, body)
88
+ mgmt_post(SSO_APPLICATION_OIDC_UPDATE_PATH, body)
89
89
  end
90
90
 
91
91
  def update_saml_application(
@@ -143,17 +143,17 @@ module Descope
143
143
  force_authentication:,
144
144
  logout_redirect_url:
145
145
  )
146
- post(SSO_APPLICATION_SAML_UPDATE_PATH, body)
146
+ mgmt_post(SSO_APPLICATION_SAML_UPDATE_PATH, body)
147
147
  end
148
148
 
149
149
  def delete_sso_app(id)
150
150
  # Delete an existing sso application. IMPORTANT: This operation is irreversible. Use carefully.
151
- delete(SSO_APPLICATION_DELETE_PATH, { id: })
151
+ mgmt_delete(SSO_APPLICATION_DELETE_PATH, { id: })
152
152
  end
153
153
 
154
154
  def load_sso_app(id)
155
155
  # Load an existing sso application.
156
- get(SSO_APPLICATION_LOAD_PATH, { id: })
156
+ mgmt_get(SSO_APPLICATION_LOAD_PATH, { id: })
157
157
  end
158
158
 
159
159
  def load_all_sso_apps
@@ -167,7 +167,7 @@ module Descope
167
167
  # ]
168
168
  # }
169
169
  # Containing the loaded sso applications information.
170
- get(SSO_APPLICATION_LOAD_ALL_PATH, {})
170
+ mgmt_get(SSO_APPLICATION_LOAD_ALL_PATH, {})
171
171
  end
172
172
 
173
173
  private
@@ -10,12 +10,12 @@ module Descope
10
10
 
11
11
  def get_sso_settings(tenant_id)
12
12
  # Get SSO settings for the provided tenant id.
13
- get(SSO_SETTINGS_PATH, { tenantId: tenant_id })
13
+ mgmt_get(SSO_SETTINGS_PATH, { tenantId: tenant_id })
14
14
  end
15
15
 
16
16
  def delete_sso_settings(tenant_id)
17
17
  # Delete SSO settings for the provided tenant id.
18
- delete(SSO_SETTINGS_PATH, { tenantId: tenant_id })
18
+ mgmt_delete(SSO_SETTINGS_PATH, { tenantId: tenant_id })
19
19
  end
20
20
 
21
21
  def configure_sso_oidc(tenant_id: nil, settings: nil, redirect_url: nil, domain: nil)
@@ -28,7 +28,7 @@ module Descope
28
28
  redirectUrl: redirect_url,
29
29
  domain:
30
30
  }
31
- post(SSO_OIDC_PATH, request_params)
31
+ mgmt_post(SSO_OIDC_PATH, request_params)
32
32
  end
33
33
 
34
34
  def configure_sso_saml(tenant_id: nil, settings: nil, redirect_url: nil, domain: nil)
@@ -41,12 +41,12 @@ module Descope
41
41
  redirectUrl: redirect_url,
42
42
  domain:
43
43
  }
44
- post(SSO_SETTINGS_PATH, request_params)
44
+ mgmt_post(SSO_SETTINGS_PATH, request_params)
45
45
  end
46
46
 
47
47
  def configure_sso_saml_metadata(tenant_id: nil, settings: nil, redirect_url: nil, domain: nil)
48
48
  # Configure tenant SSO SAML Metadata, using a valid management key.
49
- post(SSO_METADATA_PATH, compose_metadata_body(tenant_id, settings, redirect_url, domain))
49
+ mgmt_post(SSO_METADATA_PATH, compose_metadata_body(tenant_id, settings, redirect_url, domain))
50
50
  end
51
51
 
52
52
  private
@@ -17,7 +17,8 @@ module Descope
17
17
 
18
18
  self_provisioning_domains ||= []
19
19
  custom_attributes ||= {}
20
- post(TENANT_CREATE_PATH, compose_tenant_create_update_body(name, id, self_provisioning_domains, custom_attributes))
20
+ mgmt_post(TENANT_CREATE_PATH,
21
+ compose_tenant_create_update_body(name, id, self_provisioning_domains, custom_attributes))
21
22
  end
22
23
 
23
24
  def update_tenant(name: nil, id: nil, self_provisioning_domains: nil, custom_attributes: nil)
@@ -26,22 +27,23 @@ module Descope
26
27
  # @see https://docs.descope.com/api/openapi/tenantmanagement/operation/UpdateTenant/
27
28
  self_provisioning_domains ||= []
28
29
  custom_attributes ||= {}
29
- post(TENANT_UPDATE_PATH, compose_tenant_create_update_body(name, id, self_provisioning_domains, custom_attributes))
30
+ mgmt_post(TENANT_UPDATE_PATH,
31
+ compose_tenant_create_update_body(name, id, self_provisioning_domains, custom_attributes))
30
32
  end
31
33
 
32
34
  def delete_tenant(id = nil)
33
35
  # Delete an existing tenant. IMPORTANT: This action is irreversible. Use carefully.
34
- post(TENANT_DELETE_PATH, { id: })
36
+ mgmt_post(TENANT_DELETE_PATH, { id: })
35
37
  end
36
38
 
37
39
  def load_tenant(id = nil)
38
40
  # Load tenant by id.
39
- get(TENANT_LOAD_PATH, { id: })
41
+ mgmt_get(TENANT_LOAD_PATH, { id: })
40
42
  end
41
43
 
42
44
  def load_all_tenants
43
45
  # Load all tenants.
44
- get(TENANT_LOAD_ALL_PATH)
46
+ mgmt_get(TENANT_LOAD_ALL_PATH)
45
47
  end
46
48
 
47
49
  def search_all_tenants(ids: nil, names: nil, self_provisioning_domains: nil, custom_attributes: nil)
@@ -52,7 +54,7 @@ module Descope
52
54
  selfProvisioningDomains: self_provisioning_domains,
53
55
  customAttributes: custom_attributes
54
56
  }
55
- post(TENANT_SEARCH_ALL_PATH, request_params)
57
+ mgmt_post(TENANT_SEARCH_ALL_PATH, request_params)
56
58
  end
57
59
 
58
60
  private