Documentation for apps. If you'd like to make an app using Python3, check out this guide
Apps are the heavy lifters of workflows within Shuffle. They give access to a library of functions, and are created using OpenAPI or pure Python. Shuffle gives you access to pre-defined integrations located here.
A subset of available apps can be found at https://shuffler.io/apps.
Apps are the primary building blocks in workflows. Apps can be auto-generated from OpenAPI specifications or using Shuffle's app sdk. To enforce stability and usability, we use a versioning system to prevent sudden updates to apps.
Apps can contain multiple actions, which can take multiple variables. They are made to be able to interact with eachother by using each-others' data. Apps have the ability to be in multiple environment with different data (e.g. different credentials), before passing them on.
PS: In a future iteration, focus will move to an optional hybrid execution model (e.g. use cloud resources).
An app can perform more than one task based on predefined actions. These actions are defined by the developer, and are reusable and modifyable by the user of the app. An action should (for now) be a one-to-one representation of the function to run, and usually has arguments for authentication with the target application. Actions can contain multiple arguments.
You can see what actions an app has by going to /apps, then finding the app you're looking for.
Arguments are the variables used to perform an action. Arguments with an orange dot next to them are required, with yellow ones being optional. Arguments should have example text to to indicate the expected value. The first arguments of an app are usually related to authentication or the target URL, where we suggest using variables
You can see what parameters and action has by going to /apps, selecting an app and then the action.
PS: This only applies to onprem Going to /apps, there exists a button called "Download from Github" which by default will download apps from the directory https://github.com/frikky/shuffle-apps. You can type in your own repository along with authentication options if applicable.
When the modal opens, there are two buttons:
When you set up Shuffle for the first time, it should provide you with >100 existing Apps. These are gathered from shuffle-apps, and will grow over time. Searching for apps is done by going to /apps and writing your search term. In the example below, we searched for "TheHive", which ends in TheHive being shown.
A goal for Shuffle is to make it possible to search outside the apps you currently have. This is an open issue as of 23.05.2020, but will be worked on.
PS: Extended search can be done using the shuffler search-engine
Apps in Shuffle can be made using the App Creator or with Python directly.
Read more about how to make an app here
If you have an OpenAPI config already
If you want to create an app
Creating or editing an app in Shuffle is made to be as simple as possible
If you've created an app using the editor, or uploaded an OpenAPI specification, it's changeable. Find the app you created by searching for it, then click the "Edit app" button as seen below. You can also delete it.
Required permissions (either or):
If you end up using WALKOFF, you need to make ONE edit:
This will make it use Shuffle's app SDK, rather than Shuffle's.
If you have a repository (private or public) of custom apps for Shuffle (or WALKOFF), Shuffle can load all the apps by using the "Download from URL" button in the /apps view.
Click the "Download from URL" button
Fill in the github/gitlab URL, and if the repo is private, your username & password. These are used for BasicAuth when running git clone.
Hit submit. If it's unsuccessful, it will throw an error, otherwise show a loading icon. This means it's working on getting your apps.
PS: May 2020: There is nothing stopping you from deleting an app that is used by a workflow right now. This is a destructive action, and will make some workflows using the app unusable.
Deleting an app is done by searching for it in /apps.
Required permissions (either or):