RocketChat/Rocket.Chat

View on GitHub
packages/core-typings/src/Apps.ts

Summary

Maintainability
A
1 hr
Test Coverage
import type { AppStatus } from '@rocket.chat/apps-engine/definition/AppStatus';

export type AppScreenshot = {
    id: string;
    appId: string;
    fileName: string;
    accessUrl: string;
    thumbnailUrl: string;
    createdAt: string;
    modifiedAt: string;
};

export type AppTiers = {
    perUnit: boolean;
    minimum: number;
    maximum: number;
    price: number;
};

export type AppPricingPlan = {
    id: string;
    enabled: boolean;
    price: number;
    trialDays: number;
    strategy: string;
    isPerSeat: boolean;
    tiers?: AppTiers[];
};

export type AppLicense = {
    license: string;
    version: number;
    expireDate: string;
};

export enum AppSubscriptionStatus {
    Trialing = 'trialing',
    Active = 'active',
    Cancelled = 'cancelled',
    Cancelling = 'cancelling',
    PastDue = 'pastDue',
}

export type AppSubscriptionInfo = {
    typeOf: string;
    status: AppSubscriptionStatus;
    statusFromBilling: boolean;
    isSeatBased: boolean;
    seats: number;
    maxSeats: number;
    license: AppLicense;
    startDate: string;
    periodEnd: string;
    endDate: string;
    isSubscribedViaBundle: boolean;
};

export type AppPermission = {
    name: string;
    required?: boolean;
};

export type PurchaseType = 'buy' | 'subscription';

export type AppRequestStats = {
    appId: string;
    totalSeen: number;
    totalUnseen: number;
};

export type App = {
    id: string;
    iconFileData: string;
    name: string;
    appRequestStats: AppRequestStats;
    author: {
        name: string;
        homepage: string;
        support: string;
    };
    description: string;
    shortDescription?: string;
    privacyPolicySummary: string;
    detailedDescription: {
        raw: string;
        rendered: string;
    };
    detailedChangelog: {
        raw: string;
        rendered: string;
    };
    categories: string[];
    version: string;
    versionIncompatible?: boolean;
    price: number;
    purchaseType: PurchaseType;
    pricingPlans: AppPricingPlan[];
    iconFileContent: string;
    installed?: boolean;
    isEnterpriseOnly?: boolean;
    isPurchased?: boolean;
    isSubscribed: boolean;
    bundledIn: {
        bundleId: string;
        bundleName: string;
        apps: App[];
        addonTierId?: string;
    }[];
    marketplaceVersion: string;
    latest: App;
    status?: AppStatus;
    subscriptionInfo: AppSubscriptionInfo;
    licenseValidation?: {
        errors: { [key: string]: string };
        warnings: { [key: string]: string };
    };
    tosLink: string;
    privacyLink: string;
    marketplace?: unknown;
    modifiedAt: string;
    permissions: AppPermission[];
    languages: string[];
    createdDate: string;
    requestedEndUser?: boolean;
    private: boolean;
    documentationUrl: string;
    migrated: boolean;
};