Docs/exploded_schema.jsonc (47 lines of code) (raw):
{
"author": "Katy Shimizu", // Primary contact for this template (author/maintainer/owner/etc).
// TODO: Is "name" a display name or just a human readable tag? If display name, shouldn't it be a resx pointer?
"name": "<Trigger> Name", // If a resx pointer (ex. $Trigger_name), could be displayed in UI.
"description": "$Trigger_description", // Resx pointer to localized short description of trigger functionality.
"programmingModel": "v2", // "v1" | "v2". v1 = legacy; v2 = Stein.
"language": "python", // Programming language. ex. python, dotnet, node, powershell.
"jobs": [ // Each 'job' is a collection of actions associated with a command or 'flow.'
{
"name": "Human-Readable Trigger Flow Name", // If a resx pointer (ex. $Trigger_Flow_name), could be displayed in UI.
"condition": { // Job-level condition; ex. to determine whether to enable it as an option.
"name": "SHOW_V2_TEMPLATES", // Variable name - for example, an environment variable.
"expectedValue": "true" // Variable value for which this condition is true.
},
"inputs": {
// TODO: note on who defines userCommand values - template creators?
"userCommand": "createNewApp", // Value tooling can match on to filter which job(s) to run for a flow.
"assignTo": "$(APP_FILENAME)" // Key for initial input value. Actions can prompt for further inputs, ex. binding settings.
// ex. in the append scenario, this could be 'function_app.py' or the selected file
},
"actions": [ // Keys for action definitions (full action definitions below).
"getBindingParamValue", // NOTE: List actions in order of operation.
"readFileContent",
"replaceTextInFile",
"writeFile",
"showMarkdownPreview"
]
},
],
"actions": [ // Full action definitions. An action can be used by more than one job.
{
// TODO: Change 'name' to 'key'?
// Common Action Properties
"name": "getBindingParamValue", // Arbitrary value for lookup from job(s).
"type": "GetTemplateFileContent", // Corresponds to entry in actions_schema.json.
"condition": { // Action-level condition. If undefined, action always runs.
"name": "SOME_FLAG",
"expectedValue": "true"
},
"continueOnError": "false", // Whether to continue job execution on error.
"errorText": "$Trigger_param_error", // Resx pointer; text to show user on error. ex. manual instructions.
// Action Type Specific Properties
"property_one": "foo", // These vary by the specific action type. See actions_schema.json for examples.
"property_two": "bar"
}
]
}