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 →
{
"name": "Tuleap Unified Sync",
"nodes": [
{
"id": "webhook-unified-trigger",
"name": "Tuleap Unified Webhook",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [
200,
300
],
"parameters": {
"path": "tuleap-unified",
"httpMethod": "POST",
"responseMode": "responseNode",
"options": {}
}
},
{
"id": "normalize-payload",
"name": "Map Action Vocab",
"type": "n8n-nodes-base.code",
"typeVersion": 1,
"position": [
450,
300
],
"parameters": {
"jsCode": "const raw = $input.first().json;\nconst body = (raw.body !== undefined && typeof raw.body === 'object') ? raw.body : raw;\n\nlet payload, artifactId, trackerId, projectId, rawAction;\n\nif (body.payload !== undefined) {\n const p = typeof body.payload === 'string' ? JSON.parse(body.payload) : body.payload;\n payload = p;\n artifactId = p.current?.id || p.artifact_id;\n trackerId = p.current?.tracker?.id || p.tracker_id;\n projectId = p.current?.project?.id || p.project?.id || p.project_id;\n rawAction = p.action || 'update';\n} else if (body.artifact !== undefined) {\n payload = { current: body.artifact, project: body.project, user: body.user, action: body.action };\n artifactId = body.artifact.id;\n trackerId = body.artifact.tracker?.id;\n projectId = body.project?.id;\n rawAction = body.action || 'create';\n} else {\n throw new Error('Unrecognized Tuleap payload format');\n}\n\nif (!trackerId) throw new Error('No tracker ID found in payload');\n\nconst ACTION_MAP = {\n 'create': 'sync',\n 'update': 'sync',\n 'artifact:created': 'sync',\n 'artifact:updated': 'sync',\n 'artifact:deleted': 'delete',\n 'delete': 'delete',\n 'reject': 'reject',\n 'archive': 'archive',\n};\n\nconst action = ACTION_MAP[rawAction] || 'sync';\n\nconst values = payload.current?.values || payload.values || [];\n\nreturn {\n json: {\n tracker_id: trackerId,\n project_id: projectId,\n action: action,\n artifact: {\n id: artifactId,\n values: values\n },\n project: { id: projectId },\n raw_payload: payload\n }\n};"
}
},
{
"id": "send-to-qc-unified",
"name": "Send to QC Unified API",
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.1,
"position": [
700,
300
],
"parameters": {
"method": "POST",
"url": "http://qc-api:3001/tuleap-webhook/unified",
"sendBody": true,
"specifyBody": "json",
"jsonBody": "={{ JSON.stringify($json) }}",
"options": {
"timeout": 30000
}
}
},
{
"id": "respond-to-tuleap",
"name": "Respond to Tuleap",
"type": "n8n-nodes-base.respondToWebhook",
"typeVersion": 1,
"position": [
950,
300
],
"parameters": {
"respondWith": "json",
"responseBody": "={{ JSON.stringify($json) }}"
}
}
],
"connections": {
"Tuleap Unified Webhook": {
"main": [
[
{
"node": "Map Action Vocab",
"type": "main",
"index": 0
}
]
]
},
"Map Action Vocab": {
"main": [
[
{
"node": "Send to QC Unified API",
"type": "main",
"index": 0
}
]
]
},
"Send to QC Unified API": {
"main": [
[
{
"node": "Respond to Tuleap",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "",
"tags": [
{
"name": "tuleap"
},
{
"name": "unified"
}
]
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Tuleap Unified Sync. Uses httpRequest. Webhook trigger; 4 nodes.
Source: https://github.com/Gebrilo/QC-Manager/blob/8d30b8a6d8b6005af2edf01c2e48cece30bcfd78/n8n-workflows/tuleap-unified-sync.json — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
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
This flow creates dummy files for every item added in your *Arrs (Radarr/Sonarr) with the tag .
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
Sign PDF documents with legally-compliant digital signatures using X.509 certificates. Supports multiple PAdES signature levels (B, T, LT, LTA) with optional visible stamps.
📡 This workflow serves as the central Alpha Vantage API fetcher for Tesla trading indicators, delivering cleaned 20-point JSON outputs for three timeframes: , , and . It is required by the following a