Qlik Sense Apps API

Manage Qlik Sense analytics applications including creating, copying, importing, exporting, publishing, and retrieving app metadata.

OpenAPI Specification

qlik-sense-apps-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Qlik Cloud REST Apps API
  description: REST API for Qlik Cloud platform services including apps, spaces, and reloads. Provides programmatic access to manage analytics applications, organize resources into spaces with access control, and trigger data reloads. Authentication is performed via OAuth 2.0 bearer tokens or API keys issued from a Qlik Cloud tenant.
  version: 1.0.0
  contact:
    name: Qlik Developer Relations
    email: developer@qlik.com
    url: https://qlik.dev
  license:
    name: Qlik Terms of Use
    url: https://www.qlik.com/us/legal/terms-of-use
  x-logo:
    url: https://www.qlik.com/us/-/media/images/qlik/global/qlik-logo.png
servers:
- url: https://{tenant}.{region}.qlikcloud.com/api/v1
  description: Qlik Cloud tenant
  variables:
    tenant:
      default: your-tenant
      description: The name of your Qlik Cloud tenant
    region:
      default: us
      description: The region of your Qlik Cloud deployment
      enum:
      - us
      - eu
      - ap
      - uk
security:
- bearerAuth: []
- apiKey: []
tags:
- name: Apps
  description: Manage Qlik Sense analytics applications including creating, copying, importing, exporting, publishing, and retrieving app metadata.
  externalDocs:
    url: https://qlik.dev/apis/rest/apps
paths:
  /apps:
    get:
      operationId: getAppsPrivileges
      summary: Get app privileges
      description: Retrieves the current user privileges for app operations such as create, read, update, delete, import, and export.
      tags:
      - Apps
      responses:
        '200':
          description: Privileges returned successfully.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createApp
      summary: Create an app
      description: Creates a new analytics app in the specified or personal space.
      tags:
      - Apps
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppCreate'
      responses:
        '200':
          description: App created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppAttributes'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /apps/{appId}:
    parameters:
    - $ref: '#/components/parameters/AppId'
    get:
      operationId: getApp
      summary: Retrieve an app
      description: Retrieves information for a specific app.
      tags:
      - Apps
      responses:
        '200':
          description: App information returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppAttributes'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateApp
      summary: Update an app
      description: Updates the information for a specific app.
      tags:
      - Apps
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppUpdate'
      responses:
        '200':
          description: App updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppAttributes'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteApp
      summary: Delete an app
      description: Deletes a specific app.
      tags:
      - Apps
      responses:
        '200':
          description: App deleted successfully.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /apps/{appId}/copy:
    parameters:
    - $ref: '#/components/parameters/AppId'
    post:
      operationId: copyApp
      summary: Copy an app
      description: Copies a specific app within the tenant.
      tags:
      - Apps
      requestBody:
        required: false
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppCopy'
      responses:
        '200':
          description: App copied successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppAttributes'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /apps/{appId}/export:
    parameters:
    - $ref: '#/components/parameters/AppId'
    post:
      operationId: exportApp
      summary: Export an app
      description: Exports a specific app, returning a temporary download path for the QVF file.
      tags:
      - Apps
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                noData:
                  type: boolean
                  description: When true, the export excludes the app data reducing the exported file size.
                  default: false
      responses:
        '200':
          description: Export initiated successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  downloadPath:
                    type: string
                    description: Temporary URL to download the exported QVF file.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /apps/import:
    post:
      operationId: importApp
      summary: Import an app
      description: Imports an app from a QVF file into the system.
      tags:
      - Apps
      parameters:
      - name: name
        in: query
        description: The name of the target app.
        schema:
          type: string
      - name: spaceId
        in: query
        description: The space identifier to import the app into. Uses personal space if omitted.
        schema:
          type: string
      - name: mode
        in: query
        description: The import mode for the app.
        schema:
          type: string
          enum:
          - new
          - autoreplace
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
      responses:
        '200':
          description: App imported successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppAttributes'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /apps/{appId}/publish:
    parameters:
    - $ref: '#/components/parameters/AppId'
    post:
      operationId: publishApp
      summary: Publish an app
      description: Publishes an app from a personal or shared space to a managed space.
      tags:
      - Apps
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppPublish'
      responses:
        '200':
          description: App published successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppAttributes'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: republishApp
      summary: Republish an app
      description: Republishes a published app, replacing its content with the source app data.
      tags:
      - Apps
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AppPublish'
      responses:
        '200':
          description: App republished successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppAttributes'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /apps/{appId}/owner:
    parameters:
    - $ref: '#/components/parameters/AppId'
    put:
      operationId: updateAppOwner
      summary: Change app owner
      description: Changes the owner of the app.
      tags:
      - Apps
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - ownerId
              properties:
                ownerId:
                  type: string
                  description: The identifier of the new owner.
      responses:
        '200':
          description: Owner changed successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppAttributes'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /apps/{appId}/space:
    parameters:
    - $ref: '#/components/parameters/AppId'
    put:
      operationId: moveAppToSpace
      summary: Move app to a space
      description: Sets the space on a specific app.
      tags:
      - Apps
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - spaceId
              properties:
                spaceId:
                  type: string
                  description: The identifier of the target space.
      responses:
        '200':
          description: App moved to space successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppAttributes'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: removeAppFromSpace
      summary: Remove app from space
      description: Removes the space assignment from the app, moving it to personal space.
      tags:
      - Apps
      responses:
        '200':
          description: App removed from space successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppAttributes'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /apps/{appId}/data/metadata:
    parameters:
    - $ref: '#/components/parameters/AppId'
    get:
      operationId: getAppDataMetadata
      summary: Retrieve data metadata for an app
      description: Retrieves data model and reload statistics metadata for an app.
      tags:
      - Apps
      responses:
        '200':
          description: Data metadata returned successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppDataMetadata'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /apps/{appId}/data/lineage:
    parameters:
    - $ref: '#/components/parameters/AppId'
    get:
      operationId: getAppDataLineage
      summary: Retrieve data lineage for an app
      description: Retrieves the data lineage information for an app.
      tags:
      - Apps
      responses:
        '200':
          description: Data lineage returned successfully.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AppDataLineage'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /apps/{appId}/scripts:
    parameters:
    - $ref: '#/components/parameters/AppId'
    get:
      operationId: getAppScripts
      summary: Retrieve script history
      description: Retrieves the script version history for an app.
      tags:
      - Apps
      responses:
        '200':
          description: Script history returned successfully.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AppScript'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      operationId: setAppScript
      summary: Set script for an app
      description: Sets the load script content for an app.
      tags:
      - Apps
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - script
              properties:
                script:
                  type: string
                  description: The load script content.
      responses:
        '200':
          description: Script set successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AppScript'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /apps/{appId}/reloads/logs:
    parameters:
    - $ref: '#/components/parameters/AppId'
    get:
      operationId: getAppReloadLogs
      summary: Retrieve script log metadata
      description: Retrieves metadata about available reload script logs for an app.
      tags:
      - Apps
      responses:
        '200':
          description: Reload log metadata returned successfully.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ReloadLog'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /apps/{appId}/reloads/logs/{reloadId}:
    parameters:
    - $ref: '#/components/parameters/AppId'
    - $ref: '#/components/parameters/ReloadId'
    get:
      operationId: getAppReloadLog
      summary: Retrieve a specific reload log
      description: Retrieves the log content for a specific reload of an app.
      tags:
      - Apps
      responses:
        '200':
          description: Reload log returned successfully.
          content:
            text/plain:
              schema:
                type: string
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    AppScript:
      type: object
      description: A script version for an app.
      properties:
        id:
          type: string
          description: The unique identifier of the script version.
        script:
          type: string
          description: The content of the load script.
        createdDate:
          type: string
          format: date-time
          description: When the script version was created.
        modifiedDate:
          type: string
          format: date-time
          description: When the script version was last modified.
    ReloadLog:
      type: object
      description: Metadata about an app reload log.
      properties:
        id:
          type: string
          description: The reload identifier.
        createdDate:
          type: string
          format: date-time
          description: When the reload was executed.
        success:
          type: boolean
          description: Whether the reload was successful.
        duration:
          type: integer
          description: Duration of the reload in milliseconds.
    AppDataMetadata:
      type: object
      description: Data model and reload statistics metadata for an app.
      properties:
        fields:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                description: The name of the field.
              tags:
                type: array
                items:
                  type: string
              isSystem:
                type: boolean
                description: Whether this is a system-generated field.
        tables:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
                description: The name of the table.
              noOfRows:
                type: integer
                description: Number of rows in the table.
              noOfFields:
                type: integer
                description: Number of fields in the table.
              noOfKeyFields:
                type: integer
                description: Number of key fields in the table.
              byteSize:
                type: integer
                description: Table size in bytes.
        reloadMeta:
          type: object
          properties:
            cpuTimeSpentMs:
              type: integer
              description: CPU time spent during last reload in milliseconds.
            peakMemoryBytes:
              type: integer
              description: Peak memory consumption during last reload.
    AppUpdate:
      type: object
      description: Payload to update an existing app.
      properties:
        name:
          type: string
          description: The new name for the app.
          maxLength: 256
        description:
          type: string
          description: The updated description for the app.
    ErrorResponse:
      type: object
      description: Standard error response.
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                description: The error code.
              title:
                type: string
                description: A short summary of the error.
              detail:
                type: string
                description: A detailed error message.
              status:
                type: string
                description: The HTTP status code as a string.
              meta:
                type: object
                description: Additional error metadata.
                additionalProperties: true
    AppCreate:
      type: object
      description: Payload to create a new app.
      required:
      - name
      properties:
        name:
          type: string
          description: The name of the new app.
          maxLength: 256
        description:
          type: string
          description: A description for the new app.
        spaceId:
          type: string
          description: The identifier of the space to create the app in. Uses the personal space if omitted.
    AppAttributes:
      type: object
      description: Represents a Qlik Sense analytics application.
      properties:
        id:
          type: string
          description: The unique identifier of the app.
        name:
          type: string
          description: The name of the app.
        description:
          type: string
          description: The description of the app.
        thumbnail:
          type: string
          description: The URL to the app thumbnail image.
        lastReloadTime:
          type: string
          format: date-time
          description: The date and time of the last successful reload.
        createdDate:
          type: string
          format: date-time
          description: The date and time when the app was created.
        modifiedDate:
          type: string
          format: date-time
          description: The date and time when the app was last modified.
        owner:
          type: string
          description: The identifier of the app owner.
        ownerId:
          type: string
          description: The identifier of the user who owns the app.
        published:
          type: boolean
          description: Indicates whether the app is published.
        publishTime:
          type: string
          format: date-time
          description: The date and time when the app was published.
        custom:
          type: object
          description: Custom properties assigned to the app.
          additionalProperties: true
        dynamicColor:
          type: string
          description: Dynamic color expression for the app.
        hasSectionAccess:
          type: boolean
          description: Indicates whether the app uses section access for row-level security.
        isDirectQueryMode:
          type: boolean
          description: Indicates whether the app uses Direct Query mode.
        encrypted:
          type: boolean
          description: Indicates whether the app is encrypted.
        originAppId:
          type: string
          description: The identifier of the origin app if the app was copied or published.
        spaceId:
          type: string
          description: The identifier of the space containing the app.
        tenantId:
          type: string
          description: The identifier of the tenant the app belongs to.
        usage:
          type: string
          description: The intended use of the app.
          enum:
          - ANALYTICS
          - DATA_PREPARATION
          - DATAFLOW_PREP
        links:
          type: object
          description: HATEOAS links for the app resource.
          properties:
            self:
              type: object
              properties:
                href:
                  type: string
            open:
              type: object
              properties:
                href:
                  type: string
            thumbnail:
              type: object
              properties:
                href:
                  type: string
    AppPublish:
      type: object
      description: Payload to publish an app to a managed space.
      required:
      - spaceId
      properties:
        spaceId:
          type: string
          description: The identifier of the managed space to publish into.
        data:
          type: string
          description: If set to source, the published app includes the source app data.
          enum:
          - source
        attributes:
          type: object
          properties:
            name:
              type: string
              description: The name of the published app. Defaults to the source app name.
            description:
              type: string
              description: The description of the published app.
    AppCopy:
      type: object
      description: Payload to copy an app.
      properties:
        name:
          type: string
          description: The name for the copied app. If omitted, the original name is used with a copy suffix.
        spaceId:
          type: string
          description: The identifier of the space for the copied app. If omitted, the copy is placed in the personal space.
        description:
          type: string
          description: The description for the copied app.
    AppDataLineage:
      type: object
      description: Data lineage information for an app.
      properties:
        discriminator:
          type: string
          description: The type of lineage source.
        statement:
          type: string
          description: The load statement from the data connection.
  responses:
    BadRequest:
      description: Bad request. The request body or parameters are invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Unauthorized. Authentication credentials are missing or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Forbidden:
      description: Forbidden. The user does not have permission for this operation.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: Not found. The requested resource does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  parameters:
    ReloadId:
      name: reloadId
      in: path
      required: true
      description: The unique identifier of the reload.
      schema:
        type: string
    AppId:
      name: appId
      in: path
      required: true
      description: The unique identifier of the app.
      schema:
        type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: OAuth 2.0 bearer token obtained from the Qlik Cloud tenant. Use the /oauth/token endpoint or interactive login to obtain a token.
    apiKey:
      type: apiKey
      in: header
      name: Authorization
      description: API key generated from the Qlik Cloud Management Console. Passed in the Authorization header as Bearer <api-key>.
externalDocs:
  description: Qlik Cloud REST API documentation
  url: https://qlik.dev/apis/rest