Qlik Apps API

Manage Qlik Sense applications including creating, updating, publishing, and deleting apps in Qlik Cloud.

Operations 48

POST /api/v1/apps
GET /api/v1/apps/{appId}
PUT /api/v1/apps/{appId}
DELETE /api/v1/apps/{appId}
POST /api/v1/apps/{appId}/copy
GET /api/v1/apps/{appId}/data/lineage
GET /api/v1/apps/{appId}/data/metadata
POST /api/v1/apps/{appId}/export
GET /api/v1/apps/{appId}/insight-analyses Returns information about supported analyses for the app's data model. Lists available analysis types, along with minimum and maximum number of dimensions, measures, and fields. #
POST /api/v1/apps/{appId}/insight-analyses/actions/recommend Returns analysis recommendations in response to a natural language question, a set of fields and master items, or a set of fields and master items with an optional target analysis. #
GET /api/v1/apps/{appId}/insight-analyses/model Returns information about model used to make analysis recommendations. Lists all fields and master items in the logical model, along with an indication of the validity of the logic #
GET /api/v1/apps/{appId}/media/files/{path}
PUT /api/v1/apps/{appId}/media/files/{path}
DELETE /api/v1/apps/{appId}/media/files/{path}
GET /api/v1/apps/{appId}/media/list/{path}
GET /api/v1/apps/{appId}/media/thumbnail
POST /api/v1/apps/{appId}/objects/{objectId}/actions/change-owner
PUT /api/v1/apps/{appId}/owner
GET /api/v1/apps/{appId}/placement
PUT /api/v1/apps/{appId}/placement
DELETE /api/v1/apps/{appId}/placement
POST /api/v1/apps/{appId}/publish
PUT /api/v1/apps/{appId}/publish
GET /api/v1/apps/{appId}/reloads/logs
GET /api/v1/apps/{appId}/reloads/logs/{reloadId}
GET /api/v1/apps/{appId}/reloads/metadata/{reloadId}
GET /api/v1/apps/{appId}/report-filters Get the filter list #
POST /api/v1/apps/{appId}/report-filters Create a new filter. #
GET /api/v1/apps/{appId}/report-filters/{id} Get a filter #
PATCH /api/v1/apps/{appId}/report-filters/{id} Update a filter #
DELETE /api/v1/apps/{appId}/report-filters/{id} Delete a filter #
GET /api/v1/apps/{appId}/report-filters/actions/count Get the number of filters for the given app and filter types #
GET /api/v1/apps/{appId}/scripts
POST /api/v1/apps/{appId}/scripts
GET /api/v1/apps/{appId}/scripts/{id}
PATCH /api/v1/apps/{appId}/scripts/{id}
DELETE /api/v1/apps/{appId}/scripts/{id}
PUT /api/v1/apps/{appId}/space
DELETE /api/v1/apps/{appId}/space
GET /api/v1/apps/{guid}/evaluations Retrieve a list of all historic evaluations for an app GUID #
POST /api/v1/apps/{guid}/evaluations Queue an app evaluation #
GET /api/v1/apps/evaluations/{baseid}/actions/compare/{comparisonid} Compare two evaluations #
GET /api/v1/apps/evaluations/{baseid}/actions/compare/{comparisonid}/actions/download Download a comparison log of two evaluations #
GET /api/v1/apps/evaluations/{id} Retrieve a specific evaluation #
GET /api/v1/apps/evaluations/{id}/actions/download Download a detailed XML log of a specific evaluation #
POST /api/v1/apps/import
GET /api/v1/apps/privileges
POST /api/v1/apps/validatescript

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/apps-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

qliksense-apps.json Raw ↑
{
  "info": {
    "title": "apps",
    "version": ""
  },
  "paths": {
    "/api/v1/apps": {
      "post": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NxApp"
                }
              }
            },
            "headers": {},
            "description": "OK"
          }
        },
        "description": "Creates a new app.",
        "requestBody": {
          "content": {
            "*/*": {
              "schema": {
                "$ref": "#/components/schemas/CreateApp"
              }
            }
          },
          "required": true,
          "description": "Attributes that the user wants to set in new app."
        },
        "x-qlik-access-control": [
          "create"
        ],
        "x-qlik-visibility": "public",
        "x-qlik-stability": "locked",
        "x-qlik-deprecated": false,
        "x-qlik-tier": {
          "tier": "2",
          "limit": 100
        }
      }
    },
    "/api/v1/apps/{appId}": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NxApp"
                }
              }
            },
            "headers": {},
            "description": "OK"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Identifier of the app."
          }
        ],
        "description": "Retrieves information for a specific app.",
        "x-qlik-access-control": [
          "read"
        ],
        "x-qlik-visibility": "public",
        "x-qlik-stability": "locked",
        "x-qlik-deprecated": false,
        "x-qlik-tier": {
          "tier": "1",
          "limit": 1000
        }
      },
      "put": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NxApp"
                }
              }
            },
            "headers": {},
            "description": "OK"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Identifier of the app."
          }
        ],
        "description": "Updates the information for a specific app.",
        "requestBody": {
          "content": {
            "*/*": {
              "schema": {
                "$ref": "#/components/schemas/UpdateApp"
              }
            }
          },
          "required": true,
          "description": "Attributes that user wants to set."
        },
        "x-qlik-access-control": [
          "update"
        ],
        "x-qlik-visibility": "public",
        "x-qlik-stability": "locked",
        "x-qlik-deprecated": false,
        "x-qlik-tier": {
          "tier": "2",
          "limit": 100
        }
      },
      "delete": {
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "headers": {},
            "description": "OK"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Identifier of the app."
          }
        ],
        "description": "Deletes a specific app.",
        "x-qlik-access-control": [
          "delete"
        ],
        "x-qlik-visibility": "public",
        "x-qlik-stability": "locked",
        "x-qlik-deprecated": false,
        "x-qlik-tier": {
          "tier": "2",
          "limit": 100
        }
      }
    },
    "/api/v1/apps/{appId}/copy": {
      "post": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NxApp"
                }
              }
            },
            "headers": {},
            "description": "OK"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Identifier of the app."
          }
        ],
        "description": "Copies a specific app.",
        "requestBody": {
          "content": {
            "*/*": {
              "schema": {
                "$ref": "#/components/schemas/CreateApp"
              }
            }
          },
          "required": true,
          "description": "Attributes that should be set in the copy."
        },
        "x-qlik-access-control": [
          "duplicate"
        ],
        "x-qlik-visibility": "public",
        "x-qlik-stability": "locked",
        "x-qlik-deprecated": false,
        "x-qlik-tier": {
          "tier": "2",
          "limit": 100
        }
      }
    },
    "/api/v1/apps/{appId}/data/lineage": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/LineageInfoRest"
                  }
                }
              }
            },
            "headers": {},
            "description": "OK"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Identifier of the app."
          }
        ],
        "description": "Retrieves the lineage for an app.\nReturns a JSON-formatted array of strings describing the lineage of the app.",
        "x-qlik-access-control": [
          "reload"
        ],
        "x-qlik-visibility": "public",
        "x-qlik-stability": "locked",
        "x-qlik-deprecated": false,
        "x-qlik-tier": {
          "tier": "1",
          "limit": 1000
        }
      }
    },
    "/api/v1/apps/{appId}/data/metadata": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataModelMetadata"
                }
              }
            },
            "headers": {},
            "description": "OK"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Identifier of the app."
          }
        ],
        "description": "Retrieves the data model and reload statistics metadata of an app.\nAn empty metadata structure is returned if the metadata is not available in the app.",
        "x-qlik-access-control": [
          "read"
        ],
        "x-qlik-visibility": "public",
        "x-qlik-stability": "locked",
        "x-qlik-deprecated": false,
        "x-qlik-tier": {
          "tier": "1",
          "limit": 1000
        }
      }
    },
    "/api/v1/apps/{appId}/export": {
      "post": {
        "responses": {
          "201": {
            "headers": {
              "Location": {
                "schema": {
                  "type": "string"
                },
                "description": "The URL of the exported app on Temporary content service."
              }
            },
            "description": "Created"
          },
          "400": {
            "headers": {},
            "description": "Bad request"
          },
          "401": {
            "headers": {},
            "description": "Unauthorized"
          },
          "403": {
            "headers": {},
            "description": "Forbidden"
          },
          "404": {
            "headers": {},
            "description": "Not Found"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Identifier of the app."
          },
          {
            "in": "query",
            "name": "NoData",
            "schema": {
              "type": "boolean"
            },
            "description": "The flag indicating if only object contents should be exported."
          }
        ],
        "description": "Exports a specific app.",
        "x-qlik-access-control": [
          "read"
        ],
        "x-qlik-visibility": "public",
        "x-qlik-stability": "locked",
        "x-qlik-deprecated": false,
        "x-qlik-tier": {
          "tier": "2",
          "limit": 100
        }
      }
    },
    "/api/v1/apps/{appId}/insight-analyses": {
      "get": {
        "tags": [
          "insight-analyses"
        ],
        "summary": "Returns information about supported analyses for the app's data model. Lists available analysis types, along with minimum and maximum number of dimensions, measures, and fields.",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnalysisDescriptorResponse"
                }
              }
            },
            "description": "The request is successfully processed and information about supported analyses is returned."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            },
            "description": "Bad request. The payload is not formed correctly."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            },
            "description": "User is not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            },
            "description": "Not found"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            },
            "description": "Unprocessable entity. The payload contains fields\nthat are invalid, such as too long of a query.\n"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "schema": {
              "type": "string",
              "format": "uid"
            },
            "required": true,
            "description": "Qlik Sense app identifier"
          },
          {
            "in": "header",
            "name": "accept-language",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "language specified as an ISO-639-1 code. Defaults to 'en' (English)."
          }
        ],
        "operationId": "getAnalyses",
        "x-qlik-visibility": "public",
        "x-qlik-stability": "stable",
        "x-qlik-deprecated": false,
        "x-qlik-tier": {
          "tier": "special",
          "limit": 500
        }
      }
    },
    "/api/v1/apps/{appId}/insight-analyses/actions/recommend": {
      "post": {
        "tags": [
          "insight-analyses"
        ],
        "summary": "Returns analysis recommendations in response to a natural language question, a set of fields and master items, or a set of fields and master items with an optional target analysis.",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnalysisRecommendationResponse"
                }
              }
            },
            "description": "The request is successfully processed and recommendations are returned."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            },
            "description": "Bad request. The payload is not formed correctly."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            },
            "description": "User is not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            },
            "description": "Invalid Business Logic"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            },
            "description": "Unprocessable entity. The payload contains fields\nthat are invalid, such as too long of a query.\n"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "schema": {
              "type": "string",
              "format": "uid"
            },
            "required": true,
            "description": "Qlik Sense app identifier"
          },
          {
            "in": "header",
            "name": "accept-language",
            "schema": {
              "type": "string"
            },
            "required": false,
            "description": "language specified as an ISO-639-1 code. Defaults to 'en' (English)."
          }
        ],
        "operationId": "getRecommendations",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AnalysisRecommendRequest"
              }
            }
          },
          "required": true
        },
        "x-qlik-visibility": "public",
        "x-qlik-stability": "stable",
        "x-qlik-deprecated": false,
        "x-qlik-tier": {
          "tier": "special",
          "limit": 500
        }
      }
    },
    "/api/v1/apps/{appId}/insight-analyses/model": {
      "get": {
        "tags": [
          "insight-analyses"
        ],
        "summary": "Returns information about model used to make analysis recommendations. Lists all fields and master items in the logical model, along with an indication of the validity of the logical model if the default is not used.",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnalysisModelResponse"
                }
              }
            },
            "description": "The request is successfully processed and information about model is returned."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            },
            "description": "Bad request. The payload is not formed correctly."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            },
            "description": "User is not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            },
            "description": "Not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            },
            "description": "Invalid Business Logic"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            },
            "description": "Unprocessable entity. The payload contains fields\nthat are invalid, such as too long of a query.\n"
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Errors"
                }
              }
            },
            "description": "Internal server error"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "schema": {
              "type": "string",
              "format": "uid"
            },
            "required": true,
            "description": "Qlik Sense app identifier"
          }
        ],
        "operationId": "getBusinessModel",
        "x-qlik-visibility": "public",
        "x-qlik-stability": "stable",
        "x-qlik-deprecated": false,
        "x-qlik-tier": {
          "tier": "special",
          "limit": 500
        }
      }
    },
    "/api/v1/apps/{appId}/media/files/{path}": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            },
            "headers": {},
            "description": "OK"
          },
          "403": {
            "headers": {},
            "description": "Forbidden"
          },
          "404": {
            "headers": {},
            "description": "Not Found"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Unique application identifier."
          },
          {
            "in": "path",
            "name": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Path to file content."
          }
        ],
        "description": "Gets media content from file.\nReturns a stream of bytes containing the media file content on success, or error if file is not found.",
        "x-qlik-access-control": [
          "read"
        ],
        "x-qlik-visibility": "public",
        "x-qlik-stability": "locked",
        "x-qlik-deprecated": false,
        "x-qlik-tier": {
          "tier": "1",
          "limit": 1000
        }
      },
      "put": {
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "headers": {},
            "description": "OK"
          },
          "403": {
            "headers": {},
            "description": "Forbidden"
          },
          "404": {
            "headers": {},
            "description": "Not Found"
          },
          "409": {
            "headers": {},
            "description": "Conflict"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Unique application identifier."
          },
          {
            "in": "path",
            "name": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Path to file content."
          }
        ],
        "description": "Stores the media content file.\nReturns OK if the bytes containing the media file content were successfully stored, or error in case of failure, lack of permission or file already exists on the supplied path.",
        "requestBody": {
          "content": {
            "application/octet-stream": {
              "schema": {
                "$ref": "#/components/schemas/FileData"
              }
            }
          },
          "required": true,
          "description": ""
        },
        "x-qlik-access-control": [
          "update"
        ],
        "x-qlik-visibility": "public",
        "x-qlik-stability": "locked",
        "x-qlik-deprecated": false,
        "x-qlik-tier": {
          "tier": "2",
          "limit": 100
        }
      },
      "delete": {
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "headers": {},
            "description": "OK"
          },
          "403": {
            "headers": {},
            "description": "Forbidden"
          },
          "404": {
            "headers": {},
            "description": "Not Found"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Unique application identifier."
          },
          {
            "in": "path",
            "name": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Path to file content."
          }
        ],
        "description": "Deletes a media content file or complete directory.\nReturns OK if the bytes containing the media file (or the complete content of a directory) were successfully deleted, or error in case of failure or lack of permission.",
        "x-qlik-access-control": [
          "update"
        ],
        "x-qlik-visibility": "public",
        "x-qlik-stability": "locked",
        "x-qlik-deprecated": false,
        "x-qlik-tier": {
          "tier": "2",
          "limit": 100
        }
      }
    },
    "/api/v1/apps/{appId}/media/list/{path}": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AppContentList"
                }
              }
            },
            "headers": {},
            "description": "OK"
          },
          "403": {
            "headers": {},
            "description": "Forbidden"
          },
          "404": {
            "headers": {},
            "description": "Not Found"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Unique application identifier."
          },
          {
            "in": "path",
            "name": "path",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The path to sub folder with static content relative to the root folder. Use empty path to access the root folder."
          },
          {
            "in": "query",
            "name": "show",
            "schema": {
              "type": "string"
            },
            "description": "Optional. List output can include files and folders in different ways:\n* Not recursive, default if show option is not supplied or incorrectly specified, results in output with files and empty directories for the path specified only.\n* Recursive(r), use ?show=r or ?show=recursive, results in a recursive output with files, all empty folders are excluded.\n* All(a), use ?show=a or ?show=all, results in a recursive output with files and empty directories."
          }
        ],
        "description": "Lists media content.\nReturns a JSON formatted array of strings describing the available media content or error if the optional path supplied is not found.",
        "x-qlik-access-control": [
          "read"
        ],
        "x-qlik-visibility": "public",
        "x-qlik-stability": "locked",
        "x-qlik-deprecated": false,
        "x-qlik-tier": {
          "tier": "1",
          "limit": 1000
        }
      }
    },
    "/api/v1/apps/{appId}/media/thumbnail": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/octet-stream": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            },
            "headers": {},
            "description": "OK"
          },
          "403": {
            "headers": {},
            "description": "Forbidden"
          },
          "404": {
            "headers": {},
            "description": "Not Found"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Unique application identifier."
          }
        ],
        "description": "Gets media content from file currently used as application thumbnail.\nReturns a stream of bytes containing the media file content on success, or error if file is not found.\nThe image selected as thumbnail is only updated when application is saved.",
        "x-qlik-access-control": [
          "read"
        ],
        "x-qlik-visibility": "public",
        "x-qlik-stability": "locked",
        "x-qlik-deprecated": false,
        "x-qlik-tier": {
          "tier": "1",
          "limit": 1000
        }
      }
    },
    "/api/v1/apps/{appId}/objects/{objectId}/actions/change-owner": {
      "post": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NxAppObject"
                }
              }
            },
            "headers": {},
            "description": "OK"
          },
          "400": {
            "headers": {},
            "description": "Bad request"
          },
          "404": {
            "headers": {},
            "description": "Not Found"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Identifier of the app."
          },
          {
            "in": "path",
            "name": "objectId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Identifier of the object."
          }
        ],
        "description": "Sets owner on an app object.\nThe user must be the owner of the object.",
        "requestBody": {
          "content": {
            "*/*": {
              "schema": {
                "$ref": "#/components/schemas/UpdateOwner"
              }
            }
          },
          "required": true,
          "description": "New owner."
        },
        "x-qlik-access-control": [
          "update"
        ],
        "x-qlik-visibility": "public",
        "x-qlik-stability": "locked",
        "x-qlik-deprecated": false,
        "x-qlik-tier": {
          "tier": "2",
          "limit": 100
        }
      }
    },
    "/api/v1/apps/{appId}/owner": {
      "put": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NxApp"
                }
              }
            },
            "headers": {},
            "description": "OK"
          },
          "403": {
            "headers": {},
            "description": "Forbidden"
          },
          "404": {
            "headers": {},
            "description": "Not Found"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Identifier of the app."
          }
        ],
        "description": "Changes owner of the app.",
        "requestBody": {
          "content": {
            "*/*": {
              "schema": {
                "$ref": "#/components/schemas/UpdateOwner"
              }
            }
          },
          "required": true,
          "description": "New owner."
        },
        "x-qlik-access-control": [
          "change_owner"
        ],
        "x-qlik-visibility": "public",
        "x-qlik-stability": "locked",
        "x-qlik-deprecated": false,
        "x-qlik-tier": {
          "tier": "2",
          "limit": 100
        }
      }
    },
    "/api/v1/apps/{appId}/placement": {
      "get": {
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Placement"
                }
              }
            },
            "headers": {},
            "description": "OK"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Identifier of the app"
          }
        ],
        "description": "Retrieves the app size override for an app.",
        "x-qlik-access-control": [
          "read"
        ],
        "x-qlik-visibility": "public",
        "x-qlik-stability": "locked",
        "x-qlik-deprecated": false,
        "x-qlik-tier": {
          "tier": "1",
          "limit": 1000
        }
      },
      "put": {
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "headers": {},
            "description": "OK"
          }
        },
        "parameters": [
          {
            "in": "path",
            "name": "appId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Identifier of the app"
          }
        ],
        "description": "Sets the app size override for an app.",
        "requestBody": {
          "content": {
            "*/*": {
              "schema": {
                "$ref": "#/components/schemas/EngineSize"
              }
            }
          },
          "required": true,
          "description": "The override information to be used for app placement."
        },
        "x-qlik-visibility": "public",
        "x-qlik-stability": "locked",
        "x-qlik-deprecated": false,
        "x-qlik-tier": {
          "tier": "2",
          "limit": 100
        }
      },
      "delete": {
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },

# --- truncated at 32 KB (199 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/qliksense/refs/heads/main/openapi/qliksense-apps.json