Behöver ert företag hjälp med att implementera AI? Kontakta oss och få prisoffert här →
AI Skolan
January 22, 2026

Swagger UI + Postman: livedokumentation för webbhooks

Rickard Andersson Partner, Nodenordic.se

Dina webhook-“docs” finns förmodligen på tre ställen just nu: en halvuppdaterad Notion-sida, någons minne och en Postman-kollektion som bara en person litar på. Sedan frågar en kollega: “Vad accepterar den här endpointen?” och du slutar med att öppna n8n, klicka runt bland noder och svara på samma frågor igen.

Automatisering av Swagger-dokumentation känns som mest när ni levererar snabbt. En marketing ops-ansvarig som försöker koppla ihop verktyg, en produktchef som koordinerar överlämningar och en byråägare som jonglerar kundintegrationer märker alla friktionen. Målet är enkelt: varje webhook ska ha levande, korrekt dokumentation utan att du behöver vakta den.

Det här n8n-flödet skannar dina aktiva workflows, hittar Webhook-noder och genererar en Swagger-fil (OpenAPI) som du kan öppna i Swagger UI eller importera i Postman. Du får se vad det automatiserar, vad du får tillbaka och hur du rullar ut det på ett säkert sätt.

Så fungerar den här automatiseringen

Hela n8n-workflowet, från trigger till slutresultat:

n8n Workflow Template: Swagger UI + Postman: livedokumentation för webbhooks

Problemet: webhooks ändras, dokumentationen gör det inte

Webhook-baserade system är grymma tills du har fler än ett par workflows. Du lägger till en ny endpoint för ett kampanjformulär, ändrar ett fältnamn för en partner eller duplicerar ett workflow för en ny kund. Webhooken fungerar fortfarande, men dokumentationen glider tyst ur synk. Den driften skapar riktiga kostnader: kollegor skickar fel payload, QA testar fel URL och support hamnar i “varför blir det 400 här”–trådar som aldrig borde finnas. Och ärligt talat är den värsta delen den mentala belastningen. Varje ny webhook känns som att du lägger in framtida frågor i kalendern.

Det bygger upp snabbt. Här är var det oftast faller isär.

  • Du slutar med att förklara samma endpoint-detaljer i Slack eller via mejl varje vecka.
  • En liten ändring i en Webhook-nod kan göra en hel Postman-kollektion inaktuell.
  • Nya kollegor vet inte vad som redan finns, så de bygger endpoints som ni redan har.
  • Kundöverlämningar blir röriga eftersom “dokumentationen” i praktiken bara är en ögonblicksbild från förra månaden.

Lösningen: autogenerera en levande Swagger-fil

Det här workflowet gör din n8n-installation till single source of truth för webhook-dokumentation. Det börjar med en dedikerad “Swagger hook”-endpoint. När du öppnar den (eller anropar den) hämtar n8n en lista över dina aktiva workflows, skannar dem efter Webhook-noder och sammanställer sedan allt till en Swagger-spec (OpenAPI). Den enda Swagger-utdata blir din levande dokumentation: du kan öppna den i Swagger UI för en ren, bläddringsbar vy eller importera den i Postman för färdiga requests. Vill du ha rikare dokumentation kan du lägga till enkla annoteringar i varje Webhook-nods Notes-sektion för att beskriva body- eller query-parametrar. Inget separat dokumentationsprojekt. Ingen dubbelregistrering.

Workflowet startar när Incoming Swagger Hook triggas. Därefter hämtar det dina n8n-workflows, bygger en Swagger-spec i ett kodsteg och returnerar den genererade JSON:en via Respond to Webhook. Du får en enda URL att dela internt, och den håller sig synkad med det som faktiskt är driftsatt.

Det du får: automatisering vs. resultat

Exempel: så här ser det ut

Säg att du har 12 workflows, och 8 av dem exponerar minst en webhook. Utan automatisering tar det oftast cirka 15 minuter att dokumentera varje endpoint (öppna workflowet, kopiera URL:en, lista fält, lägga till ett exempelrequest). Det är ungefär 2 timmar, och det upprepas varje gång något ändras. Med det här workflowet triggar du en Swagger-endpoint och får en uppdaterad spec tillbaka på ungefär en minut, och sedan läser Swagger UI eller Postman in den direkt. Du byter i praktiken “dokumentationsdagar” mot en snabb uppdatering.

Det här behöver du

  • n8n-instans (prova n8n Cloud gratis)
  • Alternativ för egen drift om du föredrar det (Hostinger fungerar bra)
  • Swagger UI för att visa och interagera med specen.
  • Postman för att importera endpoints som en kollektion.
  • n8n API-åtkomst (använd dina n8n-uppgifter eller den API-metod som din instans stödjer)

Nivå: Medel. Du importerar workflowet, sätter upp credentials och kan vid behov lägga till enkla Notes-annoteringar i dina Webhook-noder.

Vill du inte sätta upp detta själv? Prata med en automationsexpert (gratis 15-minuters konsultation).

Så fungerar det

En docs-webhook anropas. Du öppnar en dedikerad URL (din “swagger”-endpoint) och den requesten triggar workflowet i n8n.

n8n hämtar din workflow-inventering. Workflowet använder n8n:s interna åtkomst för att hämta dina aktiva workflows och filtrerar sedan fram de som innehåller Webhook-noder.

Swagger-specen byggs ihop. Ett kodsteg bygger OpenAPI-dokumentet baserat på varje webhooks path och metod, och kan även läsa Notes-annoteringar som //@body field_name string description eller //@query field_name string description.

Specen returneras direkt. Respond to Webhook skickar tillbaka den genererade Swagger-JSON:en till din webbläsare eller anropande verktyg, så Swagger UI och Postman kan använda den direkt.

Du kan enkelt justera vilka workflows som inkluderas för att exkludera interna verktyg eller kundspecifika endpoints utifrån dina behov. Se den fullständiga implementationsguiden nedan för anpassningsalternativ.

Steg-för-steg-guide för implementation

Steg 1: konfigurera webhook-triggern

Konfigurera den inkommande webhook-endpointen som startar Swagger-indexgenereringen.

  1. Lägg till noden Incoming Swagger Hook som din trigger.
  2. Ställ in Pathswagger.
  3. Ställ in Response ModeresponseNode för att routa svaret via Return Webhook Output.
  4. Kopiera den genererade webhook-URL:en för att testa senare.

Steg 2: anslut n8n API-åtkomst

Det här workflowet läser alla aktiva workflows från er n8n-instans för att bygga Swagger-specifikationen.

  1. Lägg till noden Fetch n8n Workflows och anslut den till Incoming Swagger Hook.
  2. Ställ in Filters → Active Workflowstrue.
  3. Autentiseringsuppgifter krävs: Anslut era n8nApi-autentiseringsuppgifter.

Steg 3: konfigurera bearbetning av Swagger-spec

Bearbetningssteget tolkar workflow-data och bygger Swagger YAML, och använder hosten från den inkommande requesten för att sätta API-host.

  1. Lägg till noden Build Swagger Spec och anslut den till Fetch n8n Workflows.
  2. Ställ in JavaScript Code till följande script:
    function safe(x) { return x.replaceAll(":","").replaceAll("/","|") } function findValidTargets(connections, sourceNode, potentialTargets) { const visited = new Set(); const foundTargets = new Set(); function dfs(node) { if (visited.has(node)) return; visited.add(node); if (potentialTargets.includes(node)) { foundTargets.add(node); return; // Optionally continue search if multiple paths to same target are needed } const nodeConnections = connections[node]?.main || []; for (const path of nodeConnections) { for (const next of path) { dfs(next.node); } } } dfs(sourceNode); return Array.from(foundTargets); } const nodes = [] for (const item of $input.all()) { let webhook = { name: item.json.name, id: item.json.id, webhooks: [] } const webhook_call = item.json.nodes.filter(node =>node.type=='n8n-nodes-base.webhook'); const webhook_resp = item.json.nodes.filter(node =>node.type=='n8n-nodes-base.respondToWebhook'); const targets = webhook_resp.map(wr => wr.name); if(webhook_call.length) { for(const call of webhook_call) { const callName = call.name; if(call?.parameters?.responseMode == "responseNode") { const valid = findValidTargets(item.json.connections, callName, targets); call.responses = webhook_resp.filter(wr => valid.includes(wr.name)) } } webhook.webhooks.push(...webhook_call); nodes.push(webhook); } } let s = ` swagger: "2.0" info: title: N8N Instance API description: API description in Markdown. version: 1.0.0 host: ${$('Incoming Swagger Hook').first().json?.headers?.host || 'n8n.instance.com'} basePath: /webhook schemes: - https paths: ` for(const node of nodes) { const used_path = {}; for(const w of node.webhooks) { let path = ''; if(!(w?.parameters?.path in used_path)) { path = w?.parameters?.path; used_path[path] = true; } let produces = "application/json" let code = 200; if(w?.responses?.length) { for(const r of w.responses) { switch(r?.parameters?.respondWith) { case 'text': produces ='text/plain'; break case 'redirect': produces = 'redirect'; code = 301 break case 'json': produces = 'application/json'; break } } } let parameters = [] if(w?.notes) { console.log({notes: w.notes}) const params = w?.notes?.split('\n').filter(p => p.startsWith('@')); for(const p of params) { const parts = p.split(' '); const [position, name, type] = parts; const description = parts.slice(3).join(' '); console.log(p.split(' ')) switch(position) { case '@query': parameters.push(` - name: ${name} in: ${position.replaceAll('@', '')} description: ${description || 'no description'} type: ${type} required: true `) break case '@body': parameters.push(` - name: ${name} in: ${position.replaceAll('@', '')} description: ${description || 'no description'} schema: type: object required: - ${name} properties: ${name}: type: ${type} `) } } if(parameters.length) { parameters.unshift(` parameters: `) } } s+=` ${path ? `/${path}:` : ''} ${w?.parameters?.httpMethod?.toLowerCase() || 'get'} : summary: ${safe(w?.name) || safe(node.name)}. description: Related to workflow [${node.id}]. tags: - ${safe(node.name)} ${parameters.join('\n')} produces: - ${produces} responses: ${code}: description: OK` } } return {json:{text: s, nodes}};

Hosten i den genererade Swagger-specifikationen hämtas dynamiskt från request-headers i Incoming Swagger Hook via $('Incoming Swagger Hook').first().json?.headers?.host, så testa med samma domän som ni planerar att använda i produktion.

Steg 4: konfigurera webhook-svarets output

Returnera en Swagger UI HTML-sida som renderar den genererade YAML:en.

  1. Lägg till noden Return Webhook Output och anslut den till Build Swagger Spec.
  2. Ställ in Respond Withtext.
  3. Ställ in Response Body till följande uttrycksbaserade HTML-mall:
    = Swagger UI from YAML Text

    ⚠️ Vanlig fallgrop: Om ni ersätter token {{ $json.text }} i HTML:en kommer Swagger UI att rendera en tom eller ogiltig spec.

    Steg 5: testa och aktivera ert workflow

    Validera webhook-outputen och aktivera workflowet för löpande användning.

    1. Klicka på Execute Workflow för att öppna en testsession.
    2. Skicka en request till URL:en för Incoming Swagger Hook (t.ex. via webbläsare eller HTTP-klient).
    3. Bekräfta en lyckad körning: Fetch n8n Workflows ska returnera workflow-data, Build Swagger Spec ska ge en YAML-sträng och Return Webhook Output ska rendera en Swagger UI-sida.
    4. Slå på Active för workflowet för att aktivera användning i produktion.
    🔒

    Lås upp fullständig steg-för-steg-guide

    Få den kompletta implementeringsguiden + nedladdningsbar mall

    Vanliga fallgropar

    • n8n-credentials kan löpa ut eller kräva specifika behörigheter. Om skanningen plötsligt inte returnerar något, kontrollera först credentials som används för att hämta workflows i inställningarna för din n8n-instans.
    • Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströms noder misslyckas på grund av tomma svar.
    • Swagger UI och Postman blir bara så korrekta som dina annoteringar. Standardprompter i AI-noder är generiska. Lägg in er tonalitet tidigt, annars kommer du att redigera utdata för alltid.

    Vanliga frågor

    Hur lång tid tar det att sätta upp den här automatiseringen av Swagger-dokumentation?

    Cirka 20 minuter om du redan har n8n-åtkomst på plats.

    Behöver jag kunna koda för att automatisera Swagger-dokumentation?

    Nej, ingen kodning krävs för grundsetupen. Du importerar främst workflowet, kopplar credentials och testar swagger-endpointen.

    Är n8n gratis att använda för det här workflowet för automatisering av Swagger-dokumentation?

    Ja. n8n har ett gratis alternativ för egen drift och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna in användning av Swagger UI/Postman (oftast gratis) och eventuella hostingkostnader.

    Var kan jag hosta n8n för att köra den här automatiseringen?

    Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen drift på en VPS. För egen drift är Hostinger VPS prisvärd och hanterar n8n bra. Egen drift ger obegränsat antal körningar men kräver grundläggande serverhantering.

    Kan jag anpassa det här workflowet för automatisering av Swagger-dokumentation för parameterdokumentation?

    Ja, och det är den bästa uppgraderingen du kan göra. Lägg till annoteringar i varje Webhook-nods Notes-sektion, som //@body email string Användarens e-postadress eller //@query source string Kampanjkälla, så kommer den genererade Swaggern att inkludera de fälten. Om ni standardiserar formatet i teamet blir dokumentationen märkbart tydligare. Du kan också exkludera vissa workflows (endast interna, kundspecifika) genom att justera filtreringslogiken i stegen “Fetch n8n Workflows” och “Build Swagger Spec”.

    Varför misslyckas min n8n-anslutning i det här workflowet?

    Oftast beror det på utgångna credentials eller saknade behörigheter för att läsa workflows. Uppdatera credentials som används i steget “Fetch n8n Workflows” och kör sedan swagger-endpointen igen. Om du kör egen drift bakom auth, bekräfta även att base URL och eventuella nödvändiga headers är korrekta.

    Hur många endpoints kan den här automatiseringen av Swagger-dokumentation hantera?

    Många. På n8n Cloud beror det på din plans körningsgränser, och vid egen drift beror det på din server. I praktiken är det normalt att generera en Swagger-fil för dussintals webhook-endpoints eftersom det bara handlar om att läsa workflows och returnera JSON.

    Är den här automatiseringen av Swagger-dokumentation bättre än att använda Zapier eller Make?

    För det här användningsfallet, ja. Zapier och Make kan trigga webhooks, men de kan inte på ett naturligt sätt “inspektera” din automationsmiljö och generera en OpenAPI-spec från den, och du slår snabbt i begränsningar om du försöker underhålla dokumentation som separata steg. n8n låter dig dessutom köra egen drift, vilket är användbart när din docs-endpoint bara ska vara intern. Om allt du behöver är en enkel webhook-relä i två steg kan de verktygen vara okej. Men för levande dokumentation kopplad till dina faktiska workflows är n8n ett renare val. Prata med en automationsexpert om du vill ha hjälp att välja.

    När det här är på plats slutar din webhook-dokumentation vara ett återkommande måste och börjar fungera som infrastruktur. Sätt upp det, dela en länk och gå vidare.

Kontakta oss

Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.

×

Använd mall

Få direkt tillgång till denna n8n-arbetsflödes JSON-fil

Launch login modal Launch register modal