From 5dc6e65e33899e0a277013b258c5180d5986f5c6 Mon Sep 17 00:00:00 2001 From: Rashin Arab <3806658+rasharab@users.noreply.github.com> Date: Tue, 10 Nov 2026 11:03:57 -0700 Subject: [PATCH 1/2] Add is_file to Conversation Slack's conversation object includes is_file, which it sets on the hidden conversation behind a canvas. ChannelCreatedEvent.Channel already maps it, but Conversation (conversations.info / conversations.list) drops it. Co-Authored-By: Claude Opus 5.5 --- json-logs/samples/api/conversations.info.json | 1 + json-logs/samples/api/conversations.list.json | 1 + .../test_locally/api/model/ConversationTest.java | 12 ++++++++++++ .../main/java/com/slack/api/model/Conversation.java | 2 ++ 4 files changed, 16 insertions(+) diff --git a/json-logs/samples/api/conversations.info.json b/json-logs/samples/api/conversations.info.json index 86f951101..4f622a804 100644 --- a/json-logs/samples/api/conversations.info.json +++ b/json-logs/samples/api/conversations.info.json @@ -47,6 +47,7 @@ "is_read_only": false, "is_thread_only": false, "is_non_threadable": false, + "is_file": false, "internal_team_ids": [ "T00000000" ], diff --git a/json-logs/samples/api/conversations.list.json b/json-logs/samples/api/conversations.list.json index 9248fac2f..0eaa6b35d 100644 --- a/json-logs/samples/api/conversations.list.json +++ b/json-logs/samples/api/conversations.list.json @@ -16,6 +16,7 @@ "is_mpim": false, "is_private": false, "is_general": false, + "is_file": false, "unlinked": 12345, "name_normalized": "", "is_shared": false, diff --git a/slack-api-client/src/test/java/test_locally/api/model/ConversationTest.java b/slack-api-client/src/test/java/test_locally/api/model/ConversationTest.java index 2b6ade941..b5bebd52d 100644 --- a/slack-api-client/src/test/java/test_locally/api/model/ConversationTest.java +++ b/slack-api-client/src/test/java/test_locally/api/model/ConversationTest.java @@ -2,8 +2,12 @@ import com.slack.api.methods.response.conversations.ConversationsInfoResponse; import com.slack.api.methods.response.conversations.ConversationsListResponse; +import com.slack.api.util.json.GsonFactory; import org.junit.Test; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.MatcherAssert.assertThat; + public class ConversationTest implements Verifier { @Test @@ -16,4 +20,12 @@ public void parseConversationsListResponse() throws Exception { verifyParsing("conversations.list", ConversationsListResponse.class); } + @Test + public void parseFileConversation() { + String json = "{\"ok\":true,\"channel\":{\"id\":\"C0123456789\",\"is_channel\":true,\"is_private\":true," + + "\"is_file\":true,\"is_thread_only\":true,\"name_normalized\":\"FC:F0123456789:Project notes\"}}"; + ConversationsInfoResponse resp = GsonFactory.createSnakeCase().fromJson(json, ConversationsInfoResponse.class); + assertThat(resp.getChannel().isFile(), is(true)); + } + } diff --git a/slack-api-model/src/main/java/com/slack/api/model/Conversation.java b/slack-api-model/src/main/java/com/slack/api/model/Conversation.java index 0150802c1..965a7db50 100644 --- a/slack-api-model/src/main/java/com/slack/api/model/Conversation.java +++ b/slack-api-model/src/main/java/com/slack/api/model/Conversation.java @@ -82,6 +82,8 @@ public class Conversation { private boolean isThreadOnly; @SerializedName("is_non_threadable") private boolean isNonThreadable; + @SerializedName("is_file") + private boolean isFile; @SerializedName("is_shared") private boolean isShared; @SerializedName("is_ext_shared") From aaff76ed9c17a680bd012be036d240f3b2f4be3c Mon Sep 17 00:00:00 2001 From: Rashin Arab <3806658+rasharab@users.noreply.github.com> Date: Tue, 10 Nov 2026 11:19:21 -0700 Subject: [PATCH 2/2] Re-run CLA check