import { type CircleOfTrustSkeleton } from '../api/CirclesOfTrustApi'; import { type InnerNodeRefSkeletonInterface, type NodeRefSkeletonInterface, type NodeSkeleton } from '../api/NodeApi'; import { type Saml2ProviderSkeleton } from '../api/Saml2Api'; import { type ScriptSkeleton } from '../api/ScriptApi'; import { type SocialIdpSkeleton } from '../api/SocialIdentityProvidersApi'; import { type TreeSkeleton } from '../api/TreeApi'; import { State } from '../shared/State'; import { type EmailTemplateSkeleton } from './EmailTemplateOps'; import { type ExportMetaData } from './OpsTypes'; import { type ThemeSkeleton } from './ThemeOps'; export type Journey = { /** * Create an empty single tree export template * @returns {SingleTreeExportInterface} an empty single tree export template */ createSingleTreeExportTemplate(): SingleTreeExportInterface; /** * Create an empty multi tree export template * @returns {MultiTreeExportInterface} an empty multi tree export template */ createMultiTreeExportTemplate(): MultiTreeExportInterface; /** * Create export data for a tree/journey with all its nodes and dependencies. The export data can be written to a file as is. * @param {string} treeId tree id/name * @param {TreeExportOptions} options export options * @returns {Promise} a promise that resolves to an object containing the tree and all its nodes and dependencies */ exportJourney(treeId: string, options?: TreeExportOptions): Promise; /** * Create export data for all trees/journeys with all their nodes and dependencies. The export data can be written to a file as is. * @param {TreeExportOptions} options export options * @returns {Promise} a promise that resolves to an object containing the trees and all their nodes and dependencies */ exportJourneys(options?: TreeExportOptions): Promise; /** * Read all journeys without dependencies. * @returns {Promise} a promise that resolves to an array of journey objects */ readJourneys(): Promise; /** * Read journey without dependencies. * @param {string} journeyId journey id/name * @returns {Promise} a promise that resolves to a journey object */ readJourney(journeyId: string): Promise; /** * Create journey without dependencies. * @param {string} journeyId journey id/name * @returns {Promise} a promise that resolves to a journey object */ createJourney(journeyId: string, journeyData: TreeSkeleton): Promise; /** * Update journey without dependencies. * @param {string} journeyId journey id/name * @returns {Promise} a promise that resolves to a journey object */ updateJourney(journeyId: string, journeyData: TreeSkeleton): Promise; /** * Import journey * @param {SingleTreeExportInterface} treeObject tree object containing tree and all its dependencies * @param {TreeImportOptions} options import options * @returns {Promise} a promise that resolves to a journey object */ importJourney(treeObject: SingleTreeExportInterface, options: TreeImportOptions): Promise; /** * Resolve journey dependencies * @param {string[]} installedJorneys Map of installed journeys * @param {Record} journeyMap Map of journeys to resolve dependencies for * @param {string[]} unresolvedJourneys Map to hold the names of unresolved journeys and their dependencies * @param {string[]} resolvedJourneys Array to hold the names of resolved journeys * @param {int} index Depth of recursion */ resolveDependencies(installedJorneys: any, journeyMap: any, unresolvedJourneys: any, resolvedJourneys: any, index?: number): Promise; /** * Import journeys * @param {MultiTreeExportInterface} importData map of trees object * @param {TreeImportOptions} options import options */ importJourneys(importData: MultiTreeExportInterface, options: TreeImportOptions): Promise; /** * Get the node reference obbject for a node object. Node reference objects * are used in a tree flow definition and within page nodes to reference * nodes. Among other things, node references contain all the non-configuration * meta data that exists for readaility, like the x/y coordinates of the node * and the display name chosen by the tree designer. The dislay name is the * only intuitive link between the graphical representation of the tree and * the node configurations that make up the tree. * @param nodeObj node object to retrieve the node reference object for * @param singleTreeExport tree export with or without dependencies * @returns {NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface} node reference object */ getNodeRef(nodeObj: NodeSkeleton, singleTreeExport: SingleTreeExportInterface): NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface; /** * Default tree export resolver used to resolve a tree id/name to a full export * w/o dependencies of that tree from a platform instance. * @param {string} treeId id/name of the tree to resolve * @returns {TreeExportResolverInterface} tree export */ onlineTreeExportResolver: TreeExportResolverInterface; /** * Tree export resolver used to resolve a tree id/name to a full export * of that tree from individual `treename.journey.json` export files. * @param {string} treeId id/name of the tree to resolve * @returns {TreeExportResolverInterface} tree export */ fileByIdTreeExportResolver: TreeExportResolverInterface; /** * Factory that creates a tree export resolver used to resolve a tree id * to a full export of that tree from a multi-tree export file. * @param {string} file multi-tree export file * @returns {TreeExportResolverInterface} tree export resolver */ createFileParamTreeExportResolver(file: string): TreeExportResolverInterface; /** * Get tree dependencies (all descendent inner trees) * @param {SingleTreeExportInterface} treeExport single tree export * @param {string[]} resolvedTreeIds list of tree ids wich have already been resolved * @param {TreeExportResolverInterface} resolveTreeExport tree export resolver callback function * @returns {Promise} a promise that resolves to a tree dependency map */ getTreeDescendents(treeExport: SingleTreeExportInterface, resolveTreeExport: TreeExportResolverInterface, resolvedTreeIds?: string[]): Promise; /** * Analyze if a journey contains any custom nodes considering the detected or the overridden version. * @param {SingleTreeExportInterface} journey Journey/tree configuration object * @returns {boolean} True if the journey/tree contains any custom nodes, false otherwise. */ isCustomJourney(journey: SingleTreeExportInterface): boolean; /** * Analyze if a journey contains any premium nodes considering the detected or the overridden version. * @param {SingleTreeExportInterface} journey Journey/tree configuration object * @returns {boolean} True if the journey/tree contains any custom nodes, false otherwise. */ isPremiumJourney(journey: SingleTreeExportInterface): boolean; /** * Analyze if a journey contains any cloud-only nodes considering the detected or the overridden version. * @param {SingleTreeExportInterface} journey Journey/tree configuration object * @returns {boolean} True if the journey/tree contains any cloud-only nodes, false otherwise. */ isCloudOnlyJourney(journey: SingleTreeExportInterface): boolean; /** * Get a journey's classifications, which can be one or multiple of: * - standard: can run on any instance of a ForgeRock platform * - cloud: utilize nodes, which are exclusively available in the ForgeRock Identity Cloud * - premium: utilizes nodes, which come at a premium * - custom: utilizes nodes not included in the ForgeRock platform release * @param {SingleTreeExportInterface} journey journey export data * @returns {JourneyClassificationType[]} an array of one or multiple classifications */ getJourneyClassification(journey: SingleTreeExportInterface): JourneyClassificationType[]; /** * Delete a journey * @param {string} journeyId journey id/name * @param {Object} options deep=true also delete all the nodes and inner nodes, verbose=true print verbose info */ deleteJourney(journeyId: string, options: { deep: boolean; verbose: boolean; progress?: boolean; }): Promise; /** * Delete all journeys * @param {Object} options deep=true also delete all the nodes and inner nodes, verbose=true print verbose info */ deleteJourneys(options: { deep: boolean; verbose: boolean; }): Promise; /** * Enable a journey * @param journeyId journey id/name * @returns {Promise} the updated tree/journey object */ enableJourney(journeyId: string): Promise; /** * Disable a journey * @param journeyId journey id/name * @returns {Promise} the updated tree/journey object */ disableJourney(journeyId: string): Promise; /** * Get all the journeys/trees without all their nodes and dependencies. * @returns {Promise} a promise that resolves to an array of journey objects * @deprecated since v2.0.0 use {@link Journey.readJourneys | readJourneys} instead * ```javascript * readJourneys(): Promise * ``` * @group Deprecated */ getJourneys(): Promise; /** * Get a journey/tree without all its nodes and dependencies. * @param {string} journeyId journey id/name * @returns {Promise} a promise that resolves to a journey object * @deprecated since v2.0.0 use {@link Journey.readJourney | readJourney} instead * ```javascript * readJourney(journeyId: string): Promise * ``` * @group Deprecated */ getJourney(journeyId: string): Promise; /** * Import journeys * @param {MultiTreeExportInterface} importData map of trees object * @param {TreeImportOptions} options import options * @deprecated since v2.0.0 use {@link Journey.importJourneys | importJourneys} instead * ```javascript * importJourneys(importData: MultiTreeExportInterface, options: TreeImportOptions): Promise * ``` * @group Deprecated */ importAllJourneys(importData: MultiTreeExportInterface, options: TreeImportOptions): Promise; /** * Find all node configuration objects that are no longer referenced by any tree * @returns {Promise} a promise that resolves to an array of orphaned nodes * @deprecated since v2.0.0 use {@link Node.findOrphanedNodes | findOrphanedNodes} in the {@link Node} module instead * @group Deprecated */ findOrphanedNodes(): Promise; /** * Remove orphaned nodes * @param {NodeSkeleton[]} orphanedNodes Pass in an array of orphaned node configuration objects to remove * @returns {Promise} a promise that resolves to an array nodes that encountered errors deleting * @deprecated since v2.0.0 use {@link Node.removeOrphanedNodes | removeOrphanedNodes} in the {@link Node} module instead * @group Deprecated */ removeOrphanedNodes(orphanedNodes: NodeSkeleton[]): Promise; }; declare const _default: (state: State) => Journey; export default _default; /** * Tree export options */ export interface TreeExportOptions { /** * Where applicable, use string arrays to store multi-line text (e.g. scripts). */ useStringArrays: boolean; /** * Include any dependencies (scripts, email templates, SAML entity providers and circles of trust, social identity providers, themes). */ deps: boolean; /** * Include x and y coordinate positions of the journey/tree nodes. */ coords: boolean; } /** * Tree import options */ export interface TreeImportOptions { /** * Generate new UUIDs for all nodes during import. */ reUuid: boolean; /** * Include any dependencies (scripts, email templates, SAML entity providers and circles of trust, social identity providers, themes). */ deps: boolean; } export interface SingleTreeExportInterface { meta?: ExportMetaData; innerNodes?: Record; innernodes?: Record; nodes: Record; scripts: Record; emailTemplates: Record; socialIdentityProviders: Record; themes: ThemeSkeleton[]; saml2Entities: Record; circlesOfTrust: Record; tree: TreeSkeleton; } export interface MultiTreeExportInterface { meta?: ExportMetaData; trees: Record; } export type JourneyClassificationType = 'standard' | 'custom' | 'cloud' | 'premium'; export declare enum JourneyClassification { STANDARD = "standard", CUSTOM = "custom", CLOUD = "cloud", PREMIUM = "premium" } export interface TreeDependencyMapInterface { [k: string]: TreeDependencyMapInterface[]; } export interface TreeExportResolverInterface { (treeId: string, state: State): Promise; } export declare function hasScriptDependency(nodeConfig: NodeSkeleton): boolean; /** * Updates coordinates of the nodes in a tree to the same as the nodes on the server if the nodes on the tree do not exist. * @param {TreeSkeleton} tree The tree being imported * @param {string} nodesAttributeName The name (key) of the attribute on the tree that has nodes * @param {TreeSkeleton} serverTree The current tree on the server * @returns {TreeSkeleton} The current tree on the server */ export declare function updateCoordinates({ tree, nodesAttributeName, serverTree, state, }: { tree: TreeSkeleton; nodesAttributeName: string; serverTree: TreeSkeleton | null; state: State; }): Promise; /** * Create export data for a tree/journey with all its nodes and dependencies. The export data can be written to a file as is. * @param {string} journeyId journey id/name * @param {TreeExportOptions} options export options * @returns {Promise} a promise that resolves to an object containing the tree and all its nodes and dependencies */ export declare function exportJourney({ journeyId, options, state, }: { journeyId: string; options?: TreeExportOptions; state: State; }): Promise; /** * Create export data for all trees/journeys with all their nodes and dependencies. The export data can be written to a file as is. * @param {TreeExportOptions} options export options * @returns {Promise} a promise that resolves to an object containing the trees and all their nodes and dependencies */ export declare function exportJourneys({ options, state, }: { options?: TreeExportOptions; state: State; }): Promise; /** * Get all the journeys/trees without all their nodes and dependencies. * @returns {Promise} a promise that resolves to an array of journey objects */ export declare function readJourneys({ state, }: { state: State; }): Promise; /** * Get a journey/tree without all its nodes and dependencies. * @param {string} journeyId journey id/name * @returns {Promise} a promise that resolves to a journey object */ export declare function readJourney({ journeyId, state, }: { journeyId: string; state: State; }): Promise; /** * Create journey without dependencies. * @param {string} journeyId journey id/name * @returns {Promise} a promise that resolves to a journey object */ export declare function createJourney({ journeyId, journeyData, state, }: { journeyId: string; journeyData: TreeSkeleton; state: State; }): Promise; /** * Update or create journey without dependencies. * @param {string} journeyId journey id/name * @returns {Promise} a promise that resolves to a journey object */ export declare function updateJourney({ journeyId, journeyData, state, }: { journeyId: string; journeyData: TreeSkeleton; state: State; }): Promise; /** * Import a tree with all dependencies from a `SingleTreeExportInterface` object (typically read from a file) * @param {SingleTreeExportInterface} importData tree object containing tree and all its dependencies * @param {TreeImportOptions} options import options * @returns {Promise} a promise that resolves to true if no errors occurred during import */ export declare function importJourney({ importData, options, state, }: { importData: SingleTreeExportInterface; options: TreeImportOptions; state: State; }): Promise; /** * Resolve inner tree dependencies * @param {string[]} existingJorneys Array of existing journey names * @param {MultiTreeExportInterface} candidateJourneys Map of journeys to resolve dependencies for * @param {{ [k: string]: string[] }} unresolvedJourneys Map of unresolved journey names and their dependencies * @param {string[]} resolvedJourneys Array of resolved journey names * @param {number} index Depth of recursion * @returns {Promise<{unresolvedJourneys: { [k: string]: string[] }; resolvedJourneys: string[];}>} a promise resolving to a dependency status object */ export declare function resolveInnerTreeDependencies({ existingJorneys, candidateJourneys, unresolvedJourneys, resolvedJourneys, index, }: { existingJorneys: string[]; candidateJourneys: MultiTreeExportInterface; unresolvedJourneys?: { [k: string]: string[]; }; resolvedJourneys?: string[]; index?: number; }): Promise<{ unresolvedJourneys: { [k: string]: string[]; }; resolvedJourneys: string[]; }>; /** * Resolve journey dependencies * @param {string[]} installedJorneys Map of installed journeys * @param {Record} journeyMap Map of journeys to resolve dependencies for * @param {string[]} unresolvedJourneys Map to hold the names of unresolved journeys and their dependencies * @param {string[]} resolvedJourneys Array to hold the names of resolved journeys * @param {number} index Depth of recursion */ export declare function resolveDependencies(installedJorneys: string[], journeyMap: Record, unresolvedJourneys: { [k: string]: string[]; }, resolvedJourneys: string[], index?: number): Promise; /** * Import journeys * @param {MultiTreeExportInterface} importData map of trees object * @param {TreeImportOptions} options import options */ export declare function importJourneys({ importData, options, state, }: { importData: MultiTreeExportInterface; options: TreeImportOptions; state: State; }): Promise; /** * Get the node reference obbject for a node object. Node reference objects * are used in a tree flow definition and within page nodes to reference * nodes. Among other things, node references contain all the non-configuration * meta data that exists for readaility, like the x/y coordinates of the node * and the display name chosen by the tree designer. The dislay name is the * only intuitive link between the graphical representation of the tree and * the node configurations that make up the tree. * @param nodeObj node object to retrieve the node reference object for * @param singleTreeExport tree export with or without dependencies * @returns {NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface} node reference object */ export declare function getNodeRef(nodeObj: NodeSkeleton, singleTreeExport: SingleTreeExportInterface): NodeRefSkeletonInterface | InnerNodeRefSkeletonInterface; /** * Default tree export resolver used to resolve a tree id/name to a full export * w/o dependencies of that tree from a platform instance. * @param {string} treeId id/name of the tree to resolve * @returns {TreeExportResolverInterface} tree export */ export declare const onlineTreeExportResolver: TreeExportResolverInterface; /** * Tree export resolver used to resolve a tree id/name to a full export * of that tree from individual `treename.journey.json` export files. * @param {string} treeId id/name of the tree to resolve * @returns {TreeExportResolverInterface} tree export */ export declare const fileByIdTreeExportResolver: TreeExportResolverInterface; /** * Factory that creates a tree export resolver used to resolve a tree id * to a full export of that tree from a multi-tree export file. * @param {string} file multi-tree export file * @returns {TreeExportResolverInterface} tree export resolver */ export declare function createFileParamTreeExportResolver(file: string, state: State): TreeExportResolverInterface; /** * Get tree dependencies (all descendent inner trees) * @param {SingleTreeExportInterface} treeExport single tree export * @param {string[]} resolvedTreeIds list of tree ids wich have already been resolved * @param {TreeExportResolverInterface} resolveTreeExport tree export resolver callback function * @returns {Promise} a promise that resolves to a tree dependency map */ export declare function getTreeDescendents({ treeExport, resolveTreeExport, resolvedTreeIds, state, }: { treeExport: SingleTreeExportInterface; resolveTreeExport: TreeExportResolverInterface; resolvedTreeIds: string[]; state: State; }): Promise; /** * Analyze if a journey contains any custom nodes considering the detected or the overridden version. * @param {SingleTreeExportInterface} journey Journey/tree configuration object * @returns {boolean} True if the journey/tree contains any custom nodes, false otherwise. */ export declare function isCustomJourney({ journey, state, }: { journey: SingleTreeExportInterface; state: State; }): boolean; /** * Analyze if a journey contains any premium nodes considering the detected or the overridden version. * @param {SingleTreeExportInterface} journey Journey/tree configuration object * @returns {boolean} True if the journey/tree contains any custom nodes, false otherwise. */ export declare function isPremiumJourney(journey: SingleTreeExportInterface): boolean; /** * Analyze if a journey contains any cloud-only nodes considering the detected or the overridden version. * @param {SingleTreeExportInterface} journey Journey/tree configuration object * @returns {boolean} True if the journey/tree contains any cloud-only nodes, false otherwise. */ export declare function isCloudOnlyJourney(journey: SingleTreeExportInterface): boolean; /** * Get a journey's classifications, which can be one or multiple of: * - standard: can run on any instance of a ForgeRock platform * - cloud: utilize nodes, which are exclusively available in the ForgeRock Identity Cloud * - premium: utilizes nodes, which come at a premium * - custom: utilizes nodes not included in the ForgeRock platform release * @param {SingleTreeExportInterface} journey journey export data * @returns {JourneyClassification[]} an array of one or multiple classifications */ export declare function getJourneyClassification({ journey, state, }: { journey: SingleTreeExportInterface; state: State; }): JourneyClassificationType[]; export type DeleteJourneyStatus = { status: string; nodes: { status?: string; }; }; /** * Delete a journey * @param {string} journeyId journey id/name * @param {Object} options deep=true also delete all the nodes and inner nodes, verbose=true print verbose info */ export declare function deleteJourney({ journeyId, options, state, }: { journeyId: string; options: { deep: boolean; verbose: boolean; progress?: boolean; }; state: State; }): Promise; export type DeleteJourneysStatus = { [k: string]: DeleteJourneyStatus; }; /** * Delete all journeys * @param {Object} options deep=true also delete all the nodes and inner nodes, verbose=true print verbose info */ export declare function deleteJourneys({ options, state, }: { options?: { deep: boolean; verbose: boolean; }; state: State; }): Promise; /** * Enable a journey * @param journeyId journey id/name * @returns {Promise} updated tree/journey object */ export declare function enableJourney({ journeyId, state, }: { journeyId: string; state: State; }): Promise; /** * Disable a journey * @param journeyId journey id/name * @returns {Promise} true if the operation was successful, false otherwise */ export declare function disableJourney({ journeyId, state, }: { journeyId: string; state: State; }): Promise; //# sourceMappingURL=JourneyOps.d.ts.map