slackapi / slackapi/node-slack-sdk

`SlackListsItem FieldMessage.message` type does not match API response shape

Open Beginner friendly
#2,598 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area:typescript auto-triage-skip bug pkg:web-api
Dominant language
TypeScript
Stars
3.4k
Forks
688
Avg merge
15h 31m
Merged PRs (30d)
27

Description

Package

@slack/types

SDK Version

@slack/types 2.21.1

Node.js Version

v24.12.0

Operating System

No response

Steps to Reproduce

SlackListsItemFieldMessage in packages/web-api/src/types/request/slackLists.ts defines:

export interface SlackListsItemFieldMessage {
  column_id: string;
  message: string[];
}

The Slack API can return the message field as either:

  • A single message object: "message": {"text":"hello", "ts": "123.456"}
  • An array of message objects: "message":[{"text": "a"}, {"text":"b"}]

The current typing is inaccurate in two ways:

  1. It assumes message is always an array, but the API may return a single object
  2. It types elements as string when they areactually message objects

See java-slack-sdk#1587 for the same API inconsistency on the Java side.

Suggested fix

interface SlackListsItemMessage {
    text?: string;
    ts?: string;
    user?: string;
    team?: string;
    type?: string;
}

export interface SlackListsItemFieldMessage {
    column_id: string;
    message: SlackListsItemMessage | SlackListsItemMessage[];
  }


export interface SlackListsItemFieldMessage {
    column_id: string;
    message: SlackListsItemMessage | SlackListsItemMessage[];
}

This types it as a union so consumers handle both shapes.

Impact

No runtime crash (JavaScript is untyped at runtime), but developers relying on the type will write incorrect code, like calling .map() on a non-array or treating objects as strings.

References

Expected Result

N/A

Actual Result

N/A

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start in packages/web-api/src/types/request/slackLists.ts and compare SlackListsItemFieldMessage with the response shapes described in the issue and the Slack API field-types documentation. Done means the TypeScript definition accurately represents message as either a message object or an array of message objects, including the fields shown.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
api
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
82/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.