feat: one time premium app purchases (#966)

This commit is contained in:
n1ck_pro
2024-04-25 18:30:55 +02:00
committed by GitHub
parent 312947de1e
commit c9f2c5b020
12 changed files with 216 additions and 4 deletions

View File

@@ -40,16 +40,48 @@ export interface APIEntitlement {
* Date at which the entitlement is no longer valid. Not present when using test entitlements.
*/
ends_at?: string;
/**
* For consumable items, whether or not the entitlement has been consumed
*/
consumed?: boolean;
}
/**
* https://discord.com/developers/docs/monetization/entitlements#entitlement-object-entitlement-types
*/
export enum EntitlementType {
/**
* Entitlement was purchased by user
*/
Purchase = 1,
/**
* Entitlement for Discord Nitro subscription
*/
PremiumSubscription,
/**
* Entitlement was gifted by developer
*/
DeveloperGift,
/**
* Entitlement was purchased by a dev in application test mode
*/
TestModePurchase,
/**
* Entitlement was granted when the SKU was free
*/
FreePurchase,
/**
* Entitlement was gifted by another user
*/
UserGift,
/**
* Entitlement was claimed by user for free as a Nitro Subscriber
*/
PremiumPurchase,
/**
* Entitlement was purchased as an app subscription
*/
ApplicationSubscription = 8,
ApplicationSubscription,
}
/**
@@ -104,6 +136,14 @@ export enum SKUFlags {
}
export enum SKUType {
/**
* Durable one-time purchase
*/
Durable = 2,
/**
* Consumable one-time purchase
*/
Consumable = 3,
/**
* Represents a recurring subscription
*/

View File

@@ -40,16 +40,48 @@ export interface APIEntitlement {
* Date at which the entitlement is no longer valid. Not present when using test entitlements.
*/
ends_at?: string;
/**
* For consumable items, whether or not the entitlement has been consumed
*/
consumed?: boolean;
}
/**
* https://discord.com/developers/docs/monetization/entitlements#entitlement-object-entitlement-types
*/
export enum EntitlementType {
/**
* Entitlement was purchased by user
*/
Purchase = 1,
/**
* Entitlement for Discord Nitro subscription
*/
PremiumSubscription,
/**
* Entitlement was gifted by developer
*/
DeveloperGift,
/**
* Entitlement was purchased by a dev in application test mode
*/
TestModePurchase,
/**
* Entitlement was granted when the SKU was free
*/
FreePurchase,
/**
* Entitlement was gifted by another user
*/
UserGift,
/**
* Entitlement was claimed by user for free as a Nitro Subscriber
*/
PremiumPurchase,
/**
* Entitlement was purchased as an app subscription
*/
ApplicationSubscription = 8,
ApplicationSubscription,
}
/**
@@ -104,6 +136,14 @@ export enum SKUFlags {
}
export enum SKUType {
/**
* Durable one-time purchase
*/
Durable = 2,
/**
* Consumable one-time purchase
*/
Consumable = 3,
/**
* Represents a recurring subscription
*/

View File

@@ -960,6 +960,14 @@ export const Routes = {
guildBulkBan(guildId: Snowflake) {
return `/guilds/${guildId}/bulk-ban` as const;
},
/**
* Route for:
* - POST `/applications/${application.id}/entitlements/${entitlement.id}/consume`
*/
consumeEntitlement(applicationId: Snowflake, entitlementId: Snowflake) {
return `/applications/${applicationId}/entitlements/${entitlementId}/consume` as const;
},
};
export const StickerPackApplicationId = '710982414301790216';

View File

@@ -83,3 +83,8 @@ export type RESTDeleteAPIEntitlementResult = never;
* https://discord.com/developers/docs/monetization/skus#list-skus
*/
export type RESTGetAPISKUsResult = APISKU[];
/**
* https://discord.com/developers/docs/monetization/entitlements#consume-an-entitlement
*/
export type RESTPostAPIEntitlementConsumeResult = never;

View File

@@ -969,6 +969,14 @@ export const Routes = {
guildBulkBan(guildId: Snowflake) {
return `/guilds/${guildId}/bulk-ban` as const;
},
/**
* Route for:
* - POST `/applications/${application.id}/entitlements/${entitlement.id}/consume`
*/
consumeEntitlement(applicationId: Snowflake, entitlementId: Snowflake) {
return `/applications/${applicationId}/entitlements/${entitlementId}/consume` as const;
},
};
export const StickerPackApplicationId = '710982414301790216';

View File

@@ -83,3 +83,8 @@ export type RESTDeleteAPIEntitlementResult = never;
* https://discord.com/developers/docs/monetization/skus#list-skus
*/
export type RESTGetAPISKUsResult = APISKU[];
/**
* https://discord.com/developers/docs/monetization/entitlements#consume-an-entitlement
*/
export type RESTPostAPIEntitlementConsumeResult = never;

View File

@@ -40,16 +40,48 @@ export interface APIEntitlement {
* Date at which the entitlement is no longer valid. Not present when using test entitlements.
*/
ends_at?: string;
/**
* For consumable items, whether or not the entitlement has been consumed
*/
consumed?: boolean;
}
/**
* https://discord.com/developers/docs/monetization/entitlements#entitlement-object-entitlement-types
*/
export enum EntitlementType {
/**
* Entitlement was purchased by user
*/
Purchase = 1,
/**
* Entitlement for Discord Nitro subscription
*/
PremiumSubscription,
/**
* Entitlement was gifted by developer
*/
DeveloperGift,
/**
* Entitlement was purchased by a dev in application test mode
*/
TestModePurchase,
/**
* Entitlement was granted when the SKU was free
*/
FreePurchase,
/**
* Entitlement was gifted by another user
*/
UserGift,
/**
* Entitlement was claimed by user for free as a Nitro Subscriber
*/
PremiumPurchase,
/**
* Entitlement was purchased as an app subscription
*/
ApplicationSubscription = 8,
ApplicationSubscription,
}
/**
@@ -104,6 +136,14 @@ export enum SKUFlags {
}
export enum SKUType {
/**
* Durable one-time purchase
*/
Durable = 2,
/**
* Consumable one-time purchase
*/
Consumable = 3,
/**
* Represents a recurring subscription
*/

View File

@@ -40,16 +40,48 @@ export interface APIEntitlement {
* Date at which the entitlement is no longer valid. Not present when using test entitlements.
*/
ends_at?: string;
/**
* For consumable items, whether or not the entitlement has been consumed
*/
consumed?: boolean;
}
/**
* https://discord.com/developers/docs/monetization/entitlements#entitlement-object-entitlement-types
*/
export enum EntitlementType {
/**
* Entitlement was purchased by user
*/
Purchase = 1,
/**
* Entitlement for Discord Nitro subscription
*/
PremiumSubscription,
/**
* Entitlement was gifted by developer
*/
DeveloperGift,
/**
* Entitlement was purchased by a dev in application test mode
*/
TestModePurchase,
/**
* Entitlement was granted when the SKU was free
*/
FreePurchase,
/**
* Entitlement was gifted by another user
*/
UserGift,
/**
* Entitlement was claimed by user for free as a Nitro Subscriber
*/
PremiumPurchase,
/**
* Entitlement was purchased as an app subscription
*/
ApplicationSubscription = 8,
ApplicationSubscription,
}
/**
@@ -104,6 +136,14 @@ export enum SKUFlags {
}
export enum SKUType {
/**
* Durable one-time purchase
*/
Durable = 2,
/**
* Consumable one-time purchase
*/
Consumable = 3,
/**
* Represents a recurring subscription
*/

View File

@@ -960,6 +960,14 @@ export const Routes = {
guildBulkBan(guildId: Snowflake) {
return `/guilds/${guildId}/bulk-ban` as const;
},
/**
* Route for:
* - POST `/applications/${application.id}/entitlements/${entitlement.id}/consume`
*/
consumeEntitlement(applicationId: Snowflake, entitlementId: Snowflake) {
return `/applications/${applicationId}/entitlements/${entitlementId}/consume` as const;
},
};
export const StickerPackApplicationId = '710982414301790216';

View File

@@ -83,3 +83,8 @@ export type RESTDeleteAPIEntitlementResult = never;
* https://discord.com/developers/docs/monetization/skus#list-skus
*/
export type RESTGetAPISKUsResult = APISKU[];
/**
* https://discord.com/developers/docs/monetization/entitlements#consume-an-entitlement
*/
export type RESTPostAPIEntitlementConsumeResult = never;

View File

@@ -969,6 +969,14 @@ export const Routes = {
guildBulkBan(guildId: Snowflake) {
return `/guilds/${guildId}/bulk-ban` as const;
},
/**
* Route for:
* - POST `/applications/${application.id}/entitlements/${entitlement.id}/consume`
*/
consumeEntitlement(applicationId: Snowflake, entitlementId: Snowflake) {
return `/applications/${applicationId}/entitlements/${entitlementId}/consume` as const;
},
};
export const StickerPackApplicationId = '710982414301790216';

View File

@@ -83,3 +83,8 @@ export type RESTDeleteAPIEntitlementResult = never;
* https://discord.com/developers/docs/monetization/skus#list-skus
*/
export type RESTGetAPISKUsResult = APISKU[];
/**
* https://discord.com/developers/docs/monetization/entitlements#consume-an-entitlement
*/
export type RESTPostAPIEntitlementConsumeResult = never;