Repository navigation
feat: add webapi response changes as of 2026-08-22 - #1636
slackapi[bot] wants to merge 215 commits into
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #1636 +/- ##
============================================
+ Coverage 73.65% 73.75% +0.09%
- Complexity 4675 4695 +20
============================================
Files 487 488 +1
Lines 14659 14722 +63
Branches 1525 1544 +19
============================================
+ Hits 10797 10858 +61
+ Misses 2958 2949 -9
- Partials 904 915 +11
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. |
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 reverts commit 5e6ff8b.
…sts message field + remote test coverage" This reverts commit 2787334.
This reverts commit 6d94dae.
…MessageRef>" This reverts commit 388afd3.
An ad-hoc runner run merged a full rich Message object into the response_metadata.messages field of every slackLists.* sample (~516 lines each: attachments, bot_profile, wibblr, nested recursion). That field on a slackLists response carries warning strings, not a chat message — the content is bogus and broke PR #1636's diff. Restore all 10 slackLists samples to their main-branch state (clean, empty response_metadata.messages). Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
…_denied audit action ❤️ Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
…ction ❤️ Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
…ect) The live API returns ai_summary as an object when populated but an empty string when absent, so the earlier String typing failed with "Expected STRING but was BEGIN_OBJECT at path $.ai_summary". Object tolerates both shapes. ❤️ Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
❤️ Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
…humb_1024 properties to Attachment.AttachmentMetadata ❤️ Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
…_ids_to_exclude_from_archive_leave_suggestions, pref.display_real_names_in_mentions, and mcp_slack_create_developer_sandbox_tool_called actions to Actions ❤️ Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
…earch_consented_changed, and user_logout_dbsc_keyless_session actions to Actions ❤️ Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
❤️ Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
❤️ Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com>
Replace a live value from a connector workflow in the admin.apps.activities.list sample with a placeholder. The keys and shape are unchanged. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Replace the untyped map for trigger config function inputs with a FunctionInput class that holds the label, value, hidden and locked fields. The value stays an Object because it can be a string or an object. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ations.list sample Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…_user_id to ConversationProperties.AgentSession ❤️ Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
❤️ 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.