Ubidots Developer Guides
Help CenterAPI ReferenceData APICommunity
  • Welcome to our Dev Guides
  • ⚡️ Getting Started
    • What is Ubidots?
    • Devices, Variables, and Dots
    • Technical FAQs
    • Business FAQs
  • 🧩Integration Guides
    • Industrial IoT
      • Advantech
      • Amplified Engineering
      • AWS
      • Azimut
      • Balena
      • Bivocom
      • CESVA
      • Controllino
      • Digital Communications Technologies (DCT)
      • Everactive
      • Golioth
      • Kepware
      • Kunbus
      • Monnit
      • MultiTech
      • NCD.io
      • Node-RED
      • Omicron IoT
      • Red Lion
      • Robustel
      • Senquip
      • Sielco
      • Siemens
      • Strega
      • vNode
      • WAGO
      • Weintek
      • YuDash
    • Cellular
      • Blues Wireless
      • Digi International
      • Hologram
      • Monogoto
      • Particle
      • Quectel
      • Soracom
    • LoRaWAN
      • AonChip
      • Chirpstack
      • Decentlab
      • Helium
      • ioThings
      • LORIOT
      • Milesight
      • MOKOSmart
      • RAKwireless
      • Sagemcom
      • Seeed Studio
      • Senet
      • The Things Industries
        • The Things Stack
        • The Things Network
    • Sigfox
      • Digital Matter
      • McThings
      • Sigfox
      • Suntech
      • Thinxtra
      • UnaBiz
    • Satellite
      • Swarm
    • Dev Kits
      • Adafruit
      • Advantech
      • AloriumTech
      • Arduino
      • Blues Wireless
      • DFRobot
      • Dragino
      • Electric Imp
      • Espressif Systems
      • McThings
      • Microchip Technology
      • Onion
      • Particle
      • Pycom
      • RAKwireless
      • Raspberry Pi
      • Seeed Studio
      • Sodaq
      • STMicroelectronics
      • Texas Instruments
      • Thinxtra
      • Verse Technology
    • Weather
      • Weather Plugins
      • Ambient Weather
    • Tools
      • Gambit Communications
      • PubNub
  • 📊Dashboards & Widgets
    • HTML Canvas
      • 3rd party packages
      • Preload Dashboard data
      • Built-in library
        • Properties
        • Methods
        • Listening events
        • API
      • Examples
        • Basics
        • Create an LCD screen with the HTML Canvas
        • Interacting with dashboard data
        • Change header's custom style
        • Adding real time using Socket.IO
        • Delete Variable data from a Device
        • Delete Variable data from Groups or Types of Devices
        • Navigation through Dashboard
        • Using a React library
      • Code editor
        • HTML Tab
        • CSS Tab
        • JavaScript Tab
    • Custom UI
      • Paragraph
      • Input combo
        • Text
        • Numeric
        • Numeric with buttons
        • Date
        • Time
        • Toggle
        • Dropdown
        • Multiple selection dropdown
      • Button
    • Custom Style
      • Dashboards
      • Widgets
    • Line chart
    • Pages
      • Getting started
      • Development
      • API
        • Page creation
        • Publish
  • 🤖UbiFunctions
    • Getting Started
      • Creating an UbiFunction
      • Coding an UbiFunction
      • Testing an UbiFunction
      • Authentication
      • Execution Time
      • Logs
    • Runtimes
      • Python
      • NodeJS
      • Custom Runtimes
    • Invocation
      • Time-based Trigger
      • HTTPS
      • MQTT Publish
      • Ubidots Event
    • Advanced
      • Account Token
      • Execution time
      • Raw Functions
      • CORS Policy
      • Async Execution
      • DaaS (Decoder as a Service)
      • Developing and Managing UbiFunctions with Ubidots CLI
    • Examples
    • Specs and Limits
    • Storage
      • File Storage API
      • Mutiple files
  • 🧩Plugins
    • What is a plugin?
    • Public vs. Private
    • Public plugins
      • Cron
      • Webhook
    • Private Plugins
      • Cron
      • Webhook
      • Widget
      • Device
    • Plugins development
      • Getting started
      • Cron
      • Webhook
      • Widget
      • Device
      • view.xml
      • view_widget.xml
    • Plugins deployment
      • Cron and Webhook
      • Widget
      • Device
    • Using the plugins
      • Cron and Webhook
      • Widget
      • Device
  • 📈SYNTHETIC VARIABLES
    • Getting started
      • Creating synthetic variables
      • Synthetic Variables' editor
    • Expressions
      • Mathematical
      • Date range
      • Rolling
      • Special functions
    • Specs and limits
    • Examples
      • Mathematical
      • Date range
      • Rolling
      • Special functions
  • ⌨️Developer tools
    • Javascript SDK
      • Overview
      • Getting started
      • Ubidots class
        • Get methods
        • Filter methods
        • Ubidots objects
          • Entity object
          • Paginator
      • Examples
    • CLI
      • Overview
      • Installing
      • Usage
      • SDK for UbiFunctions
  • 🏗️Apps
    • App builder
      • Custom sidebar
Powered by GitBook
On this page
  • src directory
  • manifest.toml
  • Runtimes
  • Python
  • NodeJS
  • License
  • Readme

Was this helpful?

Export as PDF
  1. Plugins

Private Plugins

PreviousWebhookNextCron

Last updated 6 months ago

Was this helpful?

This feature requires an Enterprise license. Please contact sales@ubidots.com to enable the developer console on your account.

Private plugins, unlike their public counterpart, are developed, maintained and deployed by Ubidots users in order to meet requirements that are not natively addressed by the platform.

A private plugin is structured around a specific set of files. These files not only determine the plugin type but also define its logic and overall functionality. The typical file structure for a plugin, regardless of its type, is outlined below:

├── src
│   ├── some_files_or_folders    
├── LICENSE
├── README.md
├── manifest.toml 

Adhering to this file structure and including all the mentioned files is mandatory for the plugin to be deployed and function correctly.

src directory

the src directory holds the primary components of the plugin. This is where the core logic, main functionalities, and some configuration files are defined.

For more specific details about the contents of this directory, please refer to the dedicated section for each type of plugin:

manifest.toml

In a broad sense, the manifest file defines the plugin's identity and behavior, that is, it outlines:

  • Its type

  • Plugin's current version

  • Plugin's price

  • Environmental variables

This file contains both shared components that apply to all plugin types and unique components that are specific to each plugin type.

The typical manifest file common to all plugins is composed by:

Section
Key
Value
Description
Example

[-]

manifest_version

A valid manifest version. Currently 2.0 is the only one supported.

Manifest version.

[settings]

version

Any number, according to your versioning system.

Plugin's current version.

[settings]

plugin_type

cron, webhook, device, widget.

Type of plugin

[settings]

license_name

A valid license name.

The name for your plugin's license.

[pricing]

price*

A float number.

This is the price that the developer wants to set for the plugin.

[environment]

Any variable name*

Any value for the variable.

Allows to set environment variables within the plugin.

UBIDOTS_URL = "https://industrial.api.ubidots.com"

With that in mind, a manifest file that is common to all plugins, regardless of their type, looks like this:

manifest_version = 2.0

[settings]
version = "1.1.1"
plugin_type = "cron" | "webhook" | "device" | "widget"
license_name = "MIT license"

[pricing]
price = 10

[environment]
UBIDOTS_URL = "https://industrial.api.ubidots.com"

For detailed information about the specific manifest file components particular to each plugin type, refer to their dedicated pages.

Manifest's file keys marked with a * are not mandatory.

Runtimes

Python

Plugin's Python runtime is based on Python 3.11. You can use it in the manifest.toml file as python3.11. It contains the following libraries:

Library
Version

requests

2.32.3

pytz

2024.1

msgpack

1.0.8

httpx

0.27.0

aiohttp

3.9.5

lxml

5.2.2

numpy

2.0.0

pandas

2.2.2

python-aqi

0.6.1

NodeJS

Plugin's NodeJS runtime is based on NodeJS 20. You can use it in the manifest.toml file as nodejs:20 It contains the following libraries:

Library
Version

axios

1.5.1

License

The LICENSE file provides information about the licensing terms under which the plugin is distributed.

Typically, a license file looks like this:


Copyright (c) 2021 Ubidots

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE

This file can't be empty.

Readme

This is equally important as the srcdirectory, since these are the instructions that will guide the users of the plugin. This file must be in Markdown.

This file can't be empty.

🧩
manifest_version = 2.0
version = "1.1.1"
plugin_type = "widget"
license_name = "MIT license"
price = 10
Cron
Webhook
Widget
Device