Plugin Recipes

Plugin recipes provide a way to describe how to execute a plugin or a sequence of plugins.

{
    "recipeId": "someId",
    "plugin": "plugin-name",
    "version": "v1.0.0",
    "inputs": {
        "userInputA": {
            "type": "string"
        },
        "userInputB": {
            "type": "data",
            "dataType": "entity/stream",
            "contentTypes": [
                "text/csv",
                "application/x-lines+json"
            ]
        }
    },
    "captureOutputs": {
        "pluginOutput": {
            "name": { "pattern": "output(\\.csv)?" },
            "dataType": "entity/stream",
            "contentTypes": [
                "text/csv",
                "application/x-lines+json"
            ],
            "isOptional": false
        },
        "visualization": {
            "name": "plot.html",
            "dataType": "custom/plot",
            "contentType": "text/html",
            "isOptional": true
        }
    },
    "steps": [
        {
            "ID": "main",
            "inputs": {
                "example": "stringConstant",
                "data": {
                    "var": "userInputB"
                }
            }
        },
        {
            "ID": "demo",
            "inputs": {
                "fields": {
                    "var": "userInputB"
                }
            }
        }
    ]
}
{
    "recipeId": "compoundRecipe",
    "recipes": {
        "someId": "http://.../recipes/someId",
        "otherRecipe": {
            "recipeId": "inlineRecipe",
            "...": "..."
        }
    }
    "inputs": {
        "userInputA": {
            "$ref": "#someId/userInputA"
        },
        "userInputOther": {
            "const": "http://..."
        }
    },
    "captureOutputs": {
        "recipeOutput": {
            "$ref": "#someId/pluginOutput"
        },
        "visualization": {
            "$ref": "#someId/visualization"
        }
    },
    "dataFlow": {
        "userInputOther": ["#otherRecipe/input"],
        "#otherRecipe/output": ["#someId/userInputB"],
        "userInputA": ["#someId/userInputA"]
    }
}