{
  "api_version": 1,
  "status": "available",
  "permissions": [
    {
      "id": 1,
      "key": "administrator",
      "label": "administrator",
      "description": "expands to the catalogue approved during authorization, including disabled permissions. existing approvals cover 2–66; renewed approvals can include 67. it never overrides scope, ownership, group exclusion, blocks or the prohibited operations."
    },
    {
      "id": 2,
      "key": "messages.read_self",
      "label": "read your messages",
      "description": "reads messages authored by the installer, including delegated messages. history and search require their additional grants."
    },
    {
      "id": 3,
      "key": "messages.read_others",
      "label": "read others messages",
      "description": "reads other authors in authorized chats, including bot authors. blocks and private-message audiences still filter results."
    },
    {
      "id": 4,
      "key": "messages.history",
      "label": "read past messages",
      "description": "allows messages created before this installation's history boundary; requires the applicable author read grant."
    },
    {
      "id": 5,
      "key": "messages.search",
      "label": "search for messages",
      "description": "searches only messages the installation can already read. older results also require messages.history."
    },
    {
      "id": 6,
      "key": "scribbles.read",
      "label": "read scribbles",
      "description": "reads persisted chat strokes, cuts and placements and live drawing previews. it does not grant message bodies or private profile artwork."
    },
    {
      "id": 7,
      "key": "bot_dm",
      "label": "message you 1-on-1",
      "description": "creates or reopens the installer’s bot DM, with a blue bot tag. reading and sending in it still require their respective grants."
    },
    {
      "id": 8,
      "key": "calls.audio.receive",
      "label": "listen to calls",
      "description": "subscribes to separate audio tracks identified by participant; requires an authorized joined bot call session."
    },
    {
      "id": 9,
      "key": "calls.video.receive",
      "label": "receive video feeds",
      "description": "subscribes to participant camera tracks; does not include screen tracks or audio."
    },
    {
      "id": 10,
      "key": "calls.screen.receive",
      "label": "receive screen share feeds",
      "description": "subscribes to screen video; screen audio additionally requires calls.audio.receive. never permits publishing a screen."
    },
    {
      "id": 11,
      "key": "attachments.download",
      "label": "download sent attachments",
      "description": "downloads bytes only for messages currently readable by this installation, including the author/history/audience checks."
    },
    {
      "id": 12,
      "key": "polls.results",
      "label": "view poll results",
      "description": "reads counts, outcomes and public voter identities for readable polls. anonymous polls never disclose voters."
    },
    {
      "id": 13,
      "key": "presence.read",
      "label": "view online statuses",
      "description": "reads visible status for eligible users; respects their online-visibility preference and blocks. no device/session or last-seen telemetry."
    },
    {
      "id": 14,
      "key": "typing.read",
      "label": "view typing indicators",
      "description": "receives transient typing activity in authorized chats, respecting typing privacy. never includes draft text."
    },
    {
      "id": 15,
      "key": "groups.members.read",
      "label": "view group member lists",
      "description": "reads the roster and basic identity of members in authorized groups; full profiles require profile read grants."
    },
    {
      "id": 16,
      "key": "friends.read",
      "label": "view your friend list",
      "description": "reads the installer’s accepted friends with basic identity, not their private profiles or messages."
    },
    {
      "id": 17,
      "key": "friends.requests.read",
      "label": "view pending friend requests",
      "description": "reads the installer’s incoming and outgoing pending requests with basic identity."
    },
    {
      "id": 18,
      "key": "profile.read_self",
      "label": "view your profile",
      "description": "reads the installer’s public profile fields and artwork, excluding credentials, recovery contacts and private account data."
    },
    {
      "id": 19,
      "key": "profile.read_others",
      "label": "view others profiles",
      "description": "reads profiles the installer is eligible to view, subject to privacy and blocks."
    },
    {
      "id": 20,
      "key": "profile.write",
      "label": "modify your profile",
      "description": "writes all editable Profile settings: display name, about me, pronouns, avatar, banner, gradient, profile/nameplate artwork, nameplate colors, online-indicator color and announcement pack. never username, roles, badges or points."
    },
    {
      "id": 21,
      "key": "settings.write",
      "label": "modify your settings",
      "description": "reads and changes settings outside profile, testing, stickers and account. includes alerts, quiet hours, appearance, chat/media, call/audio preferences and privacy preferences; never exports, reports, credentials, sessions or permission grants."
    },
    {
      "id": 22,
      "key": "chats.mute",
      "label": "mute and unmute chats",
      "description": "reads and changes only the installer’s mute state in authorized chats; does not change anyone else’s notifications."
    },
    {
      "id": 23,
      "key": "commands",
      "label": "create and respond to commands",
      "description": "registers application commands and receives installer invocations. message responses require the appropriate bot send grant; command arguments are delivered without whole-chat read access."
    },
    {
      "id": 24,
      "key": "notifications.send",
      "label": "send you notifications",
      "description": "sends the installer an app notification, subject to their blocks, mute/alert preferences and quotas. cannot broadcast to other users."
    },
    {
      "id": 25,
      "key": "stickers.manage",
      "label": "create, view, and remove your stickers",
      "description": "manages the installer’s sticker library and consumes their normal storage/count quota. cannot delete another owner’s original asset."
    },
    {
      "id": 26,
      "key": "bot.messages.send",
      "label": "send messages (as a bot)",
      "description": "creates ordinary messages with the application’s bot identity."
    },
    {
      "id": 27,
      "key": "bot.messages.ephemeral",
      "label": "send ephemeral messages (as a bot)",
      "description": "creates private messages for this installation’s user in an eligible chat; faint background and “(only visible to you)” label."
    },
    {
      "id": 28,
      "key": "bot.messages.edit",
      "label": "edit messages (as a bot)",
      "description": "edits messages created by this application through this installation; cannot edit other installations’ messages."
    },
    {
      "id": 29,
      "key": "bot.messages.delete",
      "label": "delete messages (as a bot)",
      "description": "deletes messages created by this application through this installation; no message moderation."
    },
    {
      "id": 30,
      "key": "bot.scribbles.write",
      "label": "create and edit scribbles (as a bot)",
      "description": "creates and updates strokes owned by this bot installation; deletion and erasure require bot.scribbles.erase."
    },
    {
      "id": 31,
      "key": "bot.scribbles.erase",
      "label": "erase scribbles (as a bot)",
      "description": "erases only strokes owned by this bot installation, by whole stroke or cut path."
    },
    {
      "id": 32,
      "key": "bot.stickers.send",
      "label": "send stickers (as a bot)",
      "description": "sends any sticker in the installer’s library or uploads/sends an application-owned sticker. the library’s sendable picker is included; library mutation is not."
    },
    {
      "id": 33,
      "key": "bot.gifs.send",
      "label": "send gifs (as a bot)",
      "description": "searches the supported GIF catalogue and sends a resolved GIF as the bot."
    },
    {
      "id": 34,
      "key": "bot.placements.write",
      "label": "drag and remove stickers and gifs (as a bot)",
      "description": "moves/removes only this bot installation’s sticker/GIF placements."
    },
    {
      "id": 35,
      "key": "bot.attachments.send",
      "label": "send attachments (as a bot)",
      "description": "uploads and sends supported files as the bot, with existing media validation and quotas."
    },
    {
      "id": 36,
      "key": "bot.polls.create",
      "label": "create polls (as a bot)",
      "description": "creates a poll with bot authorship. does not permit bot voting."
    },
    {
      "id": 37,
      "key": "bot.polls.close",
      "label": "close polls (as a bot)",
      "description": "closes only polls created by this bot installation."
    },
    {
      "id": 38,
      "key": "bot.pins.write",
      "label": "pin and unpin messages (as a bot)",
      "description": "pins eligible readable messages as the bot; removes only pins attributed to this installation."
    },
    {
      "id": 39,
      "key": "bot.reactions.write",
      "label": "add and remove reactions (as a bot)",
      "description": "adds/removes this bot installation’s reactions on eligible readable messages."
    },
    {
      "id": 40,
      "key": "bot.games.start",
      "label": "start games (as a bot)",
      "description": "creates a game session/invitation but never adds the bot as a player. without an active call it starts with zero players."
    },
    {
      "id": 41,
      "key": "bot.groups.create",
      "label": "create groups (as a bot)",
      "description": "creates a group attributed to the bot, with the installer as human owner. normal invitation eligibility applies."
    },
    {
      "id": 42,
      "key": "bot.calls.start",
      "label": "start calls (as a bot)",
      "description": "starts or obtains a call in an authorized chat. does not itself join, publish or receive media."
    },
    {
      "id": 43,
      "key": "bot.calls.speak",
      "label": "speak in calls (as a bot)",
      "description": "publishes a bot audio track in an authorized joined session; never uses the installer’s microphone."
    },
    {
      "id": 44,
      "key": "bot.calls.join_with_user",
      "label": "join calls you are in (as a bot)",
      "description": "joins only while the installer is a participant; leaves when the installer leaves unless join_all is also granted."
    },
    {
      "id": 45,
      "key": "bot.calls.join_all",
      "label": "join all calls (as a bot)",
      "description": "joins eligible calls in authorized chats even when the installer is absent; no discovery or admission outside scope."
    },
    {
      "id": 46,
      "key": "bot.calls.video",
      "label": "display a video feed (as a bot)",
      "description": "publishes a bot camera/video track in an authorized joined session; never enables the installer’s camera."
    },
    {
      "id": 47,
      "key": "bot.calls.invite",
      "label": "invite users to a call (as a bot)",
      "description": "proposes invitations using existing call voting, recipient acceptance, block and eligibility rules; cannot silently admit users."
    },
    {
      "id": 48,
      "key": "user.messages.send",
      "label": "send messages (as you)",
      "description": "sends as the installer with visible “via [bot]” attribution and a private activity record."
    },
    {
      "id": 49,
      "key": "user.messages.edit",
      "label": "edit messages (as you)",
      "description": "edits the installer’s ordinary messages, including ones they wrote manually, preserving bot edit attribution."
    },
    {
      "id": 50,
      "key": "user.messages.delete",
      "label": "delete messages (as you)",
      "description": "deletes only the installer’s messages; group ownership does not authorize deleting another person’s message."
    },
    {
      "id": 51,
      "key": "user.scribbles.write",
      "label": "create and edit scribbles (as you)",
      "description": "creates and edits the installer’s strokes, with delegated attribution."
    },
    {
      "id": 52,
      "key": "user.scribbles.erase",
      "label": "erase scribbles (as you)",
      "description": "erases only the installer’s strokes, by whole stroke or cut path."
    },
    {
      "id": 53,
      "key": "user.stickers.send",
      "label": "send stickers (as you)",
      "description": "sends only stickers uploaded by the installer and still in their library; adopted or bot-owned stickers are ineligible."
    },
    {
      "id": 54,
      "key": "user.gifs.send",
      "label": "send gifs (as you)",
      "description": "searches and sends supported catalogue GIFs with delegated attribution."
    },
    {
      "id": 55,
      "key": "user.placements.write",
      "label": "drag and remove stickers and gifs (as you)",
      "description": "moves/removes only the installer’s placements."
    },
    {
      "id": 56,
      "key": "user.attachments.send",
      "label": "send attachments (as you)",
      "description": "uploads and sends files as the installer, using their normal quotas."
    },
    {
      "id": 57,
      "key": "user.polls.create",
      "label": "create polls (as you)",
      "description": "creates a poll owned by the installer with delegated attribution."
    },
    {
      "id": 58,
      "key": "user.polls.close",
      "label": "close polls (as you)",
      "description": "closes only polls owned by the installer."
    },
    {
      "id": 59,
      "key": "user.polls.vote",
      "label": "vote in polls (as you)",
      "description": "casts, replaces or clears the installer’s vote; one user remains one voter. never accepts a bot actor."
    },
    {
      "id": 60,
      "key": "user.pins.write",
      "label": "pin and unpin messages (as you)",
      "description": "pins eligible readable messages and removes pins attributed to the installer."
    },
    {
      "id": 61,
      "key": "user.reactions.write",
      "label": "add and remove reactions (as you)",
      "description": "adds/removes only the installer’s reactions on eligible readable messages."
    },
    {
      "id": 62,
      "key": "user.friends.request",
      "label": "send friend requests (as you)",
      "description": "sends or cancels the installer’s own outgoing requests, subject to existing recipient preferences and blocks."
    },
    {
      "id": 63,
      "key": "user.friends.respond",
      "label": "accept and deny friend requests (as you)",
      "description": "accepts or denies incoming requests addressed to the installer; cannot manufacture a reciprocal acceptance."
    },
    {
      "id": 64,
      "key": "user.blocks.write",
      "label": "block and unblock users (as you)",
      "description": "changes the installer’s blocks; no ability to remove another user’s block."
    },
    {
      "id": 65,
      "key": "user.groups.write",
      "label": "modify groups you own (as you)",
      "description": "changes name, icon and member-invitation settings of an authorized group the installer still owns; no ownership transfer, group deletion or bot-exclusion management."
    },
    {
      "id": 66,
      "key": "user.groups.members",
      "label": "modify members in groups you own (as you)",
      "description": "invites/removes human members in authorized groups the installer still owns, under normal membership limits. cannot remove the owner or alter group bot exclusions."
    },
    {
      "id": 67,
      "key": "bot.messages.components",
      "label": "create interactive displays",
      "description": "adds styled, interactive components to this installation’s bot messages. sending, editing, private replies, commands and audio still require their respective permissions. clicks disclose only the acting user and submitted values."
    }
  ]
}
