Skip to content

SlackListsItem FieldMessage.message type does not match API response shape #2598

@hello-ashleyintech

Description

@hello-ashleyintech

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugM-T: A confirmed bug report. Issues are confirmed when the reproduction steps are documentedgood first issueuntriaged

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions