slack-ruby-client 3.1.0 → 3.3.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 (115) hide show
  1. checksums.yaml +4 -4
  2. data/.github/prompts/changelog-entries.prompt.yml +32 -0
  3. data/.github/workflows/danger-comment.yml +11 -0
  4. data/.github/workflows/danger.yml +13 -0
  5. data/.github/workflows/lint.yml +3 -1
  6. data/.github/workflows/test.yml +1 -1
  7. data/.github/workflows/update_api.yml +94 -16
  8. data/.rubocop.yml +2 -1
  9. data/.rubocop_todo.yml +18 -4
  10. data/AGENTS.md +12 -0
  11. data/CHANGELOG.md +43 -1
  12. data/CONTRIBUTING.md +10 -1
  13. data/Dangerfile +4 -1
  14. data/Gemfile +20 -5
  15. data/README.md +47 -2
  16. data/RELEASING.md +2 -2
  17. data/Rakefile +7 -3
  18. data/UPGRADING.md +16 -0
  19. data/bin/commands/admin_analytics_messages.rb +36 -0
  20. data/bin/commands/admin_apps.rb +3 -0
  21. data/bin/commands/admin_apps_mcp_servers.rb +21 -0
  22. data/bin/commands/admin_apps_mcp_servers_permissions.rb +33 -0
  23. data/bin/commands/admin_apps_permissions.rb +58 -0
  24. data/bin/commands/admin_conversations.rb +20 -0
  25. data/bin/commands/admin_functions.rb +1 -1
  26. data/bin/commands/admin_functions_permissions.rb +1 -0
  27. data/bin/commands/admin_usergroups.rb +74 -0
  28. data/bin/commands/admin_users.rb +10 -8
  29. data/bin/commands/admin_users_session.rb +0 -1
  30. data/bin/commands/admin_workflows_triggers_types_permissions.rb +4 -3
  31. data/bin/commands/agents_sessions.rb +38 -0
  32. data/bin/commands/apps_icon.rb +22 -0
  33. data/bin/commands/apps_managed_permissions.rb +21 -0
  34. data/bin/commands/apps_manifest.rb +7 -6
  35. data/bin/commands/apps_user_connection.rb +21 -0
  36. data/bin/commands/assistant_search.rb +3 -2
  37. data/bin/commands/assistant_threads.rb +6 -3
  38. data/bin/commands/blocks.rb +22 -0
  39. data/bin/commands/bookmarks.rb +6 -6
  40. data/bin/commands/canvases.rb +12 -2
  41. data/bin/commands/chat.rb +17 -7
  42. data/bin/commands/conversations.rb +2 -2
  43. data/bin/commands/conversations_canvases.rb +1 -1
  44. data/bin/commands/entity.rb +27 -0
  45. data/bin/commands/files.rb +5 -2
  46. data/bin/commands/oauth_v2.rb +22 -0
  47. data/bin/commands/oauth_v2_user.rb +27 -0
  48. data/bin/commands/openid_connect.rb +1 -0
  49. data/bin/commands/slackLists_download.rb +6 -0
  50. data/bin/commands/slackLists_items.rb +1 -0
  51. data/bin/commands/users.rb +3 -2
  52. data/bin/commands/views.rb +1 -0
  53. data/bin/slack +5 -1
  54. data/examples/files_upload_v2/files_upload_v2.rb +1 -1
  55. data/examples/hi_web/hi.rb +1 -1
  56. data/examples/new_ticket/new_ticket.rb +1 -1
  57. data/examples/oauth_v2/oauth_v2.rb +6 -6
  58. data/lib/slack/events/config.rb +1 -1
  59. data/lib/slack/events/request.rb +2 -2
  60. data/lib/slack/version.rb +1 -1
  61. data/lib/slack/web/api/endpoints/admin_analytics_messages.rb +64 -0
  62. data/lib/slack/web/api/endpoints/admin_apps.rb +6 -0
  63. data/lib/slack/web/api/endpoints/admin_apps_mcp_servers.rb +31 -0
  64. data/lib/slack/web/api/endpoints/admin_apps_mcp_servers_permissions.rb +46 -0
  65. data/lib/slack/web/api/endpoints/admin_apps_permissions.rb +83 -0
  66. data/lib/slack/web/api/endpoints/admin_conversations.rb +30 -0
  67. data/lib/slack/web/api/endpoints/admin_emoji.rb +0 -1
  68. data/lib/slack/web/api/endpoints/admin_functions.rb +1 -1
  69. data/lib/slack/web/api/endpoints/admin_functions_permissions.rb +2 -1
  70. data/lib/slack/web/api/endpoints/admin_usergroups.rb +111 -0
  71. data/lib/slack/web/api/endpoints/admin_users.rb +11 -6
  72. data/lib/slack/web/api/endpoints/admin_users_session.rb +0 -2
  73. data/lib/slack/web/api/endpoints/admin_workflows_triggers_types_permissions.rb +3 -3
  74. data/lib/slack/web/api/endpoints/agents_sessions.rb +54 -0
  75. data/lib/slack/web/api/endpoints/apps_icon.rb +28 -0
  76. data/lib/slack/web/api/endpoints/apps_managed_permissions.rb +27 -0
  77. data/lib/slack/web/api/endpoints/apps_manifest.rb +5 -3
  78. data/lib/slack/web/api/endpoints/apps_user_connection.rb +27 -0
  79. data/lib/slack/web/api/endpoints/assistant_search.rb +3 -1
  80. data/lib/slack/web/api/endpoints/assistant_threads.rb +9 -4
  81. data/lib/slack/web/api/endpoints/blocks.rb +28 -0
  82. data/lib/slack/web/api/endpoints/bookmarks.rb +6 -12
  83. data/lib/slack/web/api/endpoints/canvases.rb +16 -2
  84. data/lib/slack/web/api/endpoints/chat.rb +39 -17
  85. data/lib/slack/web/api/endpoints/conversations.rb +2 -2
  86. data/lib/slack/web/api/endpoints/conversations_canvases.rb +1 -1
  87. data/lib/slack/web/api/endpoints/entity.rb +48 -0
  88. data/lib/slack/web/api/endpoints/files.rb +8 -1
  89. data/lib/slack/web/api/endpoints/oauth_v2.rb +35 -0
  90. data/lib/slack/web/api/endpoints/oauth_v2_user.rb +37 -0
  91. data/lib/slack/web/api/endpoints/openid_connect.rb +2 -0
  92. data/lib/slack/web/api/endpoints/slackLists_download.rb +12 -0
  93. data/lib/slack/web/api/endpoints/slackLists_items.rb +2 -0
  94. data/lib/slack/web/api/endpoints/users.rb +3 -2
  95. data/lib/slack/web/api/endpoints/views.rb +1 -0
  96. data/lib/slack/web/api/endpoints.rb +20 -0
  97. data/lib/slack/web/api/errors/server_error.rb +1 -1
  98. data/lib/slack/web/api/errors/slack_error.rb +1 -1
  99. data/lib/slack/web/api/errors/too_many_requests_error.rb +1 -1
  100. data/lib/slack/web/api/errors.rb +230 -6
  101. data/lib/slack/web/api/helpers/files.rb +2 -2
  102. data/lib/slack/web/api/mixins/conversations.id.rb +2 -1
  103. data/lib/slack/web/api/mixins/ids.id.rb +3 -1
  104. data/lib/slack/web/api/mixins/users.id.rb +2 -1
  105. data/lib/slack/web/api/mixins/users.search.rb +1 -1
  106. data/lib/slack/web/api/patches/files.default-filename.patch +12 -0
  107. data/lib/slack/web/api/templates/method.erb +3 -1
  108. data/lib/slack/web/api/templates/method_spec.erb +32 -3
  109. data/lib/slack/web/client.rb +29 -0
  110. data/lib/slack/web/faraday/request.rb +22 -2
  111. data/lib/tasks/web.rake +5 -2
  112. data/slack-ruby-client.gemspec +0 -1
  113. metadata +32 -19
  114. data/.github/workflows/pr_lint.yml +0 -21
  115. data/Gemfile.danger +0 -6
@@ -45,12 +45,12 @@ module Slack
45
45
 
46
46
  files_to_upload.each_with_index do |file, index|
47
47
  %i[filename content].each do |param|
48
- raise ArgumentError, "Required argument :#{param} missing in file (#{index})" if file[param].nil?
48
+ raise ArgumentError, "required argument :`#{param}` missing in file (`#{index}`)" if file[param].nil?
49
49
  end
50
50
  end
51
51
 
52
52
  channel_params = %i[channel channels channel_id].map { |param| params[param] }.compact
53
- raise ArgumentError, 'Only one of :channel, :channels, or :channel_id is required' if channel_params.size > 1
53
+ raise ArgumentError, 'only one of :channel, :channels, or :channel_id is required' if channel_params.size > 1
54
54
 
55
55
  complete_upload_request_params = params.slice(:initial_comment, :blocks, :thread_ts)
56
56
 
@@ -7,6 +7,7 @@ module Slack
7
7
  module Mixins
8
8
  module Conversations
9
9
  include Ids
10
+
10
11
  #
11
12
  # This method returns a channel ID given a channel name.
12
13
  #
@@ -24,7 +25,7 @@ module Slack
24
25
  # containing one or more of public_channel, private_channel, mpim, im
25
26
  def conversations_id(options = {})
26
27
  name = options[:channel]
27
- raise ArgumentError, 'Required arguments :channel missing' if name.nil?
28
+ raise ArgumentError, 'required arguments :channel missing' if name.nil?
28
29
 
29
30
  id_for(
30
31
  key: :channel,
@@ -15,7 +15,9 @@ module Slack
15
15
  end
16
16
  end
17
17
 
18
- raise Slack::Web::Api::Errors::SlackError, "#{key}_not_found"
18
+ error_message = "#{key}_not_found"
19
+ error_class = Slack::Web::Api::Errors::ERROR_CLASSES[error_message] || Slack::Web::Api::Errors::SlackError
20
+ raise error_class, error_message
19
21
  end
20
22
  end
21
23
  end
@@ -7,6 +7,7 @@ module Slack
7
7
  module Mixins
8
8
  module Users
9
9
  include Ids
10
+
10
11
  #
11
12
  # This method returns a user ID given a user name.
12
13
  #
@@ -19,7 +20,7 @@ module Slack
19
20
  # The page size used for users_list calls required to find the user's ID
20
21
  def users_id(options = {})
21
22
  name = options[:user]
22
- raise ArgumentError, 'Required arguments :user missing' if name.nil?
23
+ raise ArgumentError, 'required arguments :user missing' if name.nil?
23
24
 
24
25
  id_for(
25
26
  key: :user,
@@ -14,7 +14,7 @@ if defined?(Picky)
14
14
  # Free-formed text to search for.
15
15
  def users_search(options = {})
16
16
  query = options[:user]
17
- raise ArgumentError, 'Required arguments :user missing' if query.nil?
17
+ raise ArgumentError, 'required arguments :user missing' if query.nil?
18
18
 
19
19
  index = Picky::Index.new(:users) do
20
20
  category :name
@@ -0,0 +1,12 @@
1
+ diff --git a/lib/slack/web/api/endpoints/files.rb b/lib/slack/web/api/endpoints/files.rb
2
+ index 13a1889..9ce4894 100644
3
+ --- a/lib/slack/web/api/endpoints/files.rb
4
+ +++ b/lib/slack/web/api/endpoints/files.rb
5
+ @@ -192,6 +192,7 @@ module Slack
6
+ # @see https://api.slack.com/methods/files.upload
7
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/files/files.upload.json
8
+ def files_upload(options = {})
9
+ + options = options.merge(filename: 'file') if options[:file] && !options[:filename]
10
+ post('files.upload', options)
11
+ end
12
+ end
@@ -40,8 +40,10 @@ module Slack
40
40
  <% data['arg_groups']&.each do |arg_group| %>
41
41
  <% next if arg_group['args'].size <= 1 %>
42
42
  <% arg_string = arg_group['args'].map { |arg_name| ":#{arg_name}" }.join(', ') %>
43
- <% if arg_group['mutually_exclusive'] %>
43
+ <% if arg_group['mutually_exclusive'] && arg_group['required'] != false %>
44
44
  raise ArgumentError, 'Exactly one of <%= arg_string %> is required' unless <%= arg_group['args'].map { |arg_name| "options[:#{arg_name}].nil?" }.join(' ^ ') %>
45
+ <% elsif arg_group['mutually_exclusive'] %>
46
+ raise ArgumentError, '<%= arg_string %> are mutually exclusive' if <%= arg_group['args'].map { |arg_name| "!options[:#{arg_name}].nil?" }.join(' && ') %>
45
47
  <% else %>
46
48
  raise ArgumentError, 'At least one of <%= arg_string %> is required' if <%= arg_group['args'].map { |arg_name| "options[:#{arg_name}].nil?"}.join(' && ') %>
47
49
  <% end %>
@@ -5,6 +5,21 @@ require 'spec_helper'
5
5
 
6
6
  RSpec.describe Slack::Web::Api::Endpoints::<%= group.gsub(".", "_").camelize %> do
7
7
  let(:client) { Slack::Web::Client.new }
8
+ <%
9
+ # Renders a Ruby literal as source code deterministically, regardless of the
10
+ # Ruby version used to run the generator (Hash#inspect's format for symbol
11
+ # keys changed in Ruby 3.4, which would otherwise cause spurious diffs).
12
+ ruby_literal = lambda do |val|
13
+ case val
14
+ when Hash
15
+ "{#{val.map { |k, v| "#{k}: #{ruby_literal.call(v)}" }.join(', ')}}"
16
+ when Array
17
+ "[#{val.map { |v| ruby_literal.call(v) }.join(', ')}]"
18
+ else
19
+ val.inspect
20
+ end
21
+ end
22
+ %>
8
23
  <% names.sort.each_with_index do |(name, data), index| %>
9
24
  <% next if data['mixin'] %>
10
25
  <% group_required_params = data['arg_groups']&.map { |grp| grp['args'].first if grp['args'].size > 1 } || [] %>
@@ -21,23 +36,37 @@ RSpec.describe Slack::Web::Api::Endpoints::<%= group.gsub(".", "_").camelize %>
21
36
  expect { client.<%= method_name %><%= params_except_required.empty? ? '' : "(#{params_except_required})" %> }.to raise_error ArgumentError, /Required arguments :<%= arg_name %> missing/
22
37
  end
23
38
  <% end %>
39
+ <% at_most_one_groups = data['arg_groups']&.select { |g| g['mutually_exclusive'] && g['required'] == false } || [] %>
24
40
  <% data['arg_groups']&.each do |arg_group| %>
25
41
  <% next if arg_group['args'].size <= 1 %>
42
+ <% at_most_one = arg_group['mutually_exclusive'] && arg_group['required'] == false %>
43
+ <% if at_most_one %>
44
+ it 'does not allow both <%= arg_group['args'].join(' and ') %>' do
45
+ <% else %>
26
46
  it 'requires one of <%= arg_group['args'].join(', ') %>' do
47
+ <% end %>
27
48
  <% params_except_required = example_params.reject { |name, _| arg_group['args'].include?(name) }.map { |name, val| "#{name}: %q[#{val}]" }.join(', ') %>
49
+ <% if at_most_one %>
50
+ <% error_message = 'mutually exclusive' %>
51
+ <% else %>
28
52
  <% error_message = arg_group['mutually_exclusive'] ? 'Exactly' : 'At least' %>
29
53
  expect { client.<%= method_name %><%= params_except_required.empty? ? '' : "(#{params_except_required})" %> }.to raise_error ArgumentError, /<%= error_message %> one of/
54
+ <% end %>
30
55
  <% (1..arg_group['args'].length).each do |n| %>
31
56
  <% arg_group['args'].combination(n) do |names| %>
32
57
  <% params = names.map { |name| "#{name}: %q[#{data['args'][name]['example']}]" }.join(', ') %>
33
58
  <% params = "#{params}, #{params_except_required}" unless params_except_required.empty? %>
34
- <% if n == 1 || !arg_group['mutually_exclusive'] %>
59
+ <% violates_at_most_one = at_most_one_groups.any? { |g| (names & g['args']).length > 1 } %>
60
+ <% if violates_at_most_one %>
61
+
62
+ expect { client.<%= method_name %><%= "(#{params})" %> }.to raise_error ArgumentError, /mutually exclusive/
63
+ <% elsif n == 1 || !arg_group['mutually_exclusive'] %>
35
64
 
36
65
  expect(client).to receive(:post).with('<%= group %>.<%= name %>', {<%= params %>})
37
66
  client.<%= method_name %><%= "(#{params})" %>
38
67
  <% else %>
39
68
 
40
- expect { client.<%= method_name %><%= "(#{params})" %> }.to raise_error ArgumentError, /<%= error_message %> one of/
69
+ expect { client.<%= method_name %><%= "(#{params})" %> }.to raise_error ArgumentError, /<%= at_most_one ? error_message : "#{error_message} one of" %>/
41
70
  <% end %>
42
71
  <% end %>
43
72
  <% end %>
@@ -45,7 +74,7 @@ RSpec.describe Slack::Web::Api::Endpoints::<%= group.gsub(".", "_").camelize %>
45
74
  <% end %>
46
75
  <% if json_params.any? %>
47
76
  <% example_json_params = json_params.to_h { |name| [name, {data: ['data']}] } %>
48
- <% params = example_params.merge(example_json_params).map { |name, val| val = val.is_a?(String) ? "%q[#{val}]" : val; "#{name}: #{val}" }.join(', ') %>
77
+ <% params = example_params.merge(example_json_params).map { |name, val| val = val.is_a?(String) ? "%q[#{val}]" : ruby_literal.call(val); "#{name}: #{val}" }.join(', ') %>
49
78
  <% expected_params = example_params.merge(example_json_params.transform_values { |v| JSON.dump(v) }).map { |name, val| val = "%q[#{val}]"; "#{name}: #{val}" }.join(', ') %>
50
79
  it 'encodes <%= json_params.join(', ') %> as json' do
51
80
  expect(client).to receive(:post).with('<%= group %>.<%= name %>', {<%= expected_params %>})
@@ -14,10 +14,29 @@ module Slack
14
14
  Slack::Web::Config::ATTRIBUTES.each do |key|
15
15
  send("#{key}=", options.fetch(key, Slack::Web.config.send(key)))
16
16
  end
17
+
17
18
  @logger ||= Slack::Config.logger || Slack::Logger.default
18
19
  @token ||= Slack.config.token
19
20
  end
20
21
 
22
+ def with_response(&block)
23
+ raise ArgumentError, 'response callback block is required' unless block
24
+
25
+ with_callback(:@response_callbacks, block)
26
+ end
27
+
28
+ def with_request(&block)
29
+ raise ArgumentError, 'request callback block is required' unless block
30
+
31
+ with_callback(:@request_callbacks, block)
32
+ end
33
+
34
+ def with_error(&block)
35
+ raise ArgumentError, 'error callback block is required' unless block
36
+
37
+ with_callback(:@error_callbacks, block)
38
+ end
39
+
21
40
  class << self
22
41
  def configure
23
42
  block_given? ? yield(Config) : Config
@@ -27,6 +46,16 @@ module Slack
27
46
  Config
28
47
  end
29
48
  end
49
+
50
+ private
51
+
52
+ def with_callback(variable, block)
53
+ copy = dup
54
+ copy.instance_variable_set(:@connection, nil)
55
+ copy.instance_variable_set(:@options, nil)
56
+ copy.instance_variable_set(variable, Array(instance_variable_get(variable)) + [block])
57
+ copy
58
+ end
30
59
  end
31
60
  end
32
61
  end
@@ -22,7 +22,14 @@ module Slack
22
22
  private
23
23
 
24
24
  def request(method, path, options)
25
- response = connection.send(method) do |request|
25
+ response = perform_request(method, path, options)
26
+ Array(@response_callbacks).each { |callback| callback.call(response) }
27
+ response.body
28
+ end
29
+
30
+ def perform_request(method, path, options)
31
+ configuring_request = false
32
+ perform_http_request(method, -> { configuring_request }) do |request|
26
33
  case method
27
34
  when :get, :delete
28
35
  request.url(path, options)
@@ -34,9 +41,22 @@ module Slack
34
41
  request.headers['Authorization'] = "Bearer #{token}" if token
35
42
 
36
43
  request.options.merge!(options.delete(:request)) if options.key?(:request)
44
+ configuring_request = true
45
+ Array(@request_callbacks).each { |callback| callback.call(request) }
46
+ configuring_request = false
37
47
  end
38
- response.body
48
+ rescue ::Faraday::Error => e
49
+ raise if configuring_request
50
+
51
+ Array(@error_callbacks).each { |callback| callback.call(e) }
52
+ raise
53
+ end
54
+
55
+ def perform_http_request(method, configuring_request, &block)
56
+ connection.send(method, &block)
39
57
  rescue ::Faraday::ParsingError => e
58
+ raise if configuring_request.call
59
+
40
60
  raise Slack::Web::Api::Errors::ParsingError, e.response
41
61
  end
42
62
  end
data/lib/tasks/web.rake CHANGED
@@ -59,13 +59,16 @@ namespace :slack do
59
59
 
60
60
  unless ENV.key?('SKIP_PATCH')
61
61
  Dir.glob("lib/slack/web/api/patches/#{group}*.patch").sort.each do |patch|
62
- puts "- patching #{patch}"
62
+ puts "#{' ' * 7}patching #{patch}"
63
63
  system("git apply #{patch}") || raise('failed to apply patch')
64
64
  end
65
65
  end
66
66
 
67
67
  # command
68
- raise "Missing group #{group}" unless groups.key?(group)
68
+ unless groups.key?(group)
69
+ puts "#{' ' * 7}undocumented group #{group}"
70
+ groups[group] = { 'name' => group }
71
+ end
69
72
 
70
73
  rendered_command = command_template.result(group: groups[group], names: names)
71
74
  File.write "bin/commands/#{snaked_group}.rb", rendered_command
@@ -20,7 +20,6 @@ Gem::Specification.new do |s|
20
20
  s.add_dependency 'faraday', '>= 2.0.1'
21
21
  s.add_dependency 'faraday-mashify'
22
22
  s.add_dependency 'faraday-multipart'
23
- s.add_dependency 'gli'
24
23
  s.add_dependency 'hashie'
25
24
  s.add_dependency 'logger'
26
25
  s.metadata['rubygems_mfa_required'] = 'true'
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slack-ruby-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Doubrovkine
8
+ autorequire:
8
9
  bindir: bin
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2026-10-10 00:00:00.000000000 Z
11
12
  dependencies:
12
13
  - !ruby/object:Gem::Dependency
13
14
  name: faraday
@@ -51,20 +52,6 @@ dependencies:
51
52
  - - ">="
52
53
  - !ruby/object:Gem::Version
53
54
  version: '0'
54
- - !ruby/object:Gem::Dependency
55
- name: gli
56
- requirement: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - ">="
59
- - !ruby/object:Gem::Version
60
- version: '0'
61
- type: :runtime
62
- prerelease: false
63
- version_requirements: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: '0'
68
55
  - !ruby/object:Gem::Dependency
69
56
  name: hashie
70
57
  requirement: !ruby/object:Gem::Requirement
@@ -93,6 +80,7 @@ dependencies:
93
80
  - - ">="
94
81
  - !ruby/object:Gem::Version
95
82
  version: '0'
83
+ description:
96
84
  email: dblock@dblock.org
97
85
  executables:
98
86
  - slack
@@ -102,8 +90,10 @@ files:
102
90
  - ".coveralls.yml"
103
91
  - ".github/FUNDING.yml"
104
92
  - ".github/dependabot.yml"
93
+ - ".github/prompts/changelog-entries.prompt.yml"
94
+ - ".github/workflows/danger-comment.yml"
95
+ - ".github/workflows/danger.yml"
105
96
  - ".github/workflows/lint.yml"
106
- - ".github/workflows/pr_lint.yml"
107
97
  - ".github/workflows/test.yml"
108
98
  - ".github/workflows/update_api.yml"
109
99
  - ".gitignore"
@@ -112,11 +102,11 @@ files:
112
102
  - ".rubocop.yml"
113
103
  - ".rubocop_todo.yml"
114
104
  - ".ruby-version"
105
+ - AGENTS.md
115
106
  - CHANGELOG.md
116
107
  - CONTRIBUTING.md
117
108
  - Dangerfile
118
109
  - Gemfile
119
- - Gemfile.danger
120
110
  - LICENSE.md
121
111
  - README.md
122
112
  - RELEASING.md
@@ -124,10 +114,14 @@ files:
124
114
  - SECURITY.md
125
115
  - UPGRADING.md
126
116
  - bin/commands/admin_analytics.rb
117
+ - bin/commands/admin_analytics_messages.rb
127
118
  - bin/commands/admin_apps.rb
128
119
  - bin/commands/admin_apps_activities.rb
129
120
  - bin/commands/admin_apps_approved.rb
130
121
  - bin/commands/admin_apps_config.rb
122
+ - bin/commands/admin_apps_mcp_servers.rb
123
+ - bin/commands/admin_apps_mcp_servers_permissions.rb
124
+ - bin/commands/admin_apps_permissions.rb
131
125
  - bin/commands/admin_apps_requests.rb
132
126
  - bin/commands/admin_apps_restricted.rb
133
127
  - bin/commands/admin_audit_anomaly_allow.rb
@@ -155,6 +149,7 @@ files:
155
149
  - bin/commands/admin_workflows_collaborators.rb
156
150
  - bin/commands/admin_workflows_permissions.rb
157
151
  - bin/commands/admin_workflows_triggers_types_permissions.rb
152
+ - bin/commands/agents_sessions.rb
158
153
  - bin/commands/api.rb
159
154
  - bin/commands/apps.rb
160
155
  - bin/commands/apps_activities.rb
@@ -162,11 +157,15 @@ files:
162
157
  - bin/commands/apps_connections.rb
163
158
  - bin/commands/apps_datastore.rb
164
159
  - bin/commands/apps_event_authorizations.rb
160
+ - bin/commands/apps_icon.rb
161
+ - bin/commands/apps_managed_permissions.rb
165
162
  - bin/commands/apps_manifest.rb
163
+ - bin/commands/apps_user_connection.rb
166
164
  - bin/commands/assistant_search.rb
167
165
  - bin/commands/assistant_threads.rb
168
166
  - bin/commands/auth.rb
169
167
  - bin/commands/auth_teams.rb
168
+ - bin/commands/blocks.rb
170
169
  - bin/commands/bookmarks.rb
171
170
  - bin/commands/bots.rb
172
171
  - bin/commands/calls.rb
@@ -194,6 +193,7 @@ files:
194
193
  - bin/commands/migration.rb
195
194
  - bin/commands/oauth.rb
196
195
  - bin/commands/oauth_v2.rb
196
+ - bin/commands/oauth_v2_user.rb
197
197
  - bin/commands/openid_connect.rb
198
198
  - bin/commands/pins.rb
199
199
  - bin/commands/reactions.rb
@@ -247,10 +247,14 @@ files:
247
247
  - lib/slack/version.rb
248
248
  - lib/slack/web/api/endpoints.rb
249
249
  - lib/slack/web/api/endpoints/admin_analytics.rb
250
+ - lib/slack/web/api/endpoints/admin_analytics_messages.rb
250
251
  - lib/slack/web/api/endpoints/admin_apps.rb
251
252
  - lib/slack/web/api/endpoints/admin_apps_activities.rb
252
253
  - lib/slack/web/api/endpoints/admin_apps_approved.rb
253
254
  - lib/slack/web/api/endpoints/admin_apps_config.rb
255
+ - lib/slack/web/api/endpoints/admin_apps_mcp_servers.rb
256
+ - lib/slack/web/api/endpoints/admin_apps_mcp_servers_permissions.rb
257
+ - lib/slack/web/api/endpoints/admin_apps_permissions.rb
254
258
  - lib/slack/web/api/endpoints/admin_apps_requests.rb
255
259
  - lib/slack/web/api/endpoints/admin_apps_restricted.rb
256
260
  - lib/slack/web/api/endpoints/admin_audit_anomaly_allow.rb
@@ -278,6 +282,7 @@ files:
278
282
  - lib/slack/web/api/endpoints/admin_workflows_collaborators.rb
279
283
  - lib/slack/web/api/endpoints/admin_workflows_permissions.rb
280
284
  - lib/slack/web/api/endpoints/admin_workflows_triggers_types_permissions.rb
285
+ - lib/slack/web/api/endpoints/agents_sessions.rb
281
286
  - lib/slack/web/api/endpoints/api.rb
282
287
  - lib/slack/web/api/endpoints/apps.rb
283
288
  - lib/slack/web/api/endpoints/apps_activities.rb
@@ -285,11 +290,15 @@ files:
285
290
  - lib/slack/web/api/endpoints/apps_connections.rb
286
291
  - lib/slack/web/api/endpoints/apps_datastore.rb
287
292
  - lib/slack/web/api/endpoints/apps_event_authorizations.rb
293
+ - lib/slack/web/api/endpoints/apps_icon.rb
294
+ - lib/slack/web/api/endpoints/apps_managed_permissions.rb
288
295
  - lib/slack/web/api/endpoints/apps_manifest.rb
296
+ - lib/slack/web/api/endpoints/apps_user_connection.rb
289
297
  - lib/slack/web/api/endpoints/assistant_search.rb
290
298
  - lib/slack/web/api/endpoints/assistant_threads.rb
291
299
  - lib/slack/web/api/endpoints/auth.rb
292
300
  - lib/slack/web/api/endpoints/auth_teams.rb
301
+ - lib/slack/web/api/endpoints/blocks.rb
293
302
  - lib/slack/web/api/endpoints/bookmarks.rb
294
303
  - lib/slack/web/api/endpoints/bots.rb
295
304
  - lib/slack/web/api/endpoints/calls.rb
@@ -317,6 +326,7 @@ files:
317
326
  - lib/slack/web/api/endpoints/migration.rb
318
327
  - lib/slack/web/api/endpoints/oauth.rb
319
328
  - lib/slack/web/api/endpoints/oauth_v2.rb
329
+ - lib/slack/web/api/endpoints/oauth_v2_user.rb
320
330
  - lib/slack/web/api/endpoints/openid_connect.rb
321
331
  - lib/slack/web/api/endpoints/pins.rb
322
332
  - lib/slack/web/api/endpoints/reactions.rb
@@ -360,6 +370,7 @@ files:
360
370
  - lib/slack/web/api/mixins/users.search.rb
361
371
  - lib/slack/web/api/options.rb
362
372
  - lib/slack/web/api/patches/.gitkeep
373
+ - lib/slack/web/api/patches/files.default-filename.patch
363
374
  - lib/slack/web/api/schema/group.json
364
375
  - lib/slack/web/api/schema/method.json
365
376
  - lib/slack/web/api/templates/command.erb
@@ -387,6 +398,7 @@ licenses:
387
398
  metadata:
388
399
  rubygems_mfa_required: 'true'
389
400
  changelog_uri: https://github.com/slack-ruby/slack-ruby-client/blob/master/CHANGELOG.md
401
+ post_install_message:
390
402
  rdoc_options: []
391
403
  require_paths:
392
404
  - lib
@@ -401,7 +413,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
401
413
  - !ruby/object:Gem::Version
402
414
  version: 1.3.6
403
415
  requirements: []
404
- rubygems_version: 3.6.9
416
+ rubygems_version: 3.5.16
417
+ signing_key:
405
418
  specification_version: 4
406
419
  summary: Slack Web and RealTime API client.
407
420
  test_files: []
@@ -1,21 +0,0 @@
1
- name: PR Lint
2
- on: pull_request
3
- jobs:
4
- danger:
5
- name: Dangerfile
6
- runs-on: ubuntu-latest
7
- env:
8
- BUNDLE_GEMFILE: ${{ github.workspace }}/Gemfile.danger
9
- steps:
10
- - name: Checkout
11
- uses: actions/checkout@v5
12
- with:
13
- fetch-depth: 0
14
- - name: Set up Ruby
15
- uses: ruby/setup-ruby@v1
16
- with:
17
- bundler-cache: true
18
- - run: |
19
- # Personal access token for dangerpr-bot - public, but base64 encoded to avoid tripping up GitHub
20
- TOKEN=$(echo -n Z2hwX0xNQ3VmanBFeTBvYkZVTWh6NVNqVFFBOEUxU25abzBqRUVuaAo= | base64 --decode)
21
- DANGER_GITHUB_API_TOKEN=$TOKEN bundle exec danger --verbose
data/Gemfile.danger DELETED
@@ -1,6 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- group :test do
4
- gem 'danger-toc', '~> 0.2.0', require: false
5
- gem 'slack-ruby-danger', '~> 0.2.0', require: false
6
- end