diff --git a/.changeset/slackbot-skills-info.md b/.changeset/slackbot-skills-info.md new file mode 100644 index 000000000..260e61a98 --- /dev/null +++ b/.changeset/slackbot-skills-info.md @@ -0,0 +1,5 @@ +--- +"@slack/web-api": minor +--- + +feat(web-api): add [`slackbot.skills.info`](https://docs.slack.dev/reference/methods/slackbot.skills.info) method diff --git a/packages/web-api/src/methods.ts b/packages/web-api/src/methods.ts index 73a38ebfe..707f2b08b 100644 --- a/packages/web-api/src/methods.ts +++ b/packages/web-api/src/methods.ts @@ -235,6 +235,7 @@ import type { SearchFilesArguments, SearchMessagesArguments, SlackbotSkillsCreateArguments, + SlackbotSkillsInfoArguments, SlackListsAccessDeleteArguments, SlackListsAccessSetArguments, SlackListsCreateArguments, @@ -520,6 +521,7 @@ import type { SearchFilesResponse, SearchMessagesResponse, SlackbotSkillsCreateResponse, + SlackbotSkillsInfoResponse, SlackListsAccessDeleteResponse, SlackListsAccessSetResponse, SlackListsCreateResponse, @@ -2359,6 +2361,11 @@ export abstract class Methods extends EventEmitter { * @see {@link https://docs.slack.dev/reference/methods/slackbot.skills.create `slackbot.skills.create` API reference}. */ create: bindApiCall(this, 'slackbot.skills.create'), + /** + * @description Returns one Slackbot skill, including its instructions. + * @see {@link https://docs.slack.dev/reference/methods/slackbot.skills.info `slackbot.skills.info` API reference}. + */ + info: bindApiCall(this, 'slackbot.skills.info'), }, }; diff --git a/packages/web-api/src/types/request/index.ts b/packages/web-api/src/types/request/index.ts index dc2253690..85a88c2f2 100644 --- a/packages/web-api/src/types/request/index.ts +++ b/packages/web-api/src/types/request/index.ts @@ -291,7 +291,10 @@ export type { SearchFilesArguments, SearchMessagesArguments, } from './search'; -export type { SlackbotSkillsCreateArguments } from './slackbot'; +export type { + SlackbotSkillsCreateArguments, + SlackbotSkillsInfoArguments, +} from './slackbot'; export type { SlackListsAccessDeleteArguments, SlackListsAccessSetArguments, diff --git a/packages/web-api/src/types/request/slackbot.ts b/packages/web-api/src/types/request/slackbot.ts index 2734bd8e1..a98505791 100644 --- a/packages/web-api/src/types/request/slackbot.ts +++ b/packages/web-api/src/types/request/slackbot.ts @@ -36,3 +36,8 @@ export interface SlackbotSkillsCreateArguments extends TokenOverridable { server_id?: string; }[]; } +// https://docs.slack.dev/reference/methods/slackbot.skills.info +export interface SlackbotSkillsInfoArguments extends TokenOverridable { + /** @description Skill to fetch: a canvas file ID or a `builtin:` reference. */ + skill_id: string; +} diff --git a/packages/web-api/src/types/response/SlackbotSkillsInfoResponse.ts b/packages/web-api/src/types/response/SlackbotSkillsInfoResponse.ts new file mode 100644 index 000000000..6951d658e --- /dev/null +++ b/packages/web-api/src/types/response/SlackbotSkillsInfoResponse.ts @@ -0,0 +1,52 @@ +///////////////////////////////////////////////////////////////////////////////////////// +// // +// !!! 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 SlackbotSkillsInfoResponse = WebAPICallResult & { + error?: string; + needed?: string; + ok?: boolean; + provided?: string; + response_metadata?: ResponseMetadata; + skill?: Skill; + warning?: string; +}; + +export interface ResponseMetadata { + messages?: string[]; +} + +export interface Skill { + access?: string; + category?: string; + creator_id?: string; + date_created?: number; + date_updated?: number; + description?: string; + display_name?: string; + example_prompt?: string; + id?: string; + instructions?: string; + is_official?: boolean; + library_count?: number; + mcp_servers?: McpServer[]; + name?: string; + permalink?: string; + type?: string; + usage_count?: number; + visibility?: string; +} + +export interface McpServer { + app_id?: string; + display_name?: string; + is_available?: boolean; + server_id?: string; + service_type?: string; +} diff --git a/packages/web-api/src/types/response/index.ts b/packages/web-api/src/types/response/index.ts index 791c9b66d..740c55c52 100644 --- a/packages/web-api/src/types/response/index.ts +++ b/packages/web-api/src/types/response/index.ts @@ -293,6 +293,7 @@ export { SearchAllResponse } from './SearchAllResponse'; export { SearchFilesResponse } from './SearchFilesResponse'; export { SearchMessagesResponse } from './SearchMessagesResponse'; export { SlackbotSkillsCreateResponse } from './SlackbotSkillsCreateResponse'; +export { SlackbotSkillsInfoResponse } from './SlackbotSkillsInfoResponse'; export { SlackListsAccessDeleteResponse } from './SlackListsAccessDeleteResponse'; export { SlackListsAccessSetResponse } from './SlackListsAccessSetResponse'; export { SlackListsCreateResponse } from './SlackListsCreateResponse'; diff --git a/packages/web-api/test/types/methods/slackbot.test-d.ts b/packages/web-api/test/types/methods/slackbot.test-d.ts index b10644bbb..22c3b4e47 100644 --- a/packages/web-api/test/types/methods/slackbot.test-d.ts +++ b/packages/web-api/test/types/methods/slackbot.test-d.ts @@ -61,3 +61,14 @@ expectAssignable>([ mcp_servers: [{ service_type: 'app', app_id: 'A1234', server_id: 'Amcp1234' }], }, ]); + +// slackbot.skills.info +// -- sad path +expectError(web.slackbot.skills.info()); // lacking argument +expectError(web.slackbot.skills.info({})); // empty argument +// -- happy path +expectAssignable>([ + { + skill_id: 'F1234', + }, +]);