From d441c620d83b74a6e7c166cde9a29a40175c6e0c Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Thu, 13 Nov 2025 17:02:40 -0500 Subject: [PATCH 1/5] update to api v3 --- .../get-backlinks-one-per-domain.js | 34 +++++++++----- .../actions/get-backlinks/get-backlinks.js | 33 ++++++++----- .../get-referring-domains.js | 34 +++++++++----- components/ahrefs/ahrefs.app.js | 46 +++++++++++++++++-- components/ahrefs/package.json | 8 ++-- 5 files changed, 112 insertions(+), 43 deletions(-) diff --git a/components/ahrefs/actions/get-backlinks-one-per-domain/get-backlinks-one-per-domain.js b/components/ahrefs/actions/get-backlinks-one-per-domain/get-backlinks-one-per-domain.js index 8042fdf94e651..fc19d8f14d10e 100644 --- a/components/ahrefs/actions/get-backlinks-one-per-domain/get-backlinks-one-per-domain.js +++ b/components/ahrefs/actions/get-backlinks-one-per-domain/get-backlinks-one-per-domain.js @@ -1,12 +1,16 @@ const ahrefs = require("../../ahrefs.app.js"); -const axios = require("axios"); -module.exports = { +export default { name: "Get Backlinks One Per Domain", key: "ahrefs-get-backlinks-one-per-domain", - description: "Get one backlink with the highest `ahrefs_rank` per referring domain for a target URL or domain (with details for the referring pages including anchor and page title).", - version: "0.0.5", + description: "Get one backlink with the highest `ahrefs_rank` per referring domain for a target URL or domain (with details for the referring pages including anchor and page title). [See the documentation](https://docs.ahrefs.com/docs/api/site-explorer/operations/list-all-backlinks)", + version: "0.0.6", type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, props: { ahrefs, target: { @@ -15,6 +19,12 @@ module.exports = { "target", ], }, + select: { + propDefinition: [ + ahrefs, + "select", + ], + }, mode: { propDefinition: [ ahrefs, @@ -28,18 +38,18 @@ module.exports = { ], }, }, - async run() { - return (await axios({ - url: "https://apiv2.ahrefs.com", + async run({ $ }) { + const response = await this.ahrefs.getBacklinksOnePerDomain({ + $, params: { - token: this.ahrefs.$auth.oauth_access_token, - from: "backlinks_one_per_domain", + aggregation: "1_per_domain", target: this.target, + select: this.select, mode: this.mode, limit: this.limit, - order_by: "ahrefs_rank:desc", - output: "json", }, - })).data; + }); + $.export("$summary", "Successfully retrieved backlinks data"); + return response; }, }; diff --git a/components/ahrefs/actions/get-backlinks/get-backlinks.js b/components/ahrefs/actions/get-backlinks/get-backlinks.js index 3a532b95225d7..7f6f85d7560d7 100644 --- a/components/ahrefs/actions/get-backlinks/get-backlinks.js +++ b/components/ahrefs/actions/get-backlinks/get-backlinks.js @@ -1,12 +1,16 @@ const ahrefs = require("../../ahrefs.app.js"); -const axios = require("axios"); -module.exports = { +export default { name: "Get Backlinks", key: "ahrefs-get-backlinks", - description: "Get the backlinks for a domain or URL with details for the referring pages (e.g., anchor and page title).", - version: "0.0.9", + description: "Get the backlinks for a domain or URL with details for the referring pages (e.g., anchor and page title). [See the documentation](https://docs.ahrefs.com/docs/api/site-explorer/operations/list-all-backlinks)", + version: "0.0.10", type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, props: { ahrefs, target: { @@ -15,6 +19,12 @@ module.exports = { "target", ], }, + select: { + propDefinition: [ + ahrefs, + "select", + ], + }, mode: { propDefinition: [ ahrefs, @@ -28,18 +38,17 @@ module.exports = { ], }, }, - async run() { - return (await axios({ - url: "https://apiv2.ahrefs.com", + async run({ $ }) { + const response = await this.ahrefs.getBacklinks({ + $, params: { - token: this.ahrefs.$auth.oauth_access_token, - from: "backlinks", target: this.target, + select: this.select, mode: this.mode, limit: this.limit, - order_by: "ahrefs_rank:desc", - output: "json", }, - })).data; + }); + $.export("$summary", "Successfully retrieved backlinks data"); + return response; }, }; diff --git a/components/ahrefs/actions/get-referring-domains/get-referring-domains.js b/components/ahrefs/actions/get-referring-domains/get-referring-domains.js index 27243197d07d7..63b909c81bed9 100644 --- a/components/ahrefs/actions/get-referring-domains/get-referring-domains.js +++ b/components/ahrefs/actions/get-referring-domains/get-referring-domains.js @@ -1,12 +1,16 @@ const ahrefs = require("../../ahrefs.app.js"); -const axios = require("axios"); -module.exports = { +export default { name: "Get Referring Domains", - description: "Get the referring domains that contain backlinks to the target URL or domain.", + description: "Get the referring domains that contain backlinks to the target URL or domain. [See the documentation](https://docs.ahrefs.com/docs/api/site-explorer/operations/list-refdomains)", key: "ahrefs-get-referring-domains", - version: "0.0.17", + version: "0.0.18", type: "action", + annotations: { + destructiveHint: false, + openWorldHint: true, + readOnlyHint: true, + }, props: { ahrefs, target: { @@ -15,6 +19,13 @@ module.exports = { "target", ], }, + select: { + propDefinition: [ + ahrefs, + "select", + ], + description: "An array of columns to return. [See response schema](https://docs.ahrefs.com/docs/api/site-explorer/operations/list-refdomains) for valid column identifiers.", + }, mode: { propDefinition: [ ahrefs, @@ -28,18 +39,17 @@ module.exports = { ], }, }, - async run() { - return (await axios({ - url: "https://apiv2.ahrefs.com", + async run({ $ }) { + const response = await this.ahrefs.getReferringDomains({ + $, params: { - token: this.ahrefs.$auth.oauth_access_token, - from: "refdomains", target: this.target, + select: this.select, mode: this.mode, limit: this.limit, - order_by: "domain_rating:desc", - output: "json", }, - })).data; + }); + $.export("$summary", "Successfully retrieved referring domains data"); + return response; }, }; diff --git a/components/ahrefs/ahrefs.app.js b/components/ahrefs/ahrefs.app.js index a9f592c8b55a8..4937b9451b522 100644 --- a/components/ahrefs/ahrefs.app.js +++ b/components/ahrefs/ahrefs.app.js @@ -1,16 +1,20 @@ -module.exports = { +import { axios } from "@pipedream/platform"; + +export default { type: "app", app: "ahrefs", propDefinitions: { limit: { type: "integer", - description: "Number of results to return.", + label: "Limit", + description: "Number of results to return", default: 1000, optional: true, }, mode: { type: "string", - description: "Select a mode of operation (defaults to `Domain`).", + label: "Mode", + description: "Select a mode of operation (defaults to `domain`)", options: [ { label: "Exact", @@ -34,7 +38,41 @@ module.exports = { }, target: { type: "string", - description: "Enter a domain or URL.", + label: "Target", + description: "Enter a domain or URL", + }, + select: { + type: "string[]", + label: "Select", + description: "An array of columns to return. [See response schema](https://docs.ahrefs.com/docs/api/site-explorer/operations/list-all-backlinks) for valid column identifiers.", + }, + }, + methods: { + _baseUrl() { + return "https://api.ahrefs.com/v3"; + }, + _makeRequest({ + $ = this, path, ...opts + }) { + return axios($, { + url: `${this._baseUrl()}${path}`, + headers: { + Authorization: `Bearer ${this.$auth.oauth_access_token}`, + }, + ...opts, + }); + }, + getBacklinks(opts = {}) { + return this._makeRequest({ + path: "/site-explorer/all-backlinks", + ...opts, + }); + }, + getReferringDomains(opts = {}) { + return this._makeRequest({ + path: "/site-explorer/refdomains", + ...opts, + }); }, }, }; diff --git a/components/ahrefs/package.json b/components/ahrefs/package.json index b86a50b48f80d..7f64dee8da0da 100644 --- a/components/ahrefs/package.json +++ b/components/ahrefs/package.json @@ -1,15 +1,17 @@ { "name": "@pipedream/ahrefs", - "version": "0.0.4", + "version": "0.1.0", "description": "Pipedream Ahrefs Components", - "main": "ahrefs.app.js", + "main": "ahrefs.app.mjs", "keywords": [ "pipedream", "ahrefs" ], "homepage": "https://pipedream.com/apps/ahrefs", "author": "Pipedream (https://pipedream.com/)", - "dependencies": {}, + "dependencies": { + "@pipedream/platform": "^3.1.1" + }, "gitHead": "e12480b94cc03bed4808ebc6b13e7fdb3a1ba535", "publishConfig": { "access": "public" From 1411137020c2ca03b6246981ad3b4ad109557d95 Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Thu, 13 Nov 2025 17:03:40 -0500 Subject: [PATCH 2/5] pnpm-lock.yaml --- pnpm-lock.yaml | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 48439aaca2aec..d857e252abedd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -564,7 +564,11 @@ importers: specifier: ^3.1.1 version: 3.1.1 - components/ahrefs: {} + components/ahrefs: + dependencies: + '@pipedream/platform': + specifier: ^3.1.1 + version: 3.1.1 components/ai_chatbot_hub: {} @@ -28835,6 +28839,7 @@ packages: node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} engines: {node: '>=10.5.0'} + deprecated: Use your platform's native DOMException instead node-emoji@2.2.0: resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} @@ -37153,7 +37158,7 @@ snapshots: https-proxy-agent: 7.0.6 node-fetch: 2.7.0 nopt: 8.1.0 - semver: 7.7.2 + semver: 7.7.3 tar: 7.5.2 transitivePeerDependencies: - encoding @@ -37166,7 +37171,7 @@ snapshots: https-proxy-agent: 7.0.6(supports-color@10.2.2) node-fetch: 2.7.0 nopt: 8.1.0 - semver: 7.7.2 + semver: 7.7.3 tar: 7.5.2 transitivePeerDependencies: - encoding @@ -37452,7 +37457,7 @@ snapshots: image-size: 2.0.2 js-image-generator: 1.0.4 parse-gitignore: 2.0.0 - semver: 7.7.2 + semver: 7.7.3 tmp-promise: 3.0.3 uuid: 11.1.0 write-file-atomic: 5.0.1 @@ -38022,7 +38027,7 @@ snapshots: '@opentelemetry/propagator-b3': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/propagator-jaeger': 1.30.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-base': 1.30.1(@opentelemetry/api@1.9.0) - semver: 7.7.2 + semver: 7.7.3 '@opentelemetry/semantic-conventions@1.28.0': {} @@ -38982,7 +38987,6 @@ snapshots: transitivePeerDependencies: - rolldown - rollup - - supports-color '@putout/operator-parens@2.0.0(rolldown@1.0.0-beta.9)(rollup@4.53.2)': dependencies: @@ -48344,7 +48348,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.2 + semver: 7.7.3 make-error@1.3.6: {} @@ -49447,7 +49451,7 @@ snapshots: normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.7.2 + semver: 7.7.3 validate-npm-package-license: 3.0.4 normalize-package-data@7.0.1: @@ -49994,7 +49998,7 @@ snapshots: ky: 1.14.0 registry-auth-token: 5.1.0 registry-url: 6.0.1 - semver: 7.7.2 + semver: 7.7.3 package-lock-only@0.0.4: dependencies: @@ -54139,7 +54143,7 @@ snapshots: wide-align@1.1.5: dependencies: - string-width: 1.0.2 + string-width: 4.2.3 optional: true widest-line@3.1.0: From 71582efbfe4da0c984a97316d4eeb16cc61a2911 Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Thu, 13 Nov 2025 17:07:43 -0500 Subject: [PATCH 3/5] update --- .../get-backlinks-one-per-domain.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/ahrefs/actions/get-backlinks-one-per-domain/get-backlinks-one-per-domain.js b/components/ahrefs/actions/get-backlinks-one-per-domain/get-backlinks-one-per-domain.js index fc19d8f14d10e..5df81f752ea0d 100644 --- a/components/ahrefs/actions/get-backlinks-one-per-domain/get-backlinks-one-per-domain.js +++ b/components/ahrefs/actions/get-backlinks-one-per-domain/get-backlinks-one-per-domain.js @@ -39,7 +39,7 @@ export default { }, }, async run({ $ }) { - const response = await this.ahrefs.getBacklinksOnePerDomain({ + const response = await this.ahrefs.getBacklinks({ $, params: { aggregation: "1_per_domain", From e81148247b4588068795b10f79251f96b21faa7a Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Thu, 13 Nov 2025 17:19:29 -0500 Subject: [PATCH 4/5] updates --- ...nks-one-per-domain.js => get-backlinks-one-per-domain.mjs} | 4 ++-- .../get-backlinks/{get-backlinks.js => get-backlinks.mjs} | 4 ++-- .../{get-referring-domains.js => get-referring-domains.mjs} | 4 ++-- components/ahrefs/{ahrefs.app.js => ahrefs.app.mjs} | 0 4 files changed, 6 insertions(+), 6 deletions(-) rename components/ahrefs/actions/get-backlinks-one-per-domain/{get-backlinks-one-per-domain.js => get-backlinks-one-per-domain.mjs} (93%) rename components/ahrefs/actions/get-backlinks/{get-backlinks.js => get-backlinks.mjs} (92%) rename components/ahrefs/actions/get-referring-domains/{get-referring-domains.js => get-referring-domains.mjs} (93%) rename components/ahrefs/{ahrefs.app.js => ahrefs.app.mjs} (100%) diff --git a/components/ahrefs/actions/get-backlinks-one-per-domain/get-backlinks-one-per-domain.js b/components/ahrefs/actions/get-backlinks-one-per-domain/get-backlinks-one-per-domain.mjs similarity index 93% rename from components/ahrefs/actions/get-backlinks-one-per-domain/get-backlinks-one-per-domain.js rename to components/ahrefs/actions/get-backlinks-one-per-domain/get-backlinks-one-per-domain.mjs index 5df81f752ea0d..a5f13327ba304 100644 --- a/components/ahrefs/actions/get-backlinks-one-per-domain/get-backlinks-one-per-domain.js +++ b/components/ahrefs/actions/get-backlinks-one-per-domain/get-backlinks-one-per-domain.mjs @@ -1,4 +1,4 @@ -const ahrefs = require("../../ahrefs.app.js"); +const ahrefs = require("../../ahrefs.app.mjs"); export default { name: "Get Backlinks One Per Domain", @@ -44,7 +44,7 @@ export default { params: { aggregation: "1_per_domain", target: this.target, - select: this.select, + select: this.select.join(","), mode: this.mode, limit: this.limit, }, diff --git a/components/ahrefs/actions/get-backlinks/get-backlinks.js b/components/ahrefs/actions/get-backlinks/get-backlinks.mjs similarity index 92% rename from components/ahrefs/actions/get-backlinks/get-backlinks.js rename to components/ahrefs/actions/get-backlinks/get-backlinks.mjs index 7f6f85d7560d7..4735a191a9b87 100644 --- a/components/ahrefs/actions/get-backlinks/get-backlinks.js +++ b/components/ahrefs/actions/get-backlinks/get-backlinks.mjs @@ -1,4 +1,4 @@ -const ahrefs = require("../../ahrefs.app.js"); +const ahrefs = require("../../ahrefs.app.mjs"); export default { name: "Get Backlinks", @@ -43,7 +43,7 @@ export default { $, params: { target: this.target, - select: this.select, + select: this.select.join(","), mode: this.mode, limit: this.limit, }, diff --git a/components/ahrefs/actions/get-referring-domains/get-referring-domains.js b/components/ahrefs/actions/get-referring-domains/get-referring-domains.mjs similarity index 93% rename from components/ahrefs/actions/get-referring-domains/get-referring-domains.js rename to components/ahrefs/actions/get-referring-domains/get-referring-domains.mjs index 63b909c81bed9..e7afd7c777008 100644 --- a/components/ahrefs/actions/get-referring-domains/get-referring-domains.js +++ b/components/ahrefs/actions/get-referring-domains/get-referring-domains.mjs @@ -1,4 +1,4 @@ -const ahrefs = require("../../ahrefs.app.js"); +const ahrefs = require("../../ahrefs.app.mjs"); export default { name: "Get Referring Domains", @@ -44,7 +44,7 @@ export default { $, params: { target: this.target, - select: this.select, + select: this.select.join(","), mode: this.mode, limit: this.limit, }, diff --git a/components/ahrefs/ahrefs.app.js b/components/ahrefs/ahrefs.app.mjs similarity index 100% rename from components/ahrefs/ahrefs.app.js rename to components/ahrefs/ahrefs.app.mjs From 8827ba72275fff7e488beffe59915072fc3caebd Mon Sep 17 00:00:00 2001 From: Michelle Bergeron Date: Thu, 13 Nov 2025 17:25:34 -0500 Subject: [PATCH 5/5] fix import statements --- .../get-backlinks-one-per-domain.mjs | 2 +- components/ahrefs/actions/get-backlinks/get-backlinks.mjs | 2 +- .../actions/get-referring-domains/get-referring-domains.mjs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/components/ahrefs/actions/get-backlinks-one-per-domain/get-backlinks-one-per-domain.mjs b/components/ahrefs/actions/get-backlinks-one-per-domain/get-backlinks-one-per-domain.mjs index a5f13327ba304..dcfd918aaa759 100644 --- a/components/ahrefs/actions/get-backlinks-one-per-domain/get-backlinks-one-per-domain.mjs +++ b/components/ahrefs/actions/get-backlinks-one-per-domain/get-backlinks-one-per-domain.mjs @@ -1,4 +1,4 @@ -const ahrefs = require("../../ahrefs.app.mjs"); +import ahrefs from "../../ahrefs.app.mjs"; export default { name: "Get Backlinks One Per Domain", diff --git a/components/ahrefs/actions/get-backlinks/get-backlinks.mjs b/components/ahrefs/actions/get-backlinks/get-backlinks.mjs index 4735a191a9b87..33f918df3b39f 100644 --- a/components/ahrefs/actions/get-backlinks/get-backlinks.mjs +++ b/components/ahrefs/actions/get-backlinks/get-backlinks.mjs @@ -1,4 +1,4 @@ -const ahrefs = require("../../ahrefs.app.mjs"); +import ahrefs from "../../ahrefs.app.mjs"; export default { name: "Get Backlinks", diff --git a/components/ahrefs/actions/get-referring-domains/get-referring-domains.mjs b/components/ahrefs/actions/get-referring-domains/get-referring-domains.mjs index e7afd7c777008..c3d6a694c6f03 100644 --- a/components/ahrefs/actions/get-referring-domains/get-referring-domains.mjs +++ b/components/ahrefs/actions/get-referring-domains/get-referring-domains.mjs @@ -1,4 +1,4 @@ -const ahrefs = require("../../ahrefs.app.mjs"); +import ahrefs from "../../ahrefs.app.mjs"; export default { name: "Get Referring Domains",