GitHub ActionsMarketplace action
Add the published action
Use flowcerta/validate-action@v1 from the GitHub Actions Marketplace. It uploads your workflow files, preserves repo, branch, PR, and run context automatically, and returns a 422 on blocking findings so the job fails on its own.
- name: Flowcerta governance gate
uses: flowcerta/validate-action@v1
with:
api_key: ${{ secrets.FLOWCERTA_API_KEY }}
org_id: ${{ secrets.FLOWCERTA_ORG_ID }}
files: workflows/Main.xaml
platform: uipath
enforcement_mode: blocking
# The action posts your workflow files, preserves repo/branch/PR/run
# context automatically, and fails the job on critical/high findings.
Raw APIcurl wrapper
Use from any runner
If you already have your own orchestration layer, call the API directly and send the same normalized metadata contract yourself.
curl -X POST "https://api.flowcerta.com/api/v1/validate" \
-H "Authorization: ApiKey $FLOWCERTA_API_KEY" \
-F "file=@flows/InvoiceApproval.json" \
-F "platform=power_automate" \
-F "enforcement_mode=blocking" \
-F "source=cicd" \
-F "label=contoso/rpa-bots / qa / InvoiceApproval.json" \
-F 'metadata={
"provider":"github-actions",
"pipeline":{
"provider":"github-actions",
"repository":"contoso/rpa-bots",
"branch":"main",
"commit":"a3f8b2c",
"workflowRunUrl":"https://github.com/contoso/rpa-bots/actions/runs/9001"
}
}'
Power PlatformExtension flow
Wrap Power Platform Pipelines
Use a pipeline-triggered cloud flow to call Flowcerta and preserve deployment, solution, and target environment context on the validation result.
Power Platform pipeline extension flow:
1. Trigger: "When a pipeline deployment completes"
2. Compose metadata:
{
"provider": "power_platform",
"pipeline": {
"provider": "power_platform",
"host": "power-platform-pipelines",
"pipeline_name": "@{triggerBody()?['pipeline']?['name']}",
"stage_name": "@{triggerBody()?['stage']?['name']}",
"deployment_id": "@{triggerBody()?['deployment']?['id']}",
"solution_name": "@{triggerBody()?['solution']?['uniqueName']}",
"solution_version": "@{triggerBody()?['solution']?['version']}",
"environment_name": "@{triggerBody()?['targetEnvironment']?['displayName']}",
"environment_id": "@{triggerBody()?['targetEnvironment']?['id']}",
"deployment_url": "@{triggerBody()?['deployment']?['link']}"
}
}
3. HTTP action:
POST https://api.flowcerta.com/api/v1/validate
Authorization: ApiKey <FLOWCERTA_API_KEY>
form-data:
file = exported workflow package
platform = power_automate
source = cicd
enforcement_mode = blocking
label = @{triggerBody()?['pipeline']?['name']} / @{triggerBody()?['stage']?['name']}
metadata = <Compose output>