@omnia/fx-models
Version: 
Provide Omnia Fx Models Stuffs.
268 lines (267 loc) • 8.2 kB
TypeScript
import { IconPickerModel, IIcon } from "../Icon";
import { GuidValue } from "@omnia/fx-models/internal-do-not-import-from-here/shared/models";
import { AppInstanceScopedQueryTypes, AppInstanceStatus, AppTemplatePermissionLevel } from "../Enums";
import { ServiceParam } from "../ServiceParam";
import { ProvisioningTemplateEnterpriseProperty } from "../enterprise-properties/EnterpriseProperty";
import { MultilingualString } from "../MultilingualString";
import { AppProvisioningStepInfo } from "./AppProvisioning";
import { RollupFilter } from "../RollupQuery";
import { MediaPickerImage } from "../media-picker";
import { TargetingFilterProperty } from "../../sp/models";
import { Identity } from "../identities";
export interface AppInstanceIdentities {
    /**
     * When update an app instance, Omnia will update App Admin permission based on this value.
     * So leave it null to ignore permission updates
     * */
    admin?: Identity[];
    /**
     * When update an app instance, Omnia will update App Contributors permission based on this value.
     * So leave it null to ignore permission updates
     * */
    contributors?: Identity[];
    /**
     * When update an app instance, Omnia will update App Readers permission based on this value.
     * So leave it null to ignore permission updates
     * */
    readers?: Identity[];
    /**
     * When update an app instance, Omnia will update App Viewers permission based on this value.
     * So leave it null to ignore permission updates
     * */
    viewers?: Identity[];
}
export declare enum UserAppTemplateAvailabilityOptions {
    All = 0,
    SpecificUser = 1,
    AdminOnly = 2
}
export interface UserAppTemplateAvailability {
    availability: UserAppTemplateAvailabilityOptions;
    targetingFilter?: TargetingFilterProperty;
}
export interface AppTemplatePolicies {
    namingPolicyId?: number;
    minimumDescriptionLength?: number;
    minimumNumberOfAdministrators: number;
    defaultAdministrators: Identity[];
}
export interface AppTemplatePropertiesVisibility {
    hiddenInNewForm: boolean;
    hiddenInEditForm: boolean;
}
export interface AppTemplateProperties {
    disallowUserEdit?: boolean;
    userAvailability: UserAppTemplateAvailability;
    permissionLevel?: AppTemplatePermissionLevel;
    approvers?: Array<Identity>;
    enterprisePropertySetId?: GuidValue;
    appProvisioningStepInfos?: Array<AppProvisioningStepInfo>;
    [id: string]: any;
    defaultEnterprisePropertySetValues: {
        [internalName: string]: any;
    };
    visibility: {
        [internalName: string]: AppTemplatePropertiesVisibility;
    };
    policies?: AppTemplatePolicies;
    enterpriseProperties?: Array<ProvisioningTemplateEnterpriseProperty>;
}
export interface AppDefinitionUIOption {
    appTemplateRendererElement: string;
    appInstanceRendererElement: string;
}
export interface AppResourceType {
    id: GuidValue;
    title: string;
    icon: IIcon;
    parameters: Array<ServiceParam>;
    providedParameters: Array<ServiceParam>;
    requiredFeatures?: Array<GuidValue>;
    requiredEnvironments?: Array<string>;
}
export interface AppDefinition {
    id: GuidValue;
    serviceId: GuidValue;
    version: string;
    title: string;
    description: string;
    icons: IIcon[];
    hidden: boolean;
    resourceTypes: AppResourceType[];
    enabledResourceTypes: AppResourceType[];
}
export interface AppTemplate {
    id: GuidValue;
    businessProfileId?: GuidValue;
    appDefinitionId: GuidValue;
    title: MultilingualString;
    description: MultilingualString;
    icons: IconPickerModel[];
    features: GuidValue[];
    permissionIdentities: string[];
    properties: AppTemplateProperties;
    createdBy: Identity;
    modifiedBy: Identity;
    createdAt: Date;
    modifiedAt: Date;
    appDefinition: AppDefinition;
    resourceTypeId: GuidValue;
    isDeleting?: boolean;
}
export interface AppInstancePropertiesStorage {
    [name: string]: unknown;
    omniaPath?: string;
    omniaRoutePrefix?: string;
    analyticsEnabled?: boolean;
}
export interface AppInstanceOutput {
    absoluteAppUrl: string;
    routePath: string;
}
export interface AppInstanceProperties {
    contextParams: {
        [name: string]: string;
    };
    properties: AppInstancePropertiesStorage;
    featureProperties: {
        [name: string]: any;
    };
    pendingRequestUrl: string;
    processedFeaturesIndex: number[];
}
export declare enum ShowInPublicListingsMode {
    None = 0,
    PublicToProfileViewer = 1,
    PublicToAppViewer = 2
}
export interface AppInstance {
    id: GuidValue;
    businessProfileId: GuidValue;
    appDefinitionId: GuidValue;
    appTemplateId: GuidValue;
    appDefinitionVersion: string;
    title: MultilingualString;
    description: MultilingualString;
    showInPublicListings: ShowInPublicListingsMode;
    error: string;
    status: AppInstanceStatus;
    transactionId: GuidValue;
    properties: AppInstanceProperties;
    permissionIdentities: AppInstanceIdentities;
    enterpriseProperties: {
        [internalName: string]: any;
    };
    outputInfo: AppInstanceOutput;
    createdBy: Identity;
    modifiedBy: Identity;
    createdAt: Date;
    modifiedAt: Date;
    appTemplate: AppTemplate;
    lastActivity: Date;
    image?: MediaPickerImage;
    onDataChanged?: () => void;
}
export interface AppInstanceInputInfo {
    title: MultilingualString;
    description: MultilingualString;
    showInPublicListings: ShowInPublicListingsMode;
    permissionIdentities: AppInstanceIdentities;
    outputInfo: any;
    properties: any;
    featureProperties: {
        [id: string]: any;
    };
    pendingRequestUrl?: string;
    enterpriseProperties?: {
        [internalName: string]: any;
    };
    image?: MediaPickerImage;
}
export interface AppInstancesResult {
    total: number;
    appInstances: AppInstance[];
}
export interface AppInstancesScopedQueryResult {
    total: number;
    items: AppInstanceInfo[];
}
export interface AppInstanceInfo {
    appInstanceId: GuidValue;
    title: MultilingualString;
    description: MultilingualString;
    image: MediaPickerImage;
    enterprisePropertyValues: {
        [id: string]: any;
    };
    dynamicPropertyValues: {
        [id: string]: any;
    };
    appInstanceOutput: AppInstanceOutput;
    businessProfileId: GuidValue;
}
export interface AppInstanceInfoUser extends AppInstanceInfo {
    followed: boolean;
}
export interface AppInstanceCreateInfo {
    appTemplateId: GuidValue;
    inputInfo: AppInstanceInputInfo;
    contextParams: {
        [name: string]: string;
    };
}
export interface AppInstanceUpdateInfo {
    appInstanceId: GuidValue;
    inputInfo: AppInstanceInputInfo;
    contextParams?: {
        [name: string]: string;
    };
}
export interface AppInstanceRejectInfo {
    appInstanceId: GuidValue;
    appDefinitionId: GuidValue;
    comment: string;
}
export interface AppInstanceOutputInfo {
    id: string;
    businessProfileId: string;
    title: MultilingualString;
    outputInfo: AppInstanceOutput;
    status: AppInstanceStatus;
}
export interface AppInstanceQuery {
    includeTotal: boolean;
    itemLimit?: number;
    skip?: number;
    keyWord?: string;
    orderBy?: AppInstanceQueryOrderBy;
    statuses?: AppInstanceStatus[];
    keywordFilterOnProperties?: string[];
    keywordFilterEnableWildcardSearch?: boolean;
    appTemplateFilters?: AppInstanceTemplateFilter[];
    appInstanceFilter?: AppInstanceFilter;
    lastActivityPeriod?: number;
}
export interface AppInstanceScopedQuery extends AppInstanceQuery {
    scope: AppInstanceScopedQueryTypes;
    includeFollowAppStatus: boolean;
    selectDynamicAppProperties: string[];
    selectEnterpriseProperties: string[];
    trimByRoleId?: GuidValue;
}
export interface AppInstanceFilter {
    enableWildcardSearch: boolean;
    filters: RollupFilter[];
}
export interface AppInstanceTemplateFilter extends AppInstanceFilter {
    appTemplateId: GuidValue;
}
export interface AppInstanceQueryOrderBy {
    descending: boolean;
    propertyName: string;
}
export interface AppInstanceActionProgressResult {
    appInstance: AppInstance;
    message: string;
    percentage: number;
}