diff --git a/packages/web-api/src/methods.ts b/packages/web-api/src/methods.ts index 8266fccec..ec2cdbde8 100644 --- a/packages/web-api/src/methods.ts +++ b/packages/web-api/src/methods.ts @@ -3,6 +3,9 @@ import { Dialog, View, KnownBlock, Block, MessageAttachment, LinkUnfurls, CallUs import { WebAPICallOptions, WebAPICallResult, WebClient, WebClientEvent } from './WebClient'; import { EventEmitter } from 'eventemitter3'; +import { AdminAuthPolicyAssignEntitiesResponse } from './response/AdminAuthPolicyAssignEntitiesResponse'; +import { AdminAuthPolicyGetEntitiesResponse } from './response/AdminAuthPolicyGetEntitiesResponse'; +import { AdminAuthPolicyRemoveEntitiesResponse } from './response/AdminAuthPolicyRemoveEntitiesResponse'; import { AdminAppsApproveResponse } from './response/AdminAppsApproveResponse'; import { AdminAppsApprovedListResponse } from './response/AdminAppsApprovedListResponse'; import { AdminAppsRequestsListResponse } from './response/AdminAppsRequestsListResponse'; @@ -240,6 +243,13 @@ export abstract class Methods extends EventEmitter { }, uninstall: bindApiCall(this, 'admin.apps.uninstall'), }, + auth: { + policy: { + assignEntities: bindApiCall(this, 'admin.auth.policy.assignEntities'), + getEntities: bindApiCall(this, 'admin.auth.policy.getEntities'), + removeEntities: bindApiCall(this, 'admin.auth.policy.removeEntities'), + }, + }, barriers: { create: bindApiCall(this, 'admin.barriers.create'), delete: bindApiCall(this, 'admin.barriers.delete'), @@ -437,16 +447,21 @@ export abstract class Methods extends EventEmitter { }; public readonly conversations = { + acceptSharedInvite: bindApiCall(this, 'conversations.acceptSharedInvite'), + approveSharedInvite: bindApiCall(this, 'conversations.approveSharedInvite'), archive: bindApiCall(this, 'conversations.archive'), close: bindApiCall(this, 'conversations.close'), create: bindApiCall(this, 'conversations.create'), + declineSharedInvite: bindApiCall(this, 'conversations.declineSharedInvite'), history: bindApiCall(this, 'conversations.history'), info: bindApiCall(this, 'conversations.info'), invite: bindApiCall(this, 'conversations.invite'), + inviteShared: bindApiCall(this, 'conversations.inviteShared'), join: bindApiCall(this, 'conversations.join'), kick: bindApiCall(this, 'conversations.kick'), leave: bindApiCall(this, 'conversations.leave'), list: bindApiCall(this, 'conversations.list'), + listConnectInvites: bindApiCall(this, 'conversations.listConnectInvites'), mark: bindApiCall(this, 'conversations.mark'), members: bindApiCall(this, 'conversations.members'), open: bindApiCall(this, 'conversations.open'), @@ -717,8 +732,8 @@ export interface TraditionalPagingEnabled { */ /* - * `admin.*` - */ +* `admin.*` +*/ export interface AdminAppsApproveArguments extends WebAPICallOptions, TokenOverridable { app_id?: string; request_id?: string; @@ -754,6 +769,22 @@ export interface AdminAppsUninstallArguments extends WebAPICallOptions { enterprise_id?: string; team_ids?: string[]; } +export interface AdminAuthPolicyAssignEntitiesArguments extends WebAPICallOptions, TokenOverridable { + entity_ids: string[]; + entity_type: string; + policy_name: string; +} +export interface AdminAuthPolicyGetEntitiesArguments extends WebAPICallOptions, TokenOverridable, +CursorPaginationEnabled { + policy_name: string; + entity_type?: string; +} +cursorPaginationEnabledMethods.add('admin.auth.policy.getEntities'); +export interface AdminAuthPolicyRemoveEntitiesArguments extends WebAPICallOptions, TokenOverridable { + entity_ids: string[]; + entity_type: string; + policy_name: string; +} export interface AdminBarriersCreateArguments extends WebAPICallOptions, TokenOverridable { barriered_from_usergroup_ids: string[]; primary_usergroup_id: string; @@ -1268,6 +1299,18 @@ export interface ChatUpdateArguments extends WebAPICallOptions, TokenOverridable /* * `conversations.*` */ +export interface ConversationsAcceptSharedInviteArguments extends WebAPICallOptions, TokenOverridable { + channel_name: string; + channel_id?: string; + free_trial_accepted?: boolean; + invite_id?: string; + is_private?: boolean; + team_id?: string; +} +export interface ConversationsApproveSharedInviteArguments extends WebAPICallOptions, TokenOverridable { + invite_id: string; + target_team?: string; +} export interface ConversationsArchiveArguments extends WebAPICallOptions, TokenOverridable { channel: string; } @@ -1279,6 +1322,10 @@ export interface ConversationsCreateArguments extends WebAPICallOptions, TokenOv is_private?: boolean; team_id?: string; } +export interface ConversationsDeclineSharedInviteArguments extends WebAPICallOptions, TokenOverridable { + invite_id: string; + target_team?: string; +} export interface ConversationsHistoryArguments extends WebAPICallOptions, TokenOverridable, CursorPaginationEnabled, TimelinePaginationEnabled { channel: string; @@ -1292,6 +1339,11 @@ export interface ConversationsInviteArguments extends WebAPICallOptions, TokenOv channel: string; users: string; // comma-separated list of users } +export interface ConversationsInviteSharedArguments extends WebAPICallOptions, TokenOverridable { + channel: string; + emails?: string[]; + user_ids?: string[]; +} export interface ConversationsJoinArguments extends WebAPICallOptions, TokenOverridable { channel: string; } @@ -1308,6 +1360,12 @@ export interface ConversationsListArguments extends WebAPICallOptions, TokenOver team_id?: string; } cursorPaginationEnabledMethods.add('conversations.list'); +export interface ConversationsListConnectInvitesArguments extends WebAPICallOptions, TokenOverridable { + count?: number; + cursor?: string; + team_id?: string; +} +cursorPaginationEnabledMethods.add('conversations.listConnectInvites'); export interface ConversationsMarkArguments extends WebAPICallOptions, TokenOverridable { channel: string; ts: string; diff --git a/packages/web-api/src/response/AdminAuthPolicyAssignEntitiesResponse.ts b/packages/web-api/src/response/AdminAuthPolicyAssignEntitiesResponse.ts new file mode 100644 index 000000000..f9e5266ba --- /dev/null +++ b/packages/web-api/src/response/AdminAuthPolicyAssignEntitiesResponse.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { WebAPICallResult } from '../WebClient'; +export type AdminAuthPolicyAssignEntitiesResponse = WebAPICallResult & { + ok?: boolean; + entity_total_count?: number; + error?: string; + needed?: string; + provided?: string; +}; diff --git a/packages/web-api/src/response/AdminAuthPolicyGetEntitiesResponse.ts b/packages/web-api/src/response/AdminAuthPolicyGetEntitiesResponse.ts new file mode 100644 index 000000000..92b3c12d4 --- /dev/null +++ b/packages/web-api/src/response/AdminAuthPolicyGetEntitiesResponse.ts @@ -0,0 +1,16 @@ +/* tslint:disable */ +import { WebAPICallResult } from '../WebClient'; +export type AdminAuthPolicyGetEntitiesResponse = WebAPICallResult & { + ok?: boolean; + error?: string; + entities?: Entity[]; + entity_total_count?: number; + needed?: string; + provided?: string; +}; + +export interface Entity { + entity_id?: string; + entity_type?: string; + date_added?: number; +} diff --git a/packages/web-api/src/response/AdminAuthPolicyRemoveEntitiesResponse.ts b/packages/web-api/src/response/AdminAuthPolicyRemoveEntitiesResponse.ts new file mode 100644 index 000000000..d1e6e8990 --- /dev/null +++ b/packages/web-api/src/response/AdminAuthPolicyRemoveEntitiesResponse.ts @@ -0,0 +1,9 @@ +/* tslint:disable */ +import { WebAPICallResult } from '../WebClient'; +export type AdminAuthPolicyRemoveEntitiesResponse = WebAPICallResult & { + ok?: boolean; + entity_total_count?: number; + error?: string; + needed?: string; + provided?: string; +}; diff --git a/packages/web-api/src/response/SearchAllResponse.ts b/packages/web-api/src/response/SearchAllResponse.ts index e000ff3a6..430d297dd 100644 --- a/packages/web-api/src/response/SearchAllResponse.ts +++ b/packages/web-api/src/response/SearchAllResponse.ts @@ -140,6 +140,7 @@ export interface MessagesMatch { attachments?: MatchAttachment[]; is_mpim?: boolean; score?: number; + files?: File[]; } export interface MatchAttachment { @@ -343,6 +344,39 @@ export interface Channel { name_normalized?: string; } +export interface File { + id?: string; + created?: number; + timestamp?: number; + name?: string; + title?: string; + mimetype?: string; + filetype?: string; + pretty_type?: string; + user?: string; + editable?: boolean; + size?: number; + mode?: string; + is_external?: boolean; + external_type?: string; + is_public?: boolean; + public_url_shared?: boolean; + display_as_bot?: boolean; + username?: string; + url_private?: string; + url_private_download?: string; + permalink?: string; + permalink_public?: string; + edit_link?: string; + preview?: string; + preview_highlight?: string; + lines?: number; + lines_more?: number; + preview_is_truncated?: boolean; + is_starred?: boolean; + has_rich_preview?: boolean; +} + export interface Previous { type?: string; user?: string; diff --git a/packages/web-api/src/response/SearchMessagesResponse.ts b/packages/web-api/src/response/SearchMessagesResponse.ts index cc3fcb057..57c986632 100644 --- a/packages/web-api/src/response/SearchMessagesResponse.ts +++ b/packages/web-api/src/response/SearchMessagesResponse.ts @@ -33,6 +33,7 @@ export interface Match { attachments?: MatchAttachment[]; is_mpim?: boolean; score?: number; + files?: File[]; } export interface MatchAttachment { @@ -236,6 +237,39 @@ export interface Channel { name_normalized?: string; } +export interface File { + id?: string; + created?: number; + timestamp?: number; + name?: string; + title?: string; + mimetype?: string; + filetype?: string; + pretty_type?: string; + user?: string; + editable?: boolean; + size?: number; + mode?: string; + is_external?: boolean; + external_type?: string; + is_public?: boolean; + public_url_shared?: boolean; + display_as_bot?: boolean; + username?: string; + url_private?: string; + url_private_download?: string; + permalink?: string; + permalink_public?: string; + edit_link?: string; + preview?: string; + preview_highlight?: string; + lines?: number; + lines_more?: number; + preview_is_truncated?: boolean; + is_starred?: boolean; + has_rich_preview?: boolean; +} + export interface Previous { type?: string; user?: string; diff --git a/packages/web-api/src/response/index.ts b/packages/web-api/src/response/index.ts index f1b96685e..fbc6de9c3 100644 --- a/packages/web-api/src/response/index.ts +++ b/packages/web-api/src/response/index.ts @@ -6,6 +6,9 @@ export { AdminAppsRequestsListResponse } from './AdminAppsRequestsListResponse'; export { AdminAppsRestrictResponse } from './AdminAppsRestrictResponse'; export { AdminAppsRestrictedListResponse } from './AdminAppsRestrictedListResponse'; export { AdminAppsUninstallResponse } from './AdminAppsUninstallResponse'; +export { AdminAuthPolicyAssignEntitiesResponse } from './AdminAuthPolicyAssignEntitiesResponse'; +export { AdminAuthPolicyGetEntitiesResponse } from './AdminAuthPolicyGetEntitiesResponse'; +export { AdminAuthPolicyRemoveEntitiesResponse } from './AdminAuthPolicyRemoveEntitiesResponse'; export { AdminBarriersCreateResponse } from './AdminBarriersCreateResponse'; export { AdminBarriersDeleteResponse } from './AdminBarriersDeleteResponse'; export { AdminBarriersListResponse } from './AdminBarriersListResponse'; diff --git a/prod-server-integration-tests/test/admin-web-api.js b/prod-server-integration-tests/test/admin-web-api.js index 0511afe77..0337b1c09 100644 --- a/prod-server-integration-tests/test/admin-web-api.js +++ b/prod-server-integration-tests/test/admin-web-api.js @@ -69,4 +69,41 @@ describe('admin.* Web APIs', function () { assert.equal(get3.no_settings_applied.length, userIds.length); }); }); -}); \ No newline at end of file + + describe('admin.auth.policy.{assign|get|remove}Entities', function () { + /* + To run this test suite manually, you need an email_password auth policy + enabled on the Enterprise Org. For this, you need to have an Enterprise Org + with SSO enabled. You will additionally need to export a User ID for + a user managed by the IDP for testing. + + export SLACK_SDK_TEST_GRID_USER_ID= + */ + it('should assign an entity', async function () { + const res = await orgAdminClient.admin.auth.policy.assignEntities({ + entity_ids: [process.env.SLACK_SDK_TEST_GRID_USER_ID], + entity_type: "USER", + policy_name: "email_password", + }); + assert.equal(res.ok, true); + assert.isUndefined(res.error); + }) + it('should get entities', async function () { + const res2 = await orgAdminClient.admin.auth.policy.getEntities({ + policy_name: "email_password", + }); + logger.info(res2); + assert.equal(res2.ok, true); + assert.isUndefined(res2.error); + }) + it('should remove entities', async function () { + const res3 = await orgAdminClient.admin.auth.policy.removeEntities({ + entity_ids: [process.env.SLACK_SDK_TEST_GRID_USER_ID], + entity_type: "USER", + policy_name: "email_password", + }) + assert.equal(res3.ok, true); + assert.isUndefined(res3.error); + }) + }) +});