Every API here is available over the APIs.io API and to AI agents over MCP.
{
"info": {
"title": "extensions",
"version": ""
},
"paths": {
"/api/v1/extensions": {
"get": {
"tags": [
"extensions"
],
"summary": "List all extensions",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/extensions"
}
}
},
"description": "OK. Lists all extensions."
}
},
"description": "Lists all imported extensions in the tenant.",
"operationId": "getExtensions",
"x-qlik-visibility": "public",
"x-qlik-stability": "stable",
"x-qlik-deprecated": false,
"x-qlik-tier": {
"tier": "1",
"limit": 1000
}
},
"post": {
"tags": [
"extensions"
],
"summary": "Create a new extension",
"responses": {
"201": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/extension"
}
}
},
"description": "Created. Creates a new extension and returns it."
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Conflict. Resource with same unique identity already exists."
},
"415": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Unsupported media type. Body of the payload is not a valid JSON object."
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Unprocessable entity. Validation error."
},
"default": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Unexpected error."
}
},
"description": "Creates a new extension. Accepts either provided file or data object. The name of the new extension must be different to any existing extensions.",
"operationId": "createExtension",
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/extension"
},
"file": {
"type": "string",
"format": "binary",
"description": "Extension archive."
}
}
}
}
},
"required": true
},
"x-qlik-visibility": "public",
"x-qlik-stability": "stable",
"x-qlik-deprecated": false,
"x-qlik-tier": {
"tier": "2",
"limit": 100
}
}
},
"/api/v1/extensions/{id}": {
"get": {
"tags": [
"extensions"
],
"summary": "Get a specific extension",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/extension"
}
}
},
"description": "OK. Returns extension with {id}."
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Forbidden. User is not authorized to read extension with {id}."
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Not found. Could not find the extension with {id}."
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Gone. Extension with {id} has been deleted."
}
},
"parameters": [
{
"in": "path",
"name": "id",
"schema": {
"type": "string"
},
"required": true,
"description": "Extension identifier or its qextFilename."
}
],
"description": "Returns a specific extension matching either extension ID or extension name.",
"operationId": "getExtensionById",
"x-qlik-visibility": "public",
"x-qlik-stability": "stable",
"x-qlik-deprecated": false,
"x-qlik-tier": {
"tier": "1",
"limit": 1000
}
},
"patch": {
"tags": [
"extensions"
],
"summary": "Update a specific extension",
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/extension"
}
}
},
"description": "OK. Extension has been updated."
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Forbidden. User is not authorized to update extension with {id}."
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Not found. Could not find the extension with {id}."
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Conflict. Resource with same unique identity already exists."
},
"415": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Unsupported media type. Body of the payload is not a valid JSON object."
},
"422": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Unprocessable entity. Validation error."
},
"default": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Unexpected error."
}
},
"parameters": [
{
"in": "path",
"name": "id",
"schema": {
"type": "string"
},
"required": true,
"description": "Extension identifier or its qextFilename."
}
],
"description": "Updates a specific extension matching either extension ID or extension name. Accepts either provided file or data object.",
"operationId": "updateExtensionById",
"requestBody": {
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"data": {
"$ref": "#/components/schemas/extension"
},
"file": {
"type": "string",
"format": "binary",
"description": "Extension archive."
}
}
}
}
},
"required": true
},
"x-qlik-visibility": "public",
"x-qlik-stability": "stable",
"x-qlik-deprecated": false,
"x-qlik-tier": {
"tier": "2",
"limit": 100
}
},
"delete": {
"tags": [
"extensions"
],
"summary": "Delete a specific extension",
"responses": {
"204": {
"description": "No content. Soft deletes the extension."
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Forbidden. User is not authorized to delete extension with {id}."
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Not found. Could not find the extension with {id}."
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Gone. Extension with {id} has been deleted."
}
},
"parameters": [
{
"in": "path",
"name": "id",
"schema": {
"type": "string"
},
"required": true,
"description": "Extension identifier or its qextFilename."
}
],
"description": "Deletes a specific extension matching either extension ID or extension name.",
"operationId": "deleteExtensionById",
"x-qlik-visibility": "public",
"x-qlik-stability": "stable",
"x-qlik-deprecated": false,
"x-qlik-tier": {
"tier": "2",
"limit": 100
}
}
},
"/api/v1/extensions/{id}/file": {
"get": {
"tags": [
"extensions"
],
"summary": "Download extension as an archive",
"responses": {
"200": {
"content": {
"application/zip": {
"schema": {
"type": "string",
"format": "binary"
}
},
"application/octet-stream": {
"schema": {
"type": "string",
"format": "binary"
}
}
},
"description": "OK. Extension exists. Returns the extension archive."
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Forbidden. User is not authorized to read extension with {id}."
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Not found. Could not find the extension with {id}."
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Gone. Extension with {id} has been deleted."
}
},
"parameters": [
{
"in": "path",
"name": "id",
"schema": {
"type": "string"
},
"required": true,
"description": "Extension identifier or its qextFilename."
}
],
"description": "Downloads all files in the extension matching either extension ID or extension name as a `.zip` archive.",
"operationId": "getExtensionArchive",
"x-qlik-visibility": "public",
"x-qlik-stability": "stable",
"x-qlik-deprecated": false,
"x-qlik-tier": {
"tier": "1",
"limit": 1000
}
}
},
"/api/v1/extensions/{id}/file/{filepath}": {
"get": {
"tags": [
"extensions"
],
"summary": "Download file from extension archive.",
"responses": {
"200": {
"description": "OK. Extension exists and the file specified exists. Returns the specific file."
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Forbidden. User is not authorized to read extension with {id}."
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Not found. Could not find the extension with {id} or the file does not exist in the archive."
},
"410": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/error"
}
}
},
"description": "Gone. Extension with {id} has been deleted."
}
},
"parameters": [
{
"in": "path",
"name": "filepath",
"schema": {
"type": "string",
"example": "css/styles.css"
},
"required": true,
"description": "Path to the file location within the specified extension archive. Folders separated with forward slashes."
},
{
"in": "path",
"name": "id",
"schema": {
"type": "string"
},
"required": true,
"description": "Extension identifier or its qextFilename."
}
],
"description": "Downloads a specific file from the extension matching either extension ID or extension name, identified by the file path within the imported extension.",
"operationId": "getFileFromExtensionArchive",
"x-qlik-visibility": "public",
"x-qlik-stability": "stable",
"x-qlik-deprecated": false,
"x-qlik-tier": {
"tier": "1",
"limit": 1000
}
}
}
},
"openapi": "3.0.0",
"components": {
"schemas": {
"bundleMeta": {
"properties": {
"id": {
"type": "string",
"description": "Unique identifier of the bundle."
},
"name": {
"type": "string",
"description": "Name of the bundle."
},
"description": {
"type": "string",
"description": "Description of the bundle."
}
},
"description": "Object containing meta data regarding the bundle the extension belongs to. If it does not belong to a bundle, this object is not defined."
},
"error": {
"required": [
"code",
"title"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/meta"
},
"title": {
"type": "string",
"description": "Title of the HTTP status code."
},
"source": {
"type": "object",
"description": "Optional JSON patch object pointing to an invalid property."
},
"status": {
"type": "number",
"description": "The HTTP status code."
},
"traceId": {
"type": "string",
"description": "The active traceId."
}
},
"description": "An error object."
},
"extension": {
"type": "object",
"properties": {
"id": {
"type": "string",
"readOnly": true
},
"file": {
"type": "object",
"description": "The file that was uploaded with the extension."
},
"icon": {
"type": "string",
"description": "Icon to show in the client."
},
"name": {
"type": "string",
"description": "The display name of this extension."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of tags."
},
"type": {
"type": "string",
"description": "The type of this extension (visualization, etc.)."
},
"author": {
"type": "string",
"description": "Author of the extension."
},
"bundle": {
"$ref": "#/components/schemas/bundleMeta"
},
"userId": {
"type": "string",
"readOnly": true
},
"bundled": {
"type": "boolean",
"description": "If the extension is part of an extension bundle."
},
"license": {
"type": "string",
"description": "Under which license this extension is published."
},
"preview": {
"type": "string",
"description": "Path to an image that enables users to preview the extension."
},
"version": {
"type": "string",
"description": "Version of the extension."
},
"checksum": {
"type": "string",
"description": "Checksum of the extension contents."
},
"homepage": {
"type": "string",
"description": "Home page of the extension."
},
"keywords": {
"type": "string",
"description": "Keywords for the extension."
},
"loadpath": {
"type": "string",
"description": "Relative path to the extension's entry file, defaults to `filename` from the qext file."
},
"supplier": {
"type": "string",
"description": "Supplier of the extension."
},
"tenantId": {
"type": "string",
"readOnly": true
},
"updateAt": {
"type": "string",
"format": "date",
"readOnly": true
},
"createdAt": {
"type": "string",
"format": "date",
"readOnly": true
},
"supernova": {
"type": "boolean",
"description": "If the extension is a supernova extension or not."
},
"deprecated": {
"type": "string",
"format": "date",
"description": "A date noting when the extension was deprecated."
},
"repository": {
"type": "string",
"description": "Link to the extension source code."
},
"description": {
"type": "string",
"description": "Description of the extension."
},
"qextVersion": {
"type": "string",
"description": "The version from the qext file that was uploaded with this extension."
},
"dependencies": {
"type": "object",
"description": "Map of dependencies describing version of the component it requires."
},
"qextFilename": {
"type": "string",
"description": "The name of the qext file that was uploaded with this extension."
},
"migrationState": {
"type": "string",
"readOnly": true,
"description": "The migration state of the extension. It can be either \"READY_TO_MOVE\", \"IN_PROGRESS\" or \"COMPLETED\"."
}
},
"description": "The extension model."
},
"extensions": {
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"$ref": "#/components/schemas/extension"
}
}
}
},
"meta": {
"properties": {
"stack": {
"type": "string",
"description": "Full stack trace of the error that was raised."
},
"message": {
"type": "string",
"description": "A more detailed message explaining the error."
},
"resourceName": {
"type": "string",
"description": "Name of the resource related to the error. If there is a conflict, it is the name of the model attempting to be created."
}
},
"description": "Object containing meta data regarding an error. It does not necessarily contain all the properties."
}
}
},
"servers": [
{
"url": "https://{tenant}.{region}.qlikcloud.com",
"variables": {
"region": {
"default": "us",
"description": "The region the tenant is hosted in"
},
"tenant": {
"default": "your-tenant",
"description": "Name of the tenant that will be called"
}
}
}
]
}