slack-ruby-client 0.16.0 → 1.1.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.
- checksums.yaml +4 -4
- data/.github/workflows/danger.yml +19 -0
- data/.github/workflows/integtest.yml +25 -0
- data/.github/workflows/rubocop.yml +13 -0
- data/.github/workflows/test.yml +34 -0
- data/.gitignore +5 -3
- data/.rubocop.yml +6 -0
- data/.rubocop_todo.yml +137 -43
- data/CHANGELOG.md +34 -3
- data/CONTRIBUTING.md +4 -4
- data/Gemfile +18 -1
- data/Gemfile.danger +6 -0
- data/LICENSE.md +1 -1
- data/README.md +13 -12
- data/RELEASING.md +1 -1
- data/UPGRADING.md +42 -0
- data/bin/commands/admin_analytics.rb +2 -1
- data/bin/commands/admin_apps.rb +11 -0
- data/bin/commands/admin_apps_requests.rb +12 -0
- data/bin/commands/admin_auth_policy.rb +39 -0
- data/bin/commands/admin_conversations.rb +2 -1
- data/bin/commands/admin_conversations_restrictAccess.rb +1 -1
- data/bin/commands/admin_emoji.rb +2 -2
- data/bin/commands/admin_teams.rb +1 -1
- data/bin/commands/admin_users.rb +1 -0
- data/bin/commands/admin_users_session.rb +40 -0
- data/bin/commands/admin_users_unsupportedVersions.rb +15 -0
- data/bin/commands/apps_manifest.rb +52 -0
- data/bin/commands/bookmarks.rb +52 -0
- data/bin/commands/channels.rb +0 -157
- data/bin/commands/chat.rb +14 -9
- data/bin/commands/conversations.rb +61 -4
- data/bin/commands/dnd.rb +3 -1
- data/bin/commands/files.rb +2 -1
- data/bin/commands/groups.rb +0 -163
- data/bin/commands/im.rb +0 -62
- data/bin/commands/mpim.rb +0 -60
- data/bin/commands/oauth.rb +0 -13
- data/bin/commands/oauth_v2.rb +13 -1
- data/bin/commands/openid_connect.rb +27 -0
- data/bin/commands/pins.rb +2 -2
- data/bin/commands/reminders.rb +6 -0
- data/bin/commands/rtm.rb +2 -2
- data/bin/commands/search.rb +2 -1
- data/bin/commands/stars.rb +7 -6
- data/bin/commands/team.rb +1 -0
- data/bin/commands/team_billing.rb +13 -0
- data/bin/commands/team_preferences.rb +13 -0
- data/bin/commands/tooling_tokens.rb +14 -0
- data/bin/commands/usergroups.rb +1 -1
- data/bin/commands/users.rb +1 -1
- data/bin/commands/views.rb +1 -1
- data/bin/commands.rb +8 -9
- data/lib/slack/config.rb +1 -2
- data/lib/slack/events/request.rb +5 -3
- data/lib/slack/real_time/client.rb +6 -7
- data/lib/slack/real_time/concurrency/async.rb +6 -8
- data/lib/slack/real_time/config.rb +3 -13
- data/lib/slack/real_time/socket.rb +1 -2
- data/lib/slack/real_time/stores/base.rb +1 -6
- data/lib/slack/real_time/stores/starter.rb +6 -3
- data/lib/slack/real_time/stores/store.rb +5 -0
- data/lib/slack/version.rb +1 -1
- data/lib/slack/web/api/endpoints/admin_analytics.rb +5 -3
- data/lib/slack/web/api/endpoints/admin_apps.rb +21 -5
- data/lib/slack/web/api/endpoints/admin_apps_approved.rb +2 -2
- data/lib/slack/web/api/endpoints/admin_apps_requests.rb +20 -2
- data/lib/slack/web/api/endpoints/admin_apps_restricted.rb +2 -2
- data/lib/slack/web/api/endpoints/admin_auth_policy.rb +72 -0
- data/lib/slack/web/api/endpoints/admin_barriers.rb +6 -6
- data/lib/slack/web/api/endpoints/admin_conversations.rb +28 -26
- data/lib/slack/web/api/endpoints/admin_conversations_ekm.rb +4 -4
- data/lib/slack/web/api/endpoints/admin_emoji.rb +11 -11
- data/lib/slack/web/api/endpoints/admin_inviteRequests.rb +7 -7
- data/lib/slack/web/api/endpoints/admin_inviteRequests_approved.rb +3 -3
- data/lib/slack/web/api/endpoints/admin_inviteRequests_denied.rb +2 -2
- data/lib/slack/web/api/endpoints/admin_teams.rb +7 -7
- data/lib/slack/web/api/endpoints/admin_teams_admins.rb +2 -2
- data/lib/slack/web/api/endpoints/admin_teams_owners.rb +2 -2
- data/lib/slack/web/api/endpoints/admin_teams_settings.rb +5 -5
- data/lib/slack/web/api/endpoints/admin_usergroups.rb +10 -10
- data/lib/slack/web/api/endpoints/admin_users.rb +20 -18
- data/lib/slack/web/api/endpoints/admin_users_session.rb +65 -9
- data/lib/slack/web/api/endpoints/admin_users_unsupportedVersions.rb +25 -0
- data/lib/slack/web/api/endpoints/api.rb +1 -1
- data/lib/slack/web/api/endpoints/apps.rb +2 -2
- data/lib/slack/web/api/endpoints/apps_event_authorizations.rb +3 -3
- data/lib/slack/web/api/endpoints/apps_manifest.rb +77 -0
- data/lib/slack/web/api/endpoints/auth.rb +1 -1
- data/lib/slack/web/api/endpoints/auth_teams.rb +3 -3
- data/lib/slack/web/api/endpoints/bookmarks.rb +86 -0
- data/lib/slack/web/api/endpoints/bots.rb +2 -2
- data/lib/slack/web/api/endpoints/calls.rb +15 -15
- data/lib/slack/web/api/endpoints/calls_participants.rb +4 -4
- data/lib/slack/web/api/endpoints/channels.rb +0 -265
- data/lib/slack/web/api/endpoints/chat.rb +67 -57
- data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +3 -3
- data/lib/slack/web/api/endpoints/conversations.rb +117 -27
- data/lib/slack/web/api/endpoints/dialog.rb +2 -2
- data/lib/slack/web/api/endpoints/dnd.rb +6 -3
- data/lib/slack/web/api/endpoints/files.rb +16 -14
- data/lib/slack/web/api/endpoints/files_comments.rb +1 -1
- data/lib/slack/web/api/endpoints/files_remote.rb +20 -20
- data/lib/slack/web/api/endpoints/groups.rb +0 -273
- data/lib/slack/web/api/endpoints/im.rb +0 -107
- data/lib/slack/web/api/endpoints/migration.rb +3 -3
- data/lib/slack/web/api/endpoints/mpim.rb +0 -102
- data/lib/slack/web/api/endpoints/oauth.rb +5 -27
- data/lib/slack/web/api/endpoints/oauth_v2.rb +24 -6
- data/lib/slack/web/api/endpoints/openid_connect.rb +42 -0
- data/lib/slack/web/api/endpoints/pins.rb +4 -4
- data/lib/slack/web/api/endpoints/reactions.rb +12 -12
- data/lib/slack/web/api/endpoints/reminders.rb +17 -5
- data/lib/slack/web/api/endpoints/rtm.rb +10 -10
- data/lib/slack/web/api/endpoints/search.rb +24 -16
- data/lib/slack/web/api/endpoints/stars.rb +11 -9
- data/lib/slack/web/api/endpoints/team.rb +10 -8
- data/lib/slack/web/api/endpoints/team_billing.rb +21 -0
- data/lib/slack/web/api/endpoints/team_preferences.rb +21 -0
- data/lib/slack/web/api/endpoints/team_profile.rb +1 -1
- data/lib/slack/web/api/endpoints/tooling_tokens.rb +24 -0
- data/lib/slack/web/api/endpoints/usergroups.rb +19 -19
- data/lib/slack/web/api/endpoints/usergroups_users.rb +7 -7
- data/lib/slack/web/api/endpoints/users.rb +16 -16
- data/lib/slack/web/api/endpoints/users_profile.rb +4 -4
- data/lib/slack/web/api/endpoints/views.rb +12 -12
- data/lib/slack/web/api/endpoints/workflows.rb +9 -9
- data/lib/slack/web/api/endpoints.rb +16 -20
- data/lib/slack/web/api/errors/server_error.rb +37 -0
- data/lib/slack/web/api/errors/too_many_requests_error.rb +1 -4
- data/lib/slack/web/api/errors.rb +232 -16
- data/lib/slack/web/api/mixins.rb +0 -2
- data/lib/slack/web/api/patches/chat.1.patch +7 -9
- data/lib/slack/web/api/templates/endpoints.erb +0 -2
- data/lib/slack/web/faraday/connection.rb +5 -5
- data/lib/slack/web/faraday/request.rb +4 -1
- data/lib/slack/web/faraday/response/raise_error.rb +2 -14
- data/lib/slack/web/faraday/response/wrap_error.rb +11 -5
- data/lib/slack/web/pagination/cursor.rb +1 -5
- data/lib/slack-ruby-client.rb +3 -2
- data/lib/tasks/real_time.rake +1 -3
- data/lib/tasks/web.rake +4 -0
- data/slack-ruby-client.gemspec +5 -14
- data/spec/fixtures/slack/web/429_error.yml +50 -54
- data/spec/fixtures/slack/web/auth_test_error.yml +51 -18
- data/spec/fixtures/slack/web/auth_test_success.yml +50 -26
- data/spec/fixtures/slack/web/conversations_info.yml +167 -0
- data/spec/fixtures/slack/web/conversations_setTopic.yml +42 -27
- data/spec/fixtures/slack/web/conversations_setTopic_one_page.yml +89 -59
- data/spec/fixtures/slack/web/conversations_setTopic_paginated.yml +131 -86
- data/spec/fixtures/slack/web/paginated_users_list.yml +501 -69
- data/spec/fixtures/slack/web/rtm_connect.yml +267 -30
- data/spec/fixtures/slack/web/rtm_start.yml +771 -60
- data/spec/fixtures/slack/web/users_info.yml +153 -69
- data/spec/fixtures/slack/web/users_list.yml +102 -41
- data/spec/fixtures/slack/web/views_open_error.yml +49 -42
- data/spec/integration/integration_spec.rb +1 -1
- data/spec/slack/events/request_spec.rb +7 -6
- data/spec/slack/real_time/client_spec.rb +37 -39
- data/spec/slack/real_time/concurrency/with_concurrency_spec.rb +10 -0
- data/spec/slack/real_time/concurrency/without_concurrency_spec.rb +10 -0
- data/spec/slack/real_time/event_handlers/bot_spec.rb +1 -1
- data/spec/slack/real_time/event_handlers/channel_spec.rb +9 -9
- data/spec/slack/real_time/event_handlers/group_spec.rb +2 -2
- data/spec/slack/real_time/event_handlers/im_spec.rb +7 -7
- data/spec/slack/real_time/event_handlers/user_spec.rb +2 -2
- data/spec/slack/real_time/rtm_connect_spec.rb +1 -1
- data/spec/slack/real_time/rtm_start_spec.rb +1 -1
- data/spec/slack/real_time/store_spec.rb +2 -2
- data/spec/slack/slack_spec.rb +7 -5
- data/spec/slack/version_spec.rb +1 -1
- data/spec/slack/web/api/endpoints/admin_apps_requests_spec.rb +5 -0
- data/spec/slack/web/api/endpoints/admin_apps_spec.rb +5 -0
- data/spec/slack/web/api/endpoints/admin_auth_policy_spec.rb +35 -0
- data/spec/slack/web/api/endpoints/admin_conversations_spec.rb +9 -9
- data/spec/slack/web/api/endpoints/admin_teams_settings_spec.rb +1 -1
- data/spec/slack/web/api/endpoints/admin_usergroups_spec.rb +6 -6
- data/spec/slack/web/api/endpoints/admin_users_session_spec.rb +22 -2
- data/spec/slack/web/api/endpoints/admin_users_spec.rb +8 -8
- data/spec/slack/web/api/endpoints/admin_users_unsupportedVersions_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/apps_manifest_spec.rb +36 -0
- data/spec/slack/web/api/endpoints/apps_spec.rb +2 -2
- data/spec/slack/web/api/endpoints/bookmarks_spec.rb +40 -0
- data/spec/slack/web/api/endpoints/calls_participants_spec.rb +4 -4
- data/spec/slack/web/api/endpoints/calls_spec.rb +2 -2
- data/spec/slack/web/api/endpoints/custom_specs/auth_spec.rb +4 -6
- data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +28 -16
- data/spec/slack/web/api/endpoints/custom_specs/conversations_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +4 -2
- data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +2 -2
- data/spec/slack/web/api/endpoints/custom_specs/views_spec.rb +22 -14
- data/spec/slack/web/api/endpoints/dnd_spec.rb +0 -5
- data/spec/slack/web/api/endpoints/files_comments_spec.rb +2 -2
- data/spec/slack/web/api/endpoints/files_remote_spec.rb +3 -3
- data/spec/slack/web/api/endpoints/oauth_spec.rb +0 -11
- data/spec/slack/web/api/endpoints/oauth_v2_spec.rb +6 -3
- data/spec/slack/web/api/endpoints/{apps_permissions_scopes_spec.rb → openid_connect_spec.rb} +1 -1
- data/spec/slack/web/api/endpoints/reactions_spec.rb +3 -3
- data/spec/slack/web/api/endpoints/reminders_spec.rb +2 -2
- data/spec/slack/web/api/endpoints/{apps_permissions_resources_spec.rb → team_billing_spec.rb} +1 -1
- data/spec/slack/web/api/endpoints/team_preferences_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/tooling_tokens_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +2 -2
- data/spec/slack/web/api/error_spec.rb +5 -7
- data/spec/slack/web/api/errors/slack_error_spec.rb +21 -26
- data/spec/slack/web/api/mixins/conversations_list_spec.rb +1 -1
- data/spec/slack/web/api/pagination/cursor_spec.rb +8 -10
- data/spec/slack/web/client_spec.rb +46 -32
- data/spec/slack/web/faraday/request_spec.rb +80 -0
- data/spec/slack/web/faraday/response/raise_error_spec.rb +2 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/support/real_time/connected_client.rb +2 -8
- data/spec/support/vcr.rb +33 -2
- metadata +50 -297
- data/.travis.yml +0 -28
- data/lib/slack/web/api/errors/internal_error.rb +0 -14
- data/lib/slack/web/api/mixins/channels.id.json +0 -20
- data/lib/slack/web/api/mixins/channels.id.rb +0 -25
- data/lib/slack/web/api/mixins/groups.id.json +0 -20
- data/lib/slack/web/api/mixins/groups.id.rb +0 -25
- data/spec/fixtures/slack/web/503_error.yml +0 -14
- data/spec/fixtures/slack/web/channels_info.yml +0 -139
- data/spec/fixtures/slack/web/groups_info.yml +0 -43
- data/spec/slack/web/api/endpoints/admin_conversations_whitelist_spec.rb +0 -32
- data/spec/slack/web/api/endpoints/apps_permissions_spec.rb +0 -16
- data/spec/slack/web/api/endpoints/apps_permissions_users_spec.rb +0 -19
- data/spec/slack/web/api/endpoints/conversations_spec.rb +0 -109
- data/spec/slack/web/api/endpoints/custom_specs/channels_spec.rb +0 -13
- data/spec/slack/web/api/endpoints/custom_specs/groups_spec.rb +0 -13
- data/spec/slack/web/api/endpoints/im_spec.rb +0 -39
- data/spec/slack/web/api/endpoints/mpim_spec.rb +0 -39
- data/spec/slack/web/api/endpoints/views_spec.rb +0 -29
- data/spec/slack/web/api/mixins/channels_spec.rb +0 -43
- data/spec/slack/web/api/mixins/groups_spec.rb +0 -43
data/bin/commands/stars.rb
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
|
|
4
4
|
desc 'Stars methods.'
|
|
5
5
|
command 'stars' do |g|
|
|
6
|
-
g.desc '
|
|
7
|
-
g.long_desc %(
|
|
6
|
+
g.desc 'Save an item for later. Formerly known as _adding a star_.'
|
|
7
|
+
g.long_desc %( Save an item for later. Formerly known as _adding a star_. )
|
|
8
8
|
g.command 'add' do |c|
|
|
9
9
|
c.flag 'channel', desc: 'Channel to add star to, or channel where the message to add star to was posted (used with timestamp).'
|
|
10
10
|
c.flag 'file', desc: 'File to add star to.'
|
|
@@ -15,18 +15,19 @@ command 'stars' do |g|
|
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
g.desc '
|
|
19
|
-
g.long_desc %(
|
|
18
|
+
g.desc "List a user's saved items, formerly known as _stars_."
|
|
19
|
+
g.long_desc %( List a user's saved items, formerly known as _stars_. )
|
|
20
20
|
g.command 'list' do |c|
|
|
21
21
|
c.flag 'cursor', desc: "Parameter for pagination. Set cursor equal to the next_cursor attribute returned by the previous request's response_metadata. This parameter is optional, but pagination is mandatory: the default value simply fetches the first 'page' of the collection. See pagination for more details."
|
|
22
22
|
c.flag 'limit', desc: "The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the list hasn't been reached."
|
|
23
|
+
c.flag 'team_id', desc: 'encoded team id to list stars in, required if org token is used.'
|
|
23
24
|
c.action do |_global_options, options, _args|
|
|
24
25
|
puts JSON.dump($client.stars_list(options))
|
|
25
26
|
end
|
|
26
27
|
end
|
|
27
28
|
|
|
28
|
-
g.desc 'Removes a star from an item.'
|
|
29
|
-
g.long_desc %( Removes a star from an item. )
|
|
29
|
+
g.desc 'Removes a saved item (star) from an item.'
|
|
30
|
+
g.long_desc %( Removes a saved item (star) from an item. )
|
|
30
31
|
g.command 'remove' do |c|
|
|
31
32
|
c.flag 'channel', desc: 'Channel to remove star from, or channel where the message to remove star from was posted (used with timestamp).'
|
|
32
33
|
c.flag 'file', desc: 'File to remove star from.'
|
data/bin/commands/team.rb
CHANGED
|
@@ -26,6 +26,7 @@ command 'team' do |g|
|
|
|
26
26
|
g.desc 'Gets information about the current team.'
|
|
27
27
|
g.long_desc %( Gets information about the current team. )
|
|
28
28
|
g.command 'info' do |c|
|
|
29
|
+
c.flag 'domain', desc: 'Query by domain instead of team (only when team is null). This only works for domains in the same enterprise as the querying team token. This also expects the domain to belong to a team and not the enterprise itself.'
|
|
29
30
|
c.flag 'team', desc: 'Team to get info on, if omitted, will return information about the current team. Will only return team that the authenticated token is allowed to see through external shared channels.'
|
|
30
31
|
c.action do |_global_options, options, _args|
|
|
31
32
|
puts JSON.dump($client.team_info(options))
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# This file was auto-generated by lib/tasks/web.rake
|
|
3
|
+
|
|
4
|
+
desc 'TeamBilling methods.'
|
|
5
|
+
command 'team_billing' do |g|
|
|
6
|
+
g.desc "Reads a workspace's billing plan information."
|
|
7
|
+
g.long_desc %( Reads a workspace's billing plan information. )
|
|
8
|
+
g.command 'info' do |c|
|
|
9
|
+
c.action do |_global_options, options, _args|
|
|
10
|
+
puts JSON.dump($client.team_billing_info(options))
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# This file was auto-generated by lib/tasks/web.rake
|
|
3
|
+
|
|
4
|
+
desc 'TeamPreferences methods.'
|
|
5
|
+
command 'team_preferences' do |g|
|
|
6
|
+
g.desc "Retrieve a list of a workspace's team preferences."
|
|
7
|
+
g.long_desc %( Retrieve a list of a workspace's team preferences. )
|
|
8
|
+
g.command 'list' do |c|
|
|
9
|
+
c.action do |_global_options, options, _args|
|
|
10
|
+
puts JSON.dump($client.team_preferences_list(options))
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# This file was auto-generated by lib/tasks/web.rake
|
|
3
|
+
|
|
4
|
+
desc 'ToolingTokens methods.'
|
|
5
|
+
command 'tooling_tokens' do |g|
|
|
6
|
+
g.desc 'Exchanges a refresh token for a new app configuration token.'
|
|
7
|
+
g.long_desc %( Exchanges a refresh token for a new app configuration token. )
|
|
8
|
+
g.command 'rotate' do |c|
|
|
9
|
+
c.flag 'refresh_token', desc: 'The xoxe refresh token that was issued along with the old app configuration token.'
|
|
10
|
+
c.action do |_global_options, options, _args|
|
|
11
|
+
puts JSON.dump($client.tooling_tokens_rotate(options))
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
data/bin/commands/usergroups.rb
CHANGED
data/bin/commands/users.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
# This file was auto-generated by lib/tasks/web.rake
|
|
3
3
|
|
|
4
|
-
desc '
|
|
4
|
+
desc 'Users methods.'
|
|
5
5
|
command 'users' do |g|
|
|
6
6
|
g.desc 'List conversations the calling user may access.'
|
|
7
7
|
g.long_desc %( List conversations the calling user may access. )
|
data/bin/commands/views.rb
CHANGED
|
@@ -39,8 +39,8 @@ command 'views' do |g|
|
|
|
39
39
|
g.command 'update' do |c|
|
|
40
40
|
c.flag 'view', desc: 'A view object. This must be a JSON-encoded string.'
|
|
41
41
|
c.flag 'external_id', desc: 'A unique identifier of the view set by the developer. Must be unique for all views on a team. Max length of 255 characters. Either view_id or external_id is required.'
|
|
42
|
-
c.flag 'hash', desc: 'A string that represents view state to protect against possible race conditions.'
|
|
43
42
|
c.flag 'view_id', desc: 'A unique identifier of the view to be updated. Either view_id or external_id is required.'
|
|
43
|
+
c.flag 'hash', desc: 'A string that represents view state to protect against possible race conditions.'
|
|
44
44
|
c.action do |_global_options, options, _args|
|
|
45
45
|
puts JSON.dump($client.views_update(options))
|
|
46
46
|
end
|
data/bin/commands.rb
CHANGED
|
@@ -6,11 +6,11 @@ require 'commands/admin_apps'
|
|
|
6
6
|
require 'commands/admin_apps_approved'
|
|
7
7
|
require 'commands/admin_apps_requests'
|
|
8
8
|
require 'commands/admin_apps_restricted'
|
|
9
|
+
require 'commands/admin_auth_policy'
|
|
9
10
|
require 'commands/admin_barriers'
|
|
10
11
|
require 'commands/admin_conversations'
|
|
11
12
|
require 'commands/admin_conversations_ekm'
|
|
12
13
|
require 'commands/admin_conversations_restrictAccess'
|
|
13
|
-
require 'commands/admin_conversations_whitelist'
|
|
14
14
|
require 'commands/admin_emoji'
|
|
15
15
|
require 'commands/admin_inviteRequests'
|
|
16
16
|
require 'commands/admin_inviteRequests_approved'
|
|
@@ -22,20 +22,18 @@ require 'commands/admin_teams_settings'
|
|
|
22
22
|
require 'commands/admin_usergroups'
|
|
23
23
|
require 'commands/admin_users'
|
|
24
24
|
require 'commands/admin_users_session'
|
|
25
|
+
require 'commands/admin_users_unsupportedVersions'
|
|
25
26
|
require 'commands/api'
|
|
26
27
|
require 'commands/apps'
|
|
27
28
|
require 'commands/apps_connections'
|
|
28
29
|
require 'commands/apps_event_authorizations'
|
|
29
|
-
require 'commands/
|
|
30
|
-
require 'commands/apps_permissions_resources'
|
|
31
|
-
require 'commands/apps_permissions_scopes'
|
|
32
|
-
require 'commands/apps_permissions_users'
|
|
30
|
+
require 'commands/apps_manifest'
|
|
33
31
|
require 'commands/auth'
|
|
34
32
|
require 'commands/auth_teams'
|
|
33
|
+
require 'commands/bookmarks'
|
|
35
34
|
require 'commands/bots'
|
|
36
35
|
require 'commands/calls'
|
|
37
36
|
require 'commands/calls_participants'
|
|
38
|
-
require 'commands/channels'
|
|
39
37
|
require 'commands/chat'
|
|
40
38
|
require 'commands/chat_scheduledMessages'
|
|
41
39
|
require 'commands/conversations'
|
|
@@ -45,12 +43,10 @@ require 'commands/emoji'
|
|
|
45
43
|
require 'commands/files'
|
|
46
44
|
require 'commands/files_comments'
|
|
47
45
|
require 'commands/files_remote'
|
|
48
|
-
require 'commands/groups'
|
|
49
|
-
require 'commands/im'
|
|
50
46
|
require 'commands/migration'
|
|
51
|
-
require 'commands/mpim'
|
|
52
47
|
require 'commands/oauth'
|
|
53
48
|
require 'commands/oauth_v2'
|
|
49
|
+
require 'commands/openid_connect'
|
|
54
50
|
require 'commands/pins'
|
|
55
51
|
require 'commands/reactions'
|
|
56
52
|
require 'commands/reminders'
|
|
@@ -58,7 +54,10 @@ require 'commands/rtm'
|
|
|
58
54
|
require 'commands/search'
|
|
59
55
|
require 'commands/stars'
|
|
60
56
|
require 'commands/team'
|
|
57
|
+
require 'commands/team_billing'
|
|
58
|
+
require 'commands/team_preferences'
|
|
61
59
|
require 'commands/team_profile'
|
|
60
|
+
require 'commands/tooling_tokens'
|
|
62
61
|
require 'commands/usergroups'
|
|
63
62
|
require 'commands/usergroups_users'
|
|
64
63
|
require 'commands/users'
|
data/lib/slack/config.rb
CHANGED
data/lib/slack/events/request.rb
CHANGED
|
@@ -3,7 +3,9 @@ module Slack
|
|
|
3
3
|
module Events
|
|
4
4
|
class Request
|
|
5
5
|
class MissingSigningSecret < StandardError; end
|
|
6
|
+
|
|
6
7
|
class TimestampExpired < StandardError; end
|
|
8
|
+
|
|
7
9
|
class InvalidSignature < StandardError; end
|
|
8
10
|
|
|
9
11
|
attr_reader :http_request,
|
|
@@ -19,13 +21,13 @@ module Slack
|
|
|
19
21
|
|
|
20
22
|
# Request timestamp.
|
|
21
23
|
def timestamp
|
|
22
|
-
@timestamp ||= http_request.
|
|
24
|
+
@timestamp ||= http_request.get_header('HTTP_X_SLACK_REQUEST_TIMESTAMP')
|
|
23
25
|
end
|
|
24
26
|
|
|
25
27
|
# The signature is created by combining the signing secret with the body of the request
|
|
26
28
|
# Slack is sending using a standard HMAC-SHA256 keyed hash.
|
|
27
29
|
def signature
|
|
28
|
-
@signature ||= http_request.
|
|
30
|
+
@signature ||= http_request.get_header('HTTP_X_SLACK_SIGNATURE')
|
|
29
31
|
end
|
|
30
32
|
|
|
31
33
|
# Signature version.
|
|
@@ -51,7 +53,7 @@ module Slack
|
|
|
51
53
|
def valid?
|
|
52
54
|
raise MissingSigningSecret unless signing_secret
|
|
53
55
|
|
|
54
|
-
digest = OpenSSL::Digest
|
|
56
|
+
digest = OpenSSL::Digest.new('SHA256')
|
|
55
57
|
signature_basestring = [version, timestamp, body].join(':')
|
|
56
58
|
hex_hash = OpenSSL::HMAC.hexdigest(digest, signing_secret, signature_basestring)
|
|
57
59
|
computed_signature = [version, hex_hash].join('=')
|
|
@@ -3,6 +3,7 @@ module Slack
|
|
|
3
3
|
module RealTime
|
|
4
4
|
class Client
|
|
5
5
|
class ClientNotStartedError < StandardError; end
|
|
6
|
+
|
|
6
7
|
class ClientAlreadyStartedError < StandardError; end
|
|
7
8
|
|
|
8
9
|
include Api::MessageId
|
|
@@ -16,10 +17,7 @@ module Slack
|
|
|
16
17
|
attr_accessor :events
|
|
17
18
|
end
|
|
18
19
|
|
|
19
|
-
attr_accessor :web_client
|
|
20
|
-
attr_accessor :store
|
|
21
|
-
attr_accessor :url
|
|
22
|
-
attr_accessor(*Config::ATTRIBUTES)
|
|
20
|
+
attr_accessor :web_client, :store, :url, *Config::ATTRIBUTES
|
|
23
21
|
|
|
24
22
|
protected :store_class, :store_class=
|
|
25
23
|
|
|
@@ -46,7 +44,7 @@ module Slack
|
|
|
46
44
|
|
|
47
45
|
# Start RealTime client and block until it disconnects.
|
|
48
46
|
def start!(&block)
|
|
49
|
-
@callback = block if
|
|
47
|
+
@callback = block if block
|
|
50
48
|
build_socket
|
|
51
49
|
@socket.start_sync(self)
|
|
52
50
|
end
|
|
@@ -54,7 +52,7 @@ module Slack
|
|
|
54
52
|
# Start RealTime client and return immediately.
|
|
55
53
|
# The RealTime::Client will run in the background.
|
|
56
54
|
def start_async(&block)
|
|
57
|
-
@callback = block if
|
|
55
|
+
@callback = block if block
|
|
58
56
|
build_socket
|
|
59
57
|
@socket.start_async(self)
|
|
60
58
|
end
|
|
@@ -133,7 +131,7 @@ module Slack
|
|
|
133
131
|
rescue Slack::Web::Api::Errors::SlackError => e
|
|
134
132
|
# stop pinging if bot was uninstalled
|
|
135
133
|
case e.message
|
|
136
|
-
when 'account_inactive', 'invalid_auth'
|
|
134
|
+
when 'account_inactive', 'invalid_auth'
|
|
137
135
|
logger.warn(to_s) { e.message }
|
|
138
136
|
raise e
|
|
139
137
|
end
|
|
@@ -201,6 +199,7 @@ module Slack
|
|
|
201
199
|
end
|
|
202
200
|
|
|
203
201
|
attr_reader :callbacks
|
|
202
|
+
|
|
204
203
|
def socket_class
|
|
205
204
|
concurrency::Socket
|
|
206
205
|
end
|
|
@@ -45,14 +45,12 @@ module Slack
|
|
|
45
45
|
@client_task&.stop
|
|
46
46
|
|
|
47
47
|
@client_task = task.async do |subtask|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
client.logger.error(subtask.to_s) { e.message }
|
|
55
|
-
end
|
|
48
|
+
subtask.annotate "#{client} run-loop"
|
|
49
|
+
client.run_loop
|
|
50
|
+
rescue ::Async::Wrapper::Cancelled => e
|
|
51
|
+
# Will get restarted by ping worker.
|
|
52
|
+
rescue StandardError => e
|
|
53
|
+
client.logger.error(subtask.to_s) { e.message }
|
|
56
54
|
end
|
|
57
55
|
|
|
58
56
|
@restart.wait
|
|
@@ -38,19 +38,9 @@ module Slack
|
|
|
38
38
|
private
|
|
39
39
|
|
|
40
40
|
def detect_concurrency
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
rescue LoadError, NameError
|
|
45
|
-
false # could not be loaded, missing dependencies
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
raise(
|
|
50
|
-
NoConcurrencyError,
|
|
51
|
-
'Missing concurrency. Add async-websocket or faye-websocket ' \
|
|
52
|
-
'to your Gemfile.'
|
|
53
|
-
)
|
|
41
|
+
Slack::RealTime::Concurrency.const_get(:Async)
|
|
42
|
+
rescue LoadError, NameError
|
|
43
|
+
raise NoConcurrencyError, 'Missing concurrency. Add async-websocket to your Gemfile.'
|
|
54
44
|
end
|
|
55
45
|
end
|
|
56
46
|
|
|
@@ -8,12 +8,7 @@ module Slack
|
|
|
8
8
|
attr_accessor :events
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
-
attr_accessor :users
|
|
12
|
-
attr_accessor :bots
|
|
13
|
-
attr_accessor :channels
|
|
14
|
-
attr_accessor :groups
|
|
15
|
-
attr_accessor :teams
|
|
16
|
-
attr_accessor :ims
|
|
11
|
+
attr_accessor :users, :bots, :channels, :groups, :teams, :ims
|
|
17
12
|
|
|
18
13
|
def self
|
|
19
14
|
nil
|
|
@@ -4,9 +4,7 @@ module Slack
|
|
|
4
4
|
module Stores
|
|
5
5
|
# Only stores initial information.
|
|
6
6
|
class Starter < Base
|
|
7
|
-
attr_reader :self
|
|
8
|
-
|
|
9
|
-
attr_reader :team
|
|
7
|
+
attr_reader :self, :team
|
|
10
8
|
|
|
11
9
|
def initialize(attrs)
|
|
12
10
|
@team = Models::Team.new(attrs.team)
|
|
@@ -15,6 +13,11 @@ module Slack
|
|
|
15
13
|
|
|
16
14
|
### RealTime Events
|
|
17
15
|
|
|
16
|
+
# A shared channel invite was sent to a Slack user.
|
|
17
|
+
# @see https://api.slack.com/events/shared_channel_invite_received
|
|
18
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/shared_channel_invite_received.json
|
|
19
|
+
# on :shared_channel_invite_received do |data|
|
|
20
|
+
|
|
18
21
|
# An enterprise grid migration has started on an external workspace..
|
|
19
22
|
# @see https://api.slack.com/events/external_org_migration_started
|
|
20
23
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/external_org_migration_started.json
|
|
@@ -55,6 +55,11 @@ module Slack
|
|
|
55
55
|
|
|
56
56
|
### RealTime Events
|
|
57
57
|
|
|
58
|
+
# A shared channel invite was sent to a Slack user.
|
|
59
|
+
# @see https://api.slack.com/events/shared_channel_invite_received
|
|
60
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/shared_channel_invite_received.json
|
|
61
|
+
# on :shared_channel_invite_received do |data|
|
|
62
|
+
|
|
58
63
|
# An enterprise grid migration has started on an external workspace..
|
|
59
64
|
# @see https://api.slack.com/events/external_org_migration_started
|
|
60
65
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/external_org_migration_started.json
|
data/lib/slack/version.rb
CHANGED
|
@@ -9,10 +9,12 @@ module Slack
|
|
|
9
9
|
#
|
|
10
10
|
# Retrieve analytics data for a given date, presented as a compressed JSON file
|
|
11
11
|
#
|
|
12
|
-
# @option options [
|
|
13
|
-
# The type of analytics to retrieve. The options are currently limited to member.
|
|
14
|
-
# @option options [
|
|
12
|
+
# @option options [string] :type
|
|
13
|
+
# The type of analytics to retrieve. The options are currently limited to member (for grid member analytics) and public_channel (for public channel analytics).
|
|
14
|
+
# @option options [date] :date
|
|
15
15
|
# Date to retrieve the analytics data for, expressed as YYYY-MM-DD in UTC.
|
|
16
|
+
# @option options [boolean] :metadata_only
|
|
17
|
+
# Retrieve metadata for the type of analytics indicated. Can be used only with type set to public_channel analytics. See detail below. Omit the date parameter when using this argument.
|
|
16
18
|
# @see https://api.slack.com/methods/admin.analytics.getFile
|
|
17
19
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.analytics/admin.analytics.getFile.json
|
|
18
20
|
def admin_analytics_getFile(options = {})
|
|
@@ -9,11 +9,11 @@ module Slack
|
|
|
9
9
|
#
|
|
10
10
|
# Approve an app for installation on a workspace.
|
|
11
11
|
#
|
|
12
|
-
# @option options [
|
|
12
|
+
# @option options [string] :app_id
|
|
13
13
|
# The id of the app to approve.
|
|
14
14
|
# @option options [Object] :enterprise_id
|
|
15
15
|
# The ID of the enterprise to approve the app on.
|
|
16
|
-
# @option options [
|
|
16
|
+
# @option options [string] :request_id
|
|
17
17
|
# The id of the request to approve.
|
|
18
18
|
# @option options [Object] :team_id
|
|
19
19
|
# The ID of the workspace to approve the app on.
|
|
@@ -26,7 +26,7 @@ module Slack
|
|
|
26
26
|
#
|
|
27
27
|
# Clear an app resolution
|
|
28
28
|
#
|
|
29
|
-
# @option options [
|
|
29
|
+
# @option options [string] :app_id
|
|
30
30
|
# The id of the app whose resolution you want to clear/undo.
|
|
31
31
|
# @option options [Object] :enterprise_id
|
|
32
32
|
# The enterprise to clear the app resolution from.
|
|
@@ -42,11 +42,11 @@ module Slack
|
|
|
42
42
|
#
|
|
43
43
|
# Restrict an app for installation on a workspace.
|
|
44
44
|
#
|
|
45
|
-
# @option options [
|
|
45
|
+
# @option options [string] :app_id
|
|
46
46
|
# The id of the app to restrict.
|
|
47
47
|
# @option options [Object] :enterprise_id
|
|
48
48
|
# The ID of the enterprise to approve the app on.
|
|
49
|
-
# @option options [
|
|
49
|
+
# @option options [string] :request_id
|
|
50
50
|
# The id of the request to restrict.
|
|
51
51
|
# @option options [Object] :team_id
|
|
52
52
|
# The ID of the workspace to approve the app on.
|
|
@@ -55,6 +55,22 @@ module Slack
|
|
|
55
55
|
def admin_apps_restrict(options = {})
|
|
56
56
|
post('admin.apps.restrict', options)
|
|
57
57
|
end
|
|
58
|
+
|
|
59
|
+
#
|
|
60
|
+
# Uninstall an app from one or many workspaces, or an entire enterprise organization.
|
|
61
|
+
#
|
|
62
|
+
# @option options [string] :app_id
|
|
63
|
+
# The ID of the app to uninstall.
|
|
64
|
+
# @option options [string] :enterprise_id
|
|
65
|
+
# The enterprise to completely uninstall the application from (across all workspaces). With an org-level token, this or team_ids is required.
|
|
66
|
+
# @option options [string] :team_ids
|
|
67
|
+
# IDs of the teams to uninstall from (max 100). With an org-level token, this or enterprise_id is required.
|
|
68
|
+
# @see https://api.slack.com/methods/admin.apps.uninstall
|
|
69
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.apps/admin.apps.uninstall.json
|
|
70
|
+
def admin_apps_uninstall(options = {})
|
|
71
|
+
throw ArgumentError.new('Required arguments :app_id missing') if options[:app_id].nil?
|
|
72
|
+
post('admin.apps.uninstall', options)
|
|
73
|
+
end
|
|
58
74
|
end
|
|
59
75
|
end
|
|
60
76
|
end
|
|
@@ -9,11 +9,11 @@ module Slack
|
|
|
9
9
|
#
|
|
10
10
|
# List approved apps for an org or workspace.
|
|
11
11
|
#
|
|
12
|
-
# @option options [
|
|
12
|
+
# @option options [string] :cursor
|
|
13
13
|
# Set cursor to next_cursor returned by the previous call to list items in the next page.
|
|
14
14
|
# @option options [Object] :enterprise_id
|
|
15
15
|
# .
|
|
16
|
-
# @option options [
|
|
16
|
+
# @option options [integer] :limit
|
|
17
17
|
# The maximum number of items to return. Must be between 1 - 1000 both inclusive.
|
|
18
18
|
# @option options [Object] :team_id
|
|
19
19
|
# .
|
|
@@ -6,12 +6,30 @@ module Slack
|
|
|
6
6
|
module Api
|
|
7
7
|
module Endpoints
|
|
8
8
|
module AdminAppsRequests
|
|
9
|
+
#
|
|
10
|
+
# Cancel approval request for team
|
|
11
|
+
#
|
|
12
|
+
# @option options [string] :request_id
|
|
13
|
+
# The id of the request to cancel.
|
|
14
|
+
# @option options [Object] :enterprise_id
|
|
15
|
+
# The ID of the enterprise where this request belongs.
|
|
16
|
+
# @option options [Object] :team_id
|
|
17
|
+
# The ID of the workspace where this request belongs.
|
|
18
|
+
# @see https://api.slack.com/methods/admin.apps.requests.cancel
|
|
19
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.apps.requests/admin.apps.requests.cancel.json
|
|
20
|
+
def admin_apps_requests_cancel(options = {})
|
|
21
|
+
throw ArgumentError.new('Required arguments :request_id missing') if options[:request_id].nil?
|
|
22
|
+
post('admin.apps.requests.cancel', options)
|
|
23
|
+
end
|
|
24
|
+
|
|
9
25
|
#
|
|
10
26
|
# List app requests for a team/workspace.
|
|
11
27
|
#
|
|
12
|
-
# @option options [
|
|
28
|
+
# @option options [string] :cursor
|
|
13
29
|
# Set cursor to next_cursor returned by the previous call to list items in the next page.
|
|
14
|
-
# @option options [Object] :
|
|
30
|
+
# @option options [Object] :enterprise_id
|
|
31
|
+
# .
|
|
32
|
+
# @option options [integer] :limit
|
|
15
33
|
# The maximum number of items to return. Must be between 1 - 1000 both inclusive.
|
|
16
34
|
# @option options [Object] :team_id
|
|
17
35
|
# .
|
|
@@ -9,11 +9,11 @@ module Slack
|
|
|
9
9
|
#
|
|
10
10
|
# List restricted apps for an org or workspace.
|
|
11
11
|
#
|
|
12
|
-
# @option options [
|
|
12
|
+
# @option options [string] :cursor
|
|
13
13
|
# Set cursor to next_cursor returned by the previous call to list items in the next page.
|
|
14
14
|
# @option options [Object] :enterprise_id
|
|
15
15
|
# .
|
|
16
|
-
# @option options [
|
|
16
|
+
# @option options [integer] :limit
|
|
17
17
|
# The maximum number of items to return. Must be between 1 - 1000 both inclusive.
|
|
18
18
|
# @option options [Object] :team_id
|
|
19
19
|
# .
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# This file was auto-generated by lib/tasks/web.rake
|
|
3
|
+
|
|
4
|
+
module Slack
|
|
5
|
+
module Web
|
|
6
|
+
module Api
|
|
7
|
+
module Endpoints
|
|
8
|
+
module AdminAuthPolicy
|
|
9
|
+
#
|
|
10
|
+
# Assign entities to a particular authentication policy.
|
|
11
|
+
#
|
|
12
|
+
# @option options [array] :entity_ids
|
|
13
|
+
# Array of IDs to assign to the policy.
|
|
14
|
+
# @option options [Object] :entity_type
|
|
15
|
+
# The type of entity to assign to the policy. Currently, USER is supported.
|
|
16
|
+
# @option options [string] :policy_name
|
|
17
|
+
# The name of the authentication policy to assign the entities to. Currently, email_password is the only policy that may be used with this method.
|
|
18
|
+
# @see https://api.slack.com/methods/admin.auth.policy.assignEntities
|
|
19
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.auth.policy/admin.auth.policy.assignEntities.json
|
|
20
|
+
def admin_auth_policy_assignEntities(options = {})
|
|
21
|
+
throw ArgumentError.new('Required arguments :entity_ids missing') if options[:entity_ids].nil?
|
|
22
|
+
throw ArgumentError.new('Required arguments :entity_type missing') if options[:entity_type].nil?
|
|
23
|
+
throw ArgumentError.new('Required arguments :policy_name missing') if options[:policy_name].nil?
|
|
24
|
+
post('admin.auth.policy.assignEntities', options)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
#
|
|
28
|
+
# Fetch all the entities assigned to a particular authentication policy by name.
|
|
29
|
+
#
|
|
30
|
+
# @option options [string] :policy_name
|
|
31
|
+
# The name of the policy to fetch entities for. Currently, email_password is the only policy that may be used with this method.
|
|
32
|
+
# @option options [string] :cursor
|
|
33
|
+
# Set cursor to next_cursor returned by the previous call to list items in the next page.
|
|
34
|
+
# @option options [Object] :entity_type
|
|
35
|
+
# The type of entity to assign to the policy. Currently, USER is supported.
|
|
36
|
+
# @option options [integer] :limit
|
|
37
|
+
# The maximum number of items to return. Must be between 1 and 1000, both inclusive.
|
|
38
|
+
# @see https://api.slack.com/methods/admin.auth.policy.getEntities
|
|
39
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.auth.policy/admin.auth.policy.getEntities.json
|
|
40
|
+
def admin_auth_policy_getEntities(options = {})
|
|
41
|
+
throw ArgumentError.new('Required arguments :policy_name missing') if options[:policy_name].nil?
|
|
42
|
+
if block_given?
|
|
43
|
+
Pagination::Cursor.new(self, :admin_auth_policy_getEntities, options).each do |page|
|
|
44
|
+
yield page
|
|
45
|
+
end
|
|
46
|
+
else
|
|
47
|
+
post('admin.auth.policy.getEntities', options)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
#
|
|
52
|
+
# Remove specified entities from a specified authentication policy.
|
|
53
|
+
#
|
|
54
|
+
# @option options [array] :entity_ids
|
|
55
|
+
# Encoded IDs of the entities you'd like to remove from the policy.
|
|
56
|
+
# @option options [Object] :entity_type
|
|
57
|
+
# The type of entity to assign to the policy. Currently, USER is supported.
|
|
58
|
+
# @option options [string] :policy_name
|
|
59
|
+
# The name of the policy to remove entities from. Currently, email_password is the only policy that may be used with this method.
|
|
60
|
+
# @see https://api.slack.com/methods/admin.auth.policy.removeEntities
|
|
61
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.auth.policy/admin.auth.policy.removeEntities.json
|
|
62
|
+
def admin_auth_policy_removeEntities(options = {})
|
|
63
|
+
throw ArgumentError.new('Required arguments :entity_ids missing') if options[:entity_ids].nil?
|
|
64
|
+
throw ArgumentError.new('Required arguments :entity_type missing') if options[:entity_type].nil?
|
|
65
|
+
throw ArgumentError.new('Required arguments :policy_name missing') if options[:policy_name].nil?
|
|
66
|
+
post('admin.auth.policy.removeEntities', options)
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|