diff --git a/bolt-aws-lambda/pom.xml b/bolt-aws-lambda/pom.xml index 725debea4..d73029116 100644 --- a/bolt-aws-lambda/pom.xml +++ b/bolt-aws-lambda/pom.xml @@ -6,7 +6,7 @@ com.slack.api slack-sdk-parent - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT @@ -14,7 +14,7 @@ bolt-aws-lambda - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT jar diff --git a/bolt-docker-examples/echo-command-app/build.gradle b/bolt-docker-examples/echo-command-app/build.gradle index df9aa45b0..5721afa5f 100644 --- a/bolt-docker-examples/echo-command-app/build.gradle +++ b/bolt-docker-examples/echo-command-app/build.gradle @@ -10,7 +10,7 @@ repositories { dependencies { implementation(platform("org.jetbrains.kotlin:kotlin-bom")) implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") - implementation("com.slack.api:bolt-jetty:1.39.3") + implementation("com.slack.api:bolt-jetty:1.40.0") implementation("ch.qos.logback:logback-classic:1.2.11") implementation('net.logstash.logback:logstash-logback-encoder:6.2') } diff --git a/bolt-google-cloud-functions/pom.xml b/bolt-google-cloud-functions/pom.xml index 8901b0e72..51d275016 100644 --- a/bolt-google-cloud-functions/pom.xml +++ b/bolt-google-cloud-functions/pom.xml @@ -6,7 +6,7 @@ com.slack.api slack-sdk-parent - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT @@ -17,7 +17,7 @@ bolt-google-cloud-functions - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT jar diff --git a/bolt-helidon/pom.xml b/bolt-helidon/pom.xml index f11688659..6d9b66dc3 100644 --- a/bolt-helidon/pom.xml +++ b/bolt-helidon/pom.xml @@ -6,7 +6,7 @@ com.slack.api slack-sdk-parent - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT @@ -18,7 +18,7 @@ bolt-helidon - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT jar diff --git a/bolt-http4k/pom.xml b/bolt-http4k/pom.xml index 7cfc2e495..33e162193 100644 --- a/bolt-http4k/pom.xml +++ b/bolt-http4k/pom.xml @@ -6,15 +6,15 @@ com.slack.api slack-sdk-parent - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT - 5.21.0.0 + 5.23.0.0 bolt-http4k - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT jar diff --git a/bolt-jakarta-jetty/pom.xml b/bolt-jakarta-jetty/pom.xml index 18ab12b6b..3812bc164 100644 --- a/bolt-jakarta-jetty/pom.xml +++ b/bolt-jakarta-jetty/pom.xml @@ -6,11 +6,11 @@ com.slack.api slack-sdk-parent - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT bolt-jakarta-jetty - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT jar diff --git a/bolt-jakarta-servlet/pom.xml b/bolt-jakarta-servlet/pom.xml index 09f99efec..22619e15e 100644 --- a/bolt-jakarta-servlet/pom.xml +++ b/bolt-jakarta-servlet/pom.xml @@ -6,11 +6,11 @@ com.slack.api slack-sdk-parent - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT bolt-jakarta-servlet - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT jar diff --git a/bolt-jetty/pom.xml b/bolt-jetty/pom.xml index e46e88292..15564cb10 100644 --- a/bolt-jetty/pom.xml +++ b/bolt-jetty/pom.xml @@ -6,7 +6,7 @@ com.slack.api slack-sdk-parent - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT @@ -14,7 +14,7 @@ bolt-jetty - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT jar diff --git a/bolt-kotlin-examples/pom.xml b/bolt-kotlin-examples/pom.xml index 9844f59b8..5eea537ce 100644 --- a/bolt-kotlin-examples/pom.xml +++ b/bolt-kotlin-examples/pom.xml @@ -6,11 +6,11 @@ com.slack.api slack-sdk-parent - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT bolt-kotlin-examples - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT jar diff --git a/bolt-ktor/pom.xml b/bolt-ktor/pom.xml index e28d9dcd8..5bb7b374f 100644 --- a/bolt-ktor/pom.xml +++ b/bolt-ktor/pom.xml @@ -5,11 +5,11 @@ com.slack.api slack-sdk-parent - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT bolt-ktor - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT jar diff --git a/bolt-micronaut/pom.xml b/bolt-micronaut/pom.xml index 2bd546062..ac56780c7 100644 --- a/bolt-micronaut/pom.xml +++ b/bolt-micronaut/pom.xml @@ -6,13 +6,13 @@ com.slack.api slack-sdk-parent - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT - 4.4.10 + 4.5.3 4.3.0 - 3.3.0 + 3.4.0 5.10.2 1.10.19 @@ -25,7 +25,7 @@ bolt-micronaut - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT jar diff --git a/bolt-quarkus-examples/pom.xml b/bolt-quarkus-examples/pom.xml index 8d6265e37..6a3d1d4dd 100644 --- a/bolt-quarkus-examples/pom.xml +++ b/bolt-quarkus-examples/pom.xml @@ -6,7 +6,7 @@ com.slack.api slack-sdk-parent - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT @@ -24,7 +24,7 @@ bolt-quarkus-examples - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT jar diff --git a/bolt-servlet/pom.xml b/bolt-servlet/pom.xml index 24d99b88c..f05aa40b1 100644 --- a/bolt-servlet/pom.xml +++ b/bolt-servlet/pom.xml @@ -6,7 +6,7 @@ com.slack.api slack-sdk-parent - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT @@ -15,7 +15,7 @@ bolt-servlet - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT jar diff --git a/bolt-socket-mode/pom.xml b/bolt-socket-mode/pom.xml index 4f20c07db..1eab43e0f 100644 --- a/bolt-socket-mode/pom.xml +++ b/bolt-socket-mode/pom.xml @@ -6,7 +6,7 @@ com.slack.api slack-sdk-parent - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT @@ -17,7 +17,7 @@ bolt-socket-mode - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT jar diff --git a/bolt/pom.xml b/bolt/pom.xml index d4eaadf01..c1a51275d 100644 --- a/bolt/pom.xml +++ b/bolt/pom.xml @@ -6,11 +6,11 @@ com.slack.api slack-sdk-parent - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT bolt - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT jar diff --git a/bolt/src/main/java/com/slack/api/bolt/meta/BoltLibraryVersion.java b/bolt/src/main/java/com/slack/api/bolt/meta/BoltLibraryVersion.java index 68259cae4..566e0c04f 100644 --- a/bolt/src/main/java/com/slack/api/bolt/meta/BoltLibraryVersion.java +++ b/bolt/src/main/java/com/slack/api/bolt/meta/BoltLibraryVersion.java @@ -5,7 +5,7 @@ private BoltLibraryVersion() { } public static final String get() { - return "1.39.4-SNAPSHOT"; + return "1.40.1-SNAPSHOT"; } } diff --git a/docs/_config.yml b/docs/_config.yml index 404e01d59..1c53fde8b 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -6,7 +6,7 @@ markdown: kramdown baseurl: /java-slack-sdk url: https://slack.dev -sdkLatestVersion: 1.39.3 +sdkLatestVersion: 1.40.0 okhttpVersion: 4.10.0 slf4jApiVersion: 1.7.36 kotlinVersion: 1.7.21 diff --git a/docs/_includes/sidebar-ja.md b/docs/_includes/sidebar-ja.md index 3de092482..b702ab07a 100644 --- a/docs/_includes/sidebar-ja.md +++ b/docs/_includes/sidebar-ja.md @@ -20,7 +20,7 @@
  • Home タブ
  • スラッシュコマンド
  • イベント API
  • -
  • ワークフローステップ
  • +
  • ワークフローステップ(非推奨)
  • アプリの配布 (OAuth)
  • Slack でログインする
  • 対応 Web フレームワーク
  • diff --git a/docs/_includes/sidebar.md b/docs/_includes/sidebar.md index 62d5d7f0e..edb5efec4 100644 --- a/docs/_includes/sidebar.md +++ b/docs/_includes/sidebar.md @@ -20,7 +20,7 @@
  • App Home
  • Slash Commands
  • Events API
  • -
  • Workflow Steps
  • +
  • Workflow Steps (Deprecated)
  • App Distribution (OAuth)
  • Sign in with Slack
  • Supported Web Frameworks
  • diff --git a/docs/guides/ja/steps-from-apps.md b/docs/guides/ja/steps-from-apps.md index f7ca453bd..934d34b25 100644 --- a/docs/guides/ja/steps-from-apps.md +++ b/docs/guides/ja/steps-from-apps.md @@ -1,10 +1,12 @@ --- layout: ja -title: "ワークフローステップ" +title: "ワークフローステップ(非推奨)" lang: ja --- -# ワークフローステップ +# ワークフローステップ(非推奨) + +**ここで紹介されているワークフローステップの実装方法は非推奨となりました。 今後は[新しい方式(英語)](https://api.slack.com/automation/functions/custom-bolt)を利用してください。** (アプリによる)ワークフローステップ(Workflow Steps from Apps) は、[ワークフロービルダー](https://api.slack.com/workflows)におけるワークフローに組み込み可能なカスタムのワークフローステップを任意の Slack アプリが提供することを可能とします。 diff --git a/docs/guides/steps-from-apps.md b/docs/guides/steps-from-apps.md index 829d274ec..3085485d8 100644 --- a/docs/guides/steps-from-apps.md +++ b/docs/guides/steps-from-apps.md @@ -1,10 +1,12 @@ --- layout: default -title: "Workflow Steps" +title: "Workflow Steps (Deprecated)" lang: en --- -# Workflow Steps from Apps +# Workflow Steps from Apps (Deprecated) + +**Steps from Apps for legacy workflows are now deprecated. Use [new custom steps](https://api.slack.com/automation/functions/custom-bolt).** Workflow Steps from apps allow your app to create and process custom workflow steps that users can add using [Workflow Builder](https://api.slack.com/workflows). diff --git a/json-logs/raw/audit/v1/actions.json b/json-logs/raw/audit/v1/actions.json index ef243a8aa..30e547742 100644 --- a/json-logs/raw/audit/v1/actions.json +++ b/json-logs/raw/audit/v1/actions.json @@ -299,7 +299,12 @@ "external_shared_channel_access_downgraded", "private_channel_converted_to_public", "record_channel_archive", - "record_channel_unarchive" + "record_channel_unarchive", + "channel_converted_to_record_channel", + "record_channel_converted_to_channel", + "external_shared_channel_invite_requested", + "external_shared_channel_invite_request_approved", + "external_shared_channel_invite_request_denied" ], "app": [ "app_installed", diff --git a/json-logs/samples/api/admin.conversations.search.json b/json-logs/samples/api/admin.conversations.search.json index 526804f36..d4f3ced76 100644 --- a/json-logs/samples/api/admin.conversations.search.json +++ b/json-logs/samples/api/admin.conversations.search.json @@ -62,7 +62,16 @@ } ] }, - "context_team_id": "T00000000" + "context_team_id": "T00000000", + "lists": { + "total_count": 12345, + "ownership_details": [ + { + "count": 123, + "team_id": "" + } + ] + } } ], "next_cursor": "", diff --git a/json-logs/samples/api/canvases.access.delete.json b/json-logs/samples/api/canvases.access.delete.json new file mode 100644 index 000000000..49b68160f --- /dev/null +++ b/json-logs/samples/api/canvases.access.delete.json @@ -0,0 +1,13 @@ +{ + "ok": false, + "error": "", + "failed_to_update_channel_ids": [ + "" + ], + "failed_to_update_user_ids": [ + "" + ], + "response_metadata": {}, + "needed": "", + "provided": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/canvases.access.set.json b/json-logs/samples/api/canvases.access.set.json new file mode 100644 index 000000000..49b68160f --- /dev/null +++ b/json-logs/samples/api/canvases.access.set.json @@ -0,0 +1,13 @@ +{ + "ok": false, + "error": "", + "failed_to_update_channel_ids": [ + "" + ], + "failed_to_update_user_ids": [ + "" + ], + "response_metadata": {}, + "needed": "", + "provided": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/canvases.create.json b/json-logs/samples/api/canvases.create.json new file mode 100644 index 000000000..eab1b1956 --- /dev/null +++ b/json-logs/samples/api/canvases.create.json @@ -0,0 +1,13 @@ +{ + "ok": false, + "canvas_id": "F00000000", + "detail": "", + "error": "", + "response_metadata": { + "messages": [ + "" + ] + }, + "needed": "", + "provided": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/canvases.delete.json b/json-logs/samples/api/canvases.delete.json new file mode 100644 index 000000000..1ce4c58e9 --- /dev/null +++ b/json-logs/samples/api/canvases.delete.json @@ -0,0 +1,7 @@ +{ + "ok": false, + "error": "", + "response_metadata": {}, + "needed": "", + "provided": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/canvases.edit.json b/json-logs/samples/api/canvases.edit.json new file mode 100644 index 000000000..aa68747f3 --- /dev/null +++ b/json-logs/samples/api/canvases.edit.json @@ -0,0 +1,12 @@ +{ + "ok": false, + "detail": "", + "error": "", + "response_metadata": { + "messages": [ + "" + ] + }, + "needed": "", + "provided": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/canvases.sections.lookup.json b/json-logs/samples/api/canvases.sections.lookup.json new file mode 100644 index 000000000..e2d2f9119 --- /dev/null +++ b/json-logs/samples/api/canvases.sections.lookup.json @@ -0,0 +1,16 @@ +{ + "ok": false, + "error": "", + "sections": [ + { + "id": "" + } + ], + "response_metadata": { + "messages": [ + "" + ] + }, + "needed": "", + "provided": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/chat.postMessage.json b/json-logs/samples/api/chat.postMessage.json index 61888ef08..8deed9e0a 100644 --- a/json-logs/samples/api/chat.postMessage.json +++ b/json-logs/samples/api/chat.postMessage.json @@ -8353,6 +8353,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -12839,6 +12840,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", @@ -19707,6 +19709,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, diff --git a/json-logs/samples/api/chat.scheduleMessage.json b/json-logs/samples/api/chat.scheduleMessage.json index cc124a174..116266946 100644 --- a/json-logs/samples/api/chat.scheduleMessage.json +++ b/json-logs/samples/api/chat.scheduleMessage.json @@ -2898,6 +2898,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, diff --git a/json-logs/samples/api/chat.update.json b/json-logs/samples/api/chat.update.json index 93ea8c3fc..1d4df00b3 100644 --- a/json-logs/samples/api/chat.update.json +++ b/json-logs/samples/api/chat.update.json @@ -4316,6 +4316,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", @@ -7187,6 +7188,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, diff --git a/json-logs/samples/api/conversations.canvases.create.json b/json-logs/samples/api/conversations.canvases.create.json new file mode 100644 index 000000000..eab1b1956 --- /dev/null +++ b/json-logs/samples/api/conversations.canvases.create.json @@ -0,0 +1,13 @@ +{ + "ok": false, + "canvas_id": "F00000000", + "detail": "", + "error": "", + "response_metadata": { + "messages": [ + "" + ] + }, + "needed": "", + "provided": "" +} \ No newline at end of file diff --git a/json-logs/samples/api/conversations.history.json b/json-logs/samples/api/conversations.history.json index adfee79cc..bdc513a38 100644 --- a/json-logs/samples/api/conversations.history.json +++ b/json-logs/samples/api/conversations.history.json @@ -4317,6 +4317,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", @@ -7188,6 +7189,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -15856,6 +15858,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -20342,6 +20345,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", diff --git a/json-logs/samples/api/conversations.list.json b/json-logs/samples/api/conversations.list.json index 213fa25db..0933d5b31 100644 --- a/json-logs/samples/api/conversations.list.json +++ b/json-logs/samples/api/conversations.list.json @@ -62,8 +62,7 @@ "" ], "user": [ - "W00000000", - "U00000000" + "W00000000" ] }, "threads_restricted_to": { diff --git a/json-logs/samples/api/conversations.open.json b/json-logs/samples/api/conversations.open.json index 9d26c2f4f..3f3d78361 100644 --- a/json-logs/samples/api/conversations.open.json +++ b/json-logs/samples/api/conversations.open.json @@ -2851,6 +2851,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, diff --git a/json-logs/samples/api/conversations.replies.json b/json-logs/samples/api/conversations.replies.json index ae9657b31..e947fc5cd 100644 --- a/json-logs/samples/api/conversations.replies.json +++ b/json-logs/samples/api/conversations.replies.json @@ -2874,6 +2874,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -11542,6 +11543,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -16028,6 +16030,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", @@ -24305,6 +24308,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", diff --git a/json-logs/samples/api/files.remote.add.json b/json-logs/samples/api/files.remote.add.json index 8318c619e..12d565b42 100644 --- a/json-logs/samples/api/files.remote.add.json +++ b/json-logs/samples/api/files.remote.add.json @@ -4228,6 +4228,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", diff --git a/json-logs/samples/api/files.remote.info.json b/json-logs/samples/api/files.remote.info.json index 8318c619e..12d565b42 100644 --- a/json-logs/samples/api/files.remote.info.json +++ b/json-logs/samples/api/files.remote.info.json @@ -4228,6 +4228,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", diff --git a/json-logs/samples/api/files.remote.share.json b/json-logs/samples/api/files.remote.share.json index 8318c619e..12d565b42 100644 --- a/json-logs/samples/api/files.remote.share.json +++ b/json-logs/samples/api/files.remote.share.json @@ -4228,6 +4228,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", diff --git a/json-logs/samples/api/files.remote.update.json b/json-logs/samples/api/files.remote.update.json index 8318c619e..12d565b42 100644 --- a/json-logs/samples/api/files.remote.update.json +++ b/json-logs/samples/api/files.remote.update.json @@ -4228,6 +4228,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", diff --git a/json-logs/samples/api/files.revokePublicURL.json b/json-logs/samples/api/files.revokePublicURL.json index 8318c619e..12d565b42 100644 --- a/json-logs/samples/api/files.revokePublicURL.json +++ b/json-logs/samples/api/files.revokePublicURL.json @@ -4228,6 +4228,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", diff --git a/json-logs/samples/api/files.sharedPublicURL.json b/json-logs/samples/api/files.sharedPublicURL.json index 8318c619e..12d565b42 100644 --- a/json-logs/samples/api/files.sharedPublicURL.json +++ b/json-logs/samples/api/files.sharedPublicURL.json @@ -4228,6 +4228,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", diff --git a/json-logs/samples/api/files.upload.json b/json-logs/samples/api/files.upload.json index 8318c619e..12d565b42 100644 --- a/json-logs/samples/api/files.upload.json +++ b/json-logs/samples/api/files.upload.json @@ -4228,6 +4228,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", diff --git a/json-logs/samples/api/pins.list.json b/json-logs/samples/api/pins.list.json index e0bbedb28..938c68a98 100644 --- a/json-logs/samples/api/pins.list.json +++ b/json-logs/samples/api/pins.list.json @@ -4233,6 +4233,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", diff --git a/json-logs/samples/api/reactions.get.json b/json-logs/samples/api/reactions.get.json index 79124ec35..03a008981 100644 --- a/json-logs/samples/api/reactions.get.json +++ b/json-logs/samples/api/reactions.get.json @@ -2904,6 +2904,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, diff --git a/json-logs/samples/api/reactions.list.json b/json-logs/samples/api/reactions.list.json index 9fb5d677f..f4ad967ce 100644 --- a/json-logs/samples/api/reactions.list.json +++ b/json-logs/samples/api/reactions.list.json @@ -4343,6 +4343,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", @@ -7214,6 +7215,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -15882,6 +15884,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -20368,6 +20371,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", diff --git a/json-logs/samples/api/rtm.start.json b/json-logs/samples/api/rtm.start.json index 9b0daa9be..6da8f600a 100644 --- a/json-logs/samples/api/rtm.start.json +++ b/json-logs/samples/api/rtm.start.json @@ -9314,6 +9314,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -13800,6 +13801,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", @@ -20668,6 +20670,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -25319,6 +25322,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", @@ -33800,6 +33804,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -38286,6 +38291,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", @@ -45154,6 +45160,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -49805,6 +49812,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", diff --git a/json-logs/samples/api/search.all.json b/json-logs/samples/api/search.all.json index 8f51ebe36..fc3b0f5b0 100644 --- a/json-logs/samples/api/search.all.json +++ b/json-logs/samples/api/search.all.json @@ -8302,6 +8302,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -12788,6 +12789,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", @@ -19656,6 +19658,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -28333,6 +28336,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -32819,6 +32823,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", @@ -39687,6 +39692,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -42932,6 +42938,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -51600,6 +51607,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -56086,6 +56094,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", @@ -64363,6 +64372,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", @@ -72869,6 +72879,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -77355,6 +77366,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", @@ -84223,6 +84235,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, diff --git a/json-logs/samples/api/search.files.json b/json-logs/samples/api/search.files.json index b97e63ca6..bb7df4104 100644 --- a/json-logs/samples/api/search.files.json +++ b/json-logs/samples/api/search.files.json @@ -8453,6 +8453,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -12939,6 +12940,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", @@ -19807,6 +19809,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, diff --git a/json-logs/samples/api/search.messages.json b/json-logs/samples/api/search.messages.json index 8aec9ab80..a8218ea70 100644 --- a/json-logs/samples/api/search.messages.json +++ b/json-logs/samples/api/search.messages.json @@ -8301,6 +8301,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -12787,6 +12788,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", @@ -19655,6 +19657,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -28332,6 +28335,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -32818,6 +32822,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", @@ -39686,6 +39691,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -42931,6 +42937,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -51599,6 +51606,7 @@ "last_read": 123, "title_blocks": [], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [], "org_or_workspace_access": "", "update_notification": 123, @@ -56085,6 +56093,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", @@ -64362,6 +64371,7 @@ } ], "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "dm_mpdm_users_with_file_access": [ { "user_id": "", diff --git a/json-logs/samples/api/users.discoverableContacts.lookup.json b/json-logs/samples/api/users.discoverableContacts.lookup.json new file mode 100644 index 000000000..6212d4e17 --- /dev/null +++ b/json-logs/samples/api/users.discoverableContacts.lookup.json @@ -0,0 +1,14 @@ +{ + "ok": false, + "error": "", + "needed": "", + "provided": "", + "user": { + "is_discoverable": false + }, + "response_metadata": { + "messages": [ + "" + ] + } +} \ No newline at end of file diff --git a/json-logs/samples/app-backend/interactive-components/BlockActionPayload.json b/json-logs/samples/app-backend/interactive-components/BlockActionPayload.json index e7bf429a6..0a0ee0ffe 100644 --- a/json-logs/samples/app-backend/interactive-components/BlockActionPayload.json +++ b/json-logs/samples/app-backend/interactive-components/BlockActionPayload.json @@ -994,6 +994,7 @@ "access": "", "last_read": 123, "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "org_or_workspace_access": "", "update_notification": 123, "canvas_template_mode": "", @@ -1237,6 +1238,7 @@ "access": "", "last_read": 123, "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "org_or_workspace_access": "", "update_notification": 123, "canvas_template_mode": "", diff --git a/json-logs/samples/app-backend/interactive-components/MessageShortcutPayload.json b/json-logs/samples/app-backend/interactive-components/MessageShortcutPayload.json index 119bdf173..9c79b7b24 100644 --- a/json-logs/samples/app-backend/interactive-components/MessageShortcutPayload.json +++ b/json-logs/samples/app-backend/interactive-components/MessageShortcutPayload.json @@ -963,6 +963,7 @@ "access": "", "last_read": 123, "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "org_or_workspace_access": "", "update_notification": 123, "canvas_template_mode": "", @@ -1206,6 +1207,7 @@ "access": "", "last_read": 123, "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "org_or_workspace_access": "", "update_notification": 123, "canvas_template_mode": "", diff --git a/json-logs/samples/events/MessageFileSharePayload.json b/json-logs/samples/events/MessageFileSharePayload.json index 05d2e8dcf..5c6a2e030 100644 --- a/json-logs/samples/events/MessageFileSharePayload.json +++ b/json-logs/samples/events/MessageFileSharePayload.json @@ -863,6 +863,7 @@ "access": "", "last_read": 123, "private_channels_with_file_access_count": 123, + "private_file_with_access_count": 123, "org_or_workspace_access": "", "update_notification": 123, "canvas_template_mode": "", diff --git a/metadata/web-api/rate_limit_tiers.json b/metadata/web-api/rate_limit_tiers.json index 6f3b05ed3..edc35975d 100644 --- a/metadata/web-api/rate_limit_tiers.json +++ b/metadata/web-api/rate_limit_tiers.json @@ -126,6 +126,12 @@ "calls.participants.add": "Tier2", "calls.participants.remove": "Tier2", "calls.update": "Tier2", + "canvases.access.delete": "Tier3", + "canvases.access.set": "Tier3", + "canvases.create": "Tier2", + "canvases.delete": "Tier3", + "canvases.edit": "Tier3", + "canvases.sections.lookup": "Tier3", "channels.archive": "Tier2", "channels.create": "Tier2", "channels.history": "Tier2", @@ -154,6 +160,7 @@ "conversations.acceptSharedInvite": "Tier1", "conversations.approveSharedInvite": "Tier1", "conversations.archive": "Tier2", + "conversations.canvases.create": "Tier2", "conversations.close": "Tier2", "conversations.create": "Tier2", "conversations.declineSharedInvite": "Tier1", @@ -270,6 +277,7 @@ "usergroups.users.update": "Tier2", "users.conversations": "Tier2", "users.deletePhoto": "Tier2", + "users.discoverableContacts.lookup": "Tier2", "users.getPresence": "Tier3", "users.identity": "Tier3", "users.info": "Tier4", diff --git a/pom.xml b/pom.xml index 5d05ee0f4..b1dfa4f62 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.slack.api slack-sdk-parent - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT pom Java Slack SDK Project diff --git a/slack-api-client-kotlin-extension/pom.xml b/slack-api-client-kotlin-extension/pom.xml index 59ffc3ddf..4a556aee0 100644 --- a/slack-api-client-kotlin-extension/pom.xml +++ b/slack-api-client-kotlin-extension/pom.xml @@ -5,11 +5,11 @@ com.slack.api slack-sdk-parent - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT slack-api-client-kotlin-extension - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT jar diff --git a/slack-api-client/pom.xml b/slack-api-client/pom.xml index 8daee45e7..07153b224 100644 --- a/slack-api-client/pom.xml +++ b/slack-api-client/pom.xml @@ -6,11 +6,11 @@ com.slack.api slack-sdk-parent - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT slack-api-client - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT jar diff --git a/slack-api-client/src/main/java/com/slack/api/audit/Actions.java b/slack-api-client/src/main/java/com/slack/api/audit/Actions.java index 8d30a10e6..ff6690016 100644 --- a/slack-api-client/src/main/java/com/slack/api/audit/Actions.java +++ b/slack-api-client/src/main/java/com/slack/api/audit/Actions.java @@ -323,6 +323,11 @@ private Channel() { public static final String private_channel_converted_to_public = "private_channel_converted_to_public"; public static final String record_channel_archive = "record_channel_archive"; public static final String record_channel_unarchive = "record_channel_unarchive"; + public static final String channel_converted_to_record_channel = "channel_converted_to_record_channel"; + public static final String record_channel_converted_to_channel = "record_channel_converted_to_channel"; + public static final String external_shared_channel_invite_requested = "external_shared_channel_invite_requested"; + public static final String external_shared_channel_invite_request_approved = "external_shared_channel_invite_request_approved"; + public static final String external_shared_channel_invite_request_denied = "external_shared_channel_invite_request_denied"; } public static class App { diff --git a/slack-api-client/src/main/java/com/slack/api/meta/SlackApiClientLibraryVersion.java b/slack-api-client/src/main/java/com/slack/api/meta/SlackApiClientLibraryVersion.java index 3e3bc8f46..ef6660f7a 100644 --- a/slack-api-client/src/main/java/com/slack/api/meta/SlackApiClientLibraryVersion.java +++ b/slack-api-client/src/main/java/com/slack/api/meta/SlackApiClientLibraryVersion.java @@ -5,7 +5,7 @@ private SlackApiClientLibraryVersion() { } public static final String get() { - return "1.39.4-SNAPSHOT"; + return "1.40.1-SNAPSHOT"; } } diff --git a/slack-api-client/src/main/java/com/slack/api/methods/AsyncMethodsClient.java b/slack-api-client/src/main/java/com/slack/api/methods/AsyncMethodsClient.java index d45dc67f4..1f31190d0 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/AsyncMethodsClient.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/AsyncMethodsClient.java @@ -57,9 +57,16 @@ import com.slack.api.methods.request.calls.CallsUpdateRequest; import com.slack.api.methods.request.calls.participants.CallsParticipantsAddRequest; import com.slack.api.methods.request.calls.participants.CallsParticipantsRemoveRequest; +import com.slack.api.methods.request.canvases.CanvasesCreateRequest; +import com.slack.api.methods.request.canvases.CanvasesDeleteRequest; +import com.slack.api.methods.request.canvases.CanvasesEditRequest; +import com.slack.api.methods.request.canvases.access.CanvasesAccessDeleteRequest; +import com.slack.api.methods.request.canvases.access.CanvasesAccessSetRequest; +import com.slack.api.methods.request.canvases.sections.CanvasesSectionsLookupRequest; import com.slack.api.methods.request.chat.*; import com.slack.api.methods.request.chat.scheduled_messages.ChatScheduledMessagesListRequest; import com.slack.api.methods.request.conversations.*; +import com.slack.api.methods.request.conversations.canvases.ConversationsCanvasesCreateRequest; import com.slack.api.methods.request.dialog.DialogOpenRequest; import com.slack.api.methods.request.dnd.*; import com.slack.api.methods.request.emoji.EmojiListRequest; @@ -97,6 +104,7 @@ import com.slack.api.methods.request.usergroups.users.UsergroupsUsersListRequest; import com.slack.api.methods.request.usergroups.users.UsergroupsUsersUpdateRequest; import com.slack.api.methods.request.users.*; +import com.slack.api.methods.request.users.discoverable_contacts.UsersDiscoverableContactsLookupRequest; import com.slack.api.methods.request.users.profile.UsersProfileGetRequest; import com.slack.api.methods.request.users.profile.UsersProfileSetRequest; import com.slack.api.methods.request.views.ViewsOpenRequest; @@ -162,9 +170,16 @@ import com.slack.api.methods.response.calls.CallsUpdateResponse; import com.slack.api.methods.response.calls.participants.CallsParticipantsAddResponse; import com.slack.api.methods.response.calls.participants.CallsParticipantsRemoveResponse; +import com.slack.api.methods.response.canvases.CanvasesCreateResponse; +import com.slack.api.methods.response.canvases.CanvasesDeleteResponse; +import com.slack.api.methods.response.canvases.CanvasesEditResponse; +import com.slack.api.methods.response.canvases.access.CanvasesAccessDeleteResponse; +import com.slack.api.methods.response.canvases.access.CanvasesAccessSetResponse; +import com.slack.api.methods.response.canvases.sections.CanvasesSectionsLookupResponse; import com.slack.api.methods.response.chat.*; import com.slack.api.methods.response.chat.scheduled_messages.ChatScheduledMessagesListResponse; import com.slack.api.methods.response.conversations.*; +import com.slack.api.methods.response.conversations.canvases.ConversationsCanvasesCreateResponse; import com.slack.api.methods.response.dialog.DialogOpenResponse; import com.slack.api.methods.response.dnd.*; import com.slack.api.methods.response.emoji.EmojiListResponse; @@ -202,6 +217,7 @@ import com.slack.api.methods.response.usergroups.users.UsergroupsUsersListResponse; import com.slack.api.methods.response.usergroups.users.UsergroupsUsersUpdateResponse; import com.slack.api.methods.response.users.*; +import com.slack.api.methods.response.users.discoverable_contacts.UsersDiscoverableContactsLookupResponse; import com.slack.api.methods.response.users.profile.UsersProfileGetResponse; import com.slack.api.methods.response.users.profile.UsersProfileSetResponse; import com.slack.api.methods.response.views.ViewsOpenResponse; @@ -859,6 +875,34 @@ CompletableFuture CompletableFuture callsParticipantsRemove(RequestConfigurator req); + // ------------------------------ + // canvases + // ------------------------------ + + CompletableFuture canvasesCreate(CanvasesCreateRequest req); + + CompletableFuture canvasesCreate(RequestConfigurator req); + + CompletableFuture canvasesEdit(CanvasesEditRequest req); + + CompletableFuture canvasesEdit(RequestConfigurator req); + + CompletableFuture canvasesDelete(CanvasesDeleteRequest req); + + CompletableFuture canvasesDelete(RequestConfigurator req); + + CompletableFuture canvasesAccessSet(CanvasesAccessSetRequest req); + + CompletableFuture canvasesAccessSet(RequestConfigurator req); + + CompletableFuture canvasesAccessDelete(CanvasesAccessDeleteRequest req); + + CompletableFuture canvasesAccessDelete(RequestConfigurator req); + + CompletableFuture canvasesSectionsLookup(CanvasesSectionsLookupRequest req); + + CompletableFuture canvasesSectionsLookup(RequestConfigurator req); + // ------------------------------ // chat // ------------------------------ @@ -983,6 +1027,10 @@ CompletableFuture CompletableFuture conversationsUnarchive(RequestConfigurator req); + CompletableFuture conversationsCanvasesCreate(ConversationsCanvasesCreateRequest req); + + CompletableFuture conversationsCanvasesCreate(RequestConfigurator req); + // ------------- // Slack Connect @@ -1070,10 +1118,12 @@ CompletableFuture CompletableFuture filesSharedPublicURL(RequestConfigurator req); - @Deprecated // https://api.slack.com/changelog/2024-04-a-better-way-to-upload-files-is-here-to-stay + @Deprecated + // https://api.slack.com/changelog/2024-04-a-better-way-to-upload-files-is-here-to-stay CompletableFuture filesUpload(FilesUploadRequest req); - @Deprecated // https://api.slack.com/changelog/2024-04-a-better-way-to-upload-files-is-here-to-stay + @Deprecated + // https://api.slack.com/changelog/2024-04-a-better-way-to-upload-files-is-here-to-stay CompletableFuture filesUpload(RequestConfigurator req); CompletableFuture filesGetUploadURLExternal(FilesGetUploadURLExternalRequest req); @@ -1232,10 +1282,12 @@ CompletableFuture // rtm // ------------------------------ - @Deprecated // https://api.slack.com/changelog/2024-04-discontinuing-new-creation-of-classic-slack-apps-and-custom-bots + @Deprecated + // https://api.slack.com/changelog/2024-04-discontinuing-new-creation-of-classic-slack-apps-and-custom-bots CompletableFuture rtmConnect(RTMConnectRequest req); - @Deprecated // https://api.slack.com/changelog/2024-04-discontinuing-new-creation-of-classic-slack-apps-and-custom-bots + @Deprecated + // https://api.slack.com/changelog/2024-04-discontinuing-new-creation-of-classic-slack-apps-and-custom-bots CompletableFuture rtmConnect(RequestConfigurator req); @Deprecated @@ -1264,22 +1316,28 @@ CompletableFuture // stars // ------------------------------ - @Deprecated // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders + @Deprecated + // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders CompletableFuture starsAdd(StarsAddRequest req); - @Deprecated // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders + @Deprecated + // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders CompletableFuture starsAdd(RequestConfigurator req); - @Deprecated // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders + @Deprecated + // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders CompletableFuture starsList(StarsListRequest req); - @Deprecated // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders + @Deprecated + // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders CompletableFuture starsList(RequestConfigurator req); - @Deprecated // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders + @Deprecated + // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders CompletableFuture starsRemove(StarsRemoveRequest req); - @Deprecated // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders + @Deprecated + // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders CompletableFuture starsRemove(RequestConfigurator req); // ------------------------------ @@ -1398,6 +1456,10 @@ CompletableFuture CompletableFuture usersSetPresence(RequestConfigurator req); + CompletableFuture usersDiscoverableContactsLookup(UsersDiscoverableContactsLookupRequest req); + + CompletableFuture usersDiscoverableContactsLookup(RequestConfigurator req); + // ------------------------------ // users.profile // ------------------------------ diff --git a/slack-api-client/src/main/java/com/slack/api/methods/Methods.java b/slack-api-client/src/main/java/com/slack/api/methods/Methods.java index 79c94a1e0..946f71f8c 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/Methods.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/Methods.java @@ -320,6 +320,17 @@ private Methods() { public static final String CALLS_PARTICIPANTS_ADD = "calls.participants.add"; public static final String CALLS_PARTICIPANTS_REMOVE = "calls.participants.remove"; + // ------------------------------ + // canvases + // ------------------------------ + + public static final String CANVASES_ACCESS_DELETE = "canvases.access.delete"; + public static final String CANVASES_ACCESS_SET = "canvases.access.set"; + public static final String CANVASES_CREATE = "canvases.create"; + public static final String CANVASES_DELETE = "canvases.delete"; + public static final String CANVASES_EDIT = "canvases.edit"; + public static final String CANVASES_SECTIONS_LOOKUP = "canvases.sections.lookup"; + // ------------------------------ // channels // ------------------------------ @@ -405,6 +416,8 @@ private Methods() { public static final String CONVERSATIONS_DECLINE_SHARED_INVITE = "conversations.declineSharedInvite"; public static final String CONVERSATIONS_LIST_CONNECT_INVITES = "conversations.listConnectInvites"; + public static final String CONVERSATIONS_CANVASES_CREATE = "conversations.canvases.create"; + // ------------------------------ // dialog // ------------------------------ @@ -668,6 +681,7 @@ private Methods() { public static final String USERS_SET_ACTIVE = "users.setActive"; public static final String USERS_SET_PHOTO = "users.setPhoto"; public static final String USERS_SET_PRESENCE = "users.setPresence"; + public static final String USERS_DISCOVERABLE_CONTACTS_LOOKUP = "users.discoverableContacts.lookup"; // ------------------------------ // users.profile diff --git a/slack-api-client/src/main/java/com/slack/api/methods/MethodsClient.java b/slack-api-client/src/main/java/com/slack/api/methods/MethodsClient.java index bf9f2f5b0..972107411 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/MethodsClient.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/MethodsClient.java @@ -63,10 +63,17 @@ import com.slack.api.methods.request.calls.CallsUpdateRequest; import com.slack.api.methods.request.calls.participants.CallsParticipantsAddRequest; import com.slack.api.methods.request.calls.participants.CallsParticipantsRemoveRequest; +import com.slack.api.methods.request.canvases.CanvasesCreateRequest; +import com.slack.api.methods.request.canvases.CanvasesDeleteRequest; +import com.slack.api.methods.request.canvases.CanvasesEditRequest; +import com.slack.api.methods.request.canvases.access.CanvasesAccessDeleteRequest; +import com.slack.api.methods.request.canvases.access.CanvasesAccessSetRequest; +import com.slack.api.methods.request.canvases.sections.CanvasesSectionsLookupRequest; import com.slack.api.methods.request.channels.*; import com.slack.api.methods.request.chat.*; import com.slack.api.methods.request.chat.scheduled_messages.ChatScheduledMessagesListRequest; import com.slack.api.methods.request.conversations.*; +import com.slack.api.methods.request.conversations.canvases.ConversationsCanvasesCreateRequest; import com.slack.api.methods.request.dialog.DialogOpenRequest; import com.slack.api.methods.request.dnd.*; import com.slack.api.methods.request.emoji.EmojiListRequest; @@ -110,6 +117,7 @@ import com.slack.api.methods.request.usergroups.users.UsergroupsUsersListRequest; import com.slack.api.methods.request.usergroups.users.UsergroupsUsersUpdateRequest; import com.slack.api.methods.request.users.*; +import com.slack.api.methods.request.users.discoverable_contacts.UsersDiscoverableContactsLookupRequest; import com.slack.api.methods.request.users.profile.UsersProfileGetRequest; import com.slack.api.methods.request.users.profile.UsersProfileSetRequest; import com.slack.api.methods.request.views.ViewsOpenRequest; @@ -181,10 +189,17 @@ import com.slack.api.methods.response.calls.CallsUpdateResponse; import com.slack.api.methods.response.calls.participants.CallsParticipantsAddResponse; import com.slack.api.methods.response.calls.participants.CallsParticipantsRemoveResponse; +import com.slack.api.methods.response.canvases.CanvasesCreateResponse; +import com.slack.api.methods.response.canvases.CanvasesDeleteResponse; +import com.slack.api.methods.response.canvases.CanvasesEditResponse; +import com.slack.api.methods.response.canvases.access.CanvasesAccessDeleteResponse; +import com.slack.api.methods.response.canvases.access.CanvasesAccessSetResponse; +import com.slack.api.methods.response.canvases.sections.CanvasesSectionsLookupResponse; import com.slack.api.methods.response.channels.*; import com.slack.api.methods.response.chat.*; import com.slack.api.methods.response.chat.scheduled_messages.ChatScheduledMessagesListResponse; import com.slack.api.methods.response.conversations.*; +import com.slack.api.methods.response.conversations.canvases.ConversationsCanvasesCreateResponse; import com.slack.api.methods.response.dialog.DialogOpenResponse; import com.slack.api.methods.response.dnd.*; import com.slack.api.methods.response.emoji.EmojiListResponse; @@ -229,6 +244,7 @@ import com.slack.api.methods.response.usergroups.users.UsergroupsUsersUpdateResponse; import com.slack.api.methods.response.users.UsersLookupByEmailResponse; import com.slack.api.methods.response.users.*; +import com.slack.api.methods.response.users.discoverable_contacts.UsersDiscoverableContactsLookupResponse; import com.slack.api.methods.response.users.profile.UsersProfileGetResponse; import com.slack.api.methods.response.users.profile.UsersProfileSetResponse; import com.slack.api.methods.response.views.ViewsOpenResponse; @@ -989,6 +1005,34 @@ AdminUsergroupsRemoveChannelsResponse adminUsergroupsRemoveChannels( BotsInfoResponse botsInfo(RequestConfigurator req) throws IOException, SlackApiException; + // ------------------------------ + // canvases + // ------------------------------ + + CanvasesCreateResponse canvasesCreate(CanvasesCreateRequest req) throws IOException, SlackApiException; + + CanvasesCreateResponse canvasesCreate(RequestConfigurator req) throws IOException, SlackApiException; + + CanvasesEditResponse canvasesEdit(CanvasesEditRequest req) throws IOException, SlackApiException; + + CanvasesEditResponse canvasesEdit(RequestConfigurator req) throws IOException, SlackApiException; + + CanvasesDeleteResponse canvasesDelete(CanvasesDeleteRequest req) throws IOException, SlackApiException; + + CanvasesDeleteResponse canvasesDelete(RequestConfigurator req) throws IOException, SlackApiException; + + CanvasesAccessSetResponse canvasesAccessSet(CanvasesAccessSetRequest req) throws IOException, SlackApiException; + + CanvasesAccessSetResponse canvasesAccessSet(RequestConfigurator req) throws IOException, SlackApiException; + + CanvasesAccessDeleteResponse canvasesAccessDelete(CanvasesAccessDeleteRequest req) throws IOException, SlackApiException; + + CanvasesAccessDeleteResponse canvasesAccessDelete(RequestConfigurator req) throws IOException, SlackApiException; + + CanvasesSectionsLookupResponse canvasesSectionsLookup(CanvasesSectionsLookupRequest req) throws IOException, SlackApiException; + + CanvasesSectionsLookupResponse canvasesSectionsLookup(RequestConfigurator req) throws IOException, SlackApiException; + // ------------------------------ // calls // ------------------------------ @@ -1292,6 +1336,10 @@ AdminUsergroupsRemoveChannelsResponse adminUsergroupsRemoveChannels( ConversationsListConnectInvitesResponse conversationsListConnectInvites(RequestConfigurator req) throws IOException, SlackApiException; + ConversationsCanvasesCreateResponse conversationsCanvasesCreate(ConversationsCanvasesCreateRequest req) throws IOException, SlackApiException; + + ConversationsCanvasesCreateResponse conversationsCanvasesCreate(RequestConfigurator req) throws IOException, SlackApiException; + // ------------------------------ // dialog // ------------------------------ @@ -1356,10 +1404,12 @@ AdminUsergroupsRemoveChannelsResponse adminUsergroupsRemoveChannels( FilesSharedPublicURLResponse filesSharedPublicURL(RequestConfigurator req) throws IOException, SlackApiException; - @Deprecated // https://api.slack.com/changelog/2024-04-a-better-way-to-upload-files-is-here-to-stay + @Deprecated + // https://api.slack.com/changelog/2024-04-a-better-way-to-upload-files-is-here-to-stay FilesUploadResponse filesUpload(FilesUploadRequest req) throws IOException, SlackApiException; - @Deprecated // https://api.slack.com/changelog/2024-04-a-better-way-to-upload-files-is-here-to-stay + @Deprecated + // https://api.slack.com/changelog/2024-04-a-better-way-to-upload-files-is-here-to-stay FilesUploadResponse filesUpload(RequestConfigurator req) throws IOException, SlackApiException; FilesGetUploadURLExternalResponse filesGetUploadURLExternal(FilesGetUploadURLExternalRequest req) throws IOException, SlackApiException; @@ -1774,10 +1824,12 @@ AdminUsergroupsRemoveChannelsResponse adminUsergroupsRemoveChannels( // rtm // ------------------------------ - @Deprecated // https://api.slack.com/changelog/2024-04-discontinuing-new-creation-of-classic-slack-apps-and-custom-bots + @Deprecated + // https://api.slack.com/changelog/2024-04-discontinuing-new-creation-of-classic-slack-apps-and-custom-bots RTMConnectResponse rtmConnect(RTMConnectRequest req) throws IOException, SlackApiException; - @Deprecated // https://api.slack.com/changelog/2024-04-discontinuing-new-creation-of-classic-slack-apps-and-custom-bots + @Deprecated + // https://api.slack.com/changelog/2024-04-discontinuing-new-creation-of-classic-slack-apps-and-custom-bots RTMConnectResponse rtmConnect(RequestConfigurator req) throws IOException, SlackApiException; @Deprecated @@ -1806,22 +1858,28 @@ AdminUsergroupsRemoveChannelsResponse adminUsergroupsRemoveChannels( // stars // ------------------------------ - @Deprecated // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders + @Deprecated + // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders StarsAddResponse starsAdd(StarsAddRequest req) throws IOException, SlackApiException; - @Deprecated // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders + @Deprecated + // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders StarsAddResponse starsAdd(RequestConfigurator req) throws IOException, SlackApiException; - @Deprecated // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders + @Deprecated + // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders StarsListResponse starsList(StarsListRequest req) throws IOException, SlackApiException; - @Deprecated // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders + @Deprecated + // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders StarsListResponse starsList(RequestConfigurator req) throws IOException, SlackApiException; - @Deprecated // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders + @Deprecated + // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders StarsRemoveResponse starsRemove(StarsRemoveRequest req) throws IOException, SlackApiException; - @Deprecated // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders + @Deprecated + // https://api.slack.com/changelog/2023-07-its-later-already-for-stars-and-reminders StarsRemoveResponse starsRemove(RequestConfigurator req) throws IOException, SlackApiException; // ------------------------------ @@ -1940,6 +1998,10 @@ AdminUsergroupsRemoveChannelsResponse adminUsergroupsRemoveChannels( UsersSetPresenceResponse usersSetPresence(RequestConfigurator req) throws IOException, SlackApiException; + UsersDiscoverableContactsLookupResponse usersDiscoverableContactsLookup(UsersDiscoverableContactsLookupRequest req) throws IOException, SlackApiException; + + UsersDiscoverableContactsLookupResponse usersDiscoverableContactsLookup(RequestConfigurator req) throws IOException, SlackApiException; + // ------------------------------ // users.profile // ------------------------------ diff --git a/slack-api-client/src/main/java/com/slack/api/methods/MethodsRateLimits.java b/slack-api-client/src/main/java/com/slack/api/methods/MethodsRateLimits.java index 3b91b5c63..23f355894 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/MethodsRateLimits.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/MethodsRateLimits.java @@ -245,6 +245,14 @@ public static void setRateLimitTier(String methodName, MethodsRateLimitTier tier setRateLimitTier(CALLS_PARTICIPANTS_ADD, Tier2); setRateLimitTier(CALLS_PARTICIPANTS_REMOVE, Tier2); + setRateLimitTier(CANVASES_ACCESS_DELETE, Tier3); + setRateLimitTier(CANVASES_ACCESS_SET, Tier3); + setRateLimitTier(CANVASES_CREATE, Tier2); + setRateLimitTier(CANVASES_DELETE, Tier3); + setRateLimitTier(CANVASES_EDIT, Tier3); + setRateLimitTier(CANVASES_SECTIONS_LOOKUP, Tier3); + setRateLimitTier(CONVERSATIONS_CANVASES_CREATE, Tier2); + setRateLimitTier(CHAT_DELETE, Tier3); setRateLimitTier(CHAT_DELETE_SCHEDULED_MESSAGE, Tier3); setRateLimitTier(CHAT_GET_PERMALINK, SpecialTier_chat_getPermalink); @@ -436,6 +444,7 @@ public static void setRateLimitTier(String methodName, MethodsRateLimitTier tier setRateLimitTier(USERS_SET_PRESENCE, Tier2); setRateLimitTier(USERS_PROFILE_GET, Tier4); setRateLimitTier(USERS_PROFILE_SET, Tier3); + setRateLimitTier(USERS_DISCOVERABLE_CONTACTS_LOOKUP, Tier2); setRateLimitTier(VIEWS_OPEN, Tier4); setRateLimitTier(VIEWS_PUBLISH, Tier4); diff --git a/slack-api-client/src/main/java/com/slack/api/methods/RequestFormBuilder.java b/slack-api-client/src/main/java/com/slack/api/methods/RequestFormBuilder.java index cf7aa8395..343d801aa 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/RequestFormBuilder.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/RequestFormBuilder.java @@ -19,7 +19,9 @@ import com.slack.api.methods.request.admin.conversations.whitelist.AdminConversationsWhitelistListGroupsLinkedToChannelRequest; import com.slack.api.methods.request.admin.conversations.whitelist.AdminConversationsWhitelistRemoveRequest; import com.slack.api.methods.request.admin.emoji.*; -import com.slack.api.methods.request.admin.functions.*; +import com.slack.api.methods.request.admin.functions.AdminFunctionsListRequest; +import com.slack.api.methods.request.admin.functions.AdminFunctionsPermissionsLookupRequest; +import com.slack.api.methods.request.admin.functions.AdminFunctionsPermissionsSetRequest; import com.slack.api.methods.request.admin.invite_requests.*; import com.slack.api.methods.request.admin.roles.AdminRolesAddAssignmentsRequest; import com.slack.api.methods.request.admin.roles.AdminRolesListAssignmentsRequest; @@ -61,10 +63,17 @@ import com.slack.api.methods.request.calls.CallsUpdateRequest; import com.slack.api.methods.request.calls.participants.CallsParticipantsAddRequest; import com.slack.api.methods.request.calls.participants.CallsParticipantsRemoveRequest; +import com.slack.api.methods.request.canvases.CanvasesCreateRequest; +import com.slack.api.methods.request.canvases.CanvasesDeleteRequest; +import com.slack.api.methods.request.canvases.CanvasesEditRequest; +import com.slack.api.methods.request.canvases.access.CanvasesAccessDeleteRequest; +import com.slack.api.methods.request.canvases.access.CanvasesAccessSetRequest; +import com.slack.api.methods.request.canvases.sections.CanvasesSectionsLookupRequest; import com.slack.api.methods.request.channels.*; import com.slack.api.methods.request.chat.*; import com.slack.api.methods.request.chat.scheduled_messages.ChatScheduledMessagesListRequest; import com.slack.api.methods.request.conversations.*; +import com.slack.api.methods.request.conversations.canvases.ConversationsCanvasesCreateRequest; import com.slack.api.methods.request.dialog.DialogOpenRequest; import com.slack.api.methods.request.dnd.*; import com.slack.api.methods.request.emoji.EmojiListRequest; @@ -106,6 +115,7 @@ import com.slack.api.methods.request.usergroups.users.UsergroupsUsersListRequest; import com.slack.api.methods.request.usergroups.users.UsergroupsUsersUpdateRequest; import com.slack.api.methods.request.users.*; +import com.slack.api.methods.request.users.discoverable_contacts.UsersDiscoverableContactsLookupRequest; import com.slack.api.methods.request.users.profile.UsersProfileGetRequest; import com.slack.api.methods.request.users.profile.UsersProfileSetRequest; import com.slack.api.methods.request.views.ViewsOpenRequest; @@ -117,6 +127,7 @@ import com.slack.api.methods.request.workflows.WorkflowsUpdateStepRequest; import com.slack.api.model.Attachment; import com.slack.api.model.ConversationType; +import com.slack.api.model.canvas.CanvasDocumentContent; import com.slack.api.util.json.GsonFactory; import lombok.extern.slf4j.Slf4j; import okhttp3.FormBody; @@ -742,6 +753,7 @@ public static FormBody.Builder toForm(AdminRolesListAssignmentsRequest req) { setIfNotNull("sort_dir", req.getSortDir(), form); return form; } + public static FormBody.Builder toForm(AdminRolesRemoveAssignmentsRequest req) { FormBody.Builder form = new FormBody.Builder(); setIfNotNull("role_id", req.getRoleId(), form); @@ -753,6 +765,7 @@ public static FormBody.Builder toForm(AdminRolesRemoveAssignmentsRequest req) { } return form; } + public static FormBody.Builder toForm(AdminTeamsAdminsListRequest req) { FormBody.Builder form = new FormBody.Builder(); setIfNotNull("cursor", req.getCursor(), form); @@ -1168,6 +1181,70 @@ public static FormBody.Builder toForm(BotsInfoRequest req) { return form; } + public static FormBody.Builder toForm(CanvasesCreateRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("title", req.getTitle(), form); + if (req.getDocumentContent() != null) { + setIfNotNull("document_content", GSON.toJson(req.getDocumentContent()), form); + } else if (req.getMarkdown() != null) { + CanvasDocumentContent documentContent = CanvasDocumentContent.builder() + .type("markdown") + .markdown(req.getMarkdown()) + .build(); + setIfNotNull("document_content", GSON.toJson(documentContent), form); + } + return form; + } + + public static FormBody.Builder toForm(CanvasesEditRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("canvas_id", req.getCanvasId(), form); + if (req.getChanges() != null) { + setIfNotNull("changes", getJsonWithGsonAnonymInnerClassHandling(req.getChanges()), form); + } + return form; + } + + public static FormBody.Builder toForm(CanvasesDeleteRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("canvas_id", req.getCanvasId(), form); + return form; + } + + public static FormBody.Builder toForm(CanvasesAccessSetRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("canvas_id", req.getCanvasId(), form); + setIfNotNull("access_level", req.getAccessLevel(), form); + if (req.getUserIds() != null) { + setIfNotNull("user_ids", getJsonWithGsonAnonymInnerClassHandling(req.getUserIds()), form); + } + if (req.getChannelIds() != null) { + setIfNotNull("channel_ids", getJsonWithGsonAnonymInnerClassHandling(req.getChannelIds()), form); + } + return form; + } + + public static FormBody.Builder toForm(CanvasesAccessDeleteRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("canvas_id", req.getCanvasId(), form); + if (req.getUserIds() != null) { + setIfNotNull("user_ids", getJsonWithGsonAnonymInnerClassHandling(req.getUserIds()), form); + } + if (req.getChannelIds() != null) { + setIfNotNull("channel_ids", getJsonWithGsonAnonymInnerClassHandling(req.getChannelIds()), form); + } + return form; + } + + public static FormBody.Builder toForm(CanvasesSectionsLookupRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("canvas_id", req.getCanvasId(), form); + if (req.getCriteria() != null) { + setIfNotNull("criteria", GSON.toJson(req.getCriteria()), form); + } + return form; + } + public static FormBody.Builder toForm(CallsAddRequest req) { FormBody.Builder form = new FormBody.Builder(); setIfNotNull("external_unique_id", req.getExternalUniqueId(), form); @@ -1774,6 +1851,21 @@ public static FormBody.Builder toForm(ConversationsListConnectInvitesRequest req return form; } + public static FormBody.Builder toForm(ConversationsCanvasesCreateRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("channel_id", req.getChannelId(), form); + if (req.getDocumentContent() != null) { + setIfNotNull("document_content", GSON.toJson(req.getDocumentContent()), form); + } else if (req.getMarkdown() != null) { + CanvasDocumentContent documentContent = CanvasDocumentContent.builder() + .type("markdown") + .markdown(req.getMarkdown()) + .build(); + setIfNotNull("document_content", GSON.toJson(documentContent), form); + } + return form; + } + public static FormBody.Builder toForm(DialogOpenRequest req) { FormBody.Builder form = new FormBody.Builder(); setIfNotNull("trigger_id", req.getTriggerId(), form); @@ -2690,6 +2782,12 @@ public static FormBody.Builder toForm(UsersSetPresenceRequest req) { return form; } + public static FormBody.Builder toForm(UsersDiscoverableContactsLookupRequest req) { + FormBody.Builder form = new FormBody.Builder(); + setIfNotNull("email", req.getEmail(), form); + return form; + } + public static FormBody.Builder toForm(UsersProfileGetRequest req) { FormBody.Builder form = new FormBody.Builder(); setIfNotNull("user", req.getUser(), form); diff --git a/slack-api-client/src/main/java/com/slack/api/methods/impl/AsyncMethodsClientImpl.java b/slack-api-client/src/main/java/com/slack/api/methods/impl/AsyncMethodsClientImpl.java index 8990d8f62..f253ace6a 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/impl/AsyncMethodsClientImpl.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/impl/AsyncMethodsClientImpl.java @@ -61,9 +61,16 @@ import com.slack.api.methods.request.calls.CallsUpdateRequest; import com.slack.api.methods.request.calls.participants.CallsParticipantsAddRequest; import com.slack.api.methods.request.calls.participants.CallsParticipantsRemoveRequest; +import com.slack.api.methods.request.canvases.CanvasesCreateRequest; +import com.slack.api.methods.request.canvases.CanvasesDeleteRequest; +import com.slack.api.methods.request.canvases.CanvasesEditRequest; +import com.slack.api.methods.request.canvases.access.CanvasesAccessDeleteRequest; +import com.slack.api.methods.request.canvases.access.CanvasesAccessSetRequest; +import com.slack.api.methods.request.canvases.sections.CanvasesSectionsLookupRequest; import com.slack.api.methods.request.chat.*; import com.slack.api.methods.request.chat.scheduled_messages.ChatScheduledMessagesListRequest; import com.slack.api.methods.request.conversations.*; +import com.slack.api.methods.request.conversations.canvases.ConversationsCanvasesCreateRequest; import com.slack.api.methods.request.dialog.DialogOpenRequest; import com.slack.api.methods.request.dnd.*; import com.slack.api.methods.request.emoji.EmojiListRequest; @@ -101,6 +108,7 @@ import com.slack.api.methods.request.usergroups.users.UsergroupsUsersListRequest; import com.slack.api.methods.request.usergroups.users.UsergroupsUsersUpdateRequest; import com.slack.api.methods.request.users.*; +import com.slack.api.methods.request.users.discoverable_contacts.UsersDiscoverableContactsLookupRequest; import com.slack.api.methods.request.users.profile.UsersProfileGetRequest; import com.slack.api.methods.request.users.profile.UsersProfileSetRequest; import com.slack.api.methods.request.views.ViewsOpenRequest; @@ -166,9 +174,16 @@ import com.slack.api.methods.response.calls.CallsUpdateResponse; import com.slack.api.methods.response.calls.participants.CallsParticipantsAddResponse; import com.slack.api.methods.response.calls.participants.CallsParticipantsRemoveResponse; +import com.slack.api.methods.response.canvases.CanvasesCreateResponse; +import com.slack.api.methods.response.canvases.CanvasesDeleteResponse; +import com.slack.api.methods.response.canvases.CanvasesEditResponse; +import com.slack.api.methods.response.canvases.access.CanvasesAccessDeleteResponse; +import com.slack.api.methods.response.canvases.access.CanvasesAccessSetResponse; +import com.slack.api.methods.response.canvases.sections.CanvasesSectionsLookupResponse; import com.slack.api.methods.response.chat.*; import com.slack.api.methods.response.chat.scheduled_messages.ChatScheduledMessagesListResponse; import com.slack.api.methods.response.conversations.*; +import com.slack.api.methods.response.conversations.canvases.ConversationsCanvasesCreateResponse; import com.slack.api.methods.response.dialog.DialogOpenResponse; import com.slack.api.methods.response.dnd.*; import com.slack.api.methods.response.emoji.EmojiListResponse; @@ -206,6 +221,7 @@ import com.slack.api.methods.response.usergroups.users.UsergroupsUsersListResponse; import com.slack.api.methods.response.usergroups.users.UsergroupsUsersUpdateResponse; import com.slack.api.methods.response.users.*; +import com.slack.api.methods.response.users.discoverable_contacts.UsersDiscoverableContactsLookupResponse; import com.slack.api.methods.response.users.profile.UsersProfileGetResponse; import com.slack.api.methods.response.users.profile.UsersProfileSetResponse; import com.slack.api.methods.response.views.ViewsOpenResponse; @@ -1469,6 +1485,66 @@ public CompletableFuture callsParticipantsRemov return callsParticipantsRemove(req.configure(CallsParticipantsRemoveRequest.builder()).build()); } + @Override + public CompletableFuture canvasesCreate(CanvasesCreateRequest req) { + return executor.execute(CANVASES_CREATE, toMap(req), () -> methods.canvasesCreate(req)); + } + + @Override + public CompletableFuture canvasesCreate(RequestConfigurator req) { + return canvasesCreate(req.configure(CanvasesCreateRequest.builder()).build()); + } + + @Override + public CompletableFuture canvasesEdit(CanvasesEditRequest req) { + return executor.execute(CANVASES_EDIT, toMap(req), () -> methods.canvasesEdit(req)); + } + + @Override + public CompletableFuture canvasesEdit(RequestConfigurator req) { + return canvasesEdit(req.configure(CanvasesEditRequest.builder()).build()); + } + + @Override + public CompletableFuture canvasesDelete(CanvasesDeleteRequest req) { + return executor.execute(CANVASES_DELETE, toMap(req), () -> methods.canvasesDelete(req)); + } + + @Override + public CompletableFuture canvasesDelete(RequestConfigurator req) { + return canvasesDelete(req.configure(CanvasesDeleteRequest.builder()).build()); + } + + @Override + public CompletableFuture canvasesAccessSet(CanvasesAccessSetRequest req) { + return executor.execute(CANVASES_ACCESS_SET, toMap(req), () -> methods.canvasesAccessSet(req)); + } + + @Override + public CompletableFuture canvasesAccessSet(RequestConfigurator req) { + return canvasesAccessSet(req.configure(CanvasesAccessSetRequest.builder()).build()); + } + + @Override + public CompletableFuture canvasesAccessDelete(CanvasesAccessDeleteRequest req) { + return executor.execute(CANVASES_ACCESS_DELETE, toMap(req), () -> methods.canvasesAccessDelete(req)); + } + + @Override + public CompletableFuture canvasesAccessDelete(RequestConfigurator req) { + return canvasesAccessDelete(req.configure(CanvasesAccessDeleteRequest.builder()).build()); + } + + @Override + public CompletableFuture canvasesSectionsLookup(CanvasesSectionsLookupRequest req) { + return executor.execute(CANVASES_SECTIONS_LOOKUP, toMap(req), () -> methods.canvasesSectionsLookup(req)); + } + + @Override + public CompletableFuture canvasesSectionsLookup(RequestConfigurator req) { + return canvasesSectionsLookup(req.configure(CanvasesSectionsLookupRequest.builder()).build()); + } + @Override public CompletableFuture chatGetPermalink(ChatGetPermalinkRequest req) { return executor.execute(CHAT_GET_PERMALINK, toMap(req), () -> methods.chatGetPermalink(req)); @@ -1752,6 +1828,16 @@ public CompletableFuture conversationsUnarchive( return conversationsUnarchive(req.configure(ConversationsUnarchiveRequest.builder()).build()); } + @Override + public CompletableFuture conversationsCanvasesCreate(ConversationsCanvasesCreateRequest req) { + return executor.execute(CONVERSATIONS_CANVASES_CREATE, toMap(req), () -> methods.conversationsCanvasesCreate(req)); + } + + @Override + public CompletableFuture conversationsCanvasesCreate(RequestConfigurator req) { + return conversationsCanvasesCreate(req.configure(ConversationsCanvasesCreateRequest.builder()).build()); + } + @Override public CompletableFuture conversationsInviteShared(ConversationsInviteSharedRequest req) { return executor.execute(CONVERSATIONS_INVITE_SHARED, toMap(req), () -> methods.conversationsInviteShared(req)); @@ -2578,6 +2664,16 @@ public CompletableFuture usersSetPresence(RequestConfi return usersSetPresence(req.configure(UsersSetPresenceRequest.builder()).build()); } + @Override + public CompletableFuture usersDiscoverableContactsLookup(UsersDiscoverableContactsLookupRequest req) { + return executor.execute(USERS_DISCOVERABLE_CONTACTS_LOOKUP, toMap(req), () -> methods.usersDiscoverableContactsLookup(req)); + } + + @Override + public CompletableFuture usersDiscoverableContactsLookup(RequestConfigurator req) { + return usersDiscoverableContactsLookup(req.configure(UsersDiscoverableContactsLookupRequest.builder()).build()); + } + @Override public CompletableFuture usersProfileGet(UsersProfileGetRequest req) { return executor.execute(USERS_PROFILE_GET, toMap(req), () -> methods.usersProfileGet(req)); diff --git a/slack-api-client/src/main/java/com/slack/api/methods/impl/MethodsClientImpl.java b/slack-api-client/src/main/java/com/slack/api/methods/impl/MethodsClientImpl.java index 36f938fb8..57ddcb6ca 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/impl/MethodsClientImpl.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/impl/MethodsClientImpl.java @@ -65,10 +65,17 @@ import com.slack.api.methods.request.calls.CallsUpdateRequest; import com.slack.api.methods.request.calls.participants.CallsParticipantsAddRequest; import com.slack.api.methods.request.calls.participants.CallsParticipantsRemoveRequest; +import com.slack.api.methods.request.canvases.CanvasesCreateRequest; +import com.slack.api.methods.request.canvases.CanvasesDeleteRequest; +import com.slack.api.methods.request.canvases.CanvasesEditRequest; +import com.slack.api.methods.request.canvases.access.CanvasesAccessDeleteRequest; +import com.slack.api.methods.request.canvases.access.CanvasesAccessSetRequest; +import com.slack.api.methods.request.canvases.sections.CanvasesSectionsLookupRequest; import com.slack.api.methods.request.channels.*; import com.slack.api.methods.request.chat.*; import com.slack.api.methods.request.chat.scheduled_messages.ChatScheduledMessagesListRequest; import com.slack.api.methods.request.conversations.*; +import com.slack.api.methods.request.conversations.canvases.ConversationsCanvasesCreateRequest; import com.slack.api.methods.request.dialog.DialogOpenRequest; import com.slack.api.methods.request.dnd.*; import com.slack.api.methods.request.emoji.EmojiListRequest; @@ -112,6 +119,7 @@ import com.slack.api.methods.request.usergroups.users.UsergroupsUsersListRequest; import com.slack.api.methods.request.usergroups.users.UsergroupsUsersUpdateRequest; import com.slack.api.methods.request.users.*; +import com.slack.api.methods.request.users.discoverable_contacts.UsersDiscoverableContactsLookupRequest; import com.slack.api.methods.request.users.profile.UsersProfileGetRequest; import com.slack.api.methods.request.users.profile.UsersProfileSetRequest; import com.slack.api.methods.request.views.ViewsOpenRequest; @@ -183,10 +191,17 @@ import com.slack.api.methods.response.calls.CallsUpdateResponse; import com.slack.api.methods.response.calls.participants.CallsParticipantsAddResponse; import com.slack.api.methods.response.calls.participants.CallsParticipantsRemoveResponse; +import com.slack.api.methods.response.canvases.CanvasesCreateResponse; +import com.slack.api.methods.response.canvases.CanvasesDeleteResponse; +import com.slack.api.methods.response.canvases.CanvasesEditResponse; +import com.slack.api.methods.response.canvases.access.CanvasesAccessDeleteResponse; +import com.slack.api.methods.response.canvases.access.CanvasesAccessSetResponse; +import com.slack.api.methods.response.canvases.sections.CanvasesSectionsLookupResponse; import com.slack.api.methods.response.channels.*; import com.slack.api.methods.response.chat.*; import com.slack.api.methods.response.chat.scheduled_messages.ChatScheduledMessagesListResponse; import com.slack.api.methods.response.conversations.*; +import com.slack.api.methods.response.conversations.canvases.ConversationsCanvasesCreateResponse; import com.slack.api.methods.response.dialog.DialogOpenResponse; import com.slack.api.methods.response.dnd.*; import com.slack.api.methods.response.emoji.EmojiListResponse; @@ -231,6 +246,7 @@ import com.slack.api.methods.response.usergroups.users.UsergroupsUsersUpdateResponse; import com.slack.api.methods.response.users.UsersLookupByEmailResponse; import com.slack.api.methods.response.users.*; +import com.slack.api.methods.response.users.discoverable_contacts.UsersDiscoverableContactsLookupResponse; import com.slack.api.methods.response.users.profile.UsersProfileGetResponse; import com.slack.api.methods.response.users.profile.UsersProfileSetResponse; import com.slack.api.methods.response.views.ViewsOpenResponse; @@ -1493,6 +1509,66 @@ public BotsInfoResponse botsInfo(RequestConfigurator req) throws IOException, SlackApiException { + return canvasesCreate(req.configure(CanvasesCreateRequest.builder()).build()); + } + + @Override + public CanvasesEditResponse canvasesEdit(CanvasesEditRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.CANVASES_EDIT, getToken(req), CanvasesEditResponse.class); + } + + @Override + public CanvasesEditResponse canvasesEdit(RequestConfigurator req) throws IOException, SlackApiException { + return canvasesEdit(req.configure(CanvasesEditRequest.builder()).build()); + } + + @Override + public CanvasesDeleteResponse canvasesDelete(CanvasesDeleteRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.CANVASES_DELETE, getToken(req), CanvasesDeleteResponse.class); + } + + @Override + public CanvasesDeleteResponse canvasesDelete(RequestConfigurator req) throws IOException, SlackApiException { + return canvasesDelete(req.configure(CanvasesDeleteRequest.builder()).build()); + } + + @Override + public CanvasesAccessSetResponse canvasesAccessSet(CanvasesAccessSetRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.CANVASES_ACCESS_SET, getToken(req), CanvasesAccessSetResponse.class); + } + + @Override + public CanvasesAccessSetResponse canvasesAccessSet(RequestConfigurator req) throws IOException, SlackApiException { + return canvasesAccessSet(req.configure(CanvasesAccessSetRequest.builder()).build()); + } + + @Override + public CanvasesAccessDeleteResponse canvasesAccessDelete(CanvasesAccessDeleteRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.CANVASES_ACCESS_DELETE, getToken(req), CanvasesAccessDeleteResponse.class); + } + + @Override + public CanvasesAccessDeleteResponse canvasesAccessDelete(RequestConfigurator req) throws IOException, SlackApiException { + return canvasesAccessDelete(req.configure(CanvasesAccessDeleteRequest.builder()).build()); + } + + @Override + public CanvasesSectionsLookupResponse canvasesSectionsLookup(CanvasesSectionsLookupRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.CANVASES_SECTIONS_LOOKUP, getToken(req), CanvasesSectionsLookupResponse.class); + } + + @Override + public CanvasesSectionsLookupResponse canvasesSectionsLookup(RequestConfigurator req) throws IOException, SlackApiException { + return canvasesSectionsLookup(req.configure(CanvasesSectionsLookupRequest.builder()).build()); + } + @Override public CallsAddResponse callsAdd(CallsAddRequest req) throws IOException, SlackApiException { return postFormWithTokenAndParseResponse(toForm(req), Methods.CALLS_ADD, getToken(req), CallsAddResponse.class); @@ -2065,6 +2141,16 @@ public ConversationsListConnectInvitesResponse conversationsListConnectInvites(R return conversationsListConnectInvites(req.configure(ConversationsListConnectInvitesRequest.builder()).build()); } + @Override + public ConversationsCanvasesCreateResponse conversationsCanvasesCreate(ConversationsCanvasesCreateRequest req) throws IOException, SlackApiException { + return postFormWithTokenAndParseResponse(toForm(req), Methods.CONVERSATIONS_CANVASES_CREATE, getToken(req), ConversationsCanvasesCreateResponse.class); + } + + @Override + public ConversationsCanvasesCreateResponse conversationsCanvasesCreate(RequestConfigurator req) throws IOException, SlackApiException { + return conversationsCanvasesCreate(req.configure(ConversationsCanvasesCreateRequest.builder()).build()); + } + @Override public DialogOpenResponse dialogOpen(DialogOpenRequest req) throws IOException, SlackApiException { @@ -3275,6 +3361,16 @@ public UsersSetPresenceResponse usersSetPresence(RequestConfigurator req) throws IOException, SlackApiException { + return usersDiscoverableContactsLookup(req.configure(UsersDiscoverableContactsLookupRequest.builder()).build()); + } + @Override public UsersProfileGetResponse usersProfileGet(UsersProfileGetRequest req) throws IOException, SlackApiException { return postFormWithTokenAndParseResponse(toForm(req), Methods.USERS_PROFILE_GET, getToken(req), UsersProfileGetResponse.class); diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/canvases/CanvasesCreateRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/canvases/CanvasesCreateRequest.java new file mode 100644 index 000000000..521d46f3e --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/canvases/CanvasesCreateRequest.java @@ -0,0 +1,30 @@ +package com.slack.api.methods.request.canvases; + +import com.slack.api.methods.SlackApiRequest; +import com.slack.api.model.CallParticipant; +import com.slack.api.model.canvas.CanvasDocumentContent; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * https://api.slack.com/methods/canvases.create + */ +@Data +@Builder +public class CanvasesCreateRequest implements SlackApiRequest { + + /** + * Authentication token bearing required scopes. + */ + private String token; + + private String title; + + // You can pass either markdown or documentContent + private String markdown; + private CanvasDocumentContent documentContent; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/canvases/CanvasesDeleteRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/canvases/CanvasesDeleteRequest.java new file mode 100644 index 000000000..2821db05b --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/canvases/CanvasesDeleteRequest.java @@ -0,0 +1,20 @@ +package com.slack.api.methods.request.canvases; + +import com.slack.api.methods.SlackApiRequest; +import lombok.Builder; +import lombok.Data; + +/** + * https://api.slack.com/methods/canvases.delete + */ +@Data +@Builder +public class CanvasesDeleteRequest implements SlackApiRequest { + + /** + * Authentication token bearing required scopes. + */ + private String token; + + private String canvasId; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/canvases/CanvasesEditRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/canvases/CanvasesEditRequest.java new file mode 100644 index 000000000..d495a0ae0 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/canvases/CanvasesEditRequest.java @@ -0,0 +1,24 @@ +package com.slack.api.methods.request.canvases; + +import com.slack.api.methods.SlackApiRequest; +import com.slack.api.model.canvas.CanvasDocumentChange; +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +/** + * https://api.slack.com/methods/canvases.edit + */ +@Data +@Builder +public class CanvasesEditRequest implements SlackApiRequest { + + /** + * Authentication token bearing required scopes. + */ + private String token; + + private String canvasId; + private List changes; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/canvases/access/CanvasesAccessDeleteRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/canvases/access/CanvasesAccessDeleteRequest.java new file mode 100644 index 000000000..c9f618928 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/canvases/access/CanvasesAccessDeleteRequest.java @@ -0,0 +1,24 @@ +package com.slack.api.methods.request.canvases.access; + +import com.slack.api.methods.SlackApiRequest; +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +/** + * https://api.slack.com/methods/canvases.access.delete + */ +@Data +@Builder +public class CanvasesAccessDeleteRequest implements SlackApiRequest { + + /** + * Authentication token bearing required scopes. + */ + private String token; + + private String canvasId; + private List channelIds; + private List userIds; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/canvases/access/CanvasesAccessSetRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/canvases/access/CanvasesAccessSetRequest.java new file mode 100644 index 000000000..4da34ded0 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/canvases/access/CanvasesAccessSetRequest.java @@ -0,0 +1,25 @@ +package com.slack.api.methods.request.canvases.access; + +import com.slack.api.methods.SlackApiRequest; +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +/** + * https://api.slack.com/methods/canvases.access.set + */ +@Data +@Builder +public class CanvasesAccessSetRequest implements SlackApiRequest { + + /** + * Authentication token bearing required scopes. + */ + private String token; + + private String canvasId; + private String accessLevel; + private List channelIds; + private List userIds; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/canvases/sections/CanvasesSectionsLookupRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/canvases/sections/CanvasesSectionsLookupRequest.java new file mode 100644 index 000000000..b413bf423 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/canvases/sections/CanvasesSectionsLookupRequest.java @@ -0,0 +1,34 @@ +package com.slack.api.methods.request.canvases.sections; + +import com.slack.api.methods.SlackApiRequest; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +/** + * https://api.slack.com/methods/canvases.sections.lookup + */ +@Data +@Builder +public class CanvasesSectionsLookupRequest implements SlackApiRequest { + + /** + * Authentication token bearing required scopes. + */ + private String token; + + private String canvasId; + private Criteria criteria; + + @Data + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Criteria { + private List sectionTypes; // "any_header" etc. See CanvasDocumentSectionType + private String containsText; + } +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/conversations/canvases/ConversationsCanvasesCreateRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/conversations/canvases/ConversationsCanvasesCreateRequest.java new file mode 100644 index 000000000..a0740f2d2 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/conversations/canvases/ConversationsCanvasesCreateRequest.java @@ -0,0 +1,24 @@ +package com.slack.api.methods.request.conversations.canvases; + +import com.slack.api.methods.SlackApiRequest; +import com.slack.api.model.canvas.CanvasDocumentContent; +import lombok.Builder; +import lombok.Data; + +/** + * https://api.slack.com/methods/conversations.canvases.create + */ +@Data +@Builder +public class ConversationsCanvasesCreateRequest implements SlackApiRequest { + + /** + * Authentication token. Requires scope: `conversations:read` + */ + private String token; + + private String channelId; + + private String markdown; + private CanvasDocumentContent documentContent; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/request/users/discoverable_contacts/UsersDiscoverableContactsLookupRequest.java b/slack-api-client/src/main/java/com/slack/api/methods/request/users/discoverable_contacts/UsersDiscoverableContactsLookupRequest.java new file mode 100644 index 000000000..091cf1cf0 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/request/users/discoverable_contacts/UsersDiscoverableContactsLookupRequest.java @@ -0,0 +1,23 @@ +package com.slack.api.methods.request.users.discoverable_contacts; + +import com.slack.api.methods.SlackApiRequest; +import com.slack.api.model.ConversationType; +import lombok.Builder; +import lombok.Data; + +import java.util.List; + +/** + * https://api.slack.com/methods/users.discoverableContacts.lookups + */ +@Data +@Builder +public class UsersDiscoverableContactsLookupRequest implements SlackApiRequest { + + /** + * Authentication token. Requires scope: `conversations:read` + */ + private String token; + + private String email; +} diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/admin/conversations/AdminConversationsSearchResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/admin/conversations/AdminConversationsSearchResponse.java index e066bdad3..7ae1720fe 100644 --- a/slack-api-client/src/main/java/com/slack/api/methods/response/admin/conversations/AdminConversationsSearchResponse.java +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/admin/conversations/AdminConversationsSearchResponse.java @@ -55,6 +55,7 @@ public static class Conversation { private Boolean isDisconnectInProgress; private String conversationHostId; private Canvas canvas; + private Lists lists; } @Data @@ -67,4 +68,15 @@ public static class CanvasOwnershipDetail { private Integer count; private String teamId; } + + @Data + public static class Lists { + private Integer totalCount; + private List ownershipDetails; + } + @Data + public static class ListsOwnershipDetail { + private Integer count; + private String teamId; + } } \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/canvases/CanvasesCreateResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/canvases/CanvasesCreateResponse.java new file mode 100644 index 000000000..f7efe3d61 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/canvases/CanvasesCreateResponse.java @@ -0,0 +1,24 @@ +package com.slack.api.methods.response.canvases; + +import com.slack.api.methods.SlackApiTextResponse; +import com.slack.api.model.ResponseMetadata; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class CanvasesCreateResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; + + private String canvasId; + + private ResponseMetadata responseMetadata; + +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/canvases/CanvasesDeleteResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/canvases/CanvasesDeleteResponse.java new file mode 100644 index 000000000..90aa49242 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/canvases/CanvasesDeleteResponse.java @@ -0,0 +1,22 @@ +package com.slack.api.methods.response.canvases; + +import com.slack.api.methods.SlackApiTextResponse; +import com.slack.api.model.ResponseMetadata; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class CanvasesDeleteResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; + + private ResponseMetadata responseMetadata; + +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/canvases/CanvasesEditResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/canvases/CanvasesEditResponse.java new file mode 100644 index 000000000..21ea50a61 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/canvases/CanvasesEditResponse.java @@ -0,0 +1,22 @@ +package com.slack.api.methods.response.canvases; + +import com.slack.api.methods.SlackApiTextResponse; +import com.slack.api.model.ResponseMetadata; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class CanvasesEditResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; + + private ResponseMetadata responseMetadata; + +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/canvases/access/CanvasesAccessDeleteResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/canvases/access/CanvasesAccessDeleteResponse.java new file mode 100644 index 000000000..ee0628930 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/canvases/access/CanvasesAccessDeleteResponse.java @@ -0,0 +1,24 @@ +package com.slack.api.methods.response.canvases.access; + +import com.slack.api.methods.SlackApiTextResponse; +import com.slack.api.model.ResponseMetadata; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class CanvasesAccessDeleteResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; + + private List failedToUpdateChannelIds; + private List failedToUpdateUserIds; + + private ResponseMetadata responseMetadata; +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/canvases/access/CanvasesAccessSetResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/canvases/access/CanvasesAccessSetResponse.java new file mode 100644 index 000000000..db508436e --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/canvases/access/CanvasesAccessSetResponse.java @@ -0,0 +1,25 @@ +package com.slack.api.methods.response.canvases.access; + +import com.slack.api.methods.SlackApiTextResponse; +import com.slack.api.model.ResponseMetadata; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class CanvasesAccessSetResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; + + private List failedToUpdateChannelIds; + private List failedToUpdateUserIds; + + private ResponseMetadata responseMetadata; + +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/canvases/sections/CanvasesSectionsLookupResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/canvases/sections/CanvasesSectionsLookupResponse.java new file mode 100644 index 000000000..0cc2cae8f --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/canvases/sections/CanvasesSectionsLookupResponse.java @@ -0,0 +1,25 @@ +package com.slack.api.methods.response.canvases.sections; + +import com.slack.api.methods.SlackApiTextResponse; +import com.slack.api.model.ResponseMetadata; +import com.slack.api.model.canvas.CanvasDocumentSection; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class CanvasesSectionsLookupResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; + + private List sections; + + private ResponseMetadata responseMetadata; + +} \ No newline at end of file diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/conversations/canvases/ConversationsCanvasesCreateResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/conversations/canvases/ConversationsCanvasesCreateResponse.java new file mode 100644 index 000000000..885e15f8d --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/conversations/canvases/ConversationsCanvasesCreateResponse.java @@ -0,0 +1,23 @@ +package com.slack.api.methods.response.conversations.canvases; + +import com.slack.api.methods.SlackApiTextResponse; +import com.slack.api.model.ResponseMetadata; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class ConversationsCanvasesCreateResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; + + private String canvasId; + + private ResponseMetadata responseMetadata; +} diff --git a/slack-api-client/src/main/java/com/slack/api/methods/response/users/discoverable_contacts/UsersDiscoverableContactsLookupResponse.java b/slack-api-client/src/main/java/com/slack/api/methods/response/users/discoverable_contacts/UsersDiscoverableContactsLookupResponse.java new file mode 100644 index 000000000..c2edf39a6 --- /dev/null +++ b/slack-api-client/src/main/java/com/slack/api/methods/response/users/discoverable_contacts/UsersDiscoverableContactsLookupResponse.java @@ -0,0 +1,30 @@ +package com.slack.api.methods.response.users.discoverable_contacts; + +import com.google.gson.annotations.SerializedName; +import com.slack.api.methods.SlackApiTextResponse; +import com.slack.api.model.ResponseMetadata; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class UsersDiscoverableContactsLookupResponse implements SlackApiTextResponse { + + private boolean ok; + private String warning; + private String error; + private String needed; + private String provided; + private transient Map> httpResponseHeaders; + + private UserContact user; + + private ResponseMetadata responseMetadata; + + @Data + public static class UserContact { + @SerializedName("is_discoverable") + private boolean discoverable; + } +} diff --git a/slack-api-client/src/test/java/test_locally/api/MethodsTest.java b/slack-api-client/src/test/java/test_locally/api/MethodsTest.java index 4998a706a..9090f53ac 100644 --- a/slack-api-client/src/test/java/test_locally/api/MethodsTest.java +++ b/slack-api-client/src/test/java/test_locally/api/MethodsTest.java @@ -19,8 +19,8 @@ public class MethodsTest { public void verifyTheCoverage() { // https://api.slack.com/methods // var methodNames = [].slice.call(document.getElementsByClassName('apiReferenceFilterableList__listItemLink')).map(e => e.href.replace("https://api.slack.com/methods/", ""));console.log(methodNames.toString());console.log(methodNames.length); - // 276 endpoints as of March 18, 2024 - String methods = "admin.analytics.getFile,admin.apps.activities.list,admin.apps.approve,admin.apps.clearResolution,admin.apps.restrict,admin.apps.uninstall,admin.apps.approved.list,admin.apps.config.lookup,admin.apps.config.set,admin.apps.requests.cancel,admin.apps.requests.list,admin.apps.restricted.list,admin.audit.anomaly.allow.getItem,admin.audit.anomaly.allow.updateItem,admin.auth.policy.assignEntities,admin.auth.policy.getEntities,admin.auth.policy.removeEntities,admin.barriers.create,admin.barriers.delete,admin.barriers.list,admin.barriers.update,admin.conversations.archive,admin.conversations.bulkArchive,admin.conversations.bulkDelete,admin.conversations.bulkMove,admin.conversations.convertToPrivate,admin.conversations.convertToPublic,admin.conversations.create,admin.conversations.delete,admin.conversations.disconnectShared,admin.conversations.getConversationPrefs,admin.conversations.getCustomRetention,admin.conversations.getTeams,admin.conversations.invite,admin.conversations.lookup,admin.conversations.removeCustomRetention,admin.conversations.rename,admin.conversations.search,admin.conversations.setConversationPrefs,admin.conversations.setCustomRetention,admin.conversations.setTeams,admin.conversations.unarchive,admin.conversations.ekm.listOriginalConnectedChannelInfo,admin.conversations.restrictAccess.addGroup,admin.conversations.restrictAccess.listGroups,admin.conversations.restrictAccess.removeGroup,admin.emoji.add,admin.emoji.addAlias,admin.emoji.list,admin.emoji.remove,admin.emoji.rename,admin.functions.list,admin.functions.permissions.lookup,admin.functions.permissions.set,admin.inviteRequests.approve,admin.inviteRequests.deny,admin.inviteRequests.list,admin.inviteRequests.approved.list,admin.inviteRequests.denied.list,admin.roles.addAssignments,admin.roles.listAssignments,admin.roles.removeAssignments,admin.teams.admins.list,admin.teams.create,admin.teams.list,admin.teams.owners.list,admin.teams.settings.info,admin.teams.settings.setDefaultChannels,admin.teams.settings.setDescription,admin.teams.settings.setDiscoverability,admin.teams.settings.setIcon,admin.teams.settings.setName,admin.usergroups.addChannels,admin.usergroups.addTeams,admin.usergroups.listChannels,admin.usergroups.removeChannels,admin.users.assign,admin.users.invite,admin.users.list,admin.users.remove,admin.users.setAdmin,admin.users.setExpiration,admin.users.setOwner,admin.users.setRegular,admin.users.session.clearSettings,admin.users.session.getSettings,admin.users.session.invalidate,admin.users.session.list,admin.users.session.reset,admin.users.session.resetBulk,admin.users.session.setSettings,admin.users.unsupportedVersions.export,admin.workflows.collaborators.add,admin.workflows.collaborators.remove,admin.workflows.permissions.lookup,admin.workflows.search,admin.workflows.unpublish,admin.workflows.triggers.types.permissions.lookup,admin.workflows.triggers.types.permissions.set,api.test,apps.activities.list,apps.auth.external.delete,apps.auth.external.get,apps.connections.open,apps.datastore.bulkDelete,apps.datastore.bulkGet,apps.datastore.bulkPut,apps.datastore.count,apps.datastore.delete,apps.datastore.get,apps.datastore.put,apps.datastore.query,apps.datastore.update,apps.event.authorizations.list,apps.manifest.create,apps.manifest.delete,apps.manifest.export,apps.manifest.update,apps.manifest.validate,apps.uninstall,auth.revoke,auth.test,auth.teams.list,bookmarks.add,bookmarks.edit,bookmarks.list,bookmarks.remove,bots.info,calls.add,calls.end,calls.info,calls.update,calls.participants.add,calls.participants.remove,chat.delete,chat.deleteScheduledMessage,chat.getPermalink,chat.meMessage,chat.postEphemeral,chat.postMessage,chat.scheduleMessage,chat.unfurl,chat.update,chat.scheduledMessages.list,conversations.acceptSharedInvite,conversations.approveSharedInvite,conversations.archive,conversations.close,conversations.create,conversations.declineSharedInvite,conversations.history,conversations.info,conversations.invite,conversations.inviteShared,conversations.join,conversations.kick,conversations.leave,conversations.list,conversations.listConnectInvites,conversations.mark,conversations.members,conversations.open,conversations.rename,conversations.replies,conversations.setPurpose,conversations.setTopic,conversations.unarchive,dialog.open,dnd.endDnd,dnd.endSnooze,dnd.info,dnd.setSnooze,dnd.teamInfo,emoji.list,files.comments.delete,files.completeUploadExternal,files.delete,files.getUploadURLExternal,files.info,files.list,files.revokePublicURL,files.sharedPublicURL,files.upload,files.remote.add,files.remote.info,files.remote.list,files.remote.remove,files.remote.share,files.remote.update,functions.completeError,functions.completeSuccess,functions.distributions.permissions.add,functions.distributions.permissions.list,functions.distributions.permissions.remove,functions.distributions.permissions.set,functions.workflows.steps.list,functions.workflows.steps.responses.export,migration.exchange,oauth.access,oauth.v2.access,oauth.v2.exchange,openid.connect.token,openid.connect.userInfo,pins.add,pins.list,pins.remove,reactions.add,reactions.get,reactions.list,reactions.remove,reminders.add,reminders.complete,reminders.delete,reminders.info,reminders.list,rtm.connect,rtm.start,search.all,search.files,search.messages,stars.add,stars.list,stars.remove,team.accessLogs,team.billableInfo,team.info,team.integrationLogs,team.billing.info,team.preferences.list,team.profile.get,tooling.tokens.rotate,usergroups.create,usergroups.disable,usergroups.enable,usergroups.list,usergroups.update,usergroups.users.list,usergroups.users.update,users.conversations,users.deletePhoto,users.getPresence,users.identity,users.info,users.list,users.lookupByEmail,users.setActive,users.setPhoto,users.setPresence,users.profile.get,users.profile.set,views.open,views.publish,views.push,views.update,workflows.stepCompleted,workflows.stepFailed,workflows.updateStep,workflows.triggers.permissions.add,workflows.triggers.permissions.list,workflows.triggers.permissions.remove,workflows.triggers.permissions.set,channels.create,channels.info,channels.invite,channels.mark,groups.create,groups.info,groups.invite,groups.mark,groups.open,im.list,im.mark,im.open,mpim.list,mpim.mark,mpim.open"; + // 284 endpoints as of June 12, 2024 + String methods = "admin.analytics.getFile,admin.apps.activities.list,admin.apps.approve,admin.apps.clearResolution,admin.apps.restrict,admin.apps.uninstall,admin.apps.approved.list,admin.apps.config.lookup,admin.apps.config.set,admin.apps.requests.cancel,admin.apps.requests.list,admin.apps.restricted.list,admin.audit.anomaly.allow.getItem,admin.audit.anomaly.allow.updateItem,admin.auth.policy.assignEntities,admin.auth.policy.getEntities,admin.auth.policy.removeEntities,admin.barriers.create,admin.barriers.delete,admin.barriers.list,admin.barriers.update,admin.conversations.archive,admin.conversations.bulkArchive,admin.conversations.bulkDelete,admin.conversations.bulkMove,admin.conversations.convertToPrivate,admin.conversations.convertToPublic,admin.conversations.create,admin.conversations.delete,admin.conversations.disconnectShared,admin.conversations.getConversationPrefs,admin.conversations.getCustomRetention,admin.conversations.getTeams,admin.conversations.invite,admin.conversations.lookup,admin.conversations.removeCustomRetention,admin.conversations.rename,admin.conversations.search,admin.conversations.setConversationPrefs,admin.conversations.setCustomRetention,admin.conversations.setTeams,admin.conversations.unarchive,admin.conversations.ekm.listOriginalConnectedChannelInfo,admin.conversations.restrictAccess.addGroup,admin.conversations.restrictAccess.listGroups,admin.conversations.restrictAccess.removeGroup,admin.emoji.add,admin.emoji.addAlias,admin.emoji.list,admin.emoji.remove,admin.emoji.rename,admin.functions.list,admin.functions.permissions.lookup,admin.functions.permissions.set,admin.inviteRequests.approve,admin.inviteRequests.deny,admin.inviteRequests.list,admin.inviteRequests.approved.list,admin.inviteRequests.denied.list,admin.roles.addAssignments,admin.roles.listAssignments,admin.roles.removeAssignments,admin.teams.admins.list,admin.teams.create,admin.teams.list,admin.teams.owners.list,admin.teams.settings.info,admin.teams.settings.setDefaultChannels,admin.teams.settings.setDescription,admin.teams.settings.setDiscoverability,admin.teams.settings.setIcon,admin.teams.settings.setName,admin.usergroups.addChannels,admin.usergroups.addTeams,admin.usergroups.listChannels,admin.usergroups.removeChannels,admin.users.assign,admin.users.invite,admin.users.list,admin.users.remove,admin.users.setAdmin,admin.users.setExpiration,admin.users.setOwner,admin.users.setRegular,admin.users.session.clearSettings,admin.users.session.getSettings,admin.users.session.invalidate,admin.users.session.list,admin.users.session.reset,admin.users.session.resetBulk,admin.users.session.setSettings,admin.users.unsupportedVersions.export,admin.workflows.collaborators.add,admin.workflows.collaborators.remove,admin.workflows.permissions.lookup,admin.workflows.search,admin.workflows.unpublish,admin.workflows.triggers.types.permissions.lookup,admin.workflows.triggers.types.permissions.set,api.test,apps.activities.list,apps.auth.external.delete,apps.auth.external.get,apps.connections.open,apps.datastore.bulkDelete,apps.datastore.bulkGet,apps.datastore.bulkPut,apps.datastore.count,apps.datastore.delete,apps.datastore.get,apps.datastore.put,apps.datastore.query,apps.datastore.update,apps.event.authorizations.list,apps.manifest.create,apps.manifest.delete,apps.manifest.export,apps.manifest.update,apps.manifest.validate,apps.uninstall,auth.revoke,auth.test,auth.teams.list,bookmarks.add,bookmarks.edit,bookmarks.list,bookmarks.remove,bots.info,calls.add,calls.end,calls.info,calls.update,calls.participants.add,calls.participants.remove,canvases.access.delete,canvases.access.set,canvases.create,canvases.delete,canvases.edit,canvases.sections.lookup,chat.delete,chat.deleteScheduledMessage,chat.getPermalink,chat.meMessage,chat.postEphemeral,chat.postMessage,chat.scheduleMessage,chat.unfurl,chat.update,chat.scheduledMessages.list,conversations.acceptSharedInvite,conversations.approveSharedInvite,conversations.archive,conversations.close,conversations.create,conversations.declineSharedInvite,conversations.history,conversations.info,conversations.invite,conversations.inviteShared,conversations.join,conversations.kick,conversations.leave,conversations.list,conversations.listConnectInvites,conversations.mark,conversations.members,conversations.open,conversations.rename,conversations.replies,conversations.setPurpose,conversations.setTopic,conversations.unarchive,conversations.canvases.create,dialog.open,dnd.endDnd,dnd.endSnooze,dnd.info,dnd.setSnooze,dnd.teamInfo,emoji.list,files.comments.delete,files.completeUploadExternal,files.delete,files.getUploadURLExternal,files.info,files.list,files.revokePublicURL,files.sharedPublicURL,files.upload,files.remote.add,files.remote.info,files.remote.list,files.remote.remove,files.remote.share,files.remote.update,functions.completeError,functions.completeSuccess,functions.distributions.permissions.add,functions.distributions.permissions.list,functions.distributions.permissions.remove,functions.distributions.permissions.set,functions.workflows.steps.list,functions.workflows.steps.responses.export,migration.exchange,oauth.access,oauth.v2.access,oauth.v2.exchange,openid.connect.token,openid.connect.userInfo,pins.add,pins.list,pins.remove,reactions.add,reactions.get,reactions.list,reactions.remove,reminders.add,reminders.complete,reminders.delete,reminders.info,reminders.list,rtm.connect,rtm.start,search.all,search.files,search.messages,stars.add,stars.list,stars.remove,team.accessLogs,team.billableInfo,team.info,team.integrationLogs,team.billing.info,team.preferences.list,team.profile.get,tooling.tokens.rotate,usergroups.create,usergroups.disable,usergroups.enable,usergroups.list,usergroups.update,usergroups.users.list,usergroups.users.update,users.conversations,users.deletePhoto,users.getPresence,users.identity,users.info,users.list,users.lookupByEmail,users.setActive,users.setPhoto,users.setPresence,users.discoverableContacts.lookup,users.profile.get,users.profile.set,views.open,views.publish,views.push,views.update,workflows.stepCompleted,workflows.stepFailed,workflows.updateStep,workflows.triggers.permissions.add,workflows.triggers.permissions.list,workflows.triggers.permissions.remove,workflows.triggers.permissions.set,channels.create,channels.info,channels.invite,channels.mark,groups.create,groups.info,groups.invite,groups.mark,groups.open,im.list,im.mark,im.open,mpim.list,mpim.mark,mpim.open"; final List existingMethods = new ArrayList<>(); for (Field f : Methods.class.getDeclaredFields()) { int modifiers = f.getModifiers(); diff --git a/slack-api-client/src/test/java/test_locally/api/methods/CanvasesTest.java b/slack-api-client/src/test/java/test_locally/api/methods/CanvasesTest.java new file mode 100644 index 000000000..d179b71fa --- /dev/null +++ b/slack-api-client/src/test/java/test_locally/api/methods/CanvasesTest.java @@ -0,0 +1,84 @@ +package test_locally.api.methods; + +import com.slack.api.Slack; +import com.slack.api.SlackConfig; +import com.slack.api.methods.request.canvases.sections.CanvasesSectionsLookupRequest; +import com.slack.api.model.canvas.CanvasDocumentChange; +import com.slack.api.model.canvas.CanvasDocumentContent; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import util.MockSlackApiServer; + +import java.util.Arrays; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; +import static util.MockSlackApi.ValidToken; + +public class CanvasesTest { + + MockSlackApiServer server = new MockSlackApiServer(); + SlackConfig config = new SlackConfig(); + Slack slack = Slack.getInstance(config); + + @Before + public void setup() throws Exception { + server.start(); + config.setMethodsEndpointUrlPrefix(server.getMethodsEndpointPrefix()); + } + + @After + public void tearDown() throws Exception { + server.stop(); + } + + @Test + public void canvases() throws Exception { + assertThat(slack.methods(ValidToken).canvasesCreate(r -> r.title("test").documentContent(new CanvasDocumentContent())).isOk(), is(true)); + assertThat(slack.methods(ValidToken).canvasesCreate(r -> r.title("test").markdown(">hey")).isOk(), is(true)); + assertThat(slack.methods(ValidToken).canvasesEdit(r -> r.canvasId("F1111").changes(Arrays.asList( + CanvasDocumentChange.builder().documentContent(new CanvasDocumentContent()).build() + ))).isOk(), is(true)); + assertThat(slack.methods(ValidToken).canvasesDelete(r -> r.canvasId("F1111")).isOk(), is(true)); + assertThat(slack.methods(ValidToken).canvasesAccessSet(r -> r + .canvasId("F1111") + .channelIds(Arrays.asList("C123")) + .userIds(Arrays.asList("U123")) + ).isOk(), is(true)); + assertThat(slack.methods(ValidToken).canvasesAccessDelete(r -> r + .canvasId("F1111") + .channelIds(Arrays.asList("C123")) + .userIds(Arrays.asList("U123")) + ).isOk(), is(true)); + assertThat(slack.methods(ValidToken).canvasesSectionsLookup(r -> r + .canvasId("F1111") + .criteria(CanvasesSectionsLookupRequest.Criteria.builder().sectionTypes(Arrays.asList("any_header")).containsText("foo").build()) + ).isOk(), is(true)); + } + + @Test + public void canvases_async() throws Exception { + assertThat(slack.methodsAsync(ValidToken).canvasesCreate(r -> r.title("test").documentContent(new CanvasDocumentContent())).get().isOk(), is(true)); + assertThat(slack.methodsAsync(ValidToken).canvasesCreate(r -> r.title("test").markdown(">hey")).get().isOk(), is(true)); + assertThat(slack.methodsAsync(ValidToken).canvasesEdit(r -> r.canvasId("F1111").changes(Arrays.asList( + CanvasDocumentChange.builder().documentContent(new CanvasDocumentContent()).build() + ))).get().isOk(), is(true)); + assertThat(slack.methodsAsync(ValidToken).canvasesDelete(r -> r.canvasId("F1111")).get().isOk(), is(true)); + assertThat(slack.methodsAsync(ValidToken).canvasesAccessSet(r -> r + .canvasId("F1111") + .channelIds(Arrays.asList("C123")) + .userIds(Arrays.asList("U123")) + ).get().isOk(), is(true)); + assertThat(slack.methodsAsync(ValidToken).canvasesAccessDelete(r -> r + .canvasId("F1111") + .channelIds(Arrays.asList("C123")) + .userIds(Arrays.asList("U123")) + ).get().isOk(), is(true)); + assertThat(slack.methodsAsync(ValidToken).canvasesSectionsLookup(r -> r + .canvasId("F1111") + .criteria(CanvasesSectionsLookupRequest.Criteria.builder().sectionTypes(Arrays.asList("any_header")).containsText("foo").build()) + ).get().isOk(), is(true)); + } + +} diff --git a/slack-api-client/src/test/java/test_locally/api/methods/ConversationsTest.java b/slack-api-client/src/test/java/test_locally/api/methods/ConversationsTest.java index 8c2df406e..575afb46b 100644 --- a/slack-api-client/src/test/java/test_locally/api/methods/ConversationsTest.java +++ b/slack-api-client/src/test/java/test_locally/api/methods/ConversationsTest.java @@ -6,6 +6,7 @@ import com.slack.api.methods.MethodsConfig; import com.slack.api.methods.response.conversations.ConversationsHistoryResponse; import com.slack.api.model.ConversationType; +import com.slack.api.model.canvas.CanvasDocumentContent; import com.slack.api.scim.metrics.MemoryMetricsDatastore; import com.slack.api.util.json.GsonFactory; import org.junit.After; @@ -89,6 +90,10 @@ public void test() throws Exception { .isOk(), is(true)); assertThat(slack.methods(ValidToken).conversationsListConnectInvites(r -> r) .isOk(), is(true)); + assertThat(slack.methods(ValidToken).conversationsCanvasesCreate(r -> r.documentContent(new CanvasDocumentContent())) + .isOk(), is(true)); + assertThat(slack.methods(ValidToken).conversationsCanvasesCreate(r -> r.markdown("hey")) + .isOk(), is(true)); } @Test @@ -140,9 +145,12 @@ public void test_async() throws Exception { .get().isOk(), is(true)); assertThat(slack.methodsAsync(ValidToken).conversationsListConnectInvites(r -> r) .get().isOk(), is(true)); + assertThat(slack.methodsAsync(ValidToken).conversationsCanvasesCreate(r -> r.documentContent(new CanvasDocumentContent())) + .get().isOk(), is(true)); + assertThat(slack.methodsAsync(ValidToken).conversationsCanvasesCreate(r -> r.markdown("hey")) + .get().isOk(), is(true)); } - // https://github.com/slackapi/java-slack-sdk/issues/1207 @Test public void issue_1207() { diff --git a/slack-api-client/src/test/java/test_locally/api/methods/FieldValidation_a_to_c_Test.java b/slack-api-client/src/test/java/test_locally/api/methods/FieldValidation_a_to_c_Test.java index 7ab0f5242..a0e84c2a6 100644 --- a/slack-api-client/src/test/java/test_locally/api/methods/FieldValidation_a_to_c_Test.java +++ b/slack-api-client/src/test/java/test_locally/api/methods/FieldValidation_a_to_c_Test.java @@ -21,6 +21,7 @@ import com.slack.api.model.Message; import com.slack.api.util.json.GsonFactory; import lombok.extern.slf4j.Slf4j; +import org.junit.Ignore; import org.junit.Test; import util.FileReader; @@ -29,6 +30,8 @@ import static test_locally.api.util.FieldVerification.verifyIfAllGettersReturnNonNull; import static test_locally.api.util.FieldVerification.verifyIfAllGettersReturnNonNullRecursively; +// disabled these tests because it no longer brings lots of value; that said, if you need these again, you can turn them on again +@Ignore @Slf4j public class FieldValidation_a_to_c_Test { diff --git a/slack-api-client/src/test/java/test_locally/api/methods/FieldValidation_d_to_m_Test.java b/slack-api-client/src/test/java/test_locally/api/methods/FieldValidation_d_to_m_Test.java index 8b6797605..0c3edc591 100644 --- a/slack-api-client/src/test/java/test_locally/api/methods/FieldValidation_d_to_m_Test.java +++ b/slack-api-client/src/test/java/test_locally/api/methods/FieldValidation_d_to_m_Test.java @@ -12,6 +12,7 @@ import com.slack.api.model.Group; import com.slack.api.util.json.GsonFactory; import lombok.extern.slf4j.Slf4j; +import org.junit.Ignore; import org.junit.Test; import util.FileReader; @@ -20,6 +21,8 @@ import static test_locally.api.util.FieldVerification.verifyIfAllGettersReturnNonNull; import static test_locally.api.util.FieldVerification.verifyIfAllGettersReturnNonNullRecursively; +// disabled these tests because it no longer brings lots of value; that said, if you need these again, you can turn them on again +@Ignore @Slf4j public class FieldValidation_d_to_m_Test { diff --git a/slack-api-client/src/test/java/test_locally/api/methods/FieldValidation_o_to_z_Test.java b/slack-api-client/src/test/java/test_locally/api/methods/FieldValidation_o_to_z_Test.java index 20ebbf9f9..cd153104c 100644 --- a/slack-api-client/src/test/java/test_locally/api/methods/FieldValidation_o_to_z_Test.java +++ b/slack-api-client/src/test/java/test_locally/api/methods/FieldValidation_o_to_z_Test.java @@ -37,6 +37,7 @@ import com.slack.api.model.Usergroup; import com.slack.api.util.json.GsonFactory; import lombok.extern.slf4j.Slf4j; +import org.junit.Ignore; import org.junit.Test; import util.FileReader; @@ -45,6 +46,8 @@ import static test_locally.api.util.FieldVerification.verifyIfAllGettersReturnNonNull; import static test_locally.api.util.FieldVerification.verifyIfAllGettersReturnNonNullRecursively; +// disabled these tests because it no longer brings lots of value; that said, if you need these again, you can turn them on again +@Ignore @Slf4j public class FieldValidation_o_to_z_Test { diff --git a/slack-api-client/src/test/java/test_locally/api/methods/UsersTest.java b/slack-api-client/src/test/java/test_locally/api/methods/UsersTest.java index 2105dfcc8..aea378dd1 100644 --- a/slack-api-client/src/test/java/test_locally/api/methods/UsersTest.java +++ b/slack-api-client/src/test/java/test_locally/api/methods/UsersTest.java @@ -55,6 +55,8 @@ public void test() throws Exception { .isOk(), is(true)); assertThat(slack.methods(ValidToken).usersProfileSet(r -> r.user("U123").name("name").value("value")) .isOk(), is(true)); + assertThat(slack.methods(ValidToken).usersDiscoverableContactsLookup(r -> r.email("foo@example.com")) + .isOk(), is(true)); } @Test @@ -83,6 +85,8 @@ public void test_async() throws Exception { .get().isOk(), is(true)); assertThat(slack.methodsAsync(ValidToken).usersProfileSet(r -> r.user("U123").name("name").value("value")) .get().isOk(), is(true)); + assertThat(slack.methodsAsync(ValidToken).usersDiscoverableContactsLookup(r -> r.email("foo@example.com")) + .get().isOk(), is(true)); } // NOTE: we can safely remove this tests since v1.1 diff --git a/slack-api-client/src/test/java/test_with_remote_apis/methods/canvases_Test.java b/slack-api-client/src/test/java/test_with_remote_apis/methods/canvases_Test.java new file mode 100644 index 000000000..5e6b28b0c --- /dev/null +++ b/slack-api-client/src/test/java/test_with_remote_apis/methods/canvases_Test.java @@ -0,0 +1,163 @@ +package test_with_remote_apis.methods; + +import com.slack.api.Slack; +import com.slack.api.methods.MethodsClient; +import com.slack.api.methods.request.canvases.sections.CanvasesSectionsLookupRequest; +import com.slack.api.methods.response.canvases.CanvasesCreateResponse; +import com.slack.api.methods.response.canvases.CanvasesDeleteResponse; +import com.slack.api.methods.response.canvases.CanvasesEditResponse; +import com.slack.api.methods.response.canvases.access.CanvasesAccessDeleteResponse; +import com.slack.api.methods.response.canvases.access.CanvasesAccessSetResponse; +import com.slack.api.methods.response.canvases.sections.CanvasesSectionsLookupResponse; +import com.slack.api.methods.response.chat.ChatPostMessageResponse; +import com.slack.api.methods.response.conversations.ConversationsCreateResponse; +import com.slack.api.methods.response.conversations.canvases.ConversationsCanvasesCreateResponse; +import com.slack.api.methods.response.files.FilesInfoResponse; +import com.slack.api.model.canvas.*; +import config.Constants; +import config.SlackTestConfig; +import lombok.extern.slf4j.Slf4j; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.util.Arrays; +import java.util.List; + +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.nullValue; +import static org.hamcrest.MatcherAssert.assertThat; + +@Slf4j +public class canvases_Test { + + String botToken = System.getenv(Constants.SLACK_SDK_TEST_BOT_TOKEN); + + static SlackTestConfig testConfig = SlackTestConfig.getInstance(); + static Slack slack = Slack.getInstance(testConfig.getConfig()); + + @BeforeClass + public static void setUp() throws Exception { + SlackTestConfig.initializeRawJSONDataFiles("canvases.*"); + } + + @AfterClass + public static void tearDown() throws InterruptedException { + SlackTestConfig.awaitCompletion(testConfig); + } + + @Test + public void channel_canvases() throws Exception { + MethodsClient client = slack.methods(botToken); + + ConversationsCreateResponse newChannel = client.conversationsCreate(r -> r.name("test-" + System.currentTimeMillis())); + assertThat(newChannel.getError(), is(nullValue())); + String channelId = newChannel.getChannel().getId(); + + Thread.sleep(500L); // To avoid occasional 500 errors + + ConversationsCanvasesCreateResponse creation = client.conversationsCanvasesCreate(r -> r + .channelId(channelId) + .documentContent(CanvasDocumentContent.builder() + .markdown("# Channel canvas document\n" + + "\n" + + "---\n" + + "## Before\n" + + "**foo** _bar_\n" + + "hey hey\n" + + "\n") + .build()) + ); + assertThat(creation.getError(), is(nullValue())); + + String canvasId = creation.getCanvasId(); + List userIds = Arrays.asList(client.authTest(r -> r).getUserId()); + FilesInfoResponse details = verifyCanvasOps(client, canvasId, channelId, userIds); + ChatPostMessageResponse message = client.chatPostMessage(r -> r + .channel(channelId) + .text("Here you are: " + details.getFile().getPermalink()) + ); + assertThat(message.getError(), is(nullValue())); + } + + @Test + public void standalone_canvases() throws Exception { + MethodsClient client = slack.methods(botToken); + CanvasesCreateResponse creation = client.canvasesCreate(r -> r + .title("My canvas " + System.currentTimeMillis()) + .documentContent(CanvasDocumentContent.builder() + .markdown("# Standalone canvas document\n" + + "\n" + + "---\n" + + "## Before\n" + + "**foo** _bar_\n" + + "hey hey\n" + + "\n") + .build()) + ); + assertThat(creation.getError(), is(nullValue())); + + String canvasId = creation.getCanvasId(); + try { + List userIds = Arrays.asList(client.authTest(r -> r).getUserId()); + verifyCanvasOps(client, canvasId, null, userIds); + + CanvasesAccessSetResponse set = client.canvasesAccessSet(r -> r + .canvasId(canvasId) + .accessLevel(CanvasDocumentAccessLevel.WRITE) + .userIds(userIds) + ); + assertThat(set.getError(), is(nullValue())); + CanvasesAccessDeleteResponse delete = client.canvasesAccessDelete(r -> r + .canvasId(canvasId) + .userIds(userIds) + ); + assertThat(delete.getError(), is(nullValue())); + + } finally { + CanvasesDeleteResponse deletion = client.canvasesDelete(r -> r.canvasId(canvasId)); + assertThat(deletion.getError(), is(nullValue())); + } + } + + FilesInfoResponse verifyCanvasOps(MethodsClient client, String canvasId, String channelId, List userIds) throws Exception { + CanvasesSectionsLookupResponse lookupResult = client.canvasesSectionsLookup(r -> r + .canvasId(canvasId) + .criteria(CanvasesSectionsLookupRequest.Criteria.builder() + .sectionTypes(Arrays.asList(CanvasDocumentSectionType.H2)) + .containsText("Before") + .build() + ) + ); + assertThat(lookupResult.getError(), is(nullValue())); + + String sectionId = lookupResult.getSections().get(0).getId(); + CanvasesEditResponse edit = client.canvasesEdit(r -> r + .canvasId(canvasId) + .changes(Arrays.asList(CanvasDocumentChange.builder() + .sectionId(sectionId) + .operation(CanvasEditOperation.REPLACE) + .documentContent(CanvasDocumentContent.builder().markdown("## After").build()) + .build() + )) + ); + assertThat(edit.getError(), is(nullValue())); + + FilesInfoResponse details = client.filesInfo(r -> r.file(canvasId)); + assertThat(details.getError(), is(nullValue())); + return details; + } + + @Test + public void standalone_canvases_error() throws Exception { + MethodsClient client = slack.methods(botToken); + CanvasesCreateResponse creation = client.canvasesCreate(r -> r + .title("test") + .documentContent(CanvasDocumentContent.builder() + .markdown("test") + .type("invalid") + .build()) + ); + assertThat(creation.getError(), is("invalid_arguments")); + } +} diff --git a/slack-api-client/src/test/java/test_with_remote_apis/methods/users_Test.java b/slack-api-client/src/test/java/test_with_remote_apis/methods/users_Test.java index 658d8bc39..075a935e1 100644 --- a/slack-api-client/src/test/java/test_with_remote_apis/methods/users_Test.java +++ b/slack-api-client/src/test/java/test_with_remote_apis/methods/users_Test.java @@ -7,6 +7,7 @@ import com.slack.api.methods.request.users.UsersSetActiveRequest; import com.slack.api.methods.response.auth.AuthTestResponse; import com.slack.api.methods.response.users.*; +import com.slack.api.methods.response.users.discoverable_contacts.UsersDiscoverableContactsLookupResponse; import com.slack.api.model.ConversationType; import com.slack.api.model.User; import config.Constants; @@ -37,6 +38,7 @@ public class users_Test { static Slack slack = Slack.getInstance(testConfig.getConfig()); String botToken = System.getenv(Constants.SLACK_SDK_TEST_BOT_TOKEN); + String orgBotToken = System.getenv(Constants.SLACK_SDK_TEST_GRID_ORG_LEVEL_APP_BOT_TOKEN); String userToken = System.getenv(Constants.SLACK_SDK_TEST_USER_TOKEN); String enterpriseGridTeamAdminUserToken = System.getenv( Constants.SLACK_SDK_TEST_GRID_WORKSPACE_ADMIN_USER_TOKEN); @@ -442,6 +444,17 @@ public void issue_768_strangerLookup() throws Exception { assertNull(user.getError()); } + @Test + public void discoverableContacts() throws Exception { + String userId = System.getenv(SLACK_SDK_TEST_GRID_SHARED_CHANNEL_OTHER_ORG_USER_ID); + UsersInfoResponse user = slack.methods(botToken).usersInfo(r -> r.user(userId)); + String email = user.getUser().getProfile().getEmail(); + UsersDiscoverableContactsLookupResponse response = slack.methods(orgBotToken) + .usersDiscoverableContactsLookup(r -> r.email(email)); + // TODO: valid tests + assertThat(response.getError(), is("not_allowed")); + } + @Test public void scanAllUsers() throws Exception { // Using async client to avoid an exception due to rate limited errors diff --git a/slack-api-model-kotlin-extension/pom.xml b/slack-api-model-kotlin-extension/pom.xml index 60d7a9c7c..3a77dcbe5 100644 --- a/slack-api-model-kotlin-extension/pom.xml +++ b/slack-api-model-kotlin-extension/pom.xml @@ -6,11 +6,11 @@ com.slack.api slack-sdk-parent - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT slack-api-model-kotlin-extension - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT jar diff --git a/slack-api-model/pom.xml b/slack-api-model/pom.xml index a16b681b0..85f39e941 100644 --- a/slack-api-model/pom.xml +++ b/slack-api-model/pom.xml @@ -6,11 +6,11 @@ com.slack.api slack-sdk-parent - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT slack-api-model - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT jar diff --git a/slack-api-model/src/main/java/com/slack/api/meta/SlackApiModelLibraryVersion.java b/slack-api-model/src/main/java/com/slack/api/meta/SlackApiModelLibraryVersion.java index e488f71a1..f2bd62973 100644 --- a/slack-api-model/src/main/java/com/slack/api/meta/SlackApiModelLibraryVersion.java +++ b/slack-api-model/src/main/java/com/slack/api/meta/SlackApiModelLibraryVersion.java @@ -5,7 +5,7 @@ private SlackApiModelLibraryVersion() { } public static final String get() { - return "1.39.4-SNAPSHOT"; + return "1.40.1-SNAPSHOT"; } } diff --git a/slack-api-model/src/main/java/com/slack/api/model/File.java b/slack-api-model/src/main/java/com/slack/api/model/File.java index 595226b6d..bce71b1d1 100644 --- a/slack-api-model/src/main/java/com/slack/api/model/File.java +++ b/slack-api-model/src/main/java/com/slack/api/model/File.java @@ -320,6 +320,7 @@ public static class Saved { private Long lastRead; private List titleBlocks; private Integer privateChannelsWithFileAccessCount; + private Integer privateFileWithAccessCount; private List dmMpdmUsersWithFileAccess; private String orgOrWorkspaceAccess; diff --git a/slack-api-model/src/main/java/com/slack/api/model/canvas/CanvasDocumentAccessLevel.java b/slack-api-model/src/main/java/com/slack/api/model/canvas/CanvasDocumentAccessLevel.java new file mode 100644 index 000000000..1e39c92ae --- /dev/null +++ b/slack-api-model/src/main/java/com/slack/api/model/canvas/CanvasDocumentAccessLevel.java @@ -0,0 +1,6 @@ +package com.slack.api.model.canvas; + +public class CanvasDocumentAccessLevel { + public static final String READ = "read"; + public static final String WRITE = "write"; +} diff --git a/slack-api-model/src/main/java/com/slack/api/model/canvas/CanvasDocumentChange.java b/slack-api-model/src/main/java/com/slack/api/model/canvas/CanvasDocumentChange.java new file mode 100644 index 000000000..84ab43215 --- /dev/null +++ b/slack-api-model/src/main/java/com/slack/api/model/canvas/CanvasDocumentChange.java @@ -0,0 +1,16 @@ +package com.slack.api.model.canvas; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class CanvasDocumentChange { + private String operation; // "insert_before" etc. see CanvasEditOperation + private String sectionId; // "temp:C:AAAAAAAAAAAAAAAAAAAAAAAAAAAA" etc. + private CanvasDocumentContent documentContent; +} diff --git a/slack-api-model/src/main/java/com/slack/api/model/canvas/CanvasDocumentContent.java b/slack-api-model/src/main/java/com/slack/api/model/canvas/CanvasDocumentContent.java new file mode 100644 index 000000000..e6043761e --- /dev/null +++ b/slack-api-model/src/main/java/com/slack/api/model/canvas/CanvasDocumentContent.java @@ -0,0 +1,16 @@ +package com.slack.api.model.canvas; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class CanvasDocumentContent { + @Builder.Default + private String type = "markdown"; + private String markdown; +} diff --git a/slack-api-model/src/main/java/com/slack/api/model/canvas/CanvasDocumentSection.java b/slack-api-model/src/main/java/com/slack/api/model/canvas/CanvasDocumentSection.java new file mode 100644 index 000000000..5af4e617d --- /dev/null +++ b/slack-api-model/src/main/java/com/slack/api/model/canvas/CanvasDocumentSection.java @@ -0,0 +1,15 @@ +package com.slack.api.model.canvas; + + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class CanvasDocumentSection { + private String id; +} diff --git a/slack-api-model/src/main/java/com/slack/api/model/canvas/CanvasDocumentSectionType.java b/slack-api-model/src/main/java/com/slack/api/model/canvas/CanvasDocumentSectionType.java new file mode 100644 index 000000000..993d47868 --- /dev/null +++ b/slack-api-model/src/main/java/com/slack/api/model/canvas/CanvasDocumentSectionType.java @@ -0,0 +1,9 @@ +package com.slack.api.model.canvas; + + +public class CanvasDocumentSectionType { + public static final String H1 = "h1"; + public static final String H2 = "h2"; + public static final String H3 = "h3"; + public static final String ANY_HEADER = "any_header"; +} diff --git a/slack-api-model/src/main/java/com/slack/api/model/canvas/CanvasEditOperation.java b/slack-api-model/src/main/java/com/slack/api/model/canvas/CanvasEditOperation.java new file mode 100644 index 000000000..63df99d60 --- /dev/null +++ b/slack-api-model/src/main/java/com/slack/api/model/canvas/CanvasEditOperation.java @@ -0,0 +1,10 @@ +package com.slack.api.model.canvas; + +public class CanvasEditOperation { + public static final String INSERT_AFTER = "insert_after"; + public static final String INSERT_BEFORE = "insert_before"; + public static final String INSERT_AT_START = "insert_at_start"; + public static final String INSERT_AT_END = "insert_at_end"; + public static final String REPLACE = "replace"; + public static final String DELETE = "delete"; +} diff --git a/slack-app-backend/pom.xml b/slack-app-backend/pom.xml index 78ff34c78..18219467a 100644 --- a/slack-app-backend/pom.xml +++ b/slack-app-backend/pom.xml @@ -6,11 +6,11 @@ com.slack.api slack-sdk-parent - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT slack-app-backend - 1.39.4-SNAPSHOT + 1.40.1-SNAPSHOT jar