Files
awesome-copilot/plugins/flowstudio-power-automate/skills/flowstudio-power-automate-build/references/flow-schema.md
2026-03-13 02:45:39 +00:00

4.7 KiB

FlowStudio MCP — Flow Definition Schema

The full JSON structure expected by update_live_flow (and returned by get_live_flow).


Top-Level Shape

{
  "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "$connections": {
      "defaultValue": {},
      "type": "Object"
    }
  },
  "triggers": {
    "<TriggerName>": { ... }
  },
  "actions": {
    "<ActionName>": { ... }
  },
  "outputs": {}
}

triggers

Exactly one trigger per flow definition. The key name is arbitrary but conventional names are used (e.g. Recurrence, manual, When_a_new_email_arrives).

See trigger-types.md for all trigger templates.


actions

Dictionary of action definitions keyed by unique action name. Key names may not contain spaces — use underscores.

Each action must include:

  • type — action type identifier
  • runAfter — map of upstream action names → status conditions array
  • inputs — action-specific input configuration

See action-patterns-core.md, action-patterns-data.md, and action-patterns-connectors.md for templates.

Optional Action Properties

Beyond the required type, runAfter, and inputs, actions can include:

Property Purpose
runtimeConfiguration Pagination, concurrency, secure data, chunked transfer
operationOptions "Sequential" for Foreach, "DisableAsyncPattern" for HTTP
limit Timeout override (e.g. {"timeout": "PT2H"})

runtimeConfiguration Variants

Pagination (SharePoint Get Items with large lists):

"runtimeConfiguration": {
  "paginationPolicy": {
    "minimumItemCount": 5000
  }
}

Without this, Get Items silently caps at 256 results. Set minimumItemCount to the maximum rows you expect. Required for any SharePoint list over 256 items.

Concurrency (parallel Foreach):

"runtimeConfiguration": {
  "concurrency": {
    "repetitions": 20
  }
}

Secure inputs/outputs (mask values in run history):

"runtimeConfiguration": {
  "secureData": {
    "properties": ["inputs", "outputs"]
  }
}

Use on actions that handle credentials, tokens, or PII. Masked values show as "<redacted>" in the flow run history UI and API responses.

Chunked transfer (large HTTP payloads):

"runtimeConfiguration": {
  "contentTransfer": {
    "transferMode": "Chunked"
  }
}

Enable on HTTP actions sending or receiving bodies >100 KB (e.g. parent→child flow calls with large arrays).


runAfter Rules

The first action in a branch has "runAfter": {} (empty — runs after trigger).

Subsequent actions declare their dependency:

"My_Action": {
  "runAfter": {
    "Previous_Action": ["Succeeded"]
  }
}

Multiple upstream dependencies:

"runAfter": {
  "Action_A": ["Succeeded"],
  "Action_B": ["Succeeded", "Skipped"]
}

Error-handling action (runs when upstream failed):

"Log_Error": {
  "runAfter": {
    "Risky_Action": ["Failed"]
  }
}

parameters (Flow-Level Input Parameters)

Optional. Define reusable values at the flow level:

"parameters": {
  "listName": {
    "type": "string",
    "defaultValue": "MyList"
  },
  "maxItems": {
    "type": "integer",
    "defaultValue": 100
  }
}

Reference: @parameters('listName') in expression strings.


outputs

Rarely used in cloud flows. Leave as {} unless the flow is called as a child flow and needs to return values.

For child flows that return data:

"outputs": {
  "resultData": {
    "type": "object",
    "value": "@outputs('Compose_Result')"
  }
}

Scoped Actions (Inside Scope Block)

Actions that need to be grouped for error handling or clarity:

"Scope_Main_Process": {
  "type": "Scope",
  "runAfter": {},
  "actions": {
    "Step_One": { ... },
    "Step_Two": { "runAfter": { "Step_One": ["Succeeded"] }, ... }
  }
}

Full Minimal Example

{
  "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
  "contentVersion": "1.0.0.0",
  "triggers": {
    "Recurrence": {
      "type": "Recurrence",
      "recurrence": {
        "frequency": "Week",
        "interval": 1,
        "schedule": { "weekDays": ["Monday"] },
        "startTime": "2026-01-05T09:00:00Z",
        "timeZone": "AUS Eastern Standard Time"
      }
    }
  },
  "actions": {
    "Compose_Greeting": {
      "type": "Compose",
      "runAfter": {},
      "inputs": "Good Monday!"
    }
  },
  "outputs": {}
}