Generic objects are structures for storing and interacting with data in an app. They are the primary type of entity through which the engine provides access to the components of an app. When the engine retrieves an app for the API, it converts the app to a JSON structure and returns a handle to be used for API interactions. The component objects of the app are turned into JSON generic objects. These generic objects are sub-objects of the app and cannot exist without it.
The Capability APIs, the Qlik Sense .NET SDK, and the enigma.js library all use the Qlik Engine JSON API internally, and so expose generic objects via their classes and methods.
The generic object is considered "generic" because it is a flexible structure that can represent many different app components, such as sheets, stories, lists, hypercubes, slides, and bookmarks. Generic objects can contain or refer to other generic objects, depending on their respective types. The qType property of the generic object identifies its type (for example, some possible values for qType are "sheet", "Dimension", "Measure", and "GenericObject").
In the context of the Engine API, apps are sometimes referred to as documents. In the following diagram, the document object (that is, the app) contains app objects (properties and sub-objects, where the sub-objects are represented by generic objects). The global object refers to the engine itself.
Properties and layout
The generic object has two important components that we rely on during interactions with app data: a set of properties that defines the app’s structure and logic, and a layout that represents the engine’s evaluation of the definitions in the properties. We refer to this evaluation by the engine as "rendering". You can set the properties of a generic object by calling the SetProperties method in the Qlik Engine JSON API. You retrieve the layout of a generic object by calling the GetLayout method.
Special types of generic objects
A hypercube is a special kind of non-persisted generic object that is used in the calculation of query results. Hypercubes allow for complex aggregations against multiple dimensions. If selections are applied, the engine calculates only the selected values.
A list object is a visualization that contains one dimension. When the engine calculates the layout of a list object, it calculates all values. If some selections are applied, the selected values are displayed along with the excluded and optional values.