🧭 Learning Path Navigation

The navigation field of the learningPath object provides a flexible entry point for retrieving navigation-related data within a Learning Path.
This field accepts several optional arguments, allowing the API to adapt to different navigation scenarios based on context and interaction mode.
ArgumentTypeDescriptionDefault
navigationTypeNavigationTypeDefines the scope of navigation. It determines which parts of the Learning Path structure are included.TRAINING_NAVIGATION
navigationModeNavigationModeDetermines how the user is interacting with the content — for example, whether they are taking or reviewing steps.TAKE
currentStepEdgeRidIDOptional in most cases, but required for STEP_NAVIGATION. If provided, it helps tailor the navigation data to the user’s current position.
All arguments are optional and designed to work together to support various navigation use cases in a single, unified entry point. However, some limitations do apply — please refer to the description of the navigation field in the API schema for details on usage constraints and compatibility between arguments.

📚 Navigation Types

The NavigationType enum defines the overall structure of the navigation response. Each type targets a different use case:
NavigationTypeDescription
TRAINING_NAVIGATIONFocuses on module-level navigation within the current training. This is best used to render high-level overviews of a training structure.
STEP_NAVIGATIONDesigned for in-depth progression tracking within a module. It includes current activities and references to upcoming modules.
FULL_NAVIGATIONReturns the complete navigation tree for the entire Learning Path. Useful for dashboards or detailed overviews of user progress and structure.
STEP_NAVIGATION requires the currentStepEdgeRid argument and is the only mode that supports REVIEW navigation mode.

🧭 Navigation Modes

The NavigationMode enum defines how the user is interacting with the Learning Path content. It influences what kind of navigation data is returned and how the system interprets user intent.
NavigationModeDescription
TAKEThe user is actively engaging with the content — progressing through modules and activities.
REVIEWThe user is revisiting previously completed content. This mode is only supported with STEP_NAVIGATION.
Here are examples of different navigation implementations, as demonstrated in our learner area.

🧩 Reconstructing Hierarchical Relationships

Due to limitations in how GraphQL handles recursive structures, the navigation field returns all NavigationItem objects as flat array entries. This means hierarchical relationships (such as Training → Module → Activity) are not nested in the API response. To reconstruct this structure on the client side, each NavigationItem includes a navigationPath field. This field provides the hierarchical relationship of each item in the form of a colon-separated list of edgeId values, representing the item’s path through the Learning Path. Here is an example of the getLearningPath query using navigationType: FULL_NAVIGATION:
query getLearningPath {
  getLearningPath(lpId: 40) {
    navigation(navigationType: FULL_NAVIGATION) {
      edgeId
      edgeRid
      title
      description
      contentType
      navigationPath
      locked
      lockReasons
      learningContentType
    }
  }
}
Please find below an explanation of the navigationPath field structure, which allows you to reconstruct parent-child relationships between navigation items:
Example ValueMeaning
116:117The current item (edgeId = 117) is a child of the item with edgeId = 116.
116The item is at a top level (e.g. a module or training), with no parent in the structure.
In this format:
  • The last value always represents the current item’s edgeId.
  • The preceding values reflect the item’s parent hierarchy.
Using this structure, you can rebuild the full nested view of the Learning Path on the client side.