# Client scripts and UI extension applications (IRPCClientScript)

Location: [gRPC API](https://developer.m-files.com/APIs/gRPC-API/index.md) > [Vault API](https://developer.m-files.com/APIs/gRPC-API/vault/index.md)

HTML version: https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/

Lists, installs, enables, disables, licenses and removes the applications of the vault: vault
applications (server side) and UI extension applications (client side), and downloads their
packages and files.

- **gRPC service:** `MFiles.IRPCClientScript`
- **Book and level:** [Vault API](https://developer.m-files.com/APIs/gRPC-API/vault/index.md), standard
- **Methods:** 16
- **Proto file:** [`mfiles/IRPCClientScript.proto`](https://developer.m-files.com/APIs/gRPC-API/downloads/proto/mfiles/IRPCClientScript.proto)

<a id="overview"></a>

## Overview

An application is a ZIP package with an application definition (`appdef.xml`). Its GUID
identifies it in every call. [ExtApplication](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.ExtApplication/index.md) describes it;
`type` tells a vault application (`EXT_APPLICATION_TYPE_SERVER`) from a UI extension application
(`EXT_APPLICATION_TYPE_CLIENT`), and `platforms` (a bit mask of
[ExtApplicationPlatform](https://developer.m-files.com/APIs/gRPC-API/Reference/Enums/MFiles.ExtApplicationPlatform/index.md) values) the clients it supports.

**Reading:**

- [GetScriptApplicationsEx](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/GetScriptApplicationsEx/index.md) lists the
  applications; [GetScriptApplication](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/GetScriptApplication/index.md)
  gets one.
- [GetClientScriptApplicationsDetails](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/GetClientScriptApplicationsDetails/index.md)
  lists the modules and dashboards of the UI extension applications of the new M-Files clients.
- [DownloadScriptApplicationFile_Begin](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/DownloadScriptApplicationFile_Begin/index.md)
  and [DownloadScriptApplicationFile_ReadBlock](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/DownloadScriptApplicationFile_ReadBlock/index.md)
  download an application package;
  [GetDownloadSessionIdOfScriptApplicationFile](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/GetDownloadSessionIdOfScriptApplicationFile/index.md)
  downloads one file of a UI extension application.

**Managing** (requires the vault right `change_metadata_structure`, see
[VaultAccess](https://developer.m-files.com/APIs/gRPC-API/Reference/Messages/MFiles.VaultAccess/index.md); these are the operations of M-Files Admin):

- Install or upgrade: upload the package with
  [UploadScriptApplicationFileBlockEx](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/UploadScriptApplicationFileBlockEx/index.md).
- Enable or disable a vault application:
  [GetScriptApplicationServerEnable](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/GetScriptApplicationServerEnable/index.md),
  [SetScriptApplicationServerEnable](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/SetScriptApplicationServerEnable/index.md).
- Restart a hot-swappable vault application:
  [ReloadApplication](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/ReloadApplication/index.md).
- Licenses: [SetVaultApplicationLicense](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/SetVaultApplicationLicense/index.md),
  [GetVaultApplicationLicenseStatus](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/GetVaultApplicationLicenseStatus/index.md).
- Uninstall: [RemoveScriptApplication](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/RemoveScriptApplication/index.md).

**Enabled state.** `ExtApplication.is_enabled` is the default enabled state for clients, not
whether a vault application runs. A disabled vault application can show `is_enabled` true; ask
[GetScriptApplicationServerEnable](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/GetScriptApplicationServerEnable/index.md).

<a id="methods"></a>

## Methods

| Method | Summary | Facts |
|---|---|---|
| [DownloadScriptApplication](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/DownloadScriptApplication/index.md) | Not implemented: fails with "Not implemented.". | `write` `session` |
| [DownloadScriptApplicationFile_Begin](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/DownloadScriptApplicationFile_Begin/index.md) | Starts downloading the package (ZIP file) of an application and returns its first block. | `read` `session` `idempotent` |
| [DownloadScriptApplicationFile_ReadBlock](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/DownloadScriptApplicationFile_ReadBlock/index.md) | Reads the next block of an application download. | `read` `session` `idempotent` |
| [GetClientScriptApplicationsDetails](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/GetClientScriptApplicationsDetails/index.md) | Lists the enabled UI extension applications of the new M-Files clients with their modules, files and dashboards. | `read` `session` `idempotent` |
| [GetDownloadSessionIdOfScriptApplicationFile](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/GetDownloadSessionIdOfScriptApplicationFile/index.md) | Starts downloading one file of a UI extension application of the new M-Files clients. | `read` `session` `idempotent` |
| [GetScriptApplication](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/GetScriptApplication/index.md) | Gets one application by its GUID. | `write` `session` |
| [GetScriptApplicationServerEnable](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/GetScriptApplicationServerEnable/index.md) | Tells whether an application is enabled in the vault. | `write` `session` |
| [GetScriptApplicationsEx](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/GetScriptApplicationsEx/index.md) | Lists the applications installed in the vault, optionally only one type or platform. | `read` `session` `idempotent` |
| [GetVaultApplicationLicense](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/GetVaultApplicationLicense/index.md) | Not implemented: always returns an empty `license`. | `write` `session` |
| [GetVaultApplicationLicenseStatus](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/GetVaultApplicationLicenseStatus/index.md) | Gets the license status of a vault application, or checks a license before installing it. | `read` `session` `idempotent` |
| [ReloadApplication](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/ReloadApplication/index.md) | Restarts a hot-swappable vault application on all servers of the vault. | `write` `session` |
| [RemoveScriptApplication](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/RemoveScriptApplication/index.md) | Uninstalls an application from the vault. | `write` `session` |
| [SetScriptApplicationServerEnable](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/SetScriptApplicationServerEnable/index.md) | Enables or disables an application in the vault. | `write` `session` |
| [SetVaultApplicationLicense](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/SetVaultApplicationLicense/index.md) | Installs or removes the license of a vault application. | `write` `session` `idempotent` |
| [UploadScriptApplicationFileBlock](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/UploadScriptApplicationFileBlock/index.md) | Uploads and installs an application package. Same as UploadScriptApplicationFileBlockEx without the list of outdated dependencies. | `write` `session` `idempotent` |
| [UploadScriptApplicationFileBlockEx](https://developer.m-files.com/APIs/gRPC-API/Reference/MFiles.IRPCClientScript/UploadScriptApplicationFileBlockEx/index.md) | Uploads an application package block by block and, with the last block, installs the application. | `write` `session` `idempotent` |
