From cb4736ae43000bdb9ebc049d479bf84a2ceb0f0d Mon Sep 17 00:00:00 2001 From: William Bergamin Date: Wed, 14 Oct 2026 13:31:42 -0400 Subject: [PATCH 1/4] feat: add support for apps.user.connection.requestAuth and bulkUpdate --- ...ser-connection-request-auth-bulk-update.md | 5 ++ packages/web-api/src/methods.ts | 20 +++++ packages/web-api/src/types/request/apps.ts | 79 +++++++++++++++++ packages/web-api/src/types/request/index.ts | 3 + .../AppsUserConnectionBulkUpdateResponse.ts | 29 +++++++ .../AppsUserConnectionRequestAuthResponse.ts | 23 +++++ packages/web-api/src/types/response/index.ts | 2 + .../web-api/test/types/methods/apps.test-d.ts | 86 +++++++++++++++++++ 8 files changed, 247 insertions(+) create mode 100644 .changeset/apps-user-connection-request-auth-bulk-update.md create mode 100644 packages/web-api/src/types/response/AppsUserConnectionBulkUpdateResponse.ts create mode 100644 packages/web-api/src/types/response/AppsUserConnectionRequestAuthResponse.ts diff --git a/.changeset/apps-user-connection-request-auth-bulk-update.md b/.changeset/apps-user-connection-request-auth-bulk-update.md new file mode 100644 index 000000000..bef0b2362 --- /dev/null +++ b/.changeset/apps-user-connection-request-auth-bulk-update.md @@ -0,0 +1,5 @@ +--- +"@slack/web-api": minor +--- + +feat: add support for apps.user.connection.requestAuth and apps.user.connection.bulkUpdate diff --git a/packages/web-api/src/methods.ts b/packages/web-api/src/methods.ts index 549ecdd81..f5f124240 100644 --- a/packages/web-api/src/methods.ts +++ b/packages/web-api/src/methods.ts @@ -118,6 +118,8 @@ import type { AppsManifestUpdateArguments, AppsManifestValidateArguments, AppsUninstallArguments, + AppsUserConnectionBulkUpdateArguments, + AppsUserConnectionRequestAuthArguments, AppsUserConnectionUpdateArguments, AssistantThreadsSetStatusArguments, AssistantThreadsSetSuggestedPromptsArguments, @@ -400,6 +402,8 @@ import type { AppsManifestUpdateResponse, AppsManifestValidateResponse, AppsUninstallResponse, + AppsUserConnectionBulkUpdateResponse, + AppsUserConnectionRequestAuthResponse, AppsUserConnectionUpdateResponse, AssistantThreadsSetStatusResponse, AssistantThreadsSetSuggestedPromptsResponse, @@ -1589,6 +1593,22 @@ export abstract class Methods extends EventEmitter { uninstall: bindApiCall(this, 'apps.uninstall'), user: { connection: { + /** + * @description Sets the connection status between an app and up to 1000 users at once. + * @see {@link https://docs.slack.dev/reference/methods/apps.user.connection.bulkUpdate `apps.user.connection.bulkUpdate` API reference}. + */ + bulkUpdate: bindApiCall( + this, + 'apps.user.connection.bulkUpdate', + ), + /** + * @description Opens or updates the authorization modal that asks a user to connect a provider to an app. + * @see {@link https://docs.slack.dev/reference/methods/apps.user.connection.requestAuth `apps.user.connection.requestAuth` API reference}. + */ + requestAuth: bindApiCall( + this, + 'apps.user.connection.requestAuth', + ), /** * @description Updates the connection status between a user and an app. * @see {@link https://docs.slack.dev/reference/methods/apps.user.connection.update `apps.user.connection.update` API reference}. diff --git a/packages/web-api/src/types/request/apps.ts b/packages/web-api/src/types/request/apps.ts index 7c0e063e6..1f9a78d81 100644 --- a/packages/web-api/src/types/request/apps.ts +++ b/packages/web-api/src/types/request/apps.ts @@ -1,3 +1,5 @@ +import type { Overflow, PlainTextElement } from '@slack/types'; + import type { OptionalArgument } from '../helpers'; import type { AppID, CursorPaginationEnabled, OAuthCredentials, TokenOverridable } from './common'; @@ -32,6 +34,83 @@ export interface AppsManifestValidateArguments extends Partial, TokenOver manifest: Manifest; } +interface UserConnectionConnectedUserIDs { + /** + * @description The user IDs to mark as connected. + * At least one of `connected_user_ids` or `disconnected_user_ids` is required; combined they may not exceed 1000 users. + */ + connected_user_ids: string[]; + disconnected_user_ids?: string[]; +} + +interface UserConnectionDisconnectedUserIDs { + connected_user_ids?: string[]; + /** + * @description The user IDs to mark as disconnected. + * At least one of `connected_user_ids` or `disconnected_user_ids` is required; combined they may not exceed 1000 users. + */ + disconnected_user_ids: string[]; +} + +// https://docs.slack.dev/reference/methods/apps.user.connection.bulkUpdate +export type AppsUserConnectionBulkUpdateArguments = TokenOverridable & + (UserConnectionConnectedUserIDs | UserConnectionDisconnectedUserIDs); + +export interface UserConnectionPrimaryProvider { + /** + * @description Unique identifier for this provider within the app, up to 150 characters. + * The connect button's `action_id` is derived from it (`auth_provider_connect_{value}`). + */ + value: string; + /** @description Human-readable name of the provider, up to 75 characters. */ + name: PlainTextElement; + /** + * @description Whether this provider is currently connected. Slack records this state against the user, + * so an omitted value is rejected with `invalid_arguments` instead of defaulting to false. + */ + is_connected: boolean; + /** @description Brief description of what this connection enables, up to 150 characters. */ + description?: PlainTextElement; + /** @description URL for the provider icon image. Must be https. Defaults to the app's avatar. */ + icon_url?: string; + /** + * @description OAuth redirect URL opened when the user clicks Connect. + * Must be https, on a host (or a subdomain of one) registered in the app manifest's `features.user_connections.auth_hosts`. + */ + auth_url?: string; + /** + * @description URL opened when the user clicks Disconnect. + * Must be https, on a host (or a subdomain of one) registered in the app manifest's `features.user_connections.auth_hosts`. + */ + disconnect_url?: string; + /** @description Display name of the connected account, up to 75 characters. Shown when `is_connected` is true. */ + connected_identity?: PlainTextElement; + /** @description Additional context about the connection (e.g., org or workspace name), up to 75 characters. */ + connected_context?: PlainTextElement; + /** @description Overflow menu shown when connected (e.g., Switch accounts, Disconnect). Requires 2 to 5 `options`. */ + accessory?: Overflow; +} + +interface UserConnectionTriggerID { + /** @description Opens a new authorization modal. Required unless `user_id` is provided. */ + trigger_id: string; +} + +interface UserConnectionUserID { + /** + * @description Updates the authorization modal already open for this user. Ignored when `trigger_id` is provided. + * Slack records `is_connected` for the user even when no modal is open, and reports that in `response_metadata.warnings`. + */ + user_id: string; +} + +// https://docs.slack.dev/reference/methods/apps.user.connection.requestAuth +export type AppsUserConnectionRequestAuthArguments = TokenOverridable & + (UserConnectionTriggerID | UserConnectionUserID) & { + /** @description The provider the user is asked to connect. */ + primary_provider: UserConnectionPrimaryProvider; + }; + // https://docs.slack.dev/reference/methods/apps.user.connection.update export interface AppsUserConnectionUpdateArguments extends TokenOverridable { /** @description The identifier for the user receiving the status update. */ diff --git a/packages/web-api/src/types/request/index.ts b/packages/web-api/src/types/request/index.ts index b82e85534..17f22e25e 100644 --- a/packages/web-api/src/types/request/index.ts +++ b/packages/web-api/src/types/request/index.ts @@ -141,7 +141,10 @@ export type { AppsManifestUpdateArguments, AppsManifestValidateArguments, AppsUninstallArguments, + AppsUserConnectionBulkUpdateArguments, + AppsUserConnectionRequestAuthArguments, AppsUserConnectionUpdateArguments, + UserConnectionPrimaryProvider, } from './apps'; export type { AssistantThreadsSetStatusArguments, diff --git a/packages/web-api/src/types/response/AppsUserConnectionBulkUpdateResponse.ts b/packages/web-api/src/types/response/AppsUserConnectionBulkUpdateResponse.ts new file mode 100644 index 000000000..19c44490e --- /dev/null +++ b/packages/web-api/src/types/response/AppsUserConnectionBulkUpdateResponse.ts @@ -0,0 +1,29 @@ +///////////////////////////////////////////////////////////////////////////////////////// +// // +// !!! DO NOT EDIT THIS FILE !!! // +// // +// This file is auto-generated by scripts/generate-web-api-types.sh in the repository. // +// Please refer to the script code to learn how to update the source data. // +// // +///////////////////////////////////////////////////////////////////////////////////////// + +import type { WebAPICallResult } from '../../WebClient'; +export type AppsUserConnectionBulkUpdateResponse = WebAPICallResult & { + changed_user_ids?: string[]; + error?: string; + failures?: Failure[]; + needed?: string; + ok?: boolean; + provided?: string; + response_metadata?: ResponseMetadata; + warning?: string; +}; + +export interface Failure { + error?: string; + user_id?: string; +} + +export interface ResponseMetadata { + messages?: string[]; +} diff --git a/packages/web-api/src/types/response/AppsUserConnectionRequestAuthResponse.ts b/packages/web-api/src/types/response/AppsUserConnectionRequestAuthResponse.ts new file mode 100644 index 000000000..e09e4899e --- /dev/null +++ b/packages/web-api/src/types/response/AppsUserConnectionRequestAuthResponse.ts @@ -0,0 +1,23 @@ +///////////////////////////////////////////////////////////////////////////////////////// +// // +// !!! DO NOT EDIT THIS FILE !!! // +// // +// This file is auto-generated by scripts/generate-web-api-types.sh in the repository. // +// Please refer to the script code to learn how to update the source data. // +// // +///////////////////////////////////////////////////////////////////////////////////////// + +import type { WebAPICallResult } from '../../WebClient'; +export type AppsUserConnectionRequestAuthResponse = WebAPICallResult & { + error?: string; + needed?: string; + ok?: boolean; + provided?: string; + response_metadata?: ResponseMetadata; + warning?: string; +}; + +export interface ResponseMetadata { + messages?: string[]; + warnings?: string[]; +} diff --git a/packages/web-api/src/types/response/index.ts b/packages/web-api/src/types/response/index.ts index 4413329a5..7eea1dc64 100644 --- a/packages/web-api/src/types/response/index.ts +++ b/packages/web-api/src/types/response/index.ts @@ -128,6 +128,8 @@ export { AppsPermissionsScopesListResponse } from './AppsPermissionsScopesListRe export { AppsPermissionsUsersListResponse } from './AppsPermissionsUsersListResponse'; export { AppsPermissionsUsersRequestResponse } from './AppsPermissionsUsersRequestResponse'; export { AppsUninstallResponse } from './AppsUninstallResponse'; +export { AppsUserConnectionBulkUpdateResponse } from './AppsUserConnectionBulkUpdateResponse'; +export { AppsUserConnectionRequestAuthResponse } from './AppsUserConnectionRequestAuthResponse'; export { AppsUserConnectionUpdateResponse } from './AppsUserConnectionUpdateResponse'; export { AssistantThreadsSetStatusResponse } from './AssistantThreadsSetStatusResponse'; export { AssistantThreadsSetSuggestedPromptsResponse } from './AssistantThreadsSetSuggestedPromptsResponse'; diff --git a/packages/web-api/test/types/methods/apps.test-d.ts b/packages/web-api/test/types/methods/apps.test-d.ts index 3260a3c61..b1c9b002f 100644 --- a/packages/web-api/test/types/methods/apps.test-d.ts +++ b/packages/web-api/test/types/methods/apps.test-d.ts @@ -144,6 +144,92 @@ expectAssignable>([ }, ]); +// apps.user.connection.bulkUpdate +// -- sad path +expectError(web.apps.user.connection.bulkUpdate()); // lacking argument +expectError(web.apps.user.connection.bulkUpdate({})); // missing both connected_user_ids and disconnected_user_ids +// -- happy path +expectAssignable>([ + { + connected_user_ids: ['U1234'], + }, +]); +expectAssignable>([ + { + disconnected_user_ids: ['U5678'], + }, +]); +expectAssignable>([ + { + connected_user_ids: ['U1234'], + disconnected_user_ids: ['U5678'], + }, +]); + +// apps.user.connection.requestAuth +// -- sad path +expectError(web.apps.user.connection.requestAuth()); // lacking argument +expectError(web.apps.user.connection.requestAuth({})); // empty argument +expectError( + web.apps.user.connection.requestAuth({ + primary_provider: { value: 'github', name: { type: 'plain_text', text: 'GitHub' }, is_connected: false }, // missing trigger_id or user_id + }), +); +expectError( + web.apps.user.connection.requestAuth({ + user_id: 'U1234', // missing primary_provider + }), +); +expectError( + web.apps.user.connection.requestAuth({ + user_id: 'U1234', + primary_provider: { name: { type: 'plain_text', text: 'GitHub' }, is_connected: false }, // missing value + }), +); +expectError( + web.apps.user.connection.requestAuth({ + user_id: 'U1234', + primary_provider: { value: 'github', is_connected: false }, // missing name + }), +); +expectError( + web.apps.user.connection.requestAuth({ + user_id: 'U1234', + primary_provider: { value: 'github', name: { type: 'plain_text', text: 'GitHub' } }, // missing is_connected + }), +); +// -- happy path +expectAssignable>([ + { + trigger_id: '1234567890.1234567890.abcdef0123456789', + primary_provider: { + value: 'github', + name: { type: 'plain_text', text: 'GitHub' }, + is_connected: true, + description: { type: 'plain_text', text: 'Link pull requests to conversations' }, + icon_url: 'https://example.com/icon.png', + auth_url: 'https://example.com/oauth', + disconnect_url: 'https://example.com/disconnect', + connected_identity: { type: 'plain_text', text: 'octocat' }, + connected_context: { type: 'plain_text', text: 'Acme Inc.' }, + accessory: { + type: 'overflow', + action_id: 'provider-menu', + options: [ + { text: { type: 'plain_text', text: 'Switch accounts' }, value: 'switch' }, + { text: { type: 'plain_text', text: 'Disconnect' }, value: 'disconnect' }, + ], + }, + }, + }, +]); +expectAssignable>([ + { + user_id: 'U1234', + primary_provider: { value: 'github', name: { type: 'plain_text', text: 'GitHub' }, is_connected: false }, + }, +]); + // apps.user.connection.update // -- sad path expectError(web.apps.user.connection.update()); // lacking argument From ce35eeffe944b2e3f96565e499e56039a19a460f Mon Sep 17 00:00:00 2001 From: William Bergamin Date: Wed, 14 Oct 2026 15:11:41 -0400 Subject: [PATCH 2/4] chore: regenerate web api response types --- packages/web-api/src/types/response/BlocksValidateResponse.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/web-api/src/types/response/BlocksValidateResponse.ts b/packages/web-api/src/types/response/BlocksValidateResponse.ts index 98ac25f84..26417aede 100644 --- a/packages/web-api/src/types/response/BlocksValidateResponse.ts +++ b/packages/web-api/src/types/response/BlocksValidateResponse.ts @@ -8,7 +8,6 @@ ///////////////////////////////////////////////////////////////////////////////////////// import type { WebAPICallResult } from '../../WebClient'; - export type BlocksValidateResponse = WebAPICallResult & { error?: string; errors?: Error[]; From cfdd88db0ef9ef537b0d80a124870527108e10de Mon Sep 17 00:00:00 2001 From: William Bergamin Date: Wed, 14 Oct 2026 15:46:16 -0400 Subject: [PATCH 3/4] docs(web-api): match user connection comments to the method docs Use the API method descriptions as written for apps.user.connection.requestAuth and bulkUpdate, dropping extra detail (character limits, auth_hosts rules, overflow option counts, warning behavior) that the docs do not state. Also revert an unrelated blank-line change to BlocksValidateResponse. Co-Authored-By: Claude --- packages/web-api/src/methods.ts | 4 +- packages/web-api/src/types/request/apps.ts | 46 ++++++++----------- .../types/response/BlocksValidateResponse.ts | 1 + 3 files changed, 23 insertions(+), 28 deletions(-) diff --git a/packages/web-api/src/methods.ts b/packages/web-api/src/methods.ts index f5f124240..d684ea1d4 100644 --- a/packages/web-api/src/methods.ts +++ b/packages/web-api/src/methods.ts @@ -1594,7 +1594,7 @@ export abstract class Methods extends EventEmitter { user: { connection: { /** - * @description Sets the connection status between an app and up to 1000 users at once. + * @description Updates the connection status between an app and many users in one call, for backfilling an existing user base. * @see {@link https://docs.slack.dev/reference/methods/apps.user.connection.bulkUpdate `apps.user.connection.bulkUpdate` API reference}. */ bulkUpdate: bindApiCall( @@ -1602,7 +1602,7 @@ export abstract class Methods extends EventEmitter { 'apps.user.connection.bulkUpdate', ), /** - * @description Opens or updates the authorization modal that asks a user to connect a provider to an app. + * @description Opens or updates a standardized authentication modal for the calling app. * @see {@link https://docs.slack.dev/reference/methods/apps.user.connection.requestAuth `apps.user.connection.requestAuth` API reference}. */ requestAuth: bindApiCall( diff --git a/packages/web-api/src/types/request/apps.ts b/packages/web-api/src/types/request/apps.ts index 1f9a78d81..53ea5ae37 100644 --- a/packages/web-api/src/types/request/apps.ts +++ b/packages/web-api/src/types/request/apps.ts @@ -36,8 +36,8 @@ export interface AppsManifestValidateArguments extends Partial, TokenOver interface UserConnectionConnectedUserIDs { /** - * @description The user IDs to mark as connected. - * At least one of `connected_user_ids` or `disconnected_user_ids` is required; combined they may not exceed 1000 users. + * @description IDs of users connected to the app. + * One of `connected_user_ids` or `disconnected_user_ids` is required; combined they may not exceed 1000. */ connected_user_ids: string[]; disconnected_user_ids?: string[]; @@ -46,8 +46,8 @@ interface UserConnectionConnectedUserIDs { interface UserConnectionDisconnectedUserIDs { connected_user_ids?: string[]; /** - * @description The user IDs to mark as disconnected. - * At least one of `connected_user_ids` or `disconnected_user_ids` is required; combined they may not exceed 1000 users. + * @description IDs of users not connected to the app. + * One of `connected_user_ids` or `disconnected_user_ids` is required; combined they may not exceed 1000. */ disconnected_user_ids: string[]; } @@ -58,48 +58,42 @@ export type AppsUserConnectionBulkUpdateArguments = TokenOverridable & export interface UserConnectionPrimaryProvider { /** - * @description Unique identifier for this provider within the app, up to 150 characters. - * The connect button's `action_id` is derived from it (`auth_provider_connect_{value}`). + * @description Unique identifier for this provider within the app. Included in interaction payloads and used to + * derive the connect button `action_id` (`auth_provider_connect_`). */ value: string; - /** @description Human-readable name of the provider, up to 75 characters. */ + /** @description Human-readable name of the provider. */ name: PlainTextElement; /** - * @description Whether this provider is currently connected. Slack records this state against the user, - * so an omitted value is rejected with `invalid_arguments` instead of defaulting to false. + * @description Whether this provider is currently connected. Required: Slack records this state against the user, + * so an omitted value would be indistinguishable from an explicit false and would silently mark the user disconnected. */ is_connected: boolean; - /** @description Brief description of what this connection enables, up to 150 characters. */ + /** @description Brief description of what this connection enables. */ description?: PlainTextElement; - /** @description URL for the provider icon image. Must be https. Defaults to the app's avatar. */ + /** @description URL for the provider icon image. Must be https. Falls back to the app's avatar when absent or on load failure. */ icon_url?: string; - /** - * @description OAuth redirect URL opened when the user clicks Connect. - * Must be https, on a host (or a subdomain of one) registered in the app manifest's `features.user_connections.auth_hosts`. - */ + /** @description OAuth redirect URL opened when the user clicks Connect. Must be https. */ auth_url?: string; - /** - * @description URL opened when the user clicks Disconnect. - * Must be https, on a host (or a subdomain of one) registered in the app manifest's `features.user_connections.auth_hosts`. - */ + /** @description URL opened when the user clicks Disconnect. Must be https, on a registered auth host. */ disconnect_url?: string; - /** @description Display name of the connected account, up to 75 characters. Shown when `is_connected` is true. */ + /** @description Display name of the connected account, shown when `is_connected` is true. */ connected_identity?: PlainTextElement; - /** @description Additional context about the connection (e.g., org or workspace name), up to 75 characters. */ + /** @description Additional context about the connection (e.g. org or workspace name). */ connected_context?: PlainTextElement; - /** @description Overflow menu shown when connected (e.g., Switch accounts, Disconnect). Requires 2 to 5 `options`. */ + /** @description Overflow menu shown when connected (e.g. Switch accounts, Disconnect). */ accessory?: Overflow; } interface UserConnectionTriggerID { - /** @description Opens a new authorization modal. Required unless `user_id` is provided. */ + /** @description The `trigger_id` from the `user_connection` interactive callback. Opens a new modal. */ trigger_id: string; } interface UserConnectionUserID { /** - * @description Updates the authorization modal already open for this user. Ignored when `trigger_id` is provided. - * Slack records `is_connected` for the user even when no modal is open, and reports that in `response_metadata.warnings`. + * @description The user whose auth modal to update. Required when `trigger_id` is omitted, and ignored when it is + * present. */ user_id: string; } @@ -107,7 +101,7 @@ interface UserConnectionUserID { // https://docs.slack.dev/reference/methods/apps.user.connection.requestAuth export type AppsUserConnectionRequestAuthArguments = TokenOverridable & (UserConnectionTriggerID | UserConnectionUserID) & { - /** @description The provider the user is asked to connect. */ + /** @description The connection to render. Its `icon_url` defaults to the app's own avatar when omitted. */ primary_provider: UserConnectionPrimaryProvider; }; diff --git a/packages/web-api/src/types/response/BlocksValidateResponse.ts b/packages/web-api/src/types/response/BlocksValidateResponse.ts index 26417aede..98ac25f84 100644 --- a/packages/web-api/src/types/response/BlocksValidateResponse.ts +++ b/packages/web-api/src/types/response/BlocksValidateResponse.ts @@ -8,6 +8,7 @@ ///////////////////////////////////////////////////////////////////////////////////////// import type { WebAPICallResult } from '../../WebClient'; + export type BlocksValidateResponse = WebAPICallResult & { error?: string; errors?: Error[]; From 04414a4fdc9cdfc3b479344e48c33859084b5481 Mon Sep 17 00:00:00 2001 From: William Bergamin Date: Thu, 15 Oct 2026 11:56:23 -0400 Subject: [PATCH 4/4] docs(web-api): match user connection field comments to the API reference Align the primary_provider field descriptions with the apps.user.connection.requestAuth reference so the SDK states only what Slack documents. Co-Authored-By: Claude --- packages/web-api/src/types/request/apps.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/web-api/src/types/request/apps.ts b/packages/web-api/src/types/request/apps.ts index 53ea5ae37..efe24eb46 100644 --- a/packages/web-api/src/types/request/apps.ts +++ b/packages/web-api/src/types/request/apps.ts @@ -65,23 +65,23 @@ export interface UserConnectionPrimaryProvider { /** @description Human-readable name of the provider. */ name: PlainTextElement; /** - * @description Whether this provider is currently connected. Required: Slack records this state against the user, - * so an omitted value would be indistinguishable from an explicit false and would silently mark the user disconnected. + * @description Whether this provider is currently connected or disconnected. Slack records this state for the user, + * so an omitted value would be indistinguishable from an explicit `false` and silently mark the user disconnected. */ is_connected: boolean; /** @description Brief description of what this connection enables. */ description?: PlainTextElement; - /** @description URL for the provider icon image. Must be https. Falls back to the app's avatar when absent or on load failure. */ + /** @description URL for the provider icon image. Must be HTTPs format. Falls back to the app's avatar when absent. */ icon_url?: string; - /** @description OAuth redirect URL opened when the user clicks Connect. Must be https. */ + /** @description OAuth redirect URL opened when the user clicks **Connect**. Must be HTTPs format. */ auth_url?: string; - /** @description URL opened when the user clicks Disconnect. Must be https, on a registered auth host. */ + /** @description URL opened when the user clicks **Disconnect**. Must be HTTPs format on a registered auth host. */ disconnect_url?: string; - /** @description Display name of the connected account, shown when `is_connected` is true. */ + /** @description Display name of the connected account, shown when `is_connected` is `true`. */ connected_identity?: PlainTextElement; - /** @description Additional context about the connection (e.g. org or workspace name). */ + /** @description Additional context about the connection (e.g., org or workspace name). */ connected_context?: PlainTextElement; - /** @description Overflow menu shown when connected (e.g. Switch accounts, Disconnect). */ + /** @description Overflow menu shown when connected (e.g., Disconnect, Re-authenticate). */ accessory?: Overflow; }