This release adds native file handling support, which allows for files up to
100 MB in size and works with a larger selection of connectors.
New blocks:
Import App: A version of the Import App From Base 64 Encoded File block which uses
native file handling.
Export App: A version of the Export App To Base 64 Encoded File block which uses
native file handling.
Import File From Temporary Contents: A version of the Import Base 64 Encoded File To Temporary Contents
block which uses native file handling.
Export File From Temporary Contents: A version of the Export Base 64 Encoded File From Temporary Contents
block which uses native file handling.
Import And Replace App In Shared Space By Name: A version of the Import And Replace Base 64 Encoded App In Shared Space
block which uses native file handling.
Renamed blocks:
Import And Replace Base 64 App In Shared Space By Name: This block was formerly
Import And Replace App In Shared Space, and has been renamed for consistency
with other file handling blocks.
Republished qlik-cli documentation to remove deprecated commands and update with
improved API specifications.
Updated command help to match the updated API specifications.
Deprecated the collection change-visibility command as the supporting API is
no longer published.
Renamed the flag webhook ls --eventType to --eventTypes to align with the operation
of the API. This flag now takes multiple event types, separated by commas, to support
more precise queries. The old flag still works and is ported to the new one for
backwards compatibility.
Notes on deprecation of collection change-visibility command
The supported method for changing the visibility of a collection is to use
collection patch, for example:
Support for the anonymous OAuth type has been added to qlik-embed, which allows
you to leverage the Anonymous Access capability for embedding Qlik Sense components
with qlik-embed.
Import And Replace App In Shared Space By Name: Use the Import And Replace App
In Shared Space By Name block to simplify importing apps to a shared space for
deployments where the goal of importing the app is to then publish or republish
that imported copy into a managed space. The block will first identify and delete
any other apps in the shared space with the same name (using an exact case-sensitive
match on the provided name), then import the app and return an object containing
the imported app and the IDs of any deleted apps.
Updated blocks:
Create Space If Not Existing: Added the ability to set and update the space
description.
Deactivate Tenant: Fixed an issue with the example output.
Added oauth-client command for the oauth-clients API
Added automation-connections command for the automation-connections API
Updated app properties exported on qlik app unbuild command
Added CSRF support for Qlik Sense Enterprise client-managed
Tidied up various descriptions
Removed deprecated qlik catwalk commands
Removed deprecated qlik csp-header commands
Added oauth-client command for the oauth-clients API
The oauth-clients API allows you to create and manage OAuth clients, used for
authentication in Qlik Cloud. These are designed to support use cases such as
embedding, automation, orchestration, and more.
Explore the new commands under:
qlik oauth-client
If you’re new to OAuth in Qlik Cloud, explore the OAuth2 overview.
Added automation-connections command for the automation-connections API
Automations are the primary resource for Qlik Application Automation,
which provide no-code methods for integrating with Qlik and third-party services.
Updated app properties exported on qlik app unbuild command
Added missing app properties to the unbuild command, to ensure a more complete
unbuild of the app.
Added CSRF support for Qlik Sense Enterprise client-managed
An upcoming change in Qlik Sense Enterprise client managed will make
it a requirement to include a CSRF-token when establishing websocket connections.
This adds a forwards-compatible fix for that.
Removed deprecated qlik csp-header commands
This deprecated endpoint has now been removed. It was replaced
by qlik csp-origin generate-header.
Deallocate All Licenses From User: This block removes any licenses assigned
to the specified user subject.
Delete User And Deallocate All Licenses: This block removes any licenses assigned
to the specified user ID and deallocates any licenses assigned to the
user subject associated with that user ID.
Updated blocks:
Run Automation: Now supports providing the input payload for the automation
within the block.
qlik-embed 1.2.0 adds the popular charts on the fly feature to the analytics/chart
ui. This allows you to generate charts from data in a Qlik Sense app, without
the chart existing in the app. You pass a definition, and the chart is created as
requested by your web app.
Here’s an example using qlik-embed web components:
Note: charts on the fly works only with charts available in the analytics/chart
ui in qlik-embed. Please consult the
chart compatibility table
for a list of compatible charts. Use the Viz on the fly ID for the type property.
Update for using context property
Previously an html attribute to the <qlik-embed /> tag could include :json or :number
to indicate which type the string in the attribute should be parsed to. In some environments
the : is not allowed as a html parameter so it is now possible to also use ___
(triple underscore) as a delimiter.
This means you can now set context like this:
<qlik-embed context___json='{ theme: "Breeze" }' ... /> and it will be parsed as json.
qlik-embed web components script src attribute changes
A change to the latest release of qlik-embed web components requires references
to the index.min.js file be specified for the library to run.
If you are using qlik-embed web components it is recommended you update the src
property of the script element declaring the full path to the library.
Update the attribute to include /dist/index.min.js in the path. Here is an example of
the new path for the src attribute:
src="https://cdn.jsdelivr.net/npm/@qlik/embed-web-components@1/dist/index.min.js".
Note: If you do not want to use the latest version of qlik-embed web components, it is
possible to set the version in the path.
Here is an example of the src attribute referencing a pinned version of qlik-embed
web components:
src="https://cdn.jsdelivr.net/npm/@qlik/embed-web-components@1.1.1/dist/index.min.js".
Update the oauth-callback page used to handle connectivity between qlik-embed web components
and your Qlik Cloud tenant. Set the src attribute to use oauth-callback.min.js.
The resulting src attribute should look something like this:
src="https://cdn.jsdelivr.net/npm/@qlik/embed-web-components@1/dist/oauth-callback.min.js".
You can learn more about qlik-embed
on the Why qlik-embed page.
Like other UIs available through qlik-embed, when you want to use classic/chart
in an embedded analytics context, set the ui property to classic/chart. If you use
qlik-embed web-components it will look something like this:
classic/chart will render supported visualizations from Qlik Sense applications.
For a full support matrix, refer to
the supported charts page.
Third-party extensions
Third-party extensions may not render properly within embedded contexts compared
to the native Qlik Sense experience if the extension manipulates private code
such as CSS. Manipulating CSS in the native experience is not supported by Qlik,
therefore, it’s not supported in qlik-embed.
Additionally, for best compatibility, it is suggested to enable iframe mode when
working with extensions:
Publish or Republish App to Managed Space: a convenience block which
rolls together the capabilities in Publish App to Managed Space
and Republish App to Managed Space to automatically replace apps if they already
exist with the same name in the managed space.
Allocate Or Update User License: a convenience block for tenants on the user
(professional/analyzer) license model, supporting automated assignment or update
of user licenses in a single block.
RAW API List Request: a block which supports list API calls to RAW endpoints, removing the
requirement for handling looped calls when making RAW calls.
The following blocks have been renamed to improve consistency:
Create Interactive Identity Provider: renamed to Create Interactive OIDC Identity Provider
in preparation for updates to blocks for additional OIDC and SAML configuration
options.
Update Interactive Identity Provider: renamed to Update Interactive OIDC Identity Provider
in preparation for updates to blocks for additional OIDC and SAML configuration
options.
@qlik/api is a collection of javascript modules which each exposes an api
built to make the integration process for javascript solutions as easy as
possible. The library is built for both browser and NodeJS usage and will
seamlessly integrate with qlik-embed libraries.
@qlik/api provides Qlik Cloud REST endpoints and access to the Qlik Analytics
Engine (QIX).
REST
@qlik/api REST interfaces are generated from open-api specifications released
from those Qlik Cloud services that exposes a restful API. The code generation
tool runs using the specs, building typescript for all api calls documented in
the specification. One module per api is generated.
You can learn more about the available modules in
the REST section
of the typescript types repository on
Qlik Open Source.
QIX
Qlik’s Analytics Engine Service (QIX) is the runtime service for Qlik Sense
applications and several analytics services in Qlik Cloud. @qlik/api offers a
fully typed api for connecting to and consuming Qlik Sense Applications
including “Qlik Sense mixins” which previously only was used internally by
in-house Qlik developers.
More info about QIX can be found in
the qix section.
Learn more about @qlik/api in the toolkits section.
This changelog provides 60 days’ deprecation notice of the Typescript version of
the Platform SDK. The library is being replaced with the Qlik API.
The Qlik API offers the same capabilities and access to Qlik Cloud REST APIs
and the Analytics engine, with the addition of officially supported Typescript
types.
Switching from the Platform SDK to the Qlik API is straightforward, requiring only a few modifications
to your code. The major change is in handling authentication when connecting
to your Qlik Cloud tenant.
Note: Some of the block updates below feature breaking changes. Your existing automations will
remain unaffected unless you choose to upgrade by clicking “Upgrade to latest version” on the block.
The following blocks have been added:
Get Analytics Data Connection: retrieves the definition for a specific analytics
data connection.
Create Analytics Data Connection: enables creation of analytics data connections
using the recently
updated data-connections API.
List Analytics Data Sources: lists all data sources available on the tenant
against which data connections can be created.
Get Analytics Data Source Properties: retrieves the properties of a specific
data source for use when determining which connectionProperties to pass into a
Create New Analytics Data Connection block.
List Analytics Data Source Property Mapping: similar to Get Analytics Data Source Properties
but formats the possible connectionProperties for easier programmatic use.
List Analytics Data Source Gateways: lists available Qlik Direct Access Data
Gateways on the tenant for a specific data source.
Add Member To Space If Not Existing, Update If Existing: adds a user or group to
a space if they are not already a member, or updates their roles if they are a
member. Does not update users who are owners of a space.
Count Remaining API Keys: returns the number of API keys that the requesting user
is able to create on the tenant. This is a function of the maximum number of API keys
per user, minus the number of keys the user currently has.
Import Base 64 Encoded File To Temporary Contents: supports importing a base64-encoded
file to the temporary contents service for downstream consumption in another
service, such as report-templates.
Export Base 64 Encoded File From Temporary Contents: supports exporting a base64-encoded
file from the temporary contents service.
Copy Analytics App: copies an analytics app on the same tenant.
Generate Automation Schedule Definition: helps to create a valid automation schedule for
use in the Create automation or Update automation blocks.
The following blocks have been updated:
RAW API Request: breaking change - removed the key value entry input mode for
this block due to incorrect translation of certain data types, leading to API
errors. If you are using this block, make sure to create a copy before
upgrading its version to avoid corrupting the input.
RAW API Request With Headers: breaking change - removed the key value entry input mode for
this block due to incorrect translation of certain data types, leading to API
errors. If you are using this block, make sure to create a copy before
upgrading its version to avoid corrupting the input.
List Analytics Data Connections: additional input parameters have been added
to align with available options on the API.
List API Keys: additional input parameters have been added to align with available
options on the API.
Create API Keys: an example output has been added.
List Collections: a new enum has been added for collection type.
Create Collection If Not Existing: a new enum has been added for collection type.
Create Automation: an input for the automation schedule has been added to the block.
Update Automation: an input for the automation schedule has been added to the block.
Create Group: block output has been updated to return the created group or groups.
Update Roles Of Member From Space: removed unused required input assigneeId.
Update User: added enums for user status.
Publish App To Managed Space: an example output has been added.
Republish App To Managed Space: an example output has been added.
List Users: added information on how to list non-active users.
List Collections: added enum for public collections (publicgoverned).
The following blocks have been renamed to improve consistency:
List Data Connections: renamed to List Analytics Data Connections.
Delete Data Connections: renamed to Delete Analytics Data Connections.
Get Current Tenant Hostname: returns the hostname for the tenant the automation
is running on.
List Analytics Reloads: returns results from the Reloads API to list analytics
reload information.
Add Role To User By Name: supports addition of individual
roles to users by the name of the role.
Remove Role From User By Name: supports removal of individual
roles from users by the name of the role.
Create collection If Not Existing: checks to see if a collection exists, if so,
returns the collection, if not, creates the collection.
Get Sharing Settings: retrieves the current configuration of the sharing service for
various reporting and sharing features in the tenant.
Update Sharing Settings: changes the configuration of the sharing service to
turn on or off various reporting and sharing features in the tenant.
RAW API Request With Headers: similar to the RAW API Request block, but appends
the response headers to the response body, since some Qlik Cloud APIs
return information in the header.
The following blocks have been updated:
Get API Key Settings: removed the need to pass the tenantId as a block
input, since you can only make requests for the tenant you pass the request to.
Update API Key Settings: removed the need to pass the tenantId as a block
input, since you can only make requests for the tenant you pass the request to.
Update Collection: added support for changing collection type from private to
publicgoverned to support managing public collections.
The following blocks have been renamed to improve consistency:
Enable Data Alerts: renamed to Update Data Alert Settings.
Get Auto Create Group Setting: renamed to Get Auto Create Group Settings.
Update Auto Create Group Setting: renamed to Update Auto Create Group Settings.
Trigger Enable Notes Settings: renamed to Update Notes Settings.
The deprecated Shared filter has been removed from new and updated blocks. This
does not impact blocks which are already in use in running automations.
Previously, the Qlik Platform Operations connector supported cross-tenant API calls
only to the domain *.qlikcloud.com.
This update brings support for calling any Qlik Cloud tenant, including those in
Qlik Cloud Government regions. Due to differences in Qlik Cloud Government, it is
not yet possible to use the tenant create, deactivate, or reactivate blocks on Qlik
Cloud Government tenants.
Additionally, the connector now supports passing a full tenant hostname. This means that you
can now use either of these formats to connect to a tenant:
tenantname.region.qlikcloud.com - the full tenant hostname (recommended)
tenantname.region - the legacy, reduced path
It is now recommended that you use the full tenant hostname on all blocks for any
new automations you create with the Platform Operations connector, by using
the generic Variable block to define the hostname at the automation level.
The following blocks have been added to the connector:
Deactivate tenant
Reactivate tenant
These blocks add support for the deactivation, and eventual deletion of tenants
from Qlik Cloud. For further information, refer to
the delete tenant changelog.
Typescript v0.24.0: New API Intakes and Maintainance
feat: Intake Brands API
The [brands] API supports the creation and management
of brands in the tenant. This allows you to provide a custom logo and
favicon to help you enhance the user experience for your users.
Below is an example of how you can use the API.
Important: Use of the brands API is permitted for OEM use cases only.
const qlik =newQlik({...});// upload a new logoconst logo = fs.readFileSync(path.join(__dirname,'assets/logo.png'));const brand =await qlik.brands.create(logo,'my_awesome_logo');// activate/deactivate and deleteawait qlik.brands.activate(brand.id);await qlik.brands.deactivate(brand.id);await qlik.brands.delete(brand.id);
⚠️ Breaking - fix: method name fixes in various APIs
// example method name changes:
app.recommendInsightAnalyses(...);// was previously app.recommend(...)
automation.retryRun(...);// was previously automation.retry(...)// & some plural/singular fixes
collections.getFavorites();// was previously collections.getFavorite()
webhook.getDelivery(...);// was previously webhook.getDeliverie(...)
Other Fixes
fix: render inline response object
fix: random nbr in group test by
fix: bump spectacular.ts to latest
To get started with the Qlik Typescript SDK, clik here
Python v0.16.0: New API Intakes and Fixes
feat: Intake for Brands API
brands = Brands(config=config)# create upload logo to your tenant
file_dir = os.path.dirname(os.path.abspath(__file__))
logo_path = os.path.join(file_dir,"logo.png")withopen(logo_path,"rb")as logo_file:
brand = brands.create(logo=logo_file, name="my_awesome_logo")# get / activate / deactivate
brands.get(brand_id=brand.id)
brands.activate(brand_id=brand.id)
brands.deactivate(brand_id=brand.id)
This API allows you to manage the branding of a tenant.
For example, you can customize logos and favicons with your brand.
You can activate this by using the command:
The group-create command is a command used for creating groups.
It can be used for managing access control for multiple users
at the same time. For example, you can create a group
called developers with the “Developer” role assigned.
qlik group create --name=developers --assignedRoles='[{"name":"Developer"}]'
You can get a complete list of roles using the command qlik role ls.
--assignedRoles accepts either an ID or the name of a role.
feat: Tenant-edit command
The tenant-edit command now allows you to update your tenant-configuration
in a command-line-editor of your choice.
docs: Edit-commands are no longer experimental
docs: The identity-provider commands are no longer experimental
fix: Bug when providing required body parameters from a file using the --file flag.
When making API calls against Qlik’s APIs, you are subject to ratelimits as
described on our ratelimits page.
Previously, hitting a ratelimit during an automation would cause a failure of
the automation, but new handling has been added that has changed the behaviour
to respect the retry-after header returned when the ratelimit is hit.
This addition means you can remove any custom ratelimit handling implemented within
your automations. It should now result in automations, which were failing previously,
running until completion.
This change applies to all blocks on the Platform Operations connector.
Block updates
The following blocks have been updated in the connector:
Update auto create group settings - this has been updated to ensure that the
value of both autoCreateGroups and syncIdpGroups are toggled on each call.
This is to ensure parity with the behavior in the management console. If you
wish to change these independently in future, use the Raw API call block.
// create a sheetconst sheet =await app.createSheet({ qMetaDef:{ title:'temp sheet'}});// change owner of the sheetawait app.changeOwner(sheet.id,{ ownerId: anotherUser.id });
feat: groups API - create groups
You can now create groups using directly the groups API
import Qlik from'@qlik/cli';const{ roles, groups }=newQlik({...});// fetch the tenant admin roleconst[ tenantAdminRole ]=await roles.getRoles({ filter:'name eq "TenantAdmin"'});// create group named avengers with tenant admin roleawait groups.create({name:'avengers', assignedRoles:[{id: tenantAdminRole.id}]})// fetch the groupsconst groups =await groups.getGroups({ filter:'name eq "avengers"'});
feat: users API - invite user
const users =newUsers({...});// resend an invitation in swedishawait users.invite({ invitees:[{ email:'tom.hanks@qlik.com', resend:true, language:'sv'}]});
fix: allow using limit from query param for pagination
Python 0.15.0: API updates
feat: users API - update
qlik = Qlik(config=config)# resend an invite to a user in your teanant
qlik.users.invite(
InviteRequest(
invitees=[{email:"tom_hanks@qlik.com", language:"sv", resend: true}]))
feat: groups API - updates
You can now create a groups:
qlik = Qlik(config=config)
tenant_admin_role = qlik.roles.get_roles(filter='name eq "TenantAdmin"')# create group
data = GroupPostSchema(name="avengers", assignedRoles={"id": tenant_admin_role[0].id})
new_group = qlik.groups.create(data=data)# delete group
group = qlik.groups.get(groupId=new_group.id)
group.delete()
feat: apps API - new features
insight analysis: you now can list ()app.get_insight_analyses()) and get recommandations (recommend)
from insight advisor through APIs
change the ownership of generic objects
app.change_owner(objectId ='objectId', data ={ ownerId:'userId'})
feat: Sense Client Object Defaults support in the SDK
Added support for Sense Client Objects,
users can now easily do operations like:
// fetch the list sheetsconst sheetList =await app.getSheets();// get individual sheet and do operation on itconst sheet =await app.getSheet(sheetList[0].id);await sheet.publish()
and more:
// fetch the list fieldsconst fieldList =await app.getFields();// fetch fthe list of fields (including system fields)const fieldList =await app.getFields({ qFieldListDef:{ qShowSystem:true}});// listen to current selectionsconst currentSelectionsObj =await app.getCurrentSelectionsObject();await currentSelectionsObj.getLayout();
currentSelectionsObj.on('changed',()=>{// selections have been toggled});// create masterObjects & publishconst createdMasterObject =await app.createMasterobject({ qMetaDef:{ title, description }});// configure app propertiesawait app.setAppProperties({sheetTitleBgColor:'#ffcf03', sheetTitleColor:'#ffcf03'});// list bookmarks easily etc...const bookmarkList =await app.getBookmarks();
feat: enigma mixins are now enabled by default non raw rpc calls
// ex: to disable the bandwidth-reducing delta protocol you now need to set it to falseawait app.open({ delta:false});
v0.21.1: Maintenance Release
fix: Exclude nebula example from dep specs
Excluding nebula example as it uses production non-approved dependencie parcel and nebula/stardust
v0.21.0: New Features and Bugfixes
fix: Handle property number name
Added leading underscore to property names starting with number
This fixes the problem with groups blocking updating of specs
fix: Throw engine message error
Added a response error interceptor to throw a descriptive error message
received from engine
fix: Replaced Buffer to btoa in browser build
chore: Refactor env_vars
chore: Use apiResponseInterceptor and add nebula integration test
added empty once function next to the on-listener function - this should be a proper once function
set properties in the open function: id, handle, type, genericType
use apiResponseInterceptor - to set properties on result
throw error from apiResponseInterceptor similar to enigma, should this throw an enigma error?
wrap constructor for loop in if-isArray because of a non array response - needs investigation
add browser integration test for nebula app using cypress
chore: Added once event listener
Once event listeners are called only once on event and removed from listeners
hypercube.once('changed',()=>{...});
chore: Allow event listeners to be async
Async functions can be added as event listeners
hypercube.on('changed',async()=>{...});
chore: Keep reserved keywords as class members (delete)
Language reserved words are modified only while using as formal parameters and
kept as it is in class members which allows parsing request body with reserved
words as keys to class object without loosing any fields from request body
feat: commands for managing script versions in an app
# List script versions in an app
qlik app script version ls--appId=<appId># Create a version of a script
qlik app script version create --versionMessage="Version1"--script="Load RecNo() as N autogenerate(100);"--appId=<appId># Get the current version of a script
qlik app script version get current --appId=<appId># Get a specific version of a script. The scriptId is returned when listing script versions.
qlik app script version get <scriptId>--appId=<appId># Remove a specific version of a script
qlik app script version rm<scriptId>--appId=<appId>
feat: additional support for rows and json output for the qlik app eval command.
# By default the eval command will only return maximum 20 rows of data
qlik app eval<expression>--app=<appId># If additional data is wanted the number of rows can now be specified using the --rows parameter
qlik app eval<expression>--rows=5000--appId=<appId># It is also possible to get the hypercube data pages in raw json
qlik app eval<expression>--rows=5000--appId=<appId>--json
// Get the list of event sourcesconst sources =await qlik.audits.getSources();
feat added support for listing app script versions
// saves a script with version called `v1`const script ='Load RecNo() as N autogenerate(100);';await app.createScript({
script,
versionMessage:'v1',});// retrieves all versions of the app scriptconst{ scripts }=await app.getScriptVersions();
Features
feat: Added support for registering an event listener for object changed and closed events.
If an object handle is invalidated for instance when the data model has changed,
then the handle will be part of a change array in the response for the method
that caused the change.
It is now possible to register a listener for an object,
where onChanged is a custom defined function.
hypercube.on('changed', onChanged);
Handles can also be closed in a session if they are no longer valid.
This can happen if for instance you have a handle for a field and the data model is changed/reloaded.
field.on('closed', onClosed);
Improvements
fix: improvements for handling fetch depending on environment
The global.fetch function is assumed to be available, and if not now an error will be returned.
If it is not available then it can be added:
For ES6-Modules and node-fetch you can use
global.fetch = (args) => import('node-fetch').then(({default: fetch}) => fetch(args));
For CommonJS and cross-fetch you can use global.fetch = require('cross-fetch');
fix: Handling of websocket close errors.
If an error code is set when the websocket is closed, the SDK will now return
an error containing the code and reason for being closed.
// in case of an socket error the err will contain a `closeCode` and a `closeMsg`
session.on('socket-error',(data)=>{
err = data;});
⚠️ Breaking change
Operations on sub-resources ex: get_reloads_log were previously generated as class static methods
and required you to have the resource Id as parameter - now fixed.
config = Config(
host=self.base_url, auth_type=AuthType.APIKey, api_key=self.api_key
)
oauth_tokens = OauthTokens(config=config)# fetch all tokens for user with <userId>
tokens = oauth_tokens.get_oauth_tokens(userId="<userId>")# loop through tokens and revoke themfor token in tokens:
oauth_tokens.delete(token.id)
# create a script
app.create_script(ScriptVersion(script="Load RecNo() as N autogenerate(200);", versionMessage="v1"))# list the script versions in the app
scriptMetaList = app.get_script_versions()# get a specific version of a script
scriptObject = app.get_script_by_version(scriptMetaList.scripts[0].scriptId)# get the current script version (latest version)
currentScriptObject = app.get_script_by_version("current")
fix: Operations on sub-resources ex: get_reloads_log were previously generated
as class static methods and required you to have the resource Id as parameter is now fixed.
fix: clear all listeners on session and handles closed events
Here are the latest maintenance releases for the tools and SDKs.
Those releases includes a number of bug fixes and security patches.
Python SDK v0.12.0
fix: add event listener to the RPC session
from qlik_sdk import Auth, AuthType, Config
# custom function that should be calleddefopened_listener():print("sesssion opened")# register function for event "opened"
rpc_session.on("opened", opened_listener)with rpc_session.open()as rpc_client:...# opened_listener function is called when "opened" event is received in session
fix: readonly and allOf fields are now handled
fix: render param string enums for typings
fix: set type for the session property
fix: various improvements in the generated code-structure
Since the release of the Qlik Cloud platform SDKs earlier this year, the packages have recently been updated.
The idea with the Qlik Platform SDKs is to let developers extend solutions without the need
to develop them from scratch.
Python SDK (v0.11.0)
Feat: Allow full path in RAW rest calls.
This feature in combination with interceptors unlocks QRS communication,
for example:
Fix: Fail before request on missing path parameter
qlik item update itemId --file ./my_file
# now output an explicit error message about required parameters
Error: required flag(s)"resourceType" not set
Fix: correct output when using the --json for errors
qlik extension get don_t_exists --json# now outputs json ready to be parsed{"status":404,
"title":"Not found"}
New: OAuth 2.0 machine-to-machine support. Users are now able to authorize
with Qlik Cloud SaaS over client credentials flow.
New: Added command for tenant creation.
qlik tenant create
Note: This only works with specific entitlements
such as an active subscription with the multiple tenants entitlement.
New: Added commands for web-integrations management.
Web-integrations enable users to manage whitelisted origins that
can make requests to a specified tenant (CORS).
As more & more developers integrate & embed Qlik Sense, the need to simplify
the development process is paramount. Announcing the new
Qlik Platform SDK - a suite of tools, libraries, and documentation that
simplifies building high-quality and performant applications on top of the Qlik
Sense Platform. The idea is to let developers extend solutions without the need
to develop them from scratch.
And the best part? The capabilities of the SDK comes in two programming
languages - TypeScript & Python. With TypeScript, you will have improved
definitions and enhanced developer experience with modern IDEs and the Python
package opens up a whole new scope for the Python developer community to
leverage the power of Qlik Cloud APIs.
Looking to get started? Here are the package links:
New: Added qlik edit command - you can now easily update resources without
worrying about the complicated JSON Patch calculations. Based on the EDITOR
environment variable, the edit command starts your preferred editor
automatically and once your changes are saved, all PUT/PATCH operations are
automatically done.
If you want to see communication details for your edit call, you can use
the --verbose flag. It displays all HTTP operations that are
performed including payloads for requests.
example:
qlik webhook edit <webhookId># this command launches your preferred editor containing the resource in json format# changing, for example, the description parameter is the equivalent of doing# a patch request with payload:# [# {# "op": "replace",# "path": "/description",# "value": "my new description"# }# ]
New: Added qlik spec get provides more detailed information about added
external specs, most notably the path to the added specification.
New: The auto-generated usage documentation now get automatically published to
qlik-cli upon new releases.
Fix: Improved robustness in handling of array subtypes - missing types
now return errors.
Any included schema is thus required to have proper types defined. Previously,
it defaulted to string if the type was missing.
The latest version of qlik-cli allows better windows support, support for
new APIs and notifications.
Here are the updates.
Chocolatey
qlik-cli is now back to Chocolatey
To install using choco:
choco install qlik-cli
To upgrade qlik-cli using chocolatey:
choco upgrade qlik-cli
If you see an error like below:
Error retrieving packages from source
The combination of parameters provided to this OData endpoint is no longer
supported. Please refer to the this
URL for more information about this
deprecation.
Then first run:
choco source list
Then remove the one matching nuget.org:
choco source rm --name=nuget.org
Another way to fix a failing upgrade is to uninstall and reinstall.
choco uninstall qlik-cli
choco install qlik-cli
in v2.5.0 / v2.5.1
New - Added support for outbound proxy: you can now set the operating system environment
variables called HTTPS_PROXY/HTTP_PROXY with the hostname or IP address of
the proxy server.
Note: HTTPS_PROXY takes precedence over HTTP_PROXY for https requests.
Qlik CLI supports only Basic Authentication.
Fix - Improve —limit flag descriptions
Fix - Updated the included latest Qlik Cloud API-specifications
in v2.4.0
Updated Commands
Commands have been updated to reflect the latest API changes.
Notifications
Users to be notified when a new version of qlik-cli is available. The
notification message contains URL with detailed changelog of the latest
release.
Self Update CLI
The self update command enables users to update to the latest version of
qlik-cli by simply running qlik update.
OpenAPI specs support
The latest qlik-cli update provides support for OpenAPI specs that define
parameters at the path level. In this case, the parameters are inherited by
all operations under that path.
Progress Bar
The animated progress bar displayed when uploading an app is now based on
estimated upload time.
Support for unix-like Windows terminals
The latest version of qlik-cli provides better support for unix-like Windows
terminals (such as MingGW, MSYS2, and Cygwin).
Fix
The latest version of qlik-cli also includes bug fixes and minor improvements.
in v2.3.0
Support for identity-providers endpoint
The identity-providers service is used for managing identity providers.
In this version of qlik-cli the support for identity-providers endpoint is provied.
Support for questions endpoint
The questions endpoint lets user ask natural language questions against
Qlik Sense apps enabled for conversational analytics. This version of qlik-cli
provides support for this endpoint.
qlik question ask --app-id <appId>--text="new cases by department over time"#returns a QueryResponse object containing conversational response{...
"conversationalResponse":{...
"responses":[{"imageUrl":"/api/v1/temp-contents/6139c949f0ccf200019a09e2?inline=1",
"sentence":{"text":"new cases by department over time"},
"type":"chart"},
{"narrative":{"text":"* New Cases is 180.\n* There were 18 of New Cases not associated to a Department. This may indicate a data quality issue."},
"sentence":{"text":"new cases by department over time"},
"type":"narrative"}],
"sentenceWithMatches":"**new cases** by **department** over time"},
Progress bar for Downloads
The latest version of qlik-cli also shows an animated progress during app
download.
Spinner feedback
A new spinner feedback is added when users are waiting for server response
using qlik-cli.
The latest version of qlik-cli adds resumable uploads for large Qlik Sense
applications and bug fixes to improve overall usability. Here are the updates.
New feature highlights
Import large Qlik Sense apps
You can now upload large apps to SaaS tenants using qlik-cli using the qlik app import command. Use the --resumable
switch to instruct the cli to handle the upload as a large file.
When you upload an app using qlik-cli, a nice animated bar appears displaying
the progress.
File piping
File piping allows you to combine commands where the output of one may be used
as the input of the next command you issue.
Command aliases
Aliases enable you to create shorthand commands for hard to remember long
commands. For example, say you run a command frequently to find the guid of an
application in your tenant, $(qlik item ls --resourceType app --name. You can
use the alias command to create a shortcut it into something like
qlik getAppGuid consumer+sales. This returns the complete JSON object for the
consumer+sales resource in the items collection.
Limit flag added for listing apps
The --limit switch enables you to return a number of app resource objects per
page ranging from 1 to 100.
Identifying experimental flags and switches in commands
Command switches and flags that are experimental features are labeled as such
for your information.
Fixes worth mentioning
Temporary Upload Service
Use of the temporary upload service in qlik-cli caused problems with large app
uploads and resumability. This problem has been fixed and implemented through
the resumable switch in the qlik app import command.
Updated response from reload get command
In prior CLI versions, qlik reload get was not sending a correct response.
This issue has been resolved.
Bullet list of all features and fixes in qlik-cli 2.2.0
feature: add limit flag when listing apps
feature: Support resumable uploads
feature: add status for qseow
feature: Support big apps
feature: show if a flag or command is experimental
feature: Add progress-bar
feature: add support for command aliases
feature: Add Patch description
feature: support for files piping
fix: Solve temporary upload service store issues
fix: Add timeout to Establish TCP connection
fix: append exprimental to long description with leading newline
fix: Honor optional request bodies
fix: handle empty stdin
fix: omit cookie header
fix: updated response for reload get
Update qlik-cli today by using brew if you use a Mac, or download the
redistributable from
here.
The license command in qlik-cli enables you to set license assignments for
users in addition to providing metrics related to your tenant’s overall license
footprint.
The evaluation command enables you to trigger Qlik Sense app evaluations
through cli, retrieve the results, and perform additional commands based on the
feedback. A handy command for automating devops of Qlik Sense apps.
New features
Flags that are deprecated in qlik-cli now show a warning message when used.
qlik api-key ls--sub="test""Flag --sub has been deprecated, please don't use it!"
A security enhancement has been made to remove session Ids from log messages
You can now add names to external specifications you sideload into qlik-cli.
Here’s an example: qlik spec add ./my-spec.json --name foo
Breaking change
The response on the app command has changed. Now it returns only information
from the Apps API.
qlik-cli 1.7.1 enables the qlik app reload command to perform partial reloads
by adding the --partial flag to the end of the command. Update using homebrew
on a Mac, Chocolatey on Windows, or download the linux distro from
https://github.com/qlik-oss/qlik-cli/releases/tag/v1.7.1.
qlik-cli 1.6.0: better, stronger, faster. This release has a number of
performance improvements. Update using homebrew on a Mac, Chocolatey on Windows,
or download the linux distro from
https://github.com/qlik-oss/qlik-cli/releases/tag/v1.6.0.