n8n-nodes-scavio 0.7.0 → 0.12.0

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
@@ -16,8 +16,8 @@ In n8n: **Settings -> Community Nodes -> Install** -> enter `n8n-nodes-scavio`.
16
16
 
17
17
  | Resource | Operations |
18
18
  | --- | --- |
19
- | Google | Search, AI Mode, Maps Search |
20
- | Amazon | Search Products, Get Product |
19
+ | Google | Search, AI Mode, Maps Search, Maps Place Details, Maps Reviews, Shopping Search, Shopping Product, Shopping Product Stores, Flights Search, Hotels Search, Hotels Detail, News Search, Trends, Trending Now |
20
+ | Amazon | Search Products, Get Product, Get Offers |
21
21
  | Walmart | Search Products, Get Product |
22
22
  | YouTube | Search, Search Shorts, Search Channels, Get Suggestions, Get Video, Get Metadata, Get Comments, Get Comment Replies, Get Transcript, Get Related, Get Channel, Get Channel Videos, Get Channel Shorts, Get Channel Community, Resolve Channel, Get Streams |
23
23
  | Reddit | Search Posts, Get Search Suggestions, Get Post, Get Post Comments, Get Comment Replies, Get Subreddit, Get Subreddit Posts, Get User, Get User Posts, Get User Comments, Get Popular, Get Trending |
@@ -25,9 +25,31 @@ In n8n: **Settings -> Community Nodes -> Install** -> enter `n8n-nodes-scavio`.
25
25
  | TikTok Shop | Search Products, Get Search Suggestions, Get Product, Get Product Reviews, Get Categories, Get Category Products, Get Shop Products, Resolve URL |
26
26
  | Instagram | Get Profile, Get User Posts, Get User Reels, Get User Tagged, Get User Stories, Get Post, Get Post Comments, Get Comment Replies, Search Users, Search Hashtags, Get User Followers, Get User Followings |
27
27
  | X | Search, Get Tweet, Get Tweet Comments, Get Tweet Retweeters, Get User, Get User Tweets, Get User Replies, Get User Media, Get User Followers, Get User Followings, Get Trending |
28
- | LinkedIn | Get Person, Get Person About, Get Person Posts, Get Person Contact, Get Company, Get Company Posts, Get Company People, Get Company Jobs, Search People, Search Jobs, Search Posts, Get Job, Get Post, Get Post Comments |
28
+ | LinkedIn | Get Person, Get Person About, Get Person Posts, Get Company, Get Company Posts, Search Jobs, Get Job, Get Post, Get Post Comments |
29
29
  | Account | Get Usage |
30
30
 
31
+ ### What changed in 0.12.0
32
+
33
+ - **TikTok pagination works again.** `Cursor` was sent as a number on every paginated TikTok operation and the API rejected it with a 400. It is a string now. If you built an expression that fed a number into it, wrap it in `String()`.
34
+ - **TikTok `Sort By` lost its invented values.** User Posts is `Latest` / `Popular` and Search Videos is `Relevance` / `Most Liked`; the extra values never existed upstream and the old labels were wrong. A node saved with one of the removed values now falls back to `0`.
35
+ - **Eleven Google operations added**: Maps Place Details, Maps Reviews, Shopping Search, Shopping Product, Shopping Product Stores, Flights Search, Hotels Search, Hotels Detail, News Search, Trends and Trending Now. Existing Search, AI Mode and Maps Search nodes are untouched.
36
+ - **Walmart gained its real filters**: `Start Page` (the only Walmart pagination field), `Domain`, `Device`, `Fulfillment Type`, `Delivery ZIP` and `Store ID`, on Search and, where the API supports them, on Get Product.
37
+ - **Reddit Get Post takes a post ID.** Pick `Post ID` or `Post URL` under `Lookup By`. It returns the post only; comments come from Get Post Comments.
38
+ - **Instagram follower and following lists accept up to 100 per page**, matching the API. Post, reel and tagged feeds stay capped at 50.
39
+
40
+ ### Amazon changed in 0.10.0 (breaking)
41
+
42
+ Amazon moved to a new upstream provider, the API now returns a clean normalized shape instead of a raw provider passthrough, and the node changed with it. Existing Amazon nodes keep running, but re-check them:
43
+
44
+ - **`Domain` is gone, replaced by `Country`.** Upstream wants an ISO 3166-1 alpha-2 marketplace code, not an `amazon.<suffix>` string. Two do not match their suffix: `amazon.com` is `us` and `amazon.co.uk` is `gb`. A saved `Domain` value is no longer sent, so a node that was set to `de` now returns the US marketplace until you set `Country` to Germany.
45
+ - **`Sort By` is gone.** The marketplace accepts every sort value and ignores all of them — `price-asc-rank`, `price-desc-rank`, `review-rank` and `date-desc-rank` all return the identical unordered set. It was a filter that did nothing, so it is no longer offered.
46
+ - **`Start Page` is now `Page`**, under Additional Options. One page per call, 1 credit per call.
47
+ - **`Min Price` and `Max Price` are gone.** They were never in the API request schema and the backend dropped them silently. Filter on `price` in a downstream node instead.
48
+ - **Response fields are renamed.** Products now expose `asin`, `title`, `url`, `image`, `price`, `currency`, `rating`, `reviews_count`, `is_sponsored`, `position`, `badge`, `sales_volume` and `delivery`. Expressions reading the old provider keys (`url_image`, `product_name`, `total_reviews`, `is_best_seller`, `buybox`) need updating.
49
+ - **`Get Offers` is new.** All seller offers for an ASIN — price, seller, condition, shipping, discount and which offer holds the buy box. 1 credit. Page 1 only: the response reports `has_more_pages`, but there is no verified upstream param for a later page.
50
+
51
+ ### TikTok Shop
52
+
31
53
  Two things to know about TikTok Shop before you build on it:
32
54
 
33
55
  - **Get Product returns no price.** TikTok masks the price on the product page. Exact prices come from Search Products, Get Shop Products and Get Category Products.
@@ -79,7 +101,7 @@ The credential test calls `GET /api/v1/usage` (free) so you get instant feedback
79
101
  ## Compatibility
80
102
 
81
103
  - Requires n8n version 1.0 or later.
82
- - Tested against Scavio API v1 (`https://api.scavio.dev`).
104
+ - Tested against the Scavio API at `https://api.scavio.dev`. Google runs on v2 (`/api/v2/google/*`), every other product on v1 (`/api/v1/*`). The old `/api/v1/google` endpoint is retired and this node never calls it.
83
105
 
84
106
  ## Resources
85
107
 
@@ -1,6 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.amazonFields = exports.amazonOperations = void 0;
4
+ // Amazon moved to a new upstream provider and the API now returns a normalized
5
+ // shape instead of a raw provider passthrough. Params that disappeared with it:
6
+ //
7
+ // - sort_by: the marketplace accepts every sort value and ignores all of them.
8
+ // Verified across price-asc-rank, price-desc-rank, review-rank and
9
+ // date-desc-rank: identical, unordered result sets. Exposing it would be a
10
+ // filter that silently does nothing.
11
+ // - start_page: replaced by Page (the API still accepts start_page as a
12
+ // deprecated alias, but new workflows should not learn it).
13
+ // - min_price / max_price: these were never in the API request schema, so the
14
+ // backend silently dropped them. They only ever looked like they worked.
15
+ // - domain: replaced by Country, which is what upstream actually wants (an ISO
16
+ // 3166-1 alpha-2 marketplace code, not an amazon.<suffix> string).
4
17
  exports.amazonOperations = [
5
18
  {
6
19
  displayName: 'Operation',
@@ -10,24 +23,32 @@ exports.amazonOperations = [
10
23
  displayOptions: { show: { resource: ['amazon'] } },
11
24
  options: [
12
25
  {
13
- name: 'Search Products',
14
- value: 'search',
15
- action: 'Search amazon products',
16
- description: 'Search Amazon and return product listings',
17
- routing: { request: { method: 'POST', url: '/api/v1/amazon/search' } },
26
+ name: 'Get Offers',
27
+ value: 'offers',
28
+ action: 'Get amazon offers',
29
+ description: 'Get every seller offer for an ASIN: price, seller name and ID, condition, shipping, discount and which offer holds the buy box. Page 1 only: the response reports has_more_pages, but there is no verified upstream param to request a later page.',
30
+ routing: { request: { method: 'POST', url: '/api/v1/amazon/offers' } },
18
31
  },
19
32
  {
20
33
  name: 'Get Product',
21
34
  value: 'product',
22
35
  action: 'Get an amazon product',
23
- description: 'Get detailed information for an Amazon product by ASIN',
36
+ description: 'Get full detail for an ASIN: title, brand, price, list price, rating, review count, availability, images, videos, specifications, variants, best sellers rank and structured shipping',
24
37
  routing: { request: { method: 'POST', url: '/api/v1/amazon/product' } },
25
38
  },
39
+ {
40
+ name: 'Search Products',
41
+ value: 'search',
42
+ action: 'Search amazon products',
43
+ description: "Search Amazon by keyword and return product listings with ASIN, price, rating, review count, delivery and sponsored flag. Results always come back in the marketplace's default ranking: there is no sort param because every sort value the marketplace accepts returns the same unordered set.",
44
+ routing: { request: { method: 'POST', url: '/api/v1/amazon/search' } },
45
+ },
26
46
  ],
27
47
  default: 'search',
28
48
  },
29
49
  ];
30
50
  exports.amazonFields = [
51
+ // ── Keyword (search) ──
31
52
  {
32
53
  displayName: 'Query',
33
54
  name: 'query',
@@ -39,6 +60,10 @@ exports.amazonFields = [
39
60
  routing: { request: { body: { query: '={{ $value }}' } } },
40
61
  description: 'Product search query',
41
62
  },
63
+ // ── ASIN (product, offers) ──
64
+ // Sent on the wire as `query`, not `asin`. The API accepts both, but `query`
65
+ // is the field every published Scavio client uses and keeps saved workflows
66
+ // working across this upgrade.
42
67
  {
43
68
  displayName: 'ASIN',
44
69
  name: 'query',
@@ -46,20 +71,45 @@ exports.amazonFields = [
46
71
  required: true,
47
72
  default: '',
48
73
  placeholder: 'B09V3KXJPB',
49
- displayOptions: { show: { resource: ['amazon'], operation: ['product'] } },
74
+ displayOptions: { show: { resource: ['amazon'], operation: ['product', 'offers'] } },
50
75
  routing: { request: { body: { query: '={{ $value }}' } } },
51
76
  description: 'The 10-character Amazon product ID, e.g. B09V3KXJPB. Found in /dp/ASIN URLs.',
52
77
  },
78
+ // ── Country (all operations) ──
53
79
  {
54
- displayName: 'Domain',
55
- name: 'domain',
56
- type: 'string',
57
- default: 'com',
58
- placeholder: 'com',
80
+ displayName: 'Country',
81
+ name: 'country',
82
+ type: 'options',
83
+ default: 'us',
59
84
  displayOptions: { show: { resource: ['amazon'] } },
60
- routing: { request: { body: { domain: '={{ $value }}' } } },
61
- description: 'Amazon domain suffix, e.g. com (US), co.uk (UK), de (Germany), co.jp (Japan)',
85
+ options: [
86
+ { name: 'Australia', value: 'au' },
87
+ { name: 'Belgium', value: 'be' },
88
+ { name: 'Brazil', value: 'br' },
89
+ { name: 'Canada', value: 'ca' },
90
+ { name: 'China', value: 'cn' },
91
+ { name: 'Egypt', value: 'eg' },
92
+ { name: 'France', value: 'fr' },
93
+ { name: 'Germany', value: 'de' },
94
+ { name: 'India', value: 'in' },
95
+ { name: 'Italy', value: 'it' },
96
+ { name: 'Japan', value: 'jp' },
97
+ { name: 'Mexico', value: 'mx' },
98
+ { name: 'Netherlands', value: 'nl' },
99
+ { name: 'Poland', value: 'pl' },
100
+ { name: 'Saudi Arabia', value: 'sa' },
101
+ { name: 'Singapore', value: 'sg' },
102
+ { name: 'Spain', value: 'es' },
103
+ { name: 'Sweden', value: 'se' },
104
+ { name: 'Turkey', value: 'tr' },
105
+ { name: 'United Arab Emirates', value: 'ae' },
106
+ { name: 'United Kingdom', value: 'gb' },
107
+ { name: 'United States', value: 'us' },
108
+ ],
109
+ routing: { request: { body: { country: '={{ $value }}' } } },
110
+ description: 'Amazon marketplace to query, as an ISO 3166-1 alpha-2 code. Two do not match their domain suffix: amazon.com is United States (us) and amazon.co.uk is United Kingdom (gb).',
62
111
  },
112
+ // ── Additional Options (search) ──
63
113
  {
64
114
  displayName: 'Additional Options',
65
115
  name: 'additionalOptions',
@@ -69,43 +119,13 @@ exports.amazonFields = [
69
119
  displayOptions: { show: { resource: ['amazon'], operation: ['search'] } },
70
120
  options: [
71
121
  {
72
- displayName: 'Sort By',
73
- name: 'sort_by',
74
- type: 'options',
75
- default: 'featured',
76
- options: [
77
- { name: 'Average Review', value: 'average_review' },
78
- { name: 'Bestsellers', value: 'bestsellers' },
79
- { name: 'Featured', value: 'featured' },
80
- { name: 'Most Recent', value: 'most_recent' },
81
- { name: 'Price: High to Low', value: 'price_high_to_low' },
82
- { name: 'Price: Low to High', value: 'price_low_to_high' },
83
- ],
84
- routing: { request: { body: { sort_by: '={{ $value }}' } } },
85
- },
86
- {
87
- displayName: 'Start Page',
88
- name: 'start_page',
122
+ displayName: 'Page',
123
+ name: 'page',
89
124
  type: 'number',
90
125
  default: 1,
91
126
  typeOptions: { minValue: 1 },
92
- routing: { request: { body: { start_page: '={{ $value }}' } } },
93
- },
94
- {
95
- displayName: 'Min Price',
96
- name: 'min_price',
97
- type: 'number',
98
- default: 0,
99
- description: 'Minimum price in domain currency',
100
- routing: { request: { body: { min_price: '={{ $value }}' } } },
101
- },
102
- {
103
- displayName: 'Max Price',
104
- name: 'max_price',
105
- type: 'number',
106
- default: 0,
107
- description: 'Maximum price in domain currency',
108
- routing: { request: { body: { max_price: '={{ $value }}' } } },
127
+ description: 'Results page, 1-based. One page per call, and each call costs 1 credit.',
128
+ routing: { request: { body: { page: '={{ $value }}' } } },
109
129
  },
110
130
  ],
111
131
  },
@@ -1 +1 @@
1
- {"version":3,"file":"AmazonDescription.js","sourceRoot":"","sources":["../../../../nodes/Scavio/descriptions/AmazonDescription.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AmazonDescription.js","sourceRoot":"","sources":["../../../../nodes/Scavio/descriptions/AmazonDescription.ts"],"names":[],"mappings":"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"}