This library enables you to easily integrate your Trello Power-Up with the Optro Market for paid subscription licensing.
The library is distributed as an 'npm' module and can be used in a few different ways:
We have created a suite of tools to make creating Power-Ups with built-in licensing as easy as possible, with React, TypeScript, Webpack all setup for you:
-
Recommended - Use the Trello Power-Up Generator (
@npx create-trello-powerup
) to create a Trello Power-Up based on your selection selected of capabilities and features -
Advanced - Use the existing Power-Up template as a basis for your own Trello Power-Up. This option will be more time consuming and we would only recommend this route for experienced developers that are looking for a challenge.
Using the Optro API Client from your Server-side is the most robust strategy to enforce licensing restrictions - it allows you to have complete control over the behaviour of your Power-Up and the different conditions.
-
Install the library (and node-fetch if using from server-side ie. Node.js)
npm install @optro/api-client node-fetch
-
Import the API Class
import {OptroLicenseApi} from "@optro/api-client";
-
Create a Client with your Power-Up Details
const optroClient = new OptroLicenseApi("OPTRO_API_KEY", "POWERUP_ID");
-
Call the license check that matches your Power-Up's licensing model in Optro
// if using TypeScript import { OptroLicenseResponse } from "@optro/api-client"; // check license status of board + power-up pair using the client const t = window.TrelloPowerUp.iframe(); const boardId: string = t.getContext().board; const licenseStatus: OptroLicenseResponse = await optroClient.getBoardLicenseStatus(boardId); // or check license status of member + power-up pair using client const t = window.TrelloPowerUp.iframe(); const memberId: string = t.getContext().member; const licenseStatus: OptroLicenseResponse = await optroClient.getMemberLicenseStatus(memberId); // then check whether they are registered and licensed to use your Power-Up on a paid plan return licenseStatus.isRegistered && licenseStatus.isLicensed();
-
You can use your own interface to provide information on the license applied, or using the
@optro/ui-react
library you can pass these values to theSubscriptionStatus
React Component and have these rendered in a clean and consistent way across all Optro-licensed Power-Ups, with internationalization support.
You can include the library as a standard script and then call it from your javascript, this is useful when you're not using a libary like React or Angular (commonly with Webpack).
<script src="@optro/api-client/dist/cache.js"></script>
<script src="@optro/api-client/dist/api.js"></script>
<script src="@optro/api-client/dist/index.js"></script>
<script>
var t = window.TrelloPowerUp.iframe({appKey: "APP_KEY", appName: "APP_NAME"});
var client = new OptroLicenseApi("OPTRO_API_KEY", "POWERUP_ID);
client.getBoardLicenseStatus(t.getContext().board).then(function(result) {
var status = result.isRegistered && result.isLicensed;
// Do something with the status, such as restrict features or render a message)
}).catch(function(error) {
console.error(error);
});
</script>
There are a few parameters that can be set when you're using the Optro API Client:
Before you can call a function provided by the Client, you first have to instantiate it, for example:
const client = new OptroLicenseApi("OPTRO-API-KEY", "POWER-UP-ID", "CACHE-MAX-AGE", "CACHE-INTERVAL);
- OPTRO-API-KEY - Your Optro API Key which can be obtained from your account on Optro Vendors
- POWER-UP-ID - Your Power-Up ID, which can be obtained from the Power-Up Admin Page
- CACHE-MAX-AGE - (Optional) Choose how long entries can be stored for - e.g. "10m"
- CACHE-INTERVAL - (Optional) Choose at what interval the cache should refresh values - e.g. "2m"
When you'd like to check whether a Board or Member is licensed, you can call one of the following commands:
const boardLicenseStatus: OptroLicenseResponse = client.getBoardLicenseStatus("TRELLO-BOARD-ID");
const memberLicenseStatus: OptroLicenseResponse = client.getMemberLicenseStatus("TRELLO-MEMBER-ID");
console.log(boardLicenseStatus);
{
isLicensed: true,
isRegistered: true
}
You can use the returned values to determine what level of features to provide to the board or member in your Power-Up, as well as pass it to the License UI Components in the front-end to provide access for users to upgrade and manage their subscription.
We welcome contributions to the source code - just raise a Pull Request!
This library is provided under the MIT License.
The API that this library uses (https://api.optro.cloud) is proprietary and is provided under commercial terms.
Optro Market is the best place to discover Trello Power-Ups with new and exciting features unlocked
By using our resources, you’ll be able to build Power-Ups with best practice and monetization features baked in from the beginning.
Follow our step-by-step guide to building a Power-Up and check out these tools to begin turning your Power-Up ideas into a reality: