Input & Output
The shared config-key pattern, output ports, and standard result fields
Input Shape
Every operation on this node reads its configuration through the same three-tier pattern:
- Routing keys —
resourceandoperationselect which of the 42 feature partials handles the call. - Credential keys —
botToken(inline) orcredentialID(vault).message/searchanduser/updateProfileuse a user-level token instead — see Authentication & Setup. - Operation-specific fields — documented per-operation on the five resource pages (Message, Channel, File, Reaction, User, User Group).
Each operation is backed by a settings DTO (e.g. SendMessageInfo, ChannelCreateInfo) whose LoadFrom(ConfigDataPropertyBag) method reads the config keys, and whose Validate() method reports the first missing/invalid field.
Output Ports
Every Slack node instance is created with two output ports via GetOrCreatePortSuccessAndError():
| Port | When |
|---|---|
success | The Slack API call returned "ok": true and any operation-level validation passed. |
error | Validation failed before the call (e.g. missing channel), the Slack API returned "ok": false, credential resolution failed, or an unhandled exception occurred. |
Standard Success Shape
Every successful operation writes at minimum:
{
"status": "success",
"resource": "message",
"operation": "send",
"items": [ { /* operation-specific result fields */ } ]
}
The items array wraps the operation's specific result object so downstream nodes can iterate it uniformly, regardless of whether the operation returns a single record (e.g. message/send) or a list (e.g. channel/getMany).
Standard Error Shape
{
"status": "error",
"errorCode": "MISSING_BOT_TOKEN",
"resource": "message",
"operation": "send",
"message": "botToken is required"
}
| Error Code | Meaning |
|---|---|
MISSING_BOT_TOKEN | Neither botToken nor a resolvable credentialID was supplied. |
CREDENTIAL_RESOLVER_NOT_CONFIGURED | credentialID was set but no ICredentialResolver is registered in DI. |
CREDENTIAL_NOT_FOUND | credentialID does not resolve to a stored bearer-token credential. |
ENGINE_NOT_SUPPORTED | message/sendAndWait only — workflow suspension isn't implemented yet. See Roadmap. |
(Slack error string, e.g. channel_not_found) | Passed through verbatim from Slack's error field when "ok": false. See Troubleshooting. |
Tip: The Slack Web API always returns HTTP 200 — success or failure is signaled purely by the
ok boolean in the JSON body. The Slack service layer (SlackHttpHelper.ParseOk) handles this transparently, so this node's error port behaves the same whether the failure came from Slack, from input validation, or from an exception.