@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;
}