n8n-nodes-alterlab 0.2.1 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,54 +1,69 @@
1
- # n8n-nodes-alterlab — Web Scraping Node for n8n
1
+ <p align="center">
2
+ <img src="assets/logo.png" alt="AlterLab Logo" width="120" />
3
+ </p>
2
4
 
3
- Scrape any website from n8n workflows. Handles anti-bot protection, JavaScript rendering, and structured data extraction automatically — so you don't have to.
5
+ <h1 align="center">n8n-nodes-alterlab</h1>
4
6
 
5
- **[Get Started Free →](https://app.alterlab.io/signin?redirect=/dashboard/keys&source=n8n&utm_source=n8n&utm_medium=integration&utm_campaign=community_node)** $1 free balance on signup. That's up to 5,000 scrapes.
7
+ <p align="center">
8
+ <strong>Web scraping node for n8n with anti-bot bypass, JavaScript rendering, and structured data extraction.</strong>
9
+ </p>
10
+
11
+ <p align="center">
12
+ <a href="https://www.npmjs.com/package/n8n-nodes-alterlab"><img src="https://img.shields.io/npm/v/n8n-nodes-alterlab.svg" alt="npm version" /></a>
13
+ <a href="https://www.npmjs.com/package/n8n-nodes-alterlab"><img src="https://img.shields.io/npm/dm/n8n-nodes-alterlab.svg" alt="npm downloads" /></a>
14
+ <a href="https://github.com/RapierCraft/n8n-nodes-alterlab/actions/workflows/ci.yml"><img src="https://github.com/RapierCraft/n8n-nodes-alterlab/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
15
+ <a href="https://github.com/RapierCraft/n8n-nodes-alterlab/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/n8n-nodes-alterlab.svg" alt="license" /></a>
16
+ </p>
17
+
18
+ <p align="center">
19
+ <a href="https://app.alterlab.io/signin?redirect=/dashboard/keys&source=n8n&utm_source=n8n&utm_medium=integration&utm_campaign=community_node"><strong>Get Started Free →</strong></a> &nbsp; $1 free balance on signup — up to 5,000 scrapes.
20
+ </p>
6
21
 
7
22
  ---
8
23
 
9
- ## Why AlterLab Instead of HTTP Request Node?
24
+ <p align="center">
25
+ <img src="assets/hero-banner.png" alt="AlterLab web scraping platform — scrape any website from n8n workflows" width="700" />
26
+ </p>
10
27
 
11
- The built-in HTTP Request node fails on most real websites. It can't bypass Cloudflare, render JavaScript, or handle CAPTCHAs. You end up chaining Browserless, proxy services, and custom code — then maintaining all of it.
28
+ ## Why Use AlterLab Instead of the HTTP Request Node?
12
29
 
13
- AlterLab is one node. It handles everything:
30
+ The n8n HTTP Request node works for simple APIs but fails on real-world websites. It cannot bypass Cloudflare, DataDome, PerimeterX, or Akamai. It cannot render JavaScript. It cannot solve CAPTCHAs.
14
31
 
15
- - **Anti-bot bypass** Cloudflare, DataDome, PerimeterX, Akamai, hCaptcha
16
- - **JavaScript rendering** — Full headless Chromium for SPAs and dynamic content
17
- - **Smart tier escalation** — Starts with the cheapest method, automatically upgrades only if the site blocks it
18
- - **Structured extraction** — Returns clean JSON for products, articles, job listings, recipes, events
19
- - **Markdown output** — LLM-ready content, ideal for AI agent workflows
32
+ AlterLab replaces chains of Browserless, proxy rotators, and custom retry logic with **one node**:
20
33
 
21
- ## How Much Does It Cost?
34
+ | Capability | HTTP Request Node | AlterLab Node |
35
+ |---|---|---|
36
+ | Anti-bot bypass (Cloudflare, DataDome, Akamai) | No | Yes — automatic |
37
+ | JavaScript rendering (React, Angular, Vue SPAs) | No | Yes — full Chromium |
38
+ | Structured data extraction (JSON, Schema.org) | No | Yes — built-in profiles |
39
+ | Smart tier escalation (cheapest method first) | N/A | Yes — saves 60-80% vs browser-only |
40
+ | Residential proxy rotation | No | Yes — 195+ countries |
41
+ | Screenshot and PDF capture | No | Yes |
42
+ | OCR text extraction from images | No | Yes |
22
43
 
23
- Pay-as-you-go. No subscriptions, no monthly minimums. Add balance and use it whenever.
44
+ ## How Does AlterLab Web Scraping Work?
24
45
 
25
- | Method | Cost per Scrape | What It Does |
26
- |--------|----------------|--------------|
27
- | Curl | $0.0002 | Static pages, RSS feeds, APIs |
28
- | HTTP | $0.0003 | TLS fingerprinting for moderately protected sites |
29
- | Stealth | $0.0005 | Browser impersonation for Cloudflare/DataDome |
30
- | Light JS | $0.0007 | JSON extraction from server-rendered HTML |
31
- | Browser | $0.001 | Full Chromium for JavaScript-heavy SPAs |
46
+ AlterLab uses a multi-tier scraping architecture that automatically selects the cheapest method capable of fetching each URL:
32
47
 
33
- **$1 gets you 1,000 to 5,000 scrapes** depending on the sites you target. Most sites resolve at the cheapest tiers.
48
+ 1. **Curl** ($0.0002/req) Direct HTTP for static pages, RSS feeds, public APIs
49
+ 2. **HTTP** ($0.0003/req) — TLS fingerprint rotation for moderately protected sites
50
+ 3. **Stealth** ($0.0005/req) — Browser impersonation for Cloudflare/DataDome-protected sites
51
+ 4. **Light JS** ($0.0007/req) — Lightweight JS extraction from server-rendered HTML
52
+ 5. **Browser** ($0.001/req) — Full headless Chromium for JavaScript-heavy SPAs
34
53
 
35
- Optional add-ons per request:
54
+ Auto mode starts at Tier 1 and escalates only when blocked. Most websites resolve at Tiers 1-2, so **$1 gets you 1,000 to 5,000 scrapes** depending on the sites you target.
36
55
 
37
- | Add-On | Extra Cost | What It Does |
38
- |--------|-----------|--------------|
39
- | JS Rendering | +$0.0006 | Headless browser for dynamic content |
40
- | Screenshot | +$0.0002 | Full-page PNG capture |
41
- | PDF Export | +$0.0004 | Rendered page as downloadable PDF |
42
- | OCR | +$0.001 | Text extraction from images |
43
- | Premium Proxy | +$0.0002 | Residential proxy for geo-targeting |
56
+ <p align="center">
57
+ <img src="assets/platform-dashboard.png" alt="AlterLab Cortex — intelligent web scraping platform with anti-bot bypass" width="650" />
58
+ </p>
44
59
 
45
- ## Quick Start
60
+ ## Installation
46
61
 
47
- ### Install
62
+ ### Install from n8n UI
48
63
 
49
- In your n8n instance: **Settings → Community Nodes → `n8n-nodes-alterlab` → Install**
64
+ In your n8n instance: **Settings → Community Nodes → Install → `n8n-nodes-alterlab`**
50
65
 
51
- Or via CLI:
66
+ ### Install via CLI
52
67
 
53
68
  ```bash
54
69
  npm install n8n-nodes-alterlab
@@ -59,128 +74,211 @@ npm install n8n-nodes-alterlab
59
74
  **Option A — One-click OAuth (recommended):**
60
75
  1. Add an AlterLab node to your workflow
61
76
  2. Click the credential dropdown → **Create New → AlterLab OAuth2 API**
62
- 3. Click **Connect** → sign in → done
77
+ 3. Click **Connect** → sign in → done. No API key copy-paste needed.
63
78
 
64
79
  **Option B — API key:**
65
- 1. [Sign up](https://app.alterlab.io/signin?redirect=/dashboard/keys&source=n8n&utm_source=n8n&utm_medium=integration&utm_campaign=community_node) and copy your API key
80
+ 1. [Sign up free](https://app.alterlab.io/signin?redirect=/dashboard/keys&source=n8n&utm_source=n8n&utm_medium=integration&utm_campaign=community_node) and copy your API key
66
81
  2. In n8n: **Credentials → New → AlterLab API** → paste key
67
82
 
68
- ### Scrape a Page
83
+ ## Quick Start — Scrape a Page in 30 Seconds
84
+
85
+ 1. Add the **AlterLab** node to any workflow
86
+ 2. Enter a URL (e.g., `https://www.amazon.com/dp/B0BSHF7WHW`)
87
+ 3. Run
69
88
 
70
- 1. Add the **AlterLab** node to your workflow
71
- 2. Enter a URL
72
- 3. Run it
89
+ The node returns markdown, structured JSON, raw HTML, and metadata in a flat JSON object — ready for the next node in your workflow:
90
+
91
+ ```
92
+ {{ $json.markdown }} → Clean markdown (best for LLMs and AI agents)
93
+ {{ $json.text }} → Plain text
94
+ {{ $json.json }} → Structured data (Schema.org, extracted fields)
95
+ {{ $json.html }} → Raw HTML
96
+ {{ $json.title }} → Page title
97
+ {{ $json.filteredContent }} → Custom schema extraction results
98
+ {{ $json.billing.cost }} → Amount charged from your balance
99
+ {{ $json.billing.tier }} → Scraping method used (curl, http, stealth, etc.)
100
+ {{ $json.billing.suggestion }} → Cost optimization tip
101
+ {{ $json.screenshotUrl }} → Screenshot URL (if enabled)
102
+ {{ $json.pdfUrl }} → PDF URL (if enabled)
103
+ ```
73
104
 
74
- That's it. The node returns markdown, structured JSON, raw HTML, and metadata — ready for the next node in your workflow.
105
+ ## What Can You Scrape with AlterLab?
75
106
 
76
- ## What Can You Scrape?
107
+ ### E-Commerce Product Data (Amazon, Walmart, Shopify)
77
108
 
78
- ### E-Commerce Products, Prices, Reviews
79
- Scrape Amazon, Walmart, Target, Best Buy, Shopify stores, and any product page. The **Product** extraction profile returns structured data: name, price, currency, rating, review count, availability, images.
109
+ Scrape Amazon, Walmart, Target, Best Buy, Shopify stores, and any product page. The **Product** extraction profile returns structured JSON: product name, price, currency, rating, review count, availability, image URLs, and description.
80
110
 
81
- ### News & Articles Full Text, Author, Date
82
- Scrape news sites, blogs, and publications. The **Article** profile extracts: title, author, published date, body text as markdown, and featured image.
111
+ ### News Articles and Blog Content
83
112
 
84
- ### Job Boards Listings at Scale
85
- Scrape Indeed, LinkedIn job posts, Glassdoor, and company career pages. The **Job Posting** profile returns: title, company, location, salary range, description, requirements.
113
+ Scrape news sites, blogs, and publications. The **Article** extraction profile returns: title, author, published date, body text as clean markdown, and featured image URL. Markdown output is optimized for LLM context windows.
86
114
 
87
- ### Any Website With Custom Schemas
88
- Define your own JSON schema or write natural language extraction prompts. AlterLab maps page content to your schema automatically.
115
+ ### Job Board Listings (Indeed, LinkedIn, Glassdoor)
116
+
117
+ Scrape Indeed, LinkedIn job posts, Glassdoor, and company career pages. The **Job Posting** profile returns: job title, company, location, salary range, description, and requirements as structured JSON.
118
+
119
+ ### Any Website with Custom Extraction
120
+
121
+ Define a JSON Schema for your exact output structure, or write a natural language extraction prompt like *"extract the price, title, and all review texts as an array"*. AlterLab maps page content to your schema automatically.
122
+
123
+ <p align="center">
124
+ <img src="assets/api-terminal.png" alt="AlterLab API terminal — web scraping infrastructure for developers" width="400" />
125
+ </p>
89
126
 
90
127
  ## n8n Workflow Examples
91
128
 
92
129
  ### Price Monitoring Automation
93
- **Schedule → AlterLab (Product profile) → Compare to Google Sheet → IF price dropped → Slack notification**
94
130
 
95
- Monitor competitor prices daily. AlterLab handles the anti-bot protection on e-commerce sites. Compare extracted prices against stored values and alert your team when prices drop.
131
+ ```
132
+ Schedule → AlterLab (Product profile) → Compare to Google Sheet → IF price dropped → Slack notification
133
+ ```
134
+
135
+ Monitor competitor prices daily. AlterLab handles anti-bot protection on e-commerce sites. Compare extracted prices against stored values and alert your team when prices change.
96
136
 
97
137
  ### AI-Powered Content Pipeline
98
- **Schedule → AlterLab (Article profile, Markdown output) → OpenAI Summarize → Notion Database**
99
138
 
100
- Scrape industry news sources, get clean markdown (not messy HTML), summarize with GPT, and store in your knowledge base. AlterLab's markdown output is optimized for LLM context windows.
139
+ ```
140
+ Schedule → AlterLab (Article profile, Markdown output) → OpenAI Summarize → Notion Database
141
+ ```
142
+
143
+ Scrape industry news sources, get clean markdown (not messy HTML), summarize with GPT-4, and store in your knowledge base. AlterLab's markdown output is token-efficient for LLM processing.
101
144
 
102
145
  ### Lead Generation from Job Boards
103
- **Schedule → AlterLab (Job Posting profile) → Filter by keywords → Airtable → Email notification**
146
+
147
+ ```
148
+ Schedule → AlterLab (Job Posting profile) → Filter by keywords → Airtable → Email notification
149
+ ```
104
150
 
105
151
  Monitor job boards for roles that match your product. Extract structured listings, filter for relevant titles, and push qualified leads to your CRM.
106
152
 
107
153
  ### Competitor Intelligence Dashboard
108
- **Schedule → AlterLab (Custom schema) → Compare to previous scrape → Google Sheets → Looker Studio**
154
+
155
+ ```
156
+ Schedule → AlterLab (Custom schema) → Compare to previous scrape → Google Sheets → Looker Studio
157
+ ```
109
158
 
110
159
  Scrape competitor pages weekly. Define a custom schema for the data points you care about (pricing, features, team size). Track changes over time in a dashboard.
111
160
 
112
- ### Real Estate Monitoring
113
- **Schedule → AlterLab (Custom schema) → IF new listing → Telegram notification**
161
+ ### Real Estate Listing Monitor
162
+
163
+ ```
164
+ Schedule → AlterLab (Custom schema) → IF new listing → Telegram notification
165
+ ```
114
166
 
115
167
  Monitor property listing sites for new entries matching your criteria. Extract price, location, square footage, and images. Get notified the moment a matching property appears.
116
168
 
117
- ## Node Reference
169
+ ## Pricing — Pay-As-You-Go Web Scraping
118
170
 
119
- ### Inputs
171
+ No subscriptions. No monthly minimums. Add balance and use it whenever you need it.
120
172
 
121
- | Parameter | Required | Description |
122
- |-----------|----------|-------------|
123
- | **URL** | Yes | The page to scrape |
124
- | **Mode** | No | `auto` (default), `html`, `js`, `pdf`, `ocr` |
173
+ ### Base Scraping Costs
125
174
 
126
- ### Output Fields
175
+ | Tier | Cost per Request | Use Case |
176
+ |---|---|---|
177
+ | Curl | $0.0002 | Static pages, RSS feeds, public APIs |
178
+ | HTTP | $0.0003 | Sites with basic TLS fingerprinting |
179
+ | Stealth | $0.0005 | Cloudflare, DataDome, PerimeterX protected sites |
180
+ | Light JS | $0.0007 | Server-rendered pages needing JSON extraction |
181
+ | Browser | $0.001 | Full JavaScript SPAs (React, Angular, Vue) |
127
182
 
128
- Every scrape returns a flat JSON object you can reference directly in subsequent nodes:
183
+ ### Optional Add-Ons
129
184
 
130
- ```
131
- {{ $json.markdown }} — Clean markdown (best for LLMs)
132
- {{ $json.text }} — Plain text
133
- {{ $json.json }} — Structured data (Schema.org, extracted)
134
- {{ $json.html }} — HTML content
135
- {{ $json.title }} — Page title
136
- {{ $json.filteredContent }} — Custom schema extraction results
137
- {{ $json.billing.cost }} — Amount charged from balance
138
- {{ $json.billing.tier }} — Scraping method used
139
- {{ $json.billing.suggestion }} — Cost optimization tip
140
- {{ $json.screenshotUrl }} — Screenshot URL (if enabled)
141
- {{ $json.pdfUrl }} — PDF URL (if enabled)
142
- ```
185
+ | Add-On | Extra Cost per Request | Description |
186
+ |---|---|---|
187
+ | JavaScript Rendering | +$0.0006 | Headless Chromium for dynamic content |
188
+ | Screenshot Capture | +$0.0002 | Full-page PNG screenshot |
189
+ | PDF Export | +$0.0004 | Rendered page as downloadable PDF |
190
+ | OCR Text Extraction | +$0.001 | Extract text from images on the page |
191
+ | Premium Residential Proxy | +$0.0002 | Geo-targeted proxy (US, DE, GB, JP, and 190+ more) |
192
+
193
+ ## Node Reference
194
+
195
+ ### Input Parameters
196
+
197
+ | Parameter | Required | Default | Description |
198
+ |---|---|---|---|
199
+ | **URL** | Yes | — | The webpage URL to scrape |
200
+ | **Mode** | No | `auto` | Scraping mode: `auto`, `html`, `js`, `pdf`, `ocr` |
143
201
 
144
202
  ### Advanced Options
145
203
 
146
204
  | Option | Description |
147
- |--------|-------------|
205
+ |---|---|
148
206
  | **Extraction Profile** | Pre-built schemas: Product, Article, Job Posting, FAQ, Recipe, Event |
149
- | **Extraction Prompt** | Natural language instructions for custom extraction |
150
- | **Extraction Schema** | JSON Schema for structured output |
151
- | **Cost Controls** | Set max spend per request, force specific tiers, prefer cost or speed |
152
- | **Caching** | Cache responses from 60 seconds to 24 hours to reduce costs |
153
- | **Proxy** | Route through residential proxies with geo-targeting (US, DE, GB, etc.) |
207
+ | **Extraction Prompt** | Natural language instructions for custom data extraction |
208
+ | **Extraction Schema** | JSON Schema definition for structured output |
209
+ | **Render JavaScript** | Enable full Chromium rendering for SPAs and dynamic content |
210
+ | **Screenshot** | Capture a full-page PNG screenshot |
211
+ | **PDF Export** | Generate a PDF of the rendered page |
212
+ | **OCR** | Extract text from images on the page |
213
+ | **Proxy** | Route through residential proxies with country targeting |
214
+ | **Cache** | Cache responses from 60 seconds to 24 hours |
215
+ | **Cost Controls** | Set maximum spend per request, force specific tiers, prefer cost or speed |
154
216
 
155
217
  ## Frequently Asked Questions
156
218
 
157
- ### How does AlterLab handle anti-bot protection?
158
- AlterLab uses a multi-tier system that automatically escalates from simple HTTP requests to full browser automation. If a site blocks a basic request, it retries with TLS fingerprinting, then browser impersonation, then a full headless browser — all transparently. You just send a URL.
219
+ ### How does AlterLab bypass anti-bot protection like Cloudflare?
220
+
221
+ AlterLab uses a multi-tier system that automatically escalates scraping methods. It starts with a simple HTTP request. If the site blocks it, AlterLab retries with TLS fingerprint rotation, then browser impersonation, then a full headless Chromium browser — all transparently. You send a URL and get content back. The anti-bot bypass is fully automatic.
222
+
223
+ ### Can AlterLab scrape JavaScript-heavy websites (React, Angular, Vue)?
224
+
225
+ Yes. Set the mode to `js` or enable "Render JavaScript" in the Advanced Options. AlterLab spins up a full headless Chromium browser, renders the page including all JavaScript, waits for dynamic content to load, then extracts content from the fully rendered DOM.
226
+
227
+ ### How is AlterLab different from Apify, Browserless, or ScrapingBee?
228
+
229
+ AlterLab starts at $0.0002 per request — 20x cheaper than most scraping APIs — because it only uses expensive browser rendering when a site actually requires it. Most scraping APIs charge browser-tier prices for every request. AlterLab's smart tier escalation means you only pay for what each site requires. No subscriptions, no monthly minimums.
159
230
 
160
- ### Does it work with JavaScript-heavy sites like React or Angular apps?
161
- Yes. Set mode to `js` or enable "Render JavaScript" in Advanced Options. AlterLab runs a full Chromium browser to render the page, then extracts content from the rendered DOM.
231
+ ### Can I scrape Amazon, Walmart, and other e-commerce sites?
162
232
 
163
- ### Can I scrape sites behind Cloudflare?
164
- Yes. The Stealth and Browser tiers handle Cloudflare, DataDome, PerimeterX, Akamai, and other anti-bot services. AlterLab's auto mode detects protection and escalates automatically.
233
+ Yes. AlterLab handles all major e-commerce anti-bot protection including Cloudflare, DataDome, PerimeterX, and Akamai. The Product extraction profile returns structured JSON with product name, price, rating, availability, and images — ready for price monitoring or catalog building.
165
234
 
166
- ### How is this different from Apify, Browserless, or ScrapingBee?
167
- AlterLab starts at $0.0002/request (20x cheaper than most alternatives) because it only uses expensive browser rendering when actually needed. Most scraping APIs charge browser prices for every request. AlterLab's smart escalation means you only pay for what each site requires.
235
+ ### Does AlterLab work with n8n Cloud and self-hosted n8n?
168
236
 
169
- ### Can I use it for large-scale scraping?
170
- Yes. The node processes input items in a loop, so you can feed it hundreds of URLs from a spreadsheet, database query, or previous node. Use the Cache and Cost Controls options to manage spend at scale.
237
+ Yes, both. Install via **Settings → Community Nodes** on n8n Cloud, or `npm install n8n-nodes-alterlab` for self-hosted. OAuth2 authentication works on both — click Connect, sign in, done.
171
238
 
172
239
  ### Is there rate limiting?
173
- Free tier has rate limits. Adding any balance removes them. Concurrent request limits scale with your balance.
174
240
 
175
- ### What output format works best for AI/LLM workflows?
176
- Use `markdown` format (the default). It preserves document structure (headings, tables, lists) while being token-efficient. Most LLMs process markdown better than raw HTML.
241
+ Free-tier accounts have rate limits. Adding any balance to your account removes rate limits. Concurrent request limits scale with your balance.
242
+
243
+ ### What output format is best for AI and LLM workflows?
244
+
245
+ Use markdown format (the default). It preserves document structure — headings, tables, lists, links — while being token-efficient. GPT-4, Claude, and other LLMs process markdown significantly better than raw HTML. AlterLab's markdown output is optimized for AI agent context windows.
246
+
247
+ ### Can I use AlterLab for large-scale scraping (thousands of URLs)?
248
+
249
+ Yes. The n8n node processes input items in a loop, so you can feed it thousands of URLs from a spreadsheet, database query, or upstream node. Enable caching and cost controls to manage spend at scale. Async job polling handles long-running scrapes automatically.
250
+
251
+ ## Contributing
252
+
253
+ ```bash
254
+ git clone https://github.com/RapierCraft/n8n-nodes-alterlab.git
255
+ cd n8n-nodes-alterlab
256
+ npm install
257
+ npm run build
258
+ npm run lint
259
+ ```
260
+
261
+ ## CI/CD
262
+
263
+ This project uses GitHub Actions for automation:
264
+
265
+ - **CI** — Runs on every push and PR to `main`. Builds and type-checks across Node.js 18, 20, and 22. Verifies all dist output files are present.
266
+ - **Publish** — Automatically publishes to npm when a GitHub Release is created. Uses npm provenance for supply-chain security.
267
+ - **Dependabot** — Automated weekly dependency updates for npm packages and GitHub Actions.
268
+
269
+ ### Required GitHub Secrets
270
+
271
+ | Secret | Description | Where to Get It |
272
+ |---|---|---|
273
+ | `NPM_TOKEN` | npm automation token for publishing | [npmjs.com → Access Tokens → Generate](https://www.npmjs.com/settings/~/tokens) — use "Automation" type |
177
274
 
178
275
  ## Support
179
276
 
180
277
  - [API Documentation](https://docs.alterlab.io/api?utm_source=n8n&utm_medium=integration&utm_campaign=community_node)
181
- - [Dashboard & Billing](https://app.alterlab.io/dashboard?utm_source=n8n&utm_medium=integration&utm_campaign=community_node)
278
+ - [Dashboard & Usage](https://app.alterlab.io/dashboard?utm_source=n8n&utm_medium=integration&utm_campaign=community_node)
279
+ - [GitHub Issues](https://github.com/RapierCraft/n8n-nodes-alterlab/issues)
182
280
  - [support@alterlab.io](mailto:support@alterlab.io)
183
281
 
184
282
  ## License
185
283
 
186
- MIT
284
+ [MIT](LICENSE)
@@ -1,9 +1,10 @@
1
- import type { ICredentialType, INodeProperties } from 'n8n-workflow';
1
+ import type { ICredentialTestRequest, ICredentialType, INodeProperties } from 'n8n-workflow';
2
2
  export declare class AlterLabOAuth2Api implements ICredentialType {
3
3
  name: string;
4
4
  displayName: string;
5
5
  documentationUrl: string;
6
6
  extends: string[];
7
7
  properties: INodeProperties[];
8
+ test: ICredentialTestRequest;
8
9
  }
9
10
  //# sourceMappingURL=AlterLabOAuth2Api.credentials.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AlterLabOAuth2Api.credentials.d.ts","sourceRoot":"","sources":["../../credentials/AlterLabOAuth2Api.credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,eAAe,EACf,eAAe,EACf,MAAM,cAAc,CAAC;AAEtB,qBAAa,iBAAkB,YAAW,eAAe;IACxD,IAAI,SAAuB;IAC3B,WAAW,SAAyB;IACpC,gBAAgB,SACkF;IAElG,OAAO,WAAiB;IAExB,UAAU,EAAE,eAAe,EAAE,CAiD3B;CACF"}
1
+ {"version":3,"file":"AlterLabOAuth2Api.credentials.d.ts","sourceRoot":"","sources":["../../credentials/AlterLabOAuth2Api.credentials.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,MAAM,cAAc,CAAC;AAEtB,qBAAa,iBAAkB,YAAW,eAAe;IACxD,IAAI,SAAuB;IAC3B,WAAW,SAAyB;IACpC,gBAAgB,SACkF;IAElG,OAAO,WAAiB;IAExB,UAAU,EAAE,eAAe,EAAE,CAiD3B;IAEF,IAAI,EAAE,sBAAsB,CAM1B;CACF"}
@@ -57,6 +57,13 @@ class AlterLabOAuth2Api {
57
57
  default: 'body',
58
58
  },
59
59
  ];
60
+ this.test = {
61
+ request: {
62
+ baseURL: 'https://api.alterlab.io',
63
+ url: '/api/v1/usage',
64
+ method: 'GET',
65
+ },
66
+ };
60
67
  }
61
68
  }
62
69
  exports.AlterLabOAuth2Api = AlterLabOAuth2Api;
@@ -1 +1 @@
1
- {"version":3,"file":"AlterLabOAuth2Api.credentials.js","sourceRoot":"","sources":["../../credentials/AlterLabOAuth2Api.credentials.ts"],"names":[],"mappings":";;;AAKA,MAAa,iBAAiB;IAA9B;QACC,SAAI,GAAG,mBAAmB,CAAC;QAC3B,gBAAW,GAAG,qBAAqB,CAAC;QACpC,qBAAgB,GACf,gGAAgG,CAAC;QAElG,YAAO,GAAG,CAAC,WAAW,CAAC,CAAC;QAExB,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,mBAAmB;aAC5B;YACD;gBACC,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,yCAAyC;aAClD;YACD;gBACC,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,4CAA4C;aACrD;YACD;gBACC,WAAW,EAAE,WAAW;gBACxB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,oBAAoB;aAC7B;YACD;gBACC,WAAW,EAAE,eAAe;gBAC5B,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,sCAAsC;aAC/C;YACD;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,QAAQ;aACjB;YACD;gBACC,WAAW,EAAE,2BAA2B;gBACxC,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,gBAAgB;gBAC7B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,MAAM;aACf;SACD,CAAC;IACH,CAAC;CAAA;AA1DD,8CA0DC"}
1
+ {"version":3,"file":"AlterLabOAuth2Api.credentials.js","sourceRoot":"","sources":["../../credentials/AlterLabOAuth2Api.credentials.ts"],"names":[],"mappings":";;;AAMA,MAAa,iBAAiB;IAA9B;QACC,SAAI,GAAG,mBAAmB,CAAC;QAC3B,gBAAW,GAAG,qBAAqB,CAAC;QACpC,qBAAgB,GACf,gGAAgG,CAAC;QAElG,YAAO,GAAG,CAAC,WAAW,CAAC,CAAC;QAExB,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,YAAY;gBACzB,IAAI,EAAE,WAAW;gBACjB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,mBAAmB;aAC5B;YACD;gBACC,WAAW,EAAE,mBAAmB;gBAChC,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,yCAAyC;aAClD;YACD;gBACC,WAAW,EAAE,kBAAkB;gBAC/B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,4CAA4C;aACrD;YACD;gBACC,WAAW,EAAE,WAAW;gBACxB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,oBAAoB;aAC7B;YACD;gBACC,WAAW,EAAE,eAAe;gBAC5B,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,sCAAsC;aAC/C;YACD;gBACC,WAAW,EAAE,OAAO;gBACpB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,QAAQ;aACjB;YACD;gBACC,WAAW,EAAE,2BAA2B;gBACxC,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,gBAAgB;gBAC7B,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,MAAM;aACf;SACD,CAAC;QAEF,SAAI,GAA2B;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,yBAAyB;gBAClC,GAAG,EAAE,eAAe;gBACpB,MAAM,EAAE,KAAK;aACb;SACD,CAAC;IACH,CAAC;CAAA;AAlED,8CAkEC"}
@@ -1,4 +1,4 @@
1
- import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
1
+ import type { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from "n8n-workflow";
2
2
  export declare class AlterLab implements INodeType {
3
3
  description: INodeTypeDescription;
4
4
  execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
@@ -1 +1 @@
1
- {"version":3,"file":"AlterLab.node.d.ts","sourceRoot":"","sources":["../../../nodes/AlterLab/AlterLab.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEX,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EAEpB,MAAM,cAAc,CAAC;AAKtB,qBAAa,QAAS,YAAW,SAAS;IACzC,WAAW,EAAE,oBAAoB,CAiY/B;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAoRvE"}
1
+ {"version":3,"file":"AlterLab.node.d.ts","sourceRoot":"","sources":["../../../nodes/AlterLab/AlterLab.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EAErB,MAAM,cAAc,CAAC;AAatB,qBAAa,QAAS,YAAW,SAAS;IACxC,WAAW,EAAE,oBAAoB,CA8a/B;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAkYxE"}