Device plugin manifest

Every plugin must have a manifest.xml (with precisely that name) at the root of the plugin folder. The manifest file describes essential information about your plugin to the SmartThings Ecosystem. If you're using code templates to build your plugin, the manifest file is created for you, and most of essential manifest elements are added as you build your plugin.

Manifest File Structure

The below code snippets as below show the general structure of the manifest file and all the elements that can be contained in the manifest file. Examples of manifest files are as follows.

<?xml version="1.0" encoding="UTF-8"?>
        <device />
    <privilegeLevel />
    <allowedURL />
  • Only the <manifest> and <plugin> elements are required. They each must occur only once.
  • <privilegeLevel> can occur zero or one time.
  • <allowedURL> can occur zero or more times.
  • Elements at the same level are generally not ordered.

Package Name

The manifest file's root element requires an attribute for your plugin's package name.

<?xml version="1.0" encoding="UTF-8"?>
<manifest xmlns=

Except for the minPluginSdkVersion, all attributes are required.

Attribute Name Type Description
xmlns varchar Namespace of manifest
manifestVersionCode integer Manifest Version info
package varchar Package ID
versionCode integer Package Version Info
VersionName varchar Package Version Info
minPluginSdkVersion varchar Required minimum Plugin SDK Version

Plugin Components

Manifest elements have label and icon attributes for displaying a small icon and a text label, respectively, to users for the corresponding plugin component.

<manifest …>
    <plugin label="" icon="icon.png">

All attributes are required. They each must occur only once.

Attribute Name Type Description
label varchar Plugin label
icon varchar Pl


Declares an device that implements part of the plugin's device. We define what kind of device (e.g. light, refrigerator) we try to connect.

<manifest …>
    <plugin …>
        <device type="refrigerator"

Except for the subtype, all attributes are required and has same value with type if not explicitly set.

Attribute Name Type Description
type varchar Device type in lower case
subType varchar Device subtype in lower case, if available. (If not specified, has the same value as ‘type’.)
manufacturer varchar Device manufacturer name (e.g., "Samsung Electronics Co., Ltd.")
manufacturerID varchar Device manufacturer ID (4 byte string, e.g. AAA1, AAA2)

Privilege Level

SmartThings plugin framework provides API-level access control for security-sensitive operations which, if not used correctly, can harm user privacy and system stability. Therefore, plugins that use such sensitive APIs must declare the required privileges in the manifest.xml file. Privileges are categorized into public, partner, and platform levels according to their hierarchy:

The public level is the normal privilege level. Any plugin developed using the SmartThings SDK can use these privileges. The partner level requires a partner-signed certificate that is granted to developers who have a business relationship with the vendor. The platform level is the highest privilege level. A plugin that needs these privileges requires a platform-signed certificate that is granted to vendor developers.

<manifest …>
    <privilegeLevel level="public"/>

Allowed URL

By default, accessing an external URL in the custom plugin webview is prohibited. To grant access to an external URL, you have to register the URL(s) in the element.

<manifest …>
    <allowedURL URL="{ALLOWED_URL}"/>