{
  "info": {
    "_postman_id": "b36246d2-3e08-4d5a-1461-6edfa59fe75d",
    "name": "SandboxAPIs — Slack",
    "description": "Every read SandboxAPIs serves on Slack, pointed at https://slack.sandboxapis.dev.\n\n17 requests, one per served row of our coverage manifest. PATHS ONLY: this file carries no request or\nresponse schema, because a schema is the part of an API description we do not own. It is generated from\ncoverage/COVERAGE_MANIFEST.yaml — our own record of what THIS host answers — and never from a vendor's\npublished specification, several of which may not be redistributed.\n\nThe host is read-only. Every write verb answers the provider's own error shape with a message naming what was\nattempted; the \"Read-only refusal, on purpose\" folder holds one so the shape is discoverable.\n\nNo credentials are needed — any value in `apiKey` is accepted, and a real SandboxAPIs key only raises the rate\nlimit. Path variables left blank are identifiers that move when the live host re-rolls; fill them from a list\nresponse.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{apiKey}}",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://slack.sandboxapis.dev",
      "type": "string",
      "description": "The live Slack host. Swap it for a *.snap. pin to freeze the data for CI."
    },
    {
      "key": "apiKey",
      "value": "any-token",
      "type": "string",
      "description": "No key is required — any value is accepted. A SandboxAPIs key raises the rate limit and rides Authorization: Bearer <key> (where the xoxb-/xoxp- token rides)."
    }
  ],
  "item": [
    {
      "name": "auth",
      "item": [
        {
          "name": "POST /api/auth.test",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/auth.test",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "auth.test"
              ]
            },
            "description": "Served by SandboxAPIs. Family: auth.",
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          }
        }
      ]
    },
    {
      "name": "bookmarks",
      "item": [
        {
          "name": "GET /api/bookmarks.list",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/bookmarks.list",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "bookmarks.list"
              ]
            },
            "description": "Served by SandboxAPIs. Family: bookmarks."
          }
        }
      ]
    },
    {
      "name": "conversations",
      "item": [
        {
          "name": "GET /api/conversations.history",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/conversations.history",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "conversations.history"
              ]
            },
            "description": "Served by SandboxAPIs. Family: conversations."
          }
        },
        {
          "name": "GET /api/conversations.info",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/conversations.info",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "conversations.info"
              ]
            },
            "description": "Served by SandboxAPIs. Family: conversations."
          }
        },
        {
          "name": "GET /api/conversations.list",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/conversations.list",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "conversations.list"
              ]
            },
            "description": "Served by SandboxAPIs. Family: conversations."
          }
        },
        {
          "name": "GET /api/conversations.members",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/conversations.members",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "conversations.members"
              ]
            },
            "description": "Served by SandboxAPIs. Family: conversations."
          }
        },
        {
          "name": "GET /api/conversations.replies",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/conversations.replies",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "conversations.replies"
              ]
            },
            "description": "Served by SandboxAPIs. Family: conversations."
          }
        }
      ]
    },
    {
      "name": "emoji",
      "item": [
        {
          "name": "GET /api/emoji.list",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/emoji.list",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "emoji.list"
              ]
            },
            "description": "Served by SandboxAPIs. Family: emoji.\n\nAnswers an EMPTY collection, and that is the true answer for this universe — not a gap. This workspace has no CUSTOM emoji — the canon's reaction emoji are the standard set, which real Slack never lists here (DECISIONS 2026-08-25 [P34/slack] item 6)"
          }
        }
      ]
    },
    {
      "name": "files",
      "item": [
        {
          "name": "GET /api/files.list",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/files.list",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "files.list"
              ]
            },
            "description": "Served by SandboxAPIs. Family: files.\n\nAnswers an EMPTY collection, and that is the true answer for this universe — not a gap. No message in this universe carries a file — `message` has no attachment column and the fleet's only file entity, `attachment`, hangs off the support desk's ticket comments and macros and - from hello-18's attachmentParents - issues, issue comments, merge requests, alerts and the namespace, never off a chat message (clause re-worded at the hello-18 cutover 2026-09-12: the canon grew, the conclusion did not move); Slack's own answer for a workspace with no files is {ok:true, files:[], paging:{...}} at 200. RULED by the founder 2026-09-12 (round 19), coverage wave W5. It is already the third statement of one fact on this host: reactions.get refuses a `file` argument with file_not_found, and files.upload is a write"
          }
        }
      ]
    },
    {
      "name": "pins",
      "item": [
        {
          "name": "GET /api/pins.list",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/pins.list",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "pins.list"
              ]
            },
            "description": "Served by SandboxAPIs. Family: pins.\n\nAnswers an EMPTY collection, and that is the true answer for this universe — not a gap. No message in this workspace is pinned, on any channel — which is what keeps conversations.history's pin_count: 0 coherent (DECISIONS 2026-08-25 [P34/slack] item 6)"
          }
        }
      ]
    },
    {
      "name": "reactions",
      "item": [
        {
          "name": "GET /api/reactions.get",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/reactions.get",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "reactions.get"
              ]
            },
            "description": "Served by SandboxAPIs. Family: reactions."
          }
        }
      ]
    },
    {
      "name": "search",
      "item": [
        {
          "name": "GET /api/search.messages",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/search.messages",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "search.messages"
              ]
            },
            "description": "Served by SandboxAPIs. Family: search."
          }
        }
      ]
    },
    {
      "name": "team",
      "item": [
        {
          "name": "GET /api/team.info",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/team.info",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "team.info"
              ]
            },
            "description": "Served by SandboxAPIs. Family: team."
          }
        }
      ]
    },
    {
      "name": "usergroups",
      "item": [
        {
          "name": "GET /api/usergroups.list",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/usergroups.list",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "usergroups.list"
              ]
            },
            "description": "Served by SandboxAPIs. Family: usergroups."
          }
        }
      ]
    },
    {
      "name": "users",
      "item": [
        {
          "name": "GET /api/users.info",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/users.info",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users.info"
              ]
            },
            "description": "Served by SandboxAPIs. Family: users."
          }
        },
        {
          "name": "GET /api/users.list",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/users.list",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users.list"
              ]
            },
            "description": "Served by SandboxAPIs. Family: users."
          }
        },
        {
          "name": "GET /api/users.lookupByEmail",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/api/users.lookupByEmail",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "users.lookupByEmail"
              ]
            },
            "description": "Served by SandboxAPIs. Family: users."
          }
        }
      ]
    },
    {
      "name": "Read-only refusal, on purpose",
      "item": [
        {
          "name": "POST /api/auth.test",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{baseUrl}}/api/auth.test",
              "host": [
                "{{baseUrl}}"
              ],
              "path": [
                "api",
                "auth.test"
              ]
            },
            "body": {
              "mode": "raw",
              "raw": "{}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            },
            "description": "This universe is read-only, and this request is here so you can see what that looks like before your\ncode does.\n\nIt answers Slack's own error status and body shape, with a message naming the write that was\nattempted and a link to the roadmap. Nothing mutates. Every other write verb, on every other path,\nanswers the same way — this one is an example, not the only one."
          }
        }
      ]
    }
  ]
}
