Click or drag to resize
Introduction
The QlikView Management Service API

The QlikView Management Service (QMS) API is exposed as a web service and provides a description of its operations and data objects in WSDL available at http://<server-name>:4799/QMS/Service by default. All communication uses SOAP over HTTP.

To be able to interact with the QMS API web service, a key referred to as the "service key" must be supplied as a header of the HTTP request of each operation call, except for the GetTimeLimitedServiceKey operation, which is used to retrieve such a key. This aims to prevent cross-site request forgery (CSRF), see the CSRF article at OWASP.org for more information. The HTTP header containing the service key is called X-Service-Key. For example, the header with a value can look like this:

X-Service-Key: rPnBL6zlbvNr5k2nowI919EJkkOeHsi8

Different security layers control access to the different operations. Most operations require membership of a local group named QlikView Management API which aims to control overall API access. The exceptions to this are the GetTimeLimitedServiceKey operation and EDX-related operations. The second layer of security aims to control access at an operation level and involves the local groups QlikView Administrator and QlikView EDX as well as the Document Folder Administrator role. These roles are inclusive, where QlikView Administrator provides the highest access level and QlikView EDX the lowest access level, for example, a Document Folder Administrator have access to operations that require QlikView EDX membership, and a QlikView Administrator has access to operations that require Document Folder Administrator membership. The documentation for each operation specifies which exact roles are required to access it.

Using the QlikView Management Service API sample code

The QlikView Server 12 installation contains a couple of examples on how to use the QMS API. It also contains a code example on how to inject the service key into the HTTP headers of the API web service call. This example is written in C# .NET 4.5 and assumes that the application is using WCF to communicate with the API.

See Also: Samples
Navigating this API reference

The available QMS API operations are listed under the IQMS and IQMS2 interfaces under the PIX.Services.V12 and PIX.Services.V12.Api2 namespaces. All data objects used by these operations are listed under the three PIX.QMSAPI.DataObjects namespaces. These namespaces are internal QlikView Management Service namespaces and will be used mainly as references in the SOAP XML.

Differences between IQMS and IQMS2

There are some differences in the intended use of the QMS API between QlikView 11.20 and QlikView 12.10. For these reasons, a new QMS API interface was introduced with QlikView 12.10, IQMS2, while the QMS API interface used for QlikView 11.20 is available as IQMS.

This ensures that customers who have built their clients for QlikView 11.20 can use them with no modifications when upgrading to QlikView 12.10.

IQMS2 have a number of additional methods that are not available in IQMS. If you want to create a new API client on QlikView 12.10, you are recommended to use IQMS2 because of the extra functionality it offers. If you downgrade to QlikView 11.20 while your API client is utilizing the IQMS2 namespace, you must change to the IQMS interface and remove all references to IQMS2 methods that are not available in IQMS.

The following methods are available in IQMS2 but not in IQMS:

  • GetAllDistributionGroups
  • GetAllMissingDistributionGroups
  • GetDistributionGroups
  • GetDistributionGroupsDefinition
  • GetDSCAPISettings
  • GetDSPAPISettings
  • GetQMSVersion
  • GetQVPRAPISettings
  • GetQVWSSetting
  • GetTemplateFolderId
  • HasAnyDistributionGroups
  • IsQdsLoadbalancerConfigured
  • QdsLoadBalancerConfigHasErrors
  • SetDSCAPISettings
  • SetDSPAPISettings
  • SetQVPRAPISettings
  • SetQVWSSetting
  • UpdateServices

IQMS.FindEDX returns template tasks but IQMS2.FindEDX does not. If using the IQMS2 interface, use IQMS2.FindTask instead:

apiclient.FindTask(qdsID, TaskType.TemplateTask, "templateTaskName");
See Also