Skip to content

Commit

Permalink
Fix #1087 Add admin.conversations.bulk{Archive|Delete|Move} API metho…
Browse files Browse the repository at this point in the history
…d support (#1090)

* Fix #1087 Add admin.conversations.bulk{Archive|Delete|Move} API method support

* Add missing outputs

* Add more tests
  • Loading branch information
seratch authored Nov 22, 2022
1 parent b650b80 commit fbdb85c
Show file tree
Hide file tree
Showing 26 changed files with 495 additions and 7 deletions.
20 changes: 20 additions & 0 deletions json-logs/samples/api/admin.conversations.bulkArchive.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"ok": false,
"error": "",
"needed": "",
"provided": "",
"bulk_action_id": "",
"not_added": [
{
"channel_id": "C00000000",
"errors": [
""
]
}
],
"response_metadata": {
"messages": [
""
]
}
}
20 changes: 20 additions & 0 deletions json-logs/samples/api/admin.conversations.bulkDelete.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"ok": false,
"error": "",
"needed": "",
"provided": "",
"bulk_action_id": "",
"not_added": [
{
"channel_id": "",
"errors": [
""
]
}
],
"response_metadata": {
"messages": [
""
]
}
}
20 changes: 20 additions & 0 deletions json-logs/samples/api/admin.conversations.bulkMove.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"ok": false,
"bulk_action_id": "",
"not_added": [
{
"channel_id": "",
"errors": [
""
]
}
],
"error": "",
"needed": "",
"provided": "",
"response_metadata": {
"messages": [
""
]
}
}
7 changes: 6 additions & 1 deletion json-logs/samples/api/admin.conversations.create.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,10 @@
"channel_id": "C00000000",
"error": "",
"needed": "",
"provided": ""
"provided": "",
"response_metadata": {
"messages": [
""
]
}
}
3 changes: 2 additions & 1 deletion json-logs/samples/api/users.list.json
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,8 @@
"is_admin": false,
"is_owner": false,
"teams": [
""
"",
"T00000000"
],
"is_primary_owner": false
},
Expand Down
3 changes: 3 additions & 0 deletions metadata/web-api/rate_limit_tiers.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
"admin.barriers.list": "Tier2",
"admin.barriers.update": "Tier2",
"admin.conversations.archive": "Tier2",
"admin.conversations.bulkArchive": "Tier2",
"admin.conversations.bulkDelete": "Tier2",
"admin.conversations.bulkMove": "Tier2",
"admin.conversations.convertToPrivate": "Tier2",
"admin.conversations.create": "Tier2",
"admin.conversations.delete": "Tier2",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -376,6 +376,18 @@ CompletableFuture<AdminConversationsRestrictAccessListGroupsResponse> adminConve

CompletableFuture<AdminConversationsSetCustomRetentionResponse> adminConversationsSetCustomRetention(RequestConfigurator<AdminConversationsSetCustomRetentionRequest.AdminConversationsSetCustomRetentionRequestBuilder> req);

CompletableFuture<AdminConversationsBulkArchiveResponse> adminConversationsBulkArchive(AdminConversationsBulkArchiveRequest req);

CompletableFuture<AdminConversationsBulkArchiveResponse> adminConversationsBulkArchive(RequestConfigurator<AdminConversationsBulkArchiveRequest.AdminConversationsBulkArchiveRequestBuilder> req);

CompletableFuture<AdminConversationsBulkDeleteResponse> adminConversationsBulkDelete(AdminConversationsBulkDeleteRequest req);

CompletableFuture<AdminConversationsBulkDeleteResponse> adminConversationsBulkDelete(RequestConfigurator<AdminConversationsBulkDeleteRequest.AdminConversationsBulkDeleteRequestBuilder> req);

CompletableFuture<AdminConversationsBulkMoveResponse> adminConversationsBulkMove(AdminConversationsBulkMoveRequest req);

CompletableFuture<AdminConversationsBulkMoveResponse> adminConversationsBulkMove(RequestConfigurator<AdminConversationsBulkMoveRequest.AdminConversationsBulkMoveRequestBuilder> req);

// ------------------------------
// admin.conversations.ekm
// ------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@ private Methods() {
public static final String ADMIN_CONVERSATIONS_REMOVE_CUSTOM_RETENTION = "admin.conversations.removeCustomRetention";
public static final String ADMIN_CONVERSATIONS_SET_CUSTOM_RETENTION = "admin.conversations.setCustomRetention";

public static final String ADMIN_CONVERSATIONS_BULK_ARCHIVE = "admin.conversations.bulkArchive";
public static final String ADMIN_CONVERSATIONS_BULK_DELETE = "admin.conversations.bulkDelete";
public static final String ADMIN_CONVERSATIONS_BULK_MOVE = "admin.conversations.bulkMove";

// ------------------------------
// admin.conversations.ekm
// ------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -430,6 +430,18 @@ <T extends SlackApiTextResponse> T postFormWithAuthorizationHeaderAndParseRespon

AdminConversationsSetCustomRetentionResponse adminConversationsSetCustomRetention(RequestConfigurator<AdminConversationsSetCustomRetentionRequest.AdminConversationsSetCustomRetentionRequestBuilder> req) throws IOException, SlackApiException;

AdminConversationsBulkArchiveResponse adminConversationsBulkArchive(AdminConversationsBulkArchiveRequest req) throws IOException, SlackApiException;

AdminConversationsBulkArchiveResponse adminConversationsBulkArchive(RequestConfigurator<AdminConversationsBulkArchiveRequest.AdminConversationsBulkArchiveRequestBuilder> req) throws IOException, SlackApiException;

AdminConversationsBulkDeleteResponse adminConversationsBulkDelete(AdminConversationsBulkDeleteRequest req) throws IOException, SlackApiException;

AdminConversationsBulkDeleteResponse adminConversationsBulkDelete(RequestConfigurator<AdminConversationsBulkDeleteRequest.AdminConversationsBulkDeleteRequestBuilder> req) throws IOException, SlackApiException;

AdminConversationsBulkMoveResponse adminConversationsBulkMove(AdminConversationsBulkMoveRequest req) throws IOException, SlackApiException;

AdminConversationsBulkMoveResponse adminConversationsBulkMove(RequestConfigurator<AdminConversationsBulkMoveRequest.AdminConversationsBulkMoveRequestBuilder> req) throws IOException, SlackApiException;

// ------------------------------
// admin.conversations.ekm
// ------------------------------
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,9 @@ public static void setRateLimitTier(String methodName, MethodsRateLimitTier tier
ADMIN_CONVERSATIONS_GET_CUSTOM_RETENTION,
ADMIN_CONVERSATIONS_REMOVE_CUSTOM_RETENTION,
ADMIN_CONVERSATIONS_SET_CUSTOM_RETENTION,
ADMIN_CONVERSATIONS_BULK_ARCHIVE,
ADMIN_CONVERSATIONS_BULK_DELETE,
ADMIN_CONVERSATIONS_BULK_MOVE,

ADMIN_EMOJI_ADD,
ADMIN_EMOJI_ADD_ALIAS,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -447,6 +447,31 @@ public static FormBody.Builder toForm(AdminConversationsUnarchiveRequest req) {
return form;
}

public static FormBody.Builder toForm(AdminConversationsBulkArchiveRequest req) {
FormBody.Builder form = new FormBody.Builder();
if (req.getChannelIds() != null) {
setIfNotNull("channel_ids", req.getChannelIds().stream().collect(joining(",")), form);
}
return form;
}

public static FormBody.Builder toForm(AdminConversationsBulkDeleteRequest req) {
FormBody.Builder form = new FormBody.Builder();
if (req.getChannelIds() != null) {
setIfNotNull("channel_ids", req.getChannelIds().stream().collect(joining(",")), form);
}
return form;
}

public static FormBody.Builder toForm(AdminConversationsBulkMoveRequest req) {
FormBody.Builder form = new FormBody.Builder();
if (req.getChannelIds() != null) {
setIfNotNull("channel_ids", req.getChannelIds().stream().collect(joining(",")), form);
}
setIfNotNull("target_team_id", req.getTargetTeamId(), form);
return form;
}

public static FormBody.Builder toForm(AdminConversationsEkmListOriginalConnectedChannelInfoRequest req) {
FormBody.Builder form = new FormBody.Builder();
if (req.getChannelIds() != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -587,6 +587,36 @@ public CompletableFuture<AdminConversationsSetCustomRetentionResponse> adminConv
return adminConversationsSetCustomRetention(req.configure(AdminConversationsSetCustomRetentionRequest.builder()).build());
}

@Override
public CompletableFuture<AdminConversationsBulkArchiveResponse> adminConversationsBulkArchive(AdminConversationsBulkArchiveRequest req) {
return executor.execute(ADMIN_CONVERSATIONS_BULK_ARCHIVE, toMap(req), () -> methods.adminConversationsBulkArchive(req));
}

@Override
public CompletableFuture<AdminConversationsBulkArchiveResponse> adminConversationsBulkArchive(RequestConfigurator<AdminConversationsBulkArchiveRequest.AdminConversationsBulkArchiveRequestBuilder> req) {
return adminConversationsBulkArchive(req.configure(AdminConversationsBulkArchiveRequest.builder()).build());
}

@Override
public CompletableFuture<AdminConversationsBulkDeleteResponse> adminConversationsBulkDelete(AdminConversationsBulkDeleteRequest req) {
return executor.execute(ADMIN_CONVERSATIONS_BULK_DELETE, toMap(req), () -> methods.adminConversationsBulkDelete(req));
}

@Override
public CompletableFuture<AdminConversationsBulkDeleteResponse> adminConversationsBulkDelete(RequestConfigurator<AdminConversationsBulkDeleteRequest.AdminConversationsBulkDeleteRequestBuilder> req) {
return adminConversationsBulkDelete(req.configure(AdminConversationsBulkDeleteRequest.builder()).build());
}

@Override
public CompletableFuture<AdminConversationsBulkMoveResponse> adminConversationsBulkMove(AdminConversationsBulkMoveRequest req) {
return executor.execute(ADMIN_CONVERSATIONS_BULK_MOVE, toMap(req), () -> methods.adminConversationsBulkMove(req));
}

@Override
public CompletableFuture<AdminConversationsBulkMoveResponse> adminConversationsBulkMove(RequestConfigurator<AdminConversationsBulkMoveRequest.AdminConversationsBulkMoveRequestBuilder> req) {
return adminConversationsBulkMove(req.configure(AdminConversationsBulkMoveRequest.builder()).build());
}

@Override
public CompletableFuture<AdminConversationsEkmListOriginalConnectedChannelInfoResponse> adminConversationsEkmListOriginalConnectedChannelInfo(AdminConversationsEkmListOriginalConnectedChannelInfoRequest req) {
return executor.execute(ADMIN_CONVERSATIONS_EKM_LIST_ORIGINAL_CONNECTED_CHANNEL_INFO, toMap(req), () -> methods.adminConversationsEkmListOriginalConnectedChannelInfo(req));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -592,6 +592,36 @@ public AdminConversationsSetCustomRetentionResponse adminConversationsSetCustomR
return adminConversationsSetCustomRetention(req.configure(AdminConversationsSetCustomRetentionRequest.builder()).build());
}

@Override
public AdminConversationsBulkArchiveResponse adminConversationsBulkArchive(AdminConversationsBulkArchiveRequest req) throws IOException, SlackApiException {
return postFormWithTokenAndParseResponse(toForm(req), Methods.ADMIN_CONVERSATIONS_BULK_ARCHIVE, getToken(req), AdminConversationsBulkArchiveResponse.class);
}

@Override
public AdminConversationsBulkArchiveResponse adminConversationsBulkArchive(RequestConfigurator<AdminConversationsBulkArchiveRequest.AdminConversationsBulkArchiveRequestBuilder> req) throws IOException, SlackApiException {
return adminConversationsBulkArchive(req.configure(AdminConversationsBulkArchiveRequest.builder()).build());
}

@Override
public AdminConversationsBulkDeleteResponse adminConversationsBulkDelete(AdminConversationsBulkDeleteRequest req) throws IOException, SlackApiException {
return postFormWithTokenAndParseResponse(toForm(req), Methods.ADMIN_CONVERSATIONS_BULK_DELETE, getToken(req), AdminConversationsBulkDeleteResponse.class);
}

@Override
public AdminConversationsBulkDeleteResponse adminConversationsBulkDelete(RequestConfigurator<AdminConversationsBulkDeleteRequest.AdminConversationsBulkDeleteRequestBuilder> req) throws IOException, SlackApiException {
return adminConversationsBulkDelete(req.configure(AdminConversationsBulkDeleteRequest.builder()).build());
}

@Override
public AdminConversationsBulkMoveResponse adminConversationsBulkMove(AdminConversationsBulkMoveRequest req) throws IOException, SlackApiException {
return postFormWithTokenAndParseResponse(toForm(req), Methods.ADMIN_CONVERSATIONS_BULK_MOVE, getToken(req), AdminConversationsBulkMoveResponse.class);
}

@Override
public AdminConversationsBulkMoveResponse adminConversationsBulkMove(RequestConfigurator<AdminConversationsBulkMoveRequest.AdminConversationsBulkMoveRequestBuilder> req) throws IOException, SlackApiException {
return adminConversationsBulkMove(req.configure(AdminConversationsBulkMoveRequest.builder()).build());
}

@Override
public AdminConversationsEkmListOriginalConnectedChannelInfoResponse adminConversationsEkmListOriginalConnectedChannelInfo(AdminConversationsEkmListOriginalConnectedChannelInfoRequest req) throws IOException, SlackApiException {
return postFormWithTokenAndParseResponse(toForm(req), Methods.ADMIN_CONVERSATIONS_EKM_LIST_ORIGINAL_CONNECTED_CHANNEL_INFO, getToken(req), AdminConversationsEkmListOriginalConnectedChannelInfoResponse.class);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.slack.api.methods.request.admin.conversations;

import com.slack.api.methods.SlackApiRequest;
import lombok.Builder;
import lombok.Data;

import java.util.List;

/**
* https://api.slack.com/methods/admin.conversations.bulkArchive
*/
@Data
@Builder
public class AdminConversationsBulkArchiveRequest implements SlackApiRequest {

/**
* Authentication token bearing required scopes.
*/
private String token;

/**
* An array of channel IDs.
*/
private List<String> channelIds;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.slack.api.methods.request.admin.conversations;

import com.slack.api.methods.SlackApiRequest;
import lombok.Builder;
import lombok.Data;

import java.util.List;

/**
* https://api.slack.com/methods/admin.conversations.bulkDelete
*/
@Data
@Builder
public class AdminConversationsBulkDeleteRequest implements SlackApiRequest {

/**
* Authentication token bearing required scopes.
*/
private String token;

/**
* An array of channel IDs.
*/
private List<String> channelIds;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.slack.api.methods.request.admin.conversations;

import com.slack.api.methods.SlackApiRequest;
import lombok.Builder;
import lombok.Data;

import java.util.List;

/**
* https://api.slack.com/methods/admin.conversations.bulkMove
*/
@Data
@Builder
public class AdminConversationsBulkMoveRequest implements SlackApiRequest {

/**
* Authentication token bearing required scopes.
*/
private String token;

/**
* An array of channel IDs.
*/
private List<String> channelIds;

/**
* Target team ID
*/
private String targetTeamId;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.slack.api.methods.response.admin.conversations;

import com.slack.api.methods.SlackApiTextResponse;
import com.slack.api.model.ErrorResponseMetadata;
import lombok.Data;

import java.util.List;
import java.util.Map;

@Data
public class AdminConversationsBulkArchiveResponse implements SlackApiTextResponse {

private boolean ok;
private String warning;
private String error;
private String needed;
private String provided;
private transient Map<String, List<String>> httpResponseHeaders;

private String bulkActionId;
private List<NotAdded> notAdded;
private ErrorResponseMetadata responseMetadata;

@Data
public static class NotAdded {
private String channelId;
private List<String> errors;
}
}
Loading

0 comments on commit fbdb85c

Please sign in to comment.