diff --git a/slack-api-model/src/main/java/com/slack/api/model/event/UserConnectionStatusRequestedEvent.java b/slack-api-model/src/main/java/com/slack/api/model/event/UserConnectionStatusRequestedEvent.java new file mode 100644 index 000000000..34c401136 --- /dev/null +++ b/slack-api-model/src/main/java/com/slack/api/model/event/UserConnectionStatusRequestedEvent.java @@ -0,0 +1,18 @@ +package com.slack.api.model.event; + +import lombok.Data; + +/** + * Slack sends the user_connection_status_requested event when it has no connection status for a user. + * Answer it with the apps.user.connection.update API method. + *
+ * https://docs.slack.dev/reference/events/user_connection_status_requested
+ */
+@Data
+public class UserConnectionStatusRequestedEvent implements Event {
+
+ public static final String TYPE_NAME = "user_connection_status_requested";
+
+ private final String type = TYPE_NAME;
+ private String user;
+}
diff --git a/slack-api-model/src/test/java/test_locally/api/model/event/UserConnectionStatusRequestedEventTest.java b/slack-api-model/src/test/java/test_locally/api/model/event/UserConnectionStatusRequestedEventTest.java
new file mode 100644
index 000000000..3c487fe3c
--- /dev/null
+++ b/slack-api-model/src/test/java/test_locally/api/model/event/UserConnectionStatusRequestedEventTest.java
@@ -0,0 +1,36 @@
+package test_locally.api.model.event;
+
+import com.google.gson.Gson;
+import com.slack.api.model.event.UserConnectionStatusRequestedEvent;
+import org.junit.Test;
+import test_locally.unit.GsonFactory;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+public class UserConnectionStatusRequestedEventTest {
+
+ @Test
+ public void typeName() {
+ assertThat(UserConnectionStatusRequestedEvent.TYPE_NAME, is("user_connection_status_requested"));
+ }
+
+ @Test
+ public void deserialize() {
+ String json = "{\"type\":\"user_connection_status_requested\",\"user\":\"U123ABC456\"}";
+ UserConnectionStatusRequestedEvent event =
+ GsonFactory.createSnakeCase().fromJson(json, UserConnectionStatusRequestedEvent.class);
+ assertThat(event.getType(), is("user_connection_status_requested"));
+ assertThat(event.getUser(), is("U123ABC456"));
+ }
+
+ @Test
+ public void serialize() {
+ Gson gson = GsonFactory.createSnakeCase();
+ UserConnectionStatusRequestedEvent event = new UserConnectionStatusRequestedEvent();
+ event.setUser("U123ABC456");
+ String generatedJson = gson.toJson(event);
+ String expectedJson = "{\"type\":\"user_connection_status_requested\",\"user\":\"U123ABC456\"}";
+ assertThat(generatedJson, is(expectedJson));
+ }
+}
diff --git a/slack-app-backend/src/main/java/com/slack/api/app_backend/events/handler/UserConnectionStatusRequestedHandler.java b/slack-app-backend/src/main/java/com/slack/api/app_backend/events/handler/UserConnectionStatusRequestedHandler.java
new file mode 100644
index 000000000..54792dbba
--- /dev/null
+++ b/slack-app-backend/src/main/java/com/slack/api/app_backend/events/handler/UserConnectionStatusRequestedHandler.java
@@ -0,0 +1,13 @@
+package com.slack.api.app_backend.events.handler;
+
+import com.slack.api.app_backend.events.EventHandler;
+import com.slack.api.app_backend.events.payload.UserConnectionStatusRequestedPayload;
+import com.slack.api.model.event.UserConnectionStatusRequestedEvent;
+
+public abstract class UserConnectionStatusRequestedHandler extends EventHandler