## §OIP SYSTEM ARTICLE — SLACK (3 operations)
A generated article for one OIP shelf. It lists every operation in this API/CLI/MCP/device/model/core subsystem, links each leaf article, and gives the ledger path for proof.

### Read Order
- scan operations
- open a leaf doc
- run via run_now or POST /api/dispatch
- open receipt
- repair/replay if needed

### Operations
- **SLACK_POST_AS_OWNER** — Post one message to a Slack channel AS THE OWNER — his Slack user, not an app.
  when: anything that should read as the custodian wrote it in Slack. For an app/bot identity use SLACK_POST_AS_APP.
  args: $1 = channel (id like C0123ABCD, or #name) | $2 = the exact message text.
  doc: https://miscsubjects.com/api/dispatch?key=SLACK_POST_AS_OWNER&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=SLACK_POST_AS_OWNER&body=%23general%7Cshipped&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=SLACK_POST_AS_OWNER
- **SLACK_LIST_CHANNELS** — List the Slack channels the owner can post in, as the owner's own Slack user.
  when: before a send, to resolve a channel id. Read-only.
  args: (none)
  doc: https://miscsubjects.com/api/dispatch?key=SLACK_LIST_CHANNELS&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=SLACK_LIST_CHANNELS&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=SLACK_LIST_CHANNELS
- **SLACK_RAW** — Authenticated GET to any Slack Web API method as the owner (user token, oauth2:slack:the custodian), for methods no na
  when: a Slack call nobody has made a row for. Read-only methods only.
  args: $1 = method and query, e.g. auth.test · users.info?user=U123 · conversations.history?channel=C123&limit=20
  doc: https://miscsubjects.com/api/dispatch?key=SLACK_RAW&format=markdown
  run: https://miscsubjects.com/api/dispatch?invoke=SLACK_RAW&body=auth.test&share=<TOKEN>
  history: https://miscsubjects.com/api/invocations?object_id=SLACK_RAW

### Troubleshooting
- If a row's example has placeholders, replace only the placeholder values and preserve separators.
- If a call fails, open its receipt and repair it with POST /api/dispatch {key, body, repairs:'inv_ID'}.
- If token scope denies this system, ask the owner for a row:/rows:/pfx: token scoped to the exact operation set.

Back to the tree: https://miscsubjects.com/api/dispatch?map=1&format=markdown