feat: add webapi response changes as of 2026-08-22 - #1636
Conversation
❌ 22 Tests Failed:
View the top 3 failed test(s) by shortest run time
To view more test analytics, go to the Test Analytics Dashboard |
Detected by the runner's audit-log test (getActions_detectingNewOnes) as an unknown App action returned by the live audit API. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
The live audit API returns this action under getUser(), not getApp() (confirmed by a local task test:audit run). a205d62 declared it in Actions.App, so getActions_detectingNewOnes still failed on the User loop. Move it to the correct bucket. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
The sample-JSON masker blanks the Lists item `message` field to `[""]` because the live value is often empty, which makes downstream type generation infer `string[]` instead of the message-object shape the API actually returns. Add a path-gated (`/api/slackLists.`) branch that injects a populated Message, so the sample reflects the real object shape. Fixes the sample side of slackapi/node-slack-sdk#2598 (wrong TS response type). Separate from java-slack-sdk#1587, the already-fixed runtime deserialization crash. ❤️ Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
This reverts commit 6b04b0d.
The Lists item `message` field response is an array of message references,
verified against the live API on two surfaces (slackLists.items.list and the
conversations.replies/history nested list_record path): both return
List<{value, channel_id, ts, thread_ts?}>, always an array, with thread_ts
present only for threaded-reply references. No single-object form was
observed on either endpoint.
This replaces the earlier `Message`-typed modeling (#1590), whose element
type (a full chat Message) does not match the actual payload, and whose
single-object/array normalization handled a shape the API does not return.
The custom test deserializer is reduced to a pass-through and its tests are
rewritten against the verified MessageRef shape.
EXPERIMENTAL / not final: this fixes the RESPONSE shape only. The request
side of the field takes an array of permalink URL strings (List<String>),
which this single type does not model — the request/response split still
needs a design decision (see the PR discussion). Marking experimental so it
is reviewed, not merged as-is.
❤️
Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
|
With ListRecord.Field.message typed as List<MessageRef>, the message field needs no custom normalization — default Gson deserialization is correct — so the adapter had been reduced to a pass-through. Delete it and drop its registration in the test GsonFactory. ListRecordFieldTest still passes. ❤️ Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
…age field + remote test coverage
Adds a Gson adapter so a single List<MessageRef> models the asymmetric Lists
message field correctly in both directions (verified against the live API):
- request: serializes each MessageRef to its `value` -> message: ["<permalink>"]
(the API rejects object form: "must provide a string")
- response: deserializes {value, channel_id, ts, thread_ts?} objects (and
tolerates bare-string elements defensively)
Registers the adapter in both the main and test GsonFactory. Extends the
remote slacklists_Test to add a message column, post a message, reference it
by permalink, and assert the echoed reference shape — so the generated sample
carries the real message field instead of a degenerate [""]. The live remote
test passes (3/3) and the raw capture shows the correct
{value, channel_id, ts} shape.
Still EXPERIMENTAL / not final (see PR discussion): this is the response/
request modeling for the message field via one type; review before merge. The
committed sample is regenerated by the runner from this capture.
Fixes the Java half of node-slack-sdk#2598 (node response types generate from
these Java samples). Supersedes the Message-typed modeling from #1590 for this
field.
❤️
Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
This PR updates the web API client and model based on the production E2E test results.
Category
Requirements
Please read the Contributing guidelines and Code of Conduct before creating this issue or pull request. By submitting, you agree to those rules.