From b9853622523d1be70e3f754d552f5b984fff8739 Mon Sep 17 00:00:00 2001 From: Almeida Date: Fri, 20 Mar 2026 10:16:08 +0000 Subject: [PATCH] feat(Application): add activity instance types and endpoint (#1578) Co-authored-by: Claude Opus 4.6 (1M context) --- deno/payloads/v10/application.ts | 62 ++++++++++++++++++++++++++++++++ deno/payloads/v9/application.ts | 62 ++++++++++++++++++++++++++++++++ deno/rest/v10/application.ts | 11 +++++- deno/rest/v10/mod.ts | 8 +++++ deno/rest/v9/application.ts | 11 +++++- deno/rest/v9/mod.ts | 8 +++++ payloads/v10/application.ts | 62 ++++++++++++++++++++++++++++++++ payloads/v9/application.ts | 62 ++++++++++++++++++++++++++++++++ rest/v10/application.ts | 11 +++++- rest/v10/index.ts | 8 +++++ rest/v9/application.ts | 11 +++++- rest/v9/index.ts | 8 +++++ 12 files changed, 320 insertions(+), 4 deletions(-) diff --git a/deno/payloads/v10/application.ts b/deno/payloads/v10/application.ts index 415411f8..428a1c24 100644 --- a/deno/payloads/v10/application.ts +++ b/deno/payloads/v10/application.ts @@ -317,6 +317,68 @@ export enum ApplicationRoleConnectionMetadataType { BooleanNotEqual, } +/** + * @see {@link https://discord.com/developers/docs/resources/application#get-application-activity-instance-activity-location-kind-enum} + */ +export enum ActivityLocationKind { + /** + * Location is a guild channel + */ + GuildChannel = 'gc', + /** + * Location is a private channel, such as a DM or GDM + */ + PrivateChannel = 'pc', +} + +/** + * @see {@link https://discord.com/developers/docs/resources/application#get-application-activity-instance-activity-location-object} + */ +export interface APIActivityLocation { + /** + * Unique identifier for the location + */ + id: string; + /** + * Enum describing kind of location + */ + kind: ActivityLocationKind; + /** + * ID of the channel + */ + channel_id: Snowflake; + /** + * ID of the guild + */ + guild_id?: Snowflake | null; +} + +/** + * @see {@link https://discord.com/developers/docs/resources/application#get-application-activity-instance-activity-instance-object} + */ +export interface APIActivityInstance { + /** + * Application ID + */ + application_id: Snowflake; + /** + * Activity instance ID + */ + instance_id: string; + /** + * Unique identifier for the launch + */ + launch_id: Snowflake; + /** + * Location the instance is running in + */ + location: APIActivityLocation; + /** + * IDs of the users currently connected to the instance + */ + users: Snowflake[]; +} + /** * @see {@link https://discord.com/developers/docs/resources/application#application-object-application-event-webhook-status} */ diff --git a/deno/payloads/v9/application.ts b/deno/payloads/v9/application.ts index 415411f8..428a1c24 100644 --- a/deno/payloads/v9/application.ts +++ b/deno/payloads/v9/application.ts @@ -317,6 +317,68 @@ export enum ApplicationRoleConnectionMetadataType { BooleanNotEqual, } +/** + * @see {@link https://discord.com/developers/docs/resources/application#get-application-activity-instance-activity-location-kind-enum} + */ +export enum ActivityLocationKind { + /** + * Location is a guild channel + */ + GuildChannel = 'gc', + /** + * Location is a private channel, such as a DM or GDM + */ + PrivateChannel = 'pc', +} + +/** + * @see {@link https://discord.com/developers/docs/resources/application#get-application-activity-instance-activity-location-object} + */ +export interface APIActivityLocation { + /** + * Unique identifier for the location + */ + id: string; + /** + * Enum describing kind of location + */ + kind: ActivityLocationKind; + /** + * ID of the channel + */ + channel_id: Snowflake; + /** + * ID of the guild + */ + guild_id?: Snowflake | null; +} + +/** + * @see {@link https://discord.com/developers/docs/resources/application#get-application-activity-instance-activity-instance-object} + */ +export interface APIActivityInstance { + /** + * Application ID + */ + application_id: Snowflake; + /** + * Activity instance ID + */ + instance_id: string; + /** + * Unique identifier for the launch + */ + launch_id: Snowflake; + /** + * Location the instance is running in + */ + location: APIActivityLocation; + /** + * IDs of the users currently connected to the instance + */ + users: Snowflake[]; +} + /** * @see {@link https://discord.com/developers/docs/resources/application#application-object-application-event-webhook-status} */ diff --git a/deno/rest/v10/application.ts b/deno/rest/v10/application.ts index 64ac4c69..73525d91 100644 --- a/deno/rest/v10/application.ts +++ b/deno/rest/v10/application.ts @@ -1,4 +1,8 @@ -import type { APIApplication, APIApplicationRoleConnectionMetadata } from '../../payloads/v10/application.ts'; +import type { + APIActivityInstance, + APIApplication, + APIApplicationRoleConnectionMetadata, +} from '../../payloads/v10/application.ts'; import type { _Nullable, _StrictPartial } from '../../utils/internals.ts'; /** @@ -45,3 +49,8 @@ export type RESTPatchCurrentApplicationJSONBody = _StrictPartial< * @see {@link https://discord.com/developers/docs/resources/application#edit-current-application} */ export type RESTPatchCurrentApplicationResult = APIApplication; + +/** + * @see {@link https://discord.com/developers/docs/resources/application#get-application-activity-instance} + */ +export type RESTGetAPIApplicationActivityInstanceResult = APIActivityInstance; diff --git a/deno/rest/v10/mod.ts b/deno/rest/v10/mod.ts index 6020c2cd..1cdecc56 100644 --- a/deno/rest/v10/mod.ts +++ b/deno/rest/v10/mod.ts @@ -985,6 +985,14 @@ export const Routes = { return '/applications/@me' as const; }, + /** + * Route for: + * - GET `/applications/{application.id}/activity-instances/{instance_id}` + */ + applicationActivityInstance(applicationId: Snowflake, instanceId: string) { + return `/applications/${applicationId}/activity-instances/${instanceId}` as const; + }, + /** * Route for: * - GET `/applications/{application.id}/entitlements` diff --git a/deno/rest/v9/application.ts b/deno/rest/v9/application.ts index 7294a0a6..2395d73d 100644 --- a/deno/rest/v9/application.ts +++ b/deno/rest/v9/application.ts @@ -1,4 +1,8 @@ -import type { APIApplication, APIApplicationRoleConnectionMetadata } from '../../payloads/v9/application.ts'; +import type { + APIActivityInstance, + APIApplication, + APIApplicationRoleConnectionMetadata, +} from '../../payloads/v9/application.ts'; import type { _StrictPartial, _Nullable } from '../../utils/internals.ts'; /** @@ -45,3 +49,8 @@ export type RESTPatchCurrentApplicationJSONBody = _StrictPartial< * @see {@link https://discord.com/developers/docs/resources/application#edit-current-application} */ export type RESTPatchCurrentApplicationResult = APIApplication; + +/** + * @see {@link https://discord.com/developers/docs/resources/application#get-application-activity-instance} + */ +export type RESTGetAPIApplicationActivityInstanceResult = APIActivityInstance; diff --git a/deno/rest/v9/mod.ts b/deno/rest/v9/mod.ts index ed3c2b98..03ae6096 100644 --- a/deno/rest/v9/mod.ts +++ b/deno/rest/v9/mod.ts @@ -994,6 +994,14 @@ export const Routes = { return '/applications/@me' as const; }, + /** + * Route for: + * - GET `/applications/{application.id}/activity-instances/{instance_id}` + */ + applicationActivityInstance(applicationId: Snowflake, instanceId: string) { + return `/applications/${applicationId}/activity-instances/${instanceId}` as const; + }, + /** * Route for: * - GET `/applications/{application.id}/entitlements` diff --git a/payloads/v10/application.ts b/payloads/v10/application.ts index 5bf55866..f5ced4cd 100644 --- a/payloads/v10/application.ts +++ b/payloads/v10/application.ts @@ -317,6 +317,68 @@ export enum ApplicationRoleConnectionMetadataType { BooleanNotEqual, } +/** + * @see {@link https://discord.com/developers/docs/resources/application#get-application-activity-instance-activity-location-kind-enum} + */ +export enum ActivityLocationKind { + /** + * Location is a guild channel + */ + GuildChannel = 'gc', + /** + * Location is a private channel, such as a DM or GDM + */ + PrivateChannel = 'pc', +} + +/** + * @see {@link https://discord.com/developers/docs/resources/application#get-application-activity-instance-activity-location-object} + */ +export interface APIActivityLocation { + /** + * Unique identifier for the location + */ + id: string; + /** + * Enum describing kind of location + */ + kind: ActivityLocationKind; + /** + * ID of the channel + */ + channel_id: Snowflake; + /** + * ID of the guild + */ + guild_id?: Snowflake | null; +} + +/** + * @see {@link https://discord.com/developers/docs/resources/application#get-application-activity-instance-activity-instance-object} + */ +export interface APIActivityInstance { + /** + * Application ID + */ + application_id: Snowflake; + /** + * Activity instance ID + */ + instance_id: string; + /** + * Unique identifier for the launch + */ + launch_id: Snowflake; + /** + * Location the instance is running in + */ + location: APIActivityLocation; + /** + * IDs of the users currently connected to the instance + */ + users: Snowflake[]; +} + /** * @see {@link https://discord.com/developers/docs/resources/application#application-object-application-event-webhook-status} */ diff --git a/payloads/v9/application.ts b/payloads/v9/application.ts index 5bf55866..f5ced4cd 100644 --- a/payloads/v9/application.ts +++ b/payloads/v9/application.ts @@ -317,6 +317,68 @@ export enum ApplicationRoleConnectionMetadataType { BooleanNotEqual, } +/** + * @see {@link https://discord.com/developers/docs/resources/application#get-application-activity-instance-activity-location-kind-enum} + */ +export enum ActivityLocationKind { + /** + * Location is a guild channel + */ + GuildChannel = 'gc', + /** + * Location is a private channel, such as a DM or GDM + */ + PrivateChannel = 'pc', +} + +/** + * @see {@link https://discord.com/developers/docs/resources/application#get-application-activity-instance-activity-location-object} + */ +export interface APIActivityLocation { + /** + * Unique identifier for the location + */ + id: string; + /** + * Enum describing kind of location + */ + kind: ActivityLocationKind; + /** + * ID of the channel + */ + channel_id: Snowflake; + /** + * ID of the guild + */ + guild_id?: Snowflake | null; +} + +/** + * @see {@link https://discord.com/developers/docs/resources/application#get-application-activity-instance-activity-instance-object} + */ +export interface APIActivityInstance { + /** + * Application ID + */ + application_id: Snowflake; + /** + * Activity instance ID + */ + instance_id: string; + /** + * Unique identifier for the launch + */ + launch_id: Snowflake; + /** + * Location the instance is running in + */ + location: APIActivityLocation; + /** + * IDs of the users currently connected to the instance + */ + users: Snowflake[]; +} + /** * @see {@link https://discord.com/developers/docs/resources/application#application-object-application-event-webhook-status} */ diff --git a/rest/v10/application.ts b/rest/v10/application.ts index c56de605..8eb1c954 100644 --- a/rest/v10/application.ts +++ b/rest/v10/application.ts @@ -1,4 +1,8 @@ -import type { APIApplication, APIApplicationRoleConnectionMetadata } from '../../payloads/v10/application'; +import type { + APIActivityInstance, + APIApplication, + APIApplicationRoleConnectionMetadata, +} from '../../payloads/v10/application'; import type { _Nullable, _StrictPartial } from '../../utils/internals'; /** @@ -45,3 +49,8 @@ export type RESTPatchCurrentApplicationJSONBody = _StrictPartial< * @see {@link https://discord.com/developers/docs/resources/application#edit-current-application} */ export type RESTPatchCurrentApplicationResult = APIApplication; + +/** + * @see {@link https://discord.com/developers/docs/resources/application#get-application-activity-instance} + */ +export type RESTGetAPIApplicationActivityInstanceResult = APIActivityInstance; diff --git a/rest/v10/index.ts b/rest/v10/index.ts index cc2eb01b..f6c49d0c 100644 --- a/rest/v10/index.ts +++ b/rest/v10/index.ts @@ -985,6 +985,14 @@ export const Routes = { return '/applications/@me' as const; }, + /** + * Route for: + * - GET `/applications/{application.id}/activity-instances/{instance_id}` + */ + applicationActivityInstance(applicationId: Snowflake, instanceId: string) { + return `/applications/${applicationId}/activity-instances/${instanceId}` as const; + }, + /** * Route for: * - GET `/applications/{application.id}/entitlements` diff --git a/rest/v9/application.ts b/rest/v9/application.ts index 4f54813a..52897fd6 100644 --- a/rest/v9/application.ts +++ b/rest/v9/application.ts @@ -1,4 +1,8 @@ -import type { APIApplication, APIApplicationRoleConnectionMetadata } from '../../payloads/v9/application'; +import type { + APIActivityInstance, + APIApplication, + APIApplicationRoleConnectionMetadata, +} from '../../payloads/v9/application'; import type { _StrictPartial, _Nullable } from '../../utils/internals'; /** @@ -45,3 +49,8 @@ export type RESTPatchCurrentApplicationJSONBody = _StrictPartial< * @see {@link https://discord.com/developers/docs/resources/application#edit-current-application} */ export type RESTPatchCurrentApplicationResult = APIApplication; + +/** + * @see {@link https://discord.com/developers/docs/resources/application#get-application-activity-instance} + */ +export type RESTGetAPIApplicationActivityInstanceResult = APIActivityInstance; diff --git a/rest/v9/index.ts b/rest/v9/index.ts index d6e674c8..eb895e2c 100644 --- a/rest/v9/index.ts +++ b/rest/v9/index.ts @@ -994,6 +994,14 @@ export const Routes = { return '/applications/@me' as const; }, + /** + * Route for: + * - GET `/applications/{application.id}/activity-instances/{instance_id}` + */ + applicationActivityInstance(applicationId: Snowflake, instanceId: string) { + return `/applications/${applicationId}/activity-instances/${instanceId}` as const; + }, + /** * Route for: * - GET `/applications/{application.id}/entitlements`