Duvet DOCS
GitHub

Team & Application Resources

Teams group the developers who build bots. A team owns applications, and an application can have one bot user and slash command manifests, and receives interactions. The endpoints are in Teams & Applications.

Team Object

FieldTypeDescription
id stringThe team's UUID (v7, time-ordered)
name stringTeam name
owner_id stringUser who created the team, and its only admin
created_at ISO 8601When the team was created
updated_at ISO 8601When the team was last updated
deleted_at string?ISO 8601 soft-delete timestamp

Example

{
  "id": "019d2a41-7c10-7b3e-9a52-1f6c0d8e4b21",
  "name": "Night Shift",
  "owner_id": "019cf96a-3d5b-72c5-830f-75e85355d078",
  "created_at": "2026-04-02T18:20:11.000Z",
  "updated_at": "2026-04-02T18:20:11.000Z",
  "deleted_at": null
}

Team Member Object

FieldTypeDescription
team_id stringThe team
user_id stringThe member's user ID
role integer0 = admin (the team's creator), 1 = member
created_at ISO 8601When the user joined the team
username stringThe member's username
alias string?The member's display name
avatar string?Avatar attachment ID

Example

{
  "team_id": "019d2a41-7c10-7b3e-9a52-1f6c0d8e4b21",
  "user_id": "019cf96a-3d5b-72c5-830f-75e85355d078",
  "role": 0,
  "created_at": "2026-04-02T18:20:11.000Z",
  "username": "MARCROCK22",
  "alias": null,
  "avatar": "9bd6da82-c850-424b-89a0-9e4733263a45"
}

Team Invite Object

FieldTypeDescription
id stringThe invite's ID
team_id stringThe team the user is invited to
user_id stringThe invited user
invited_by stringThe admin who sent the invite
created_at ISO 8601When the invite was sent

Pending Team Invite Object

A Team Invite as the invited user sees it, with two more fields:

FieldTypeDescription
id stringThe invite's ID
team_id stringThe team the user is invited to
user_id stringThe invited user
invited_by stringThe admin who sent the invite
created_at ISO 8601When the invite was sent
team_name stringThe team's name
invited_by_username stringUsername of the admin who sent the invite

Example

{
  "id": "6f1c2e9a-4b7d-4e21-9c3a-2d8f5b0e7a14",
  "team_id": "019d2a41-7c10-7b3e-9a52-1f6c0d8e4b21",
  "user_id": "019cf96a-4a1c-72c5-830f-8b2e44a19c03",
  "invited_by": "019cf96a-3d5b-72c5-830f-75e85355d078",
  "created_at": "2026-04-03T09:12:40.000Z",
  "team_name": "Night Shift",
  "invited_by_username": "MARCROCK22"
}

Application Object

FieldTypeDescription
id stringThe application's UUID (v7, time-ordered)
team_id stringThe team that owns the application
name stringApplication name
description string?Application description
icon string?Icon, stored as the team set it
bot_user_id string?The bot's user ID, or null until a bot is created
public booleanWhether anyone with ManageBots in a space can add the bot there. A private bot can only be added by members of its team
created_at ISO 8601When the application was created
updated_at ISO 8601When the application was last updated
deleted_at string?ISO 8601 soft-delete timestamp

Field bot_token_hash is never included in API responses.

Example

{
  "id": "019d2a45-0b9e-7d41-8f63-5a2c7e1d9b30",
  "team_id": "019d2a41-7c10-7b3e-9a52-1f6c0d8e4b21",
  "name": "Moderator",
  "description": "Keeps the peace",
  "icon": null,
  "bot_user_id": "019d2a46-2f4a-7c88-b1d5-7e9a3c6f0d12",
  "public": true,
  "created_at": "2026-04-02T18:25:03.000Z",
  "updated_at": "2026-04-05T10:02:47.000Z",
  "deleted_at": null
}

Application Command Object

A slash command manifest: a named list of slash commands an application provides.

FieldTypeDescription
id stringThe manifest's UUID (v7, time-ordered)
name stringManifest name, unique within the application
description ?stringManifest description; omitted when not set
version ISO 8601When the manifest last changed: set on creation and on every update
application_id stringThe application that owns the manifest
commands SlashCommandData[]The slash commands in the manifest

Example

{
  "id": "019d2a50-61c3-7a0e-9d24-0c8b5f3e2a77",
  "name": "moderation",
  "description": "Moderation commands",
  "version": "2026-04-08T03:45:12.000Z",
  "application_id": "019d2a45-0b9e-7d41-8f63-5a2c7e1d9b30",
  "commands": [
    {
      "name": "warn",
      "options": [
        { "name": "user", "type": "user" },
        { "name": "reason", "type": "string" }
      ]
    }
  ]
}

Slash Command Data Object

Describes a slash command in a manifest, and the command a user invoked in an Interaction.

FieldTypeDescription
name stringCommand name
subcommand_group_name ?stringSubcommand group, for nested commands
subcommand_name ?stringSubcommand name
options ?CommandOption[]The command's options

Command Option Object

FieldTypeDescription
name stringOption name
type stringOption type, for example string, integer, boolean, user, channel, role or mentionable. The API doesn't check it
value ?stringThe value the user gave, in interactions
options ?CommandOption[]Nested options

Interaction Object

Something a user did that an application should handle, like invoking one of its slash commands. Bots receive it from Get Next Interaction.

FieldTypeDescription
id stringThe interaction's UUID (v7, time-ordered)
application_id stringThe application that receives it
type integer0 = command, 1 = input from a component
context integerWhere it happened: 0 = space, 1 = private chat with the bot, 2 = private room
input_data ?InteractionInputDataThe component input, for type 1
slash_command ?SlashCommandDataThe invoked command, for type 0
member ?InteractionMemberThe author's membership in the space, when the interaction happened in one
space ?InteractionSpaceThe space, when the interaction happened in one
room ?InteractionRoomThe room, when one was given
author InteractionUser?The user who triggered it (always present)

Example

{
  "id": "019d3b10-8e42-7f15-a3c9-6d1e0b7f4c58",
  "application_id": "019d2a45-0b9e-7d41-8f63-5a2c7e1d9b30",
  "type": 0,
  "context": 0,
  "slash_command": {
    "name": "warn",
    "options": [
      { "name": "user", "type": "user", "value": "019cf96a-4a1c-72c5-830f-8b2e44a19c03" },
      { "name": "reason", "type": "string", "value": "spam" }
    ]
  },
  "member": {
    "id": "019cf96a-5c3d-74e2-a1b3-8d4f6e2a9c01",
    "space_id": "019cf96a-1a2b-71d4-920e-5c3a7b8d4f60",
    "user_id": "019cf96a-3d5b-72c5-830f-75e85355d078",
    "alias": "Marc"
  },
  "space": {
    "id": "019cf96a-1a2b-71d4-920e-5c3a7b8d4f60",
    "name": "Duvet HQ",
    "description": null,
    "owner_id": "019cf96a-3d5b-72c5-830f-75e85355d078",
    "banner": null,
    "locale": "en-US"
  },
  "room": {
    "id": "019cf96a-4a1c-72c5-830f-8b2e44a19c10",
    "space_id": "019cf96a-1a2b-71d4-920e-5c3a7b8d4f60",
    "parent_id": null,
    "type": 1,
    "name": "general",
    "description": null,
    "position": 0,
    "nsfw": false
  },
  "author": {
    "id": "019cf96a-3d5b-72c5-830f-75e85355d078",
    "username": "MARCROCK22",
    "verified": true,
    "alias": null,
    "avatar": "9bd6da82-c850-424b-89a0-9e4733263a45",
    "banner": null,
    "custom": "",
    "is_bot": false
  }
}

Interaction Input Data Object

FieldTypeDescription
custom_id stringID of the component that was used, like a button or a select menu
values ?string[]The selected or submitted values

Interaction User Object

The author of an interaction. It has fewer fields than the full User object.

FieldTypeDescription
id stringThe user's ID
username stringUsername
verified booleanWhether the user verified their email
alias string?Display name
avatar string?Avatar attachment ID
banner string?Banner attachment ID
custom stringCustom status text
is_bot booleanWhether the user is a bot

Interaction Member Object

FieldTypeDescription
id stringThe member's ID
space_id stringThe space
user_id stringThe user's ID
alias string?Server-specific nickname

Interaction Space Object

FieldTypeDescription
id stringThe space's ID
name stringSpace name
description string?Space description
owner_id stringThe space owner's user ID
banner string?Banner attachment ID
locale string?The space's preferred locale

Interaction Room Object

FieldTypeDescription
id stringThe room's ID
space_id string?The room's space
parent_id string?The category the room is in
type integerRoom type (see Room Type in the introduction)
name stringRoom name
description string?Room description
position integerSorting position within its parent
nsfw booleanWhether the room is marked as NSFW