import SubscriptionsRoute from "../routes/SubscriptionsRoute"; import Requests from "../util/Requests"; import Response from "../util/Response"; import { AxiosPromise } from "axios"; class Subscriptions { /** * Get a creator subscription for the creator program. * * @see https://api.glitch.fun/api/documentation#/Subscriptions/getCreatorSubscription * * @returns promise */ public static getCreatorSubscription(stripe_subscription_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(SubscriptionsRoute.routes.getCreatorSubscription, undefined, { stripe_subscription_id: stripe_subscription_id }, params); } /** * Get a s subscription plan that a community has to talk with influencers * * @see https://api.glitch.fun/api/documentation#/Subscriptions/getCommunityInfluencerSubscription * * @returns promise */ public static getCommunityInfluencerSubscription(community_id: string, stripe_subscription_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(SubscriptionsRoute.routes.getCommunityInfluencerSubscription, undefined, { community_id: community_id, stripe_subscription_id: stripe_subscription_id }, params); } /** * List all the subscription plans that a creator has. * * @see https://api.glitch.fun/api/documentation#/Subscriptions/getCreatorSubscriptions * * @returns promise */ public static listCreatorSubscriptions(params?: Record): AxiosPromise> { return Requests.processRoute(SubscriptionsRoute.routes.listCreatorSubscriptions, undefined, undefined, params); } /** * List all the subscription plans that a community has. * * @see https://api.glitch.fun/api/documentation#/Subscriptions/getCommunityInfluencerSubscriptions * * @returns promise */ public static listCommunityInfluencerSubscriptions(community_id: string, params?: Record): AxiosPromise> { return Requests.processRoute(SubscriptionsRoute.routes.listCommunityInfluencerSubscriptions, undefined, { community_id: community_id }, params); } /** * Check whether the current user can access developer tool creation for a feature. * * @param params { feature: 'social_media'|'influencers'|'ads', community_id?: string, title_id?: string, scheduler_id?: string } * @returns promise */ public static getDeveloperToolAccess(params?: Record): AxiosPromise> { return Requests.processRoute(SubscriptionsRoute.routes.getDeveloperToolAccess, undefined, undefined, params); } /** * Create a new subscription of a content creator * * @see https://api.glitch.fun/api/documentation#/Subscriptions/createCreatorSubscription * * @returns A promise */ public static createCreatorSubscription(data?: object, params?: Record): AxiosPromise> { return Requests.processRoute(SubscriptionsRoute.routes.createCreatorSubscription, data, {}, params); } /** * Create a new subscription of a community engaging in influencer marketing * * @see https://api.glitch.fun/api/documentation#/Subscriptions/createCommunityInfluencerSubscription * * @returns A promise */ public static createCommunityInfluencerSubscription(community_id: string, data?: object, params?: Record): AxiosPromise> { return Requests.processRoute(SubscriptionsRoute.routes.createCommunityInfluencerSubscription, data, { community_id: community_id }, params); } /** * Cancels a creator subscription * * @see https://api.glitch.fun/api/documentation#/Subscriptions/cancelCreatorSubscription * * @returns A promise */ public static cancelCreatorSubscription(stripe_subscription_id: string, data?: object, params?: Record): AxiosPromise> { return Requests.processRoute(SubscriptionsRoute.routes.cancelCreatorSubscription, data, { stripe_subscription_id: stripe_subscription_id }, params); } /** * Cancels a community subscription * * @see https://api.glitch.fun/api/documentation#/Subscriptions/cancelCommunityInfluencerSubscription * * @returns A promise */ public static cancelCommunityInfluencerSubscription(community_id: string, stripe_subscription_id: string, data?: object, params?: Record): AxiosPromise> { return Requests.processRoute(SubscriptionsRoute.routes.cancelCommunityInfluencerSubscription, data, { community_id: community_id, stripe_subscription_id: stripe_subscription_id }, params); } /** * Change the current subscription that the community is associated with. * * @see https://api.glitch.fun/api/documentation#/Subscriptions/createCreatorSubscription * * @returns A promise */ public static changeCommunityInfluencerSubscription(community_id: string, data?: object, params?: Record): AxiosPromise> { return Requests.processRoute(SubscriptionsRoute.routes.changeCommunityInfluencerSubscription, data, { community_id: community_id }, params); } /** * Create a custom tailored subscription for a business/community. * Only accessible by Glitch administrators. * * @param community_id The ID of the community. * @param data { priceId, paymentMethod, custom_name, limits: { posts, enrichments, invites, ads }, metered_prices: [] } */ public static createCustomCommunitySubscription(community_id: string, data: object, params?: Record): AxiosPromise> { return Requests.processRoute(SubscriptionsRoute.routes.createCustomCommunitySubscription, data, { community_id }, params); } /** * Purchase a permanent license or rent a game title. * If a rental was active in the last 7 days, the fee is automatically deducted from the premium price. * @param data { purchase_type: 'premium' | 'rental', payment_method_id: string } */ public static purchaseLicense(title_id: string, data: object): AxiosPromise> { return Requests.processRoute(SubscriptionsRoute.routes.purchaseLicense, data, { title_id }); } /** * List all game licenses (Premium/Rental) owned by the current user. */ public static listMyLicenses(params?: Record): AxiosPromise> { return Requests.processRoute(SubscriptionsRoute.routes.listMyLicenses, undefined, undefined, params); } /** * Request a refund for a premium purchase. */ public static refundLicense(license_id: string): AxiosPromise> { return Requests.processRoute(SubscriptionsRoute.routes.refundLicense, {}, { license_id }); } /** * Purchase a game or subscription as a gift for another user. * * @see https://api.glitch.fun/api/documentation#/Subscriptions/purchaseGift * * @param data { gift_type: 'premium'|'rental'|'subscription', payment_method_id: string, title_id?: string, recipient_id?: string, recipient_email?: string, recipient_name?: string } * @returns promise */ public static purchaseGift(data: object): AxiosPromise> { return Requests.processRoute(SubscriptionsRoute.routes.purchaseGift, data); } /** * Redeem a gift code to grant access to a game or subscription. * * @see https://api.glitch.fun/api/documentation#/Subscriptions/redeemGift * * @param redemption_code The unique GLITCH-XXXX-XXXX code. * @returns promise */ public static redeemGift(redemption_code: string): AxiosPromise> { return Requests.processRoute(SubscriptionsRoute.routes.redeemGift, { redemption_code }); } /** * Cancel an unredeemed gift and trigger a refund. * Only the user who purchased the gift (the giver) can perform this action. * * @see https://api.glitch.fun/api/documentation#/Subscriptions/cancelGift * * @param gift_id The UUID of the gift to cancel. * @returns promise */ public static cancelGift(gift_id: string): AxiosPromise> { return Requests.processRoute(SubscriptionsRoute.routes.cancelGift, {}, { gift_id }); } /** * Validates a coupon code and returns the calculated discount. * @param data { code: string, price: number, currency?: string } */ public static validateCoupon(data: { code: string, price: number, currency?: string }): AxiosPromise> { return Requests.processRoute(SubscriptionsRoute.routes.validateCoupon, data); } } export default Subscriptions;