PlatformsSlackPeople

edgeapiCacheUsersInfo

Domainpeople
Kindendpoint
doc_id—
Pathedgeapi.slack.com/cache/users/info
Sends—
Readsresults, can_interact.U0A9JFXK21L, can_interact.USLACK, can_interact.USLACKBOT, ok, failed_ids, pending_ids, invalid_ids
Called fromruns/inspect/20261103T065639_mattSlack/script38.js:771 anonymous
reaev_c768a8dd3a32ade2e987e251d0627a66b7d798dc007c87a92e41828826c7a8e2

Seen 11 time(s) in 1 run(s).

ActionOur stepTimesStatusTookAfter step startErrors
inspectstep 4: goto /client820058–518 ms7969–12592 ms—
inspectstep 6: goto /client/T0C4VCD06MR/D0C8VAE7REU320045–47 ms6790–9864 ms—

What it sent and what came back (the newest 2 from our runs)

Read from each run's own recording (rule 73), secrets and signed link tokens taken out. Kept in ~/.logCli/rea/clientFacts.json, so it stays after the run is pruned.

runs/inspect/20261103T065639_mattSlack, step 4: goto /client: 200, 518 ms

Sent:

{
  "query": {
    "_x_app_name": "client",
    "fp": "6f",
    "_x_num_retries": "0"
  },
  "body": "{\"token\":\"xoxc-12165421006739-12156263517591-12492529441700-5bffe6e6a317b9bbab53d938a4526d20e882de6ab372cd46f9f90868bb0322a0\",\"check_interaction\":true,\"include_profile_only_users\":true,\"updated_ids\":{\"USLACK\":0,\"USLACKBOT\":0,\"U0A9JFXK21L\":0}}"
}

Answered:

{
  "results": [
    {
      "id": "USLACKBOT",
      "team_id": "T0C4VCD06MR",
      "name": "slackbot",
      "deleted": false,
      "color": "757575",
      "real_name": "Slackbot",
      "tz": "America/Los_Angeles",
      "tz_label": "Pacific Standard Time",
      "tz_offset": -28800,
      "profile": {
        "title": "",
        "phone": "",
        "skype": "",
        "real_name": "Slackbot",
        "real_name_normalized": "Slackbot",
        "display_name": "Slackbot",
        "display_name_normalized": "Slackbot",
        "fields": null,
        "status_text": "",
        "status_emoji": "",
        "status_emoji_display_info": [],
        "status_expiration": 0,
        "status_clear_on_focus_end": false,
        "avatar_hash": "sv41d8cd98f0",
        "always_active": true,
        "first_name": "slackbot",
        "last_name": "",
        "status_text_canonical": "",
        "team": "T0C4VCD06MR"
      },
      "is_admin": false,
      "is_owner": false,
      "is_primary_owner": false,
      "is_restricted": false,
      "is_ultra_restricted": false,
      "is_bot": false,
      "is_app_user": false,
      "updated": 0,
      "is_email_confirmed": false,
      "who_can_share_contact_card": "EVERYONE"
    },
    {
      "id": "U0A9JFXK21L",
      "team_id": "T0A9H4FM18V",
      "name": "archie",
      "color": "50a0cf",
      "is_bot": false,
      "is_app_user": false,
      "profile": {
        "avatar_hash": "g20ac8b5db69",
        "email": "archie@rheos.app",
        "real_name": "archie",
        "display_name": "",
        "real_name_normalized": "archie",
        "display_name_normalized": "",
        "team": "T0A9H4FM18V"
      },
      "is_stranger": true,
      "updated": 1793356549,
      "who_can_share_contact_card": "EVERYONE"
    },
    {
      "id": "USLACK",
      "team_id": "T0C4VCD06MR",
      "name": "slack",
      "deleted": false,
      "color": "757575",
      "real_name": "Slack",
      "tz": "America/Los_Angeles",
      "tz_label": "Pacific Standard Time",
      "tz_offset": -28800,
      "profile": {
        "title": "",
        "phone": "",
        "skype": "",
        "real_name": "Slack",
        "real_name_normalized": "Slack",
        "display_name": "Slack",
        "display_name_normalized": "Slack",
        "fields": null,
        "status_text": "",
        "status_emoji": "",
        "status_emoji_display_info": [],
        "status_expiration": 0,
        "status_clear_on_focus_end": false,
        "avatar_hash": "svb051040db2",
        "always_active": true,
        "first_name": "Slack",
        "last_name": "",
        "status_text_canonical": "",
        "team": "T0C4VCD06MR"
      },
      "is_admin": false,
      "is_owner": false,
      "is_primary_owner": false,
      "is_restricted": false,
      "is_ultra_restricted": false,
      "is_bot": false,
      "is_app_user": false,
      "updated": 0,
      "is_email_confirmed": false,
      "who_can_share_contact_card": "EVERYONE"
    }
  ],
  "can_interact": {
    "U0A9JFXK21L": true,
    "USLACK": true,
    "USLACKBOT": true
  },
  "ok": true
}

runs/inspect/20261103T065639_mattSlack, step 6: goto /client/T0C4VCD06MR/D0C8VAE7REU: 200, 47 ms

Sent:

{
  "query": {
    "_x_app_name": "client",
    "fp": "6f",
    "_x_num_retries": "0"
  },
  "body": "{\"token\":\"xoxc-12165421006739-12156263517591-12492529441700-5bffe6e6a317b9bbab53d938a4526d20e882de6ab372cd46f9f90868bb0322a0\",\"check_interaction\":true,\"include_profile_only_users\":true,\"updated_ids\":{\"U0C4L7RF7HD\":1793356549,\"U0A9JFXK21L\":1793356549}}"
}

Answered:

{
  "results": [],
  "ok": true
}

What it does

Looks up people by id in the cache service (users/info with check_interaction and updated_ids): it answered results with full user records (USLACKBOT, name, tz, profile) plus can_interact and the failed_ids, pending_ids, invalid_ids lists. Seen 8 times in step 4 (goto /client, 58-518 ms) and 3 times in step 6 (45-47 ms), all 200.

What our machine does with it

Not used by the engine, but it is the same lookup gabriel's hydrator makes with call_edge_api("users/info") (vendor/gabrielSlack/gabriel/client/hydrator.py), which only runs inside gabriel's full client. The engine resolves names with the web API users.info instead (names_for, called by chats, read and the watch).

What can go wrong

An id Slack can't resolve comes back in failed_ids or invalid_ids rather than as an HTTP error, so a reader that only looks at status 200 would miss it. In the engine's own lookup (names_for) a failed user is skipped and the raw id is shown instead of a name.