`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.

Assessment

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

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.

Description

area:typescript auto-triage-skip bug pkg:web-api
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

Dominant language
TypeScript
Stars
3.4k
Forks
688
Avg merge
15h 31m
Merged PRs (30d)
27

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.

More from slackapi/node-slack-sdk

All issues in slackapi/node-slack-sdk

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.