AutomationFlowsWeb Scraping › Trustloop + Signatrust: Human Approval Flow

Trustloop + Signatrust: Human Approval Flow

TrustLoop + Signatrust: Human Approval Flow. Uses httpRequest. Webhook trigger; 10 nodes.

Webhook trigger★★★★☆ complexity10 nodesHTTP Request
Web Scraping Trigger: Webhook Nodes: 10 Complexity: ★★★★☆ Added:

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "TrustLoop + Signatrust: Human Approval Flow",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "ai_high_risk_decision",
        "responseMode": "lastNode",
        "options": {}
      },
      "id": "trigger-1",
      "name": "AI High-Risk Decision",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 1,
      "position": [
        0,
        0
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://api.trustloop.live/api/intercept",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "x-api-key",
              "value": "={{$env.TRUSTLOOP_API_KEY}}"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "{\"tool_name\": \"high_risk_action\", \"arguments\": {{JSON.stringify($json.body)}}, \"agent_name\": \"n8n-approval-workflow\"}",
        "options": {}
      },
      "id": "trustloop-1",
      "name": "TrustLoop Policy Check",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        200,
        0
      ]
    },
    {
      "parameters": {
        "conditions": {
          "boolean": [
            {
              "value1": "={{$json.allowed}}",
              "value2": true
            }
          ]
        }
      },
      "id": "if-1",
      "name": "Is Allowed?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "position": [
        400,
        0
      ]
    },
    {
      "parameters": {
        "conditions": {
          "number": [
            {
              "value1": "={{$('AI High-Risk Decision').item.json.body.risk_score || 0}}",
              "operation": "largerEqual",
              "value2": 0.7
            }
          ]
        }
      },
      "id": "risk-check-1",
      "name": "Risk Score >= 0.7?",
      "type": "n8n-nodes-base.if",
      "typeVersion": 1,
      "position": [
        600,
        -100
      ]
    },
    {
      "parameters": {
        "jsCode": "const input = $('AI High-Risk Decision').item.json.body;\nreturn {\n  action: 'pending_human_review',\n  decision: input.decision || 'unknown',\n  risk_score: input.risk_score || 0,\n  escalation_reason: 'Risk score exceeds threshold (0.7)',\n  reviewer: input.reviewer || 'compliance-team',\n  timestamp: new Date().toISOString()\n};"
      },
      "id": "escalate-1",
      "name": "Escalate to Human",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        800,
        -200
      ]
    },
    {
      "parameters": {
        "jsCode": "const input = $('AI High-Risk Decision').item.json.body;\nreturn {\n  action: 'auto_approved',\n  decision: input.decision || 'unknown',\n  risk_score: input.risk_score || 0,\n  approval_type: 'automatic',\n  timestamp: new Date().toISOString()\n};"
      },
      "id": "auto-approve-1",
      "name": "Auto-Approve (Low Risk)",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        800,
        0
      ]
    },
    {
      "parameters": {
        "method": "POST",
        "url": "https://signatrust.net/api/v1/n8n/receipts",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "X-API-Key",
              "value": "={{$env.SIGNATRUST_API_KEY}}"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        },
        "sendBody": true,
        "specifyBody": "json",
        "jsonBody": "={{JSON.stringify({\"decision\": ($json.action === 'pending_human_review' ? 'ESCALATED: ' : 'AUTO-APPROVED: ') + ($json.decision || 'unknown action') + ' \u2014 risk_score: ' + ($json.risk_score || 0) + ' \u2014 governed by TrustLoop policy', \"agent_id\": \"n8n-approval-workflow\", \"action\": $json.action, \"metadata\": {\"governed_by\": \"TrustLoop\", \"risk_score\": $json.risk_score, \"approval_type\": $json.approval_type || 'human_review'}})}}",
        "options": {}
      },
      "id": "signatrust-1",
      "name": "Signatrust Seal Receipt",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        1000,
        -100
      ]
    },
    {
      "parameters": {
        "method": "GET",
        "url": "=https://signatrust.net/api/v1/n8n/receipts/{{$json.receipt_id}}/verify",
        "sendHeaders": true,
        "headerParameters": {
          "parameters": [
            {
              "name": "X-API-Key",
              "value": "={{$env.SIGNATRUST_API_KEY}}"
            }
          ]
        },
        "options": {}
      },
      "id": "verify-1",
      "name": "Verify Receipt",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4,
      "position": [
        1200,
        -100
      ]
    },
    {
      "parameters": {
        "jsCode": "const receipt = $('Signatrust Seal Receipt').item.json;\nconst verification = $json;\nreturn {\n  status: 'completed',\n  receipt_id: receipt.receipt_id,\n  verified: verification.valid,\n  share_url: receipt.share_url,\n  hash: receipt.hash,\n  signature: receipt.signature\n};"
      },
      "id": "respond-1",
      "name": "Return Audit Trail",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        1400,
        -100
      ]
    },
    {
      "parameters": {
        "jsCode": "return {\n  status: 'blocked',\n  reason: $('TrustLoop Policy Check').item.json.message || 'Policy violation detected',\n  action: 'high_risk_action_denied'\n};"
      },
      "id": "block-1",
      "name": "Handle Blocked Action",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        600,
        100
      ]
    }
  ],
  "connections": {
    "AI High-Risk Decision": {
      "main": [
        [
          {
            "node": "TrustLoop Policy Check",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "TrustLoop Policy Check": {
      "main": [
        [
          {
            "node": "Is Allowed?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Is Allowed?": {
      "main": [
        [
          {
            "node": "Risk Score >= 0.7?",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Handle Blocked Action",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Risk Score >= 0.7?": {
      "main": [
        [
          {
            "node": "Escalate to Human",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Auto-Approve (Low Risk)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Escalate to Human": {
      "main": [
        [
          {
            "node": "Signatrust Seal Receipt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Auto-Approve (Low Risk)": {
      "main": [
        [
          {
            "node": "Signatrust Seal Receipt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Signatrust Seal Receipt": {
      "main": [
        [
          {
            "node": "Verify Receipt",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Verify Receipt": {
      "main": [
        [
          {
            "node": "Return Audit Trail",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "2.0"
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

TrustLoop + Signatrust: Human Approval Flow. Uses httpRequest. Webhook trigger; 10 nodes.

Source: https://github.com/abokenan444/trustloop-signatrust-workflows/blob/master/5_human_approval_flow.json — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Web Scraping

This n8n template provides enterprise-level version control for your workflows using GitHub integration. Stop losing hours to broken workflows and manual exports – get proper commit history, visual di

n8n, Execute Workflow Trigger, HTTP Request +1
Web Scraping

This flow creates dummy files for every item added in your *Arrs (Radarr/Sonarr) with the tag .

HTTP Request, Ssh
Web Scraping

eek-Go v2 (Batch-Then-Review). Uses httpRequest. Webhook trigger; 75 nodes.

HTTP Request
Web Scraping

This workflow receives webhook requests from a content calendar and uses the X API v2 to publish text posts, threads, image/video posts, and polls, as well as delete existing posts and run a credentia

HTTP Request
Web Scraping

This workflow acts as a central API gateway for all technical indicator agents in the Binance Spot Market Quant AI system. It listens for incoming webhook requests and dynamically routes them to the c

HTTP Request