Workflow: Code Webhook Create

Workflow Details

Download Workflow
{
    "nodes": [
        {
            "id": "517fad39-50ec-4eae-94c4-aca5b111a093",
            "name": "Webhook",
            "type": "n8n-nodes-base.webhook",
            "position": [
                -120,
                -100
            ],
            "webhookId": "a227afae-e16e-44c2-bb5c-e69fe553b455",
            "parameters": {
                "path": "a227afae-e16e-44c2-bb5c-e69fe553b455",
                "options": []
            },
            "typeVersion": 2
        },
        {
            "id": "cbd978df-9b95-4148-a054-7772213f5b8f",
            "name": "continue with valid token",
            "type": "n8n-nodes-base.noOp",
            "position": [
                1020,
                -40
            ],
            "parameters": [],
            "typeVersion": 1
        },
        {
            "id": "65167cf9-3ec5-4727-a604-a318e86bb54e",
            "name": "get new accessToken",
            "type": "n8n-nodes-base.httpRequest",
            "position": [
                560,
                80
            ],
            "parameters": {
                "url": "http:\/\/your-api.com",
                "options": {
                    "response": {
                        "response": {
                            "fullResponse": true
                        }
                    }
                }
            },
            "notesInFlow": false,
            "typeVersion": 4.20000000000000017763568394002504646778106689453125
        },
        {
            "id": "b17e01d2-c43a-486f-ab08-d81e05f8d110",
            "name": "2. set token in static data",
            "type": "n8n-nodes-base.code",
            "position": [
                780,
                80
            ],
            "parameters": {
                "jsCode": "const workflowStaticData = $getWorkflowStaticData('global');\n\n\/\/ get new access token\nworkflowStaticData.accessToken = $input.first().json.AccessToken;\n\/\/ set timestamp of new access token\nworkflowStaticData.timestamp = $now.toISO().toString();\n\nreturn [\n  {\n      \/\/ data: $input.all(),\n      accessToken: workflowStaticData.accessToken,\n      timestamp: workflowStaticData.timestamp,\n      \/\/ today: $today\n  }\n];"
            },
            "typeVersion": 2
        },
        {
            "id": "31fd494a-f323-47cc-8f89-0bb2f2332e0f",
            "name": "Schedule Trigger",
            "type": "n8n-nodes-base.scheduleTrigger",
            "position": [
                -120,
                60
            ],
            "parameters": {
                "rule": {
                    "interval": [
                        []
                    ]
                }
            },
            "typeVersion": 1.1999999999999999555910790149937383830547332763671875
        },
        {
            "id": "77623419-99f9-4369-9546-375eaf6f5732",
            "name": "Sticky Note",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                -180,
                240
            ],
            "parameters": {
                "width": 660,
                "height": 400,
                "content": "# StaticData Demo\n\n\nThis workflow demonstrates how to use the [`workflowStaticData()` function](https:\/\/docs.n8n.io\/code\/cookbook\/builtin\/get-workflow-static-data\/\n) to set any type of variable that will persist within workflow executions. \n\nThis can be useful for working with access tokens that expire after a certain time period. \n\nhttps:\/\/docs.n8n.io\/code\/cookbook\/builtin\/get-workflow-static-data\/\n\n## Important\n\nStatic Data only persists across **_production_** executions, i.e. triggered by Webhooks or Schedule Triggers (not manual executions!)\nFor this the workflow will have to be activated. \n\n\n\n"
            },
            "typeVersion": 1
        },
        {
            "id": "e4cbdbf7-7b3d-4c52-9d41-bc427d63df5d",
            "name": "Sticky Note1",
            "type": "n8n-nodes-base.stickyNote",
            "position": [
                520,
                60
            ],
            "parameters": {
                "color": 5,
                "width": 180,
                "height": 420,
                "content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n### HTTP Request\n\nToggle \n`Include Response Headers and Status` \noption if access token is not sent in the body"
            },
            "typeVersion": 1
        },
        {
            "id": "bed68570-bf35-4fa9-984c-1b67a53b59ba",
            "name": "if token is valid",
            "type": "n8n-nodes-base.if",
            "notes": "(1 minute expiration)",
            "position": [
                340,
                -20
            ],
            "parameters": {
                "options": [],
                "conditions": {
                    "options": {
                        "version": 2,
                        "leftValue": "",
                        "caseSensitive": true,
                        "typeValidation": "loose"
                    },
                    "combinator": "and",
                    "conditions": [
                        {
                            "id": "65f5c979-3e7d-4e50-92c3-3ae39f1bba3d",
                            "operator": {
                                "type": "dateTime",
                                "operation": "afterOrEquals"
                            },
                            "leftValue": "={{ $json.timestamp }}",
                            "rightValue": "={{ $now.minus(1,'minute') }}"
                        }
                    ]
                },
                "looseTypeValidation": true
            },
            "notesInFlow": true,
            "typeVersion": 2.20000000000000017763568394002504646778106689453125
        },
        {
            "id": "57a4f5f9-eb77-4fd4-b6b1-55137f108374",
            "name": "1. initiate static data",
            "type": "n8n-nodes-base.code",
            "position": [
                120,
                -20
            ],
            "parameters": {
                "jsCode": "\/\/ initialize staticData object\nconst workflowStaticData = $getWorkflowStaticData('global');\n\n\/\/ initialize accessToken on staticData if it desn't exist yet\nif (!workflowStaticData.hasOwnProperty('accessToken')) {\n  workflowStaticData.accessToken = 0\n}\n\n\/\/ initializing any other variables on the staticData object\nif (!workflowStaticData.hasOwnProperty('timestamp')) {\n  workflowStaticData.timestamp = $now.toISO()\n}\n\nreturn [\n  {\n      \/\/ data: $input.all(),\n      accessToken: workflowStaticData.accessToken,\n      timestamp: workflowStaticData.timestamp,\n      \/\/ today: $today\n  }\n];"
            },
            "notesInFlow": false,
            "typeVersion": 2
        }
    ],
    "pinData": {
        "get new accessToken": [
            {
                "AccessToken": "5763273631"
            }
        ]
    },
    "connections": {
        "Webhook": {
            "main": [
                [
                    {
                        "node": "1. initiate static data",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "Schedule Trigger": {
            "main": [
                [
                    {
                        "node": "1. initiate static data",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "if token is valid": {
            "main": [
                [
                    {
                        "node": "continue with valid token",
                        "type": "main",
                        "index": 0
                    }
                ],
                [
                    {
                        "node": "get new accessToken",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "get new accessToken": {
            "main": [
                [
                    {
                        "node": "2. set token in static data",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "1. initiate static data": {
            "main": [
                [
                    {
                        "node": "if token is valid",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        },
        "2. set token in static data": {
            "main": [
                [
                    {
                        "node": "continue with valid token",
                        "type": "main",
                        "index": 0
                    }
                ]
            ]
        }
    }
}
Back to Workflows

Related Workflows

AI powered SEO Keyword Research Automation - The vibe Marketer
View
Code Filter Create Scheduled
View
Microsoft Outlook AI Email Assistant
View
News Extraction
View
BillBot
View
Manual Stickynote Update Triggered
View
Splitout Code Create Scheduled
View
Convert Parquet, Avro, ORC & Feather via ParquetReader to JSON
View
Bannerbear Discord Create Webhook
View
Schedule Filter Create Scheduled
View