@pipedream/whoisfreaks 0.1.0 → 0.1.2

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.
@@ -0,0 +1,81 @@
1
+ import whoisfreaks from "../../whoisfreaks.app.mjs";
2
+ import { ConfigurationError } from "@pipedream/platform";
3
+ import { parseObject } from "../../common/utils.mjs";
4
+
5
+ export default {
6
+ key: "whoisfreaks-bulk-dns-domain-lookup",
7
+ name: "Bulk DNS Domain Lookup",
8
+ description: "Retrieve DNS records (A, AAAA, MX, NS, CNAME, TXT, PTR, SPF, DKIM, DMARC, SRV, SOA) for up to 100 domains or IP addresses in a single request. Use this action for bulk DNS auditing, infrastructure mapping, or automated monitoring. Accepts domain names and/or IP addresses; returns JSON or XML output. [See the documentation](https://whoisfreaks.com/documentation/dns-checker-api#bulk-domain-lookup)",
9
+ version: "0.0.2",
10
+ annotations: {
11
+ destructiveHint: false,
12
+ openWorldHint: true,
13
+ readOnlyHint: true,
14
+ },
15
+ type: "action",
16
+ ai: "optimized",
17
+ props: {
18
+ whoisfreaks,
19
+ domainNames: {
20
+ propDefinition: [
21
+ whoisfreaks,
22
+ "domainNames",
23
+ ],
24
+ optional: true,
25
+ },
26
+ ipAddresses: {
27
+ propDefinition: [
28
+ whoisfreaks,
29
+ "ipAddresses",
30
+ ],
31
+ optional: true,
32
+ },
33
+ format: {
34
+ propDefinition: [
35
+ whoisfreaks,
36
+ "format",
37
+ ],
38
+ },
39
+ },
40
+
41
+ async run({ $ }) {
42
+ const domainNames = this.domainNames
43
+ ? parseObject(this.domainNames)
44
+ : [];
45
+
46
+ const ipAddresses = this.ipAddresses
47
+ ? parseObject(this.ipAddresses)
48
+ : [];
49
+
50
+ if (!domainNames.length && !ipAddresses.length) {
51
+ throw new ConfigurationError(
52
+ "Please provide at least one domain name or IP address.",
53
+ );
54
+ }
55
+
56
+ const response = await this.whoisfreaks.lookupBulkDnsDomain({
57
+ $,
58
+ params: {
59
+ format: this.format,
60
+ type: "all",
61
+ },
62
+ body: {
63
+ ...(domainNames.length && {
64
+ domainNames,
65
+ }),
66
+ ...(ipAddresses.length && {
67
+ ipAddresses,
68
+ }),
69
+ },
70
+ });
71
+
72
+ $.export(
73
+ "$summary",
74
+ `Successfully fetched bulk DNS data for ${
75
+ domainNames.length + ipAddresses.length
76
+ } input(s)`,
77
+ );
78
+
79
+ return response;
80
+ },
81
+ };
@@ -0,0 +1,46 @@
1
+ import whoisfreaks from "../../whoisfreaks.app.mjs";
2
+ import { parseObject } from "../../common/utils.mjs";
3
+
4
+ export default {
5
+ key: "whoisfreaks-bulk-ip-geolocation-lookup",
6
+ name: "Bulk IP Geolocation Lookup",
7
+ description: "Retrieve geolocation details (country, city, ASN, ISP, coordinates) for up to 100 IP addresses in a single request. Accepts comma-separated IPv4 or IPv6 addresses and returns JSON or XML output. Use this action for bulk network analysis, fraud detection, or audience geo-enrichment. [See the documentation](https://whoisfreaks.com/documentation/ip-geolocation-api#bulk-geo-lookup)",
8
+ version: "0.0.2",
9
+ annotations: {
10
+ destructiveHint: false,
11
+ openWorldHint: true,
12
+ readOnlyHint: true,
13
+ },
14
+ type: "action",
15
+ ai: "optimized",
16
+ props: {
17
+ whoisfreaks,
18
+ ipAddresses: {
19
+ propDefinition: [
20
+ whoisfreaks,
21
+ "ipAddresses",
22
+ ],
23
+ optional: false,
24
+ },
25
+ format: {
26
+ propDefinition: [
27
+ whoisfreaks,
28
+ "format",
29
+ ],
30
+ },
31
+ },
32
+ async run({ $ }) {
33
+ const ipAddresses = parseObject(this.ipAddresses);
34
+ const response = await this.whoisfreaks.lookupBulkIpGeolocation({
35
+ $,
36
+ params: {
37
+ format: this.format,
38
+ },
39
+ body: {
40
+ ips: ipAddresses,
41
+ },
42
+ });
43
+ $.export("$summary", `Successfully fetched bulk IP geolocation data for ${ipAddresses.length} IP(s)`);
44
+ return response;
45
+ },
46
+ };
@@ -0,0 +1,46 @@
1
+ import whoisfreaks from "../../whoisfreaks.app.mjs";
2
+ import { parseObject } from "../../common/utils.mjs";
3
+
4
+ export default {
5
+ key: "whoisfreaks-bulk-ip-reputation-lookup",
6
+ name: "Bulk IP Reputation Lookup",
7
+ description: "Score up to 100 IPv4 or IPv6 addresses against real-time threat data in a single request. Returns composite threat score, VPN/proxy/Tor/bot classification, blacklist status, and ASN/ISP details for each IP. Accepts comma-separated IP addresses; returns JSON or XML output. [See the documentation](https://whoisfreaks.com/documentation/ip-security-api#bulk-security-lookup)",
8
+ version: "0.0.2",
9
+ annotations: {
10
+ destructiveHint: false,
11
+ openWorldHint: true,
12
+ readOnlyHint: true,
13
+ },
14
+ type: "action",
15
+ ai: "optimized",
16
+ props: {
17
+ whoisfreaks,
18
+ ipAddresses: {
19
+ propDefinition: [
20
+ whoisfreaks,
21
+ "ipAddresses",
22
+ ],
23
+ optional: false,
24
+ },
25
+ format: {
26
+ propDefinition: [
27
+ whoisfreaks,
28
+ "format",
29
+ ],
30
+ },
31
+ },
32
+ async run({ $ }) {
33
+ const ipAddresses = parseObject(this.ipAddresses);
34
+ const response = await this.whoisfreaks.lookupBulkIpReputation({
35
+ $,
36
+ params: {
37
+ format: this.format,
38
+ },
39
+ body: {
40
+ ips: ipAddresses,
41
+ },
42
+ });
43
+ $.export("$summary", `Successfully fetched bulk IP reputation data for ${ipAddresses.length} IP(s)`);
44
+ return response;
45
+ },
46
+ };
@@ -0,0 +1,45 @@
1
+ import whoisfreaks from "../../whoisfreaks.app.mjs";
2
+ import { parseObject } from "../../common/utils.mjs";
3
+
4
+ export default {
5
+ key: "whoisfreaks-bulk-whois-lookup",
6
+ name: "Bulk Whois Lookup",
7
+ description: "Retrieve WHOIS registration data (registrant, registrar, name servers, email, phone, address, ASN, history) for up to 100 domains in a single request. Accepts comma-separated domain names across 1000+ TLDs; returns JSON or XML output. Use this action for bulk domain research, lead enrichment, or portfolio audits. [See the documentation](https://whoisfreaks.com/documentation/bulk-whois-api)",
8
+ version: "0.0.2",
9
+ annotations: {
10
+ destructiveHint: false,
11
+ openWorldHint: true,
12
+ readOnlyHint: true,
13
+ },
14
+ type: "action",
15
+ ai: "optimized",
16
+ props: {
17
+ whoisfreaks,
18
+ domainNames: {
19
+ propDefinition: [
20
+ whoisfreaks,
21
+ "domainNames",
22
+ ],
23
+ },
24
+ format: {
25
+ propDefinition: [
26
+ whoisfreaks,
27
+ "format",
28
+ ],
29
+ },
30
+ },
31
+ async run({ $ }) {
32
+ const domainNames = parseObject(this.domainNames);
33
+ const response = await this.whoisfreaks.lookupBulkWhois({
34
+ $,
35
+ params: {
36
+ format: this.format,
37
+ },
38
+ body: {
39
+ domainNames,
40
+ },
41
+ });
42
+ $.export("$summary", `Successfully fetched bulk WHOIS data for ${domainNames.length} domain(s)`);
43
+ return response;
44
+ },
45
+ };
@@ -0,0 +1,43 @@
1
+ import whoisfreaks from "../../whoisfreaks.app.mjs";
2
+
3
+ export default {
4
+ key: "whoisfreaks-domain-availability-lookup",
5
+ name: "Domain Availability Lookup",
6
+ description:
7
+ "Check if a domain name is available for registration. For example you can check whoisfreaks.com. This action supports responses in both JSON and XML format. Always use sug=false to get the response. [See the documentation](https://whoisfreaks.com/documentation/domain-availability-api#lookup)",
8
+ version: "0.0.2",
9
+ annotations: {
10
+ destructiveHint: false,
11
+ openWorldHint: true,
12
+ readOnlyHint: true,
13
+ },
14
+ type: "action",
15
+ ai: "optimized",
16
+ props: {
17
+ whoisfreaks,
18
+ domainName: {
19
+ propDefinition: [
20
+ whoisfreaks,
21
+ "domainName",
22
+ ],
23
+ },
24
+ format: {
25
+ propDefinition: [
26
+ whoisfreaks,
27
+ "format",
28
+ ],
29
+ },
30
+ },
31
+ async run({ $ }) {
32
+ const response = await this.whoisfreaks.lookupDomainAvailability({
33
+ $,
34
+ params: {
35
+ domain: this.domainName,
36
+ format: this.format,
37
+ sug: false,
38
+ },
39
+ });
40
+ $.export("$summary", `Successfully performed domain availability lookup for ${this.domainName}`);
41
+ return response;
42
+ },
43
+ };
@@ -3,8 +3,13 @@ import whoisfreaks from "../../whoisfreaks.app.mjs";
3
3
  export default {
4
4
  key: "whoisfreaks-domain-lookup",
5
5
  name: "Domain Lookup",
6
- description: "Retrieve details about a domain name. [See the documentation](https://whoisfreaks.com/products/whois-api#live_lookup)",
7
- version: "0.0.1",
6
+ description: "Retrieve details about a domain name. [See the documentation](https://whoisfreaks.com/documentation/whois-api)",
7
+ version: "0.0.3",
8
+ annotations: {
9
+ destructiveHint: false,
10
+ openWorldHint: true,
11
+ readOnlyHint: true,
12
+ },
8
13
  type: "action",
9
14
  props: {
10
15
  whoisfreaks,
@@ -0,0 +1,34 @@
1
+ import whoisfreaks from "../../whoisfreaks.app.mjs";
2
+
3
+ export default {
4
+ key: "whoisfreaks-domain-reputation-lookup",
5
+ name: "Domain Reputation Lookup",
6
+ description: "Check the reputation and security status of a domain — including whether it is associated with malware, phishing campaigns, or other malicious activity. Use this action for threat intelligence workflows, email security checks, or domain risk scoring. Returns JSON output. [See the documentation](https://whoisfreaks.com/documentation/domain-reputation-api)",
7
+ version: "0.0.2",
8
+ annotations: {
9
+ destructiveHint: false,
10
+ openWorldHint: true,
11
+ readOnlyHint: true,
12
+ },
13
+ type: "action",
14
+ ai: "optimized",
15
+ props: {
16
+ whoisfreaks,
17
+ domainName: {
18
+ propDefinition: [
19
+ whoisfreaks,
20
+ "domainName",
21
+ ],
22
+ },
23
+ },
24
+ async run({ $ }) {
25
+ const response = await this.whoisfreaks.lookupDomainReputation({
26
+ $,
27
+ params: {
28
+ domainName: this.domainName,
29
+ },
30
+ });
31
+ $.export("$summary", `Successfully fetched domain reputation data for ${this.domainName}`);
32
+ return response;
33
+ },
34
+ };
@@ -0,0 +1,35 @@
1
+ import whoisfreaks from "../../whoisfreaks.app.mjs";
2
+
3
+ export default {
4
+ key: "whoisfreaks-ip-geolocation-lookup",
5
+ name: "IP Geolocation Lookup",
6
+ description:
7
+ "Retrieve geolocation details (country, city, region, ASN, ISP, coordinates) for a single IP address. Supports both IPv4 and IPv6 addresses. Use this action to enrich events with location data, perform fraud detection, or geo-target users. [See the documentation](https://whoisfreaks.com/documentation/ip-geolocation-api#geo-lookup)",
8
+ version: "0.0.2",
9
+ annotations: {
10
+ destructiveHint: false,
11
+ openWorldHint: true,
12
+ readOnlyHint: true,
13
+ },
14
+ type: "action",
15
+ ai: "optimized",
16
+ props: {
17
+ whoisfreaks,
18
+ ip: {
19
+ propDefinition: [
20
+ whoisfreaks,
21
+ "ip",
22
+ ],
23
+ },
24
+ },
25
+ async run({ $ }) {
26
+ const response = await this.whoisfreaks.lookupIpGeolocation({
27
+ $,
28
+ params: {
29
+ ip: this.ip,
30
+ },
31
+ });
32
+ $.export("$summary", `Successfully fetched geolocation data for IP ${this.ip}`);
33
+ return response;
34
+ },
35
+ };
@@ -3,15 +3,21 @@ import whoisfreaks from "../../whoisfreaks.app.mjs";
3
3
  export default {
4
4
  key: "whoisfreaks-ip-lookup",
5
5
  name: "IP Lookup",
6
- description: "Retrieve information about an IP address. [See the documentation](https://whoisfreaks.com/products/whois-api#ip_lookup)",
7
- version: "0.0.1",
6
+ description: "Retrieve information about an IP address. [See the documentation](https://whoisfreaks.com/documentation/ip-whois-api)",
7
+ version: "0.0.3",
8
+ annotations: {
9
+ destructiveHint: false,
10
+ openWorldHint: true,
11
+ readOnlyHint: true,
12
+ },
8
13
  type: "action",
9
14
  props: {
10
15
  whoisfreaks,
11
16
  ip: {
12
- type: "string",
13
- label: "IP",
14
- description: "IPv4 or IPv6 address for the requested whois",
17
+ propDefinition: [
18
+ whoisfreaks,
19
+ "ip",
20
+ ],
15
21
  },
16
22
  format: {
17
23
  propDefinition: [
@@ -0,0 +1,35 @@
1
+ import whoisfreaks from "../../whoisfreaks.app.mjs";
2
+
3
+ export default {
4
+ key: "whoisfreaks-ip-reputation-lookup",
5
+ name: "IP Reputation Lookup",
6
+ description: "Score a single IPv4 or IPv6 address against real-time threat data. Returns a composite threat score (0-100), VPN/proxy/Tor/bot classification, provider names with confidence scores, district-level geolocation, and ASN/ISP details. Use this action for threat intelligence, access control, or fraud prevention workflows. Accepts JSON or XML output. [See the documentation](https://whoisfreaks.com/documentation/ip-security-api#security-lookup)",
7
+ version: "0.0.2",
8
+ annotations: {
9
+ destructiveHint: false,
10
+ openWorldHint: true,
11
+ readOnlyHint: true,
12
+ },
13
+ type: "action",
14
+ ai: "optimized",
15
+ props: {
16
+ whoisfreaks,
17
+ ipAddress: {
18
+ propDefinition: [
19
+ whoisfreaks,
20
+ "ip",
21
+ ],
22
+ },
23
+ },
24
+ async run({ $ }) {
25
+ const response = await this.whoisfreaks.lookupIpReputation({
26
+ $,
27
+ params: {
28
+ ip: this.ipAddress,
29
+ },
30
+ });
31
+ $.export("$summary", `Successfully fetched IP reputation data for ${this.ipAddress}`);
32
+ return response;
33
+ },
34
+ };
35
+
@@ -4,21 +4,29 @@ import { ConfigurationError } from "@pipedream/platform";
4
4
  export default {
5
5
  key: "whoisfreaks-reverse-lookup",
6
6
  name: "Reverse Lookup",
7
- description: "Retrieve details about a domain by keyword, email, registrant name or company. [See the documentation](https://whoisfreaks.com/products/whois-api#reverse_lookup)",
8
- version: "0.0.1",
7
+ description:
8
+ "Retrieve details about a domain by keyword, email, registrant name or company. Must enter one and only one of keyword, email, owner, or company. [See the documentation](https://whoisfreaks.com/documentation/whois-api#reverse-lookup)",
9
+ version: "0.0.3",
10
+ annotations: {
11
+ destructiveHint: false,
12
+ openWorldHint: true,
13
+ readOnlyHint: true,
14
+ },
9
15
  type: "action",
10
16
  props: {
11
17
  whoisfreaks,
12
18
  keyword: {
13
19
  type: "string",
14
20
  label: "Keyword",
15
- description: "Keyword search utilizes case-insensitive Pattern Matching search technique to search in our historical database. For example, `whoisfreaks` matches with any keyword that have the searched pattern like `mywhoisfreaks` and `whoisfreakscom`.",
21
+ description:
22
+ "Keyword search utilizes case-insensitive Pattern Matching search technique to search in our historical database. For example, `whoisfreaks` matches with any keyword that have the searched pattern like `mywhoisfreaks` and `whoisfreakscom`.",
16
23
  optional: true,
17
24
  },
18
25
  email: {
19
26
  type: "string",
20
27
  label: "Email",
21
- description: "Email search uses case-insensitive exact matching technique to search in our historical database. For example, `support@whoisfreaks.com` matches only with `support@whoisfreaks.com`.",
28
+ description:
29
+ "Email search uses case-insensitive exact matching technique to search in our historical database. For example, `support@whoisfreaks.com` matches only with `support@whoisfreaks.com`.",
22
30
  optional: true,
23
31
  },
24
32
  owner: {
@@ -30,7 +38,8 @@ export default {
30
38
  company: {
31
39
  type: "string",
32
40
  label: "Company",
33
- description: "Registrant name or Company search use full-text search technique to search in our historical database. For example, `whoisfreaks` matched with `whoisfreaks`, `whoisfreak`, `whois`, `mywhoisfreaks` and `whoisfreakscom`.",
41
+ description:
42
+ "Registrant name or Company search use full-text search technique to search in our historical database. For example, `whoisfreaks` matched with `whoisfreaks`, `whoisfreak`, `whois`, `mywhoisfreaks` and `whoisfreakscom`.",
34
43
  optional: true,
35
44
  },
36
45
  format: {
@@ -42,31 +51,46 @@ export default {
42
51
  page: {
43
52
  type: "integer",
44
53
  label: "Page",
45
- description: "For getting next or desired page of whois info. Default: `1`",
54
+ description:
55
+ "For getting next or desired page of whois info. Default: `1`",
46
56
  default: 1,
47
57
  optional: true,
48
58
  },
49
59
  },
50
60
  async run({ $ }) {
51
- if ([
52
- this.keyword,
53
- this.email,
54
- this.owner,
55
- this.company,
56
- ].filter((v) => v !== undefined).length !== 1) {
57
- throw new ConfigurationError("Must enter one and only one of `keyword`, `email`, `owner`, or `company`");
61
+ const normalize = (v) =>
62
+ typeof v === "string" && v.trim() === ""
63
+ ? undefined
64
+ : v;
65
+
66
+ const keyword = normalize(this.keyword);
67
+ const email = normalize(this.email);
68
+ const owner = normalize(this.owner);
69
+ const company = normalize(this.company);
70
+
71
+ const activeCount = [
72
+ keyword,
73
+ email,
74
+ owner,
75
+ company,
76
+ ].filter((v) => v !== undefined && v !== null).length;
77
+
78
+ if (activeCount !== 1) {
79
+ throw new ConfigurationError(
80
+ "Must enter one and only one of keyword, email, owner, or company",
81
+ );
58
82
  }
59
83
 
60
84
  const response = await this.whoisfreaks.domainLookup({
61
85
  $,
62
86
  params: {
63
- keyword: this.keyword,
64
- email: this.email,
65
- owner: this.owner,
66
- company: this.company,
87
+ keyword,
88
+ email,
89
+ owner,
90
+ company,
67
91
  whois: "reverse",
68
92
  format: this.format,
69
- page: this.page,
93
+ page: this.page || 1,
70
94
  },
71
95
  });
72
96
 
@@ -0,0 +1,47 @@
1
+ import whoisfreaks from "../../whoisfreaks.app.mjs";
2
+
3
+ export default {
4
+ key: "whoisfreaks-ssl-lookup",
5
+ name: "SSL Lookup",
6
+ description:
7
+ "Retrieve details about a domain's SSL certificate (e.g. google.com). Note that this action accepts JSON or XML format values, always requests the full certificate chain (chain=true), and suppresses the raw OpenSSL response (sslRaw=false) for cleaner outputs. [See the documentation](https://whoisfreaks.com/documentation/ssl-certificate-api)",
8
+ version: "0.0.2",
9
+ annotations: {
10
+ destructiveHint: false,
11
+ openWorldHint: true,
12
+ readOnlyHint: true,
13
+ },
14
+ type: "action",
15
+ ai: "optimized",
16
+ props: {
17
+ whoisfreaks,
18
+ domainName: {
19
+ propDefinition: [
20
+ whoisfreaks,
21
+ "domainName",
22
+ ],
23
+ },
24
+ format: {
25
+ propDefinition: [
26
+ whoisfreaks,
27
+ "format",
28
+ ],
29
+ },
30
+ },
31
+ async run({ $ }) {
32
+ const response = await this.whoisfreaks.lookupSsl({
33
+ $,
34
+ params: {
35
+ domainName: this.domainName,
36
+ format: this.format,
37
+ chain: true,
38
+ sslRaw: false,
39
+ },
40
+ });
41
+ $.export(
42
+ "$summary",
43
+ `Successfully performed SSL lookup for ${this.domainName}`,
44
+ );
45
+ return response;
46
+ },
47
+ };
@@ -0,0 +1,52 @@
1
+ import whoisfreaks from "../../whoisfreaks.app.mjs";
2
+
3
+ export default {
4
+ key: "whoisfreaks-sub-domain-lookup",
5
+ name: "Subdomain Lookup",
6
+ description:
7
+ "Discover subdomains for a given domain using passive DNS data from 6.3B+ indexed hostnames. Returns active, inactive, and historical subdomain records. Use this action for attack surface mapping, security audits, or competitor research. Returns JSON or XML output. [See the documentation](https://whoisfreaks.com/documentation/subdomains-api)",
8
+ version: "0.0.2",
9
+ annotations: {
10
+ destructiveHint: false,
11
+ readOnlyHint: true,
12
+ openWorldHint: true,
13
+ },
14
+ type: "action",
15
+ ai: "optimized",
16
+ props: {
17
+ whoisfreaks,
18
+ domainName: {
19
+ propDefinition: [
20
+ whoisfreaks,
21
+ "domainName",
22
+ ],
23
+ },
24
+ format: {
25
+ propDefinition: [
26
+ whoisfreaks,
27
+ "format",
28
+ ],
29
+ },
30
+ page: {
31
+ type: "integer",
32
+ label: "Page",
33
+ description:
34
+ "For getting next or desired page of whois info. Default: `1`",
35
+ default: 1,
36
+ min: 1,
37
+ optional: true,
38
+ },
39
+ },
40
+ async run({ $ }) {
41
+ const response = await this.whoisfreaks.lookupSubDomain({
42
+ $,
43
+ params: {
44
+ domain: this.domainName,
45
+ format: this.format,
46
+ page: this.page || 1,
47
+ },
48
+ });
49
+ $.export("$summary", `Successfully fetched subdomain data for ${this.domainName}`);
50
+ return response;
51
+ },
52
+ };
@@ -0,0 +1,28 @@
1
+ const splitCommaSeparated = (value) =>
2
+ value.split(",").map((v) => v.trim())
3
+ .filter(Boolean);
4
+
5
+ export const parseObject = (obj) => {
6
+ if (!obj) return undefined;
7
+
8
+ if (Array.isArray(obj)) {
9
+ return obj.flatMap((item) => {
10
+ if (typeof item === "string") {
11
+ try {
12
+ return JSON.parse(item);
13
+ } catch (e) {
14
+ return splitCommaSeparated(item);
15
+ }
16
+ }
17
+ return item;
18
+ });
19
+ }
20
+ if (typeof obj === "string") {
21
+ try {
22
+ return JSON.parse(obj);
23
+ } catch (e) {
24
+ return splitCommaSeparated(obj);
25
+ }
26
+ }
27
+ return obj;
28
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pipedream/whoisfreaks",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Pipedream WhoisFreaks Components",
5
5
  "main": "whoisfreaks.app.mjs",
6
6
  "keywords": [
@@ -13,6 +13,6 @@
13
13
  "access": "public"
14
14
  },
15
15
  "dependencies": {
16
- "@pipedream/platform": "^3.0.3"
16
+ "@pipedream/platform": "^3.1.1"
17
17
  }
18
18
  }
@@ -7,31 +7,60 @@ export default {
7
7
  domainName: {
8
8
  type: "string",
9
9
  label: "Domain Name",
10
- description: "The domain name to lookup",
10
+ description: "The domain name to lookup (e.g. `example.com`)",
11
+ },
12
+ domainNames: {
13
+ type: "string[]",
14
+ label: "Domain Names",
15
+ description: "Domain names to look up (e.g. `example.com`, `google.com`). Add one or more values. Supports up to 100 domains per request.",
16
+ },
17
+ ipAddresses: {
18
+ type: "string[]",
19
+ label: "IP Addresses",
20
+ description: "IP addresses to look up. Must be valid IPv4 or IPv6 addresses (e.g. `8.8.8.8`, `1.1.1.1`). Add one or more values. Supports up to 100 IPs per request.",
21
+ optional: true,
22
+ },
23
+ ip: {
24
+ type: "string",
25
+ label: "IP Address",
26
+ description: "The IP address to look up. Must be a valid IPv4 (e.g. `8.8.8.8`) or IPv6 (e.g. `2001:4860:4860::8888`) address.",
11
27
  },
12
28
  format: {
13
29
  type: "string",
14
30
  label: "Format",
15
- description: "Two formats are available JSON, XML. If you don't specify the 'format' parameter, the default format will be JSON.",
31
+ description:
32
+ "Two formats are available JSON, XML. If you don't specify the 'format' parameter, the default format will be JSON.",
16
33
  options: [
17
34
  "JSON",
18
35
  "XML",
19
36
  ],
37
+ default: "JSON",
20
38
  optional: true,
21
39
  },
22
40
  },
23
41
  methods: {
24
42
  _baseUrl() {
25
- return "https://api.whoisfreaks.com/v1.0";
43
+ return "https://api.whoisfreaks.com";
26
44
  },
27
45
  _makeRequest({
28
- $ = this,
29
- path,
30
- params,
31
- ...opts
46
+ $ = this, path, params, ...opts
47
+ }) {
48
+ return axios($, {
49
+ url: `${this._baseUrl()}${path}`,
50
+ params: {
51
+ ...params,
52
+ apiKey: this.$auth.api_key,
53
+ },
54
+ ...opts,
55
+ });
56
+ },
57
+ _makePostRequest({
58
+ $ = this, path, params, body, ...opts
32
59
  }) {
33
60
  return axios($, {
34
61
  url: `${this._baseUrl()}${path}`,
62
+ method: "POST",
63
+ data: body,
35
64
  params: {
36
65
  ...params,
37
66
  apiKey: this.$auth.api_key,
@@ -41,13 +70,73 @@ export default {
41
70
  },
42
71
  domainLookup(opts = {}) {
43
72
  return this._makeRequest({
44
- path: "/whois",
73
+ path: "/v1.0/whois",
45
74
  ...opts,
46
75
  });
47
76
  },
48
77
  ipLookup(opts = {}) {
49
78
  return this._makeRequest({
50
- path: "/ip-whois",
79
+ path: "/v1.0/ip-whois",
80
+ ...opts,
81
+ });
82
+ },
83
+ lookupDomainAvailability(opts = {}) {
84
+ return this._makeRequest({
85
+ path: "/v1.0/domain/availability",
86
+ ...opts,
87
+ });
88
+ },
89
+ lookupSsl(opts = {}) {
90
+ return this._makeRequest({
91
+ path: "/v1.0/ssl/live",
92
+ ...opts,
93
+ });
94
+ },
95
+ lookupIpGeolocation(opts = {}) {
96
+ return this._makeRequest({
97
+ path: "/v1.0/geolocation",
98
+ ...opts,
99
+ });
100
+ },
101
+ lookupSubDomain(opts = {}) {
102
+ return this._makeRequest({
103
+ path: "/v1.0/subdomains",
104
+ ...opts,
105
+ });
106
+ },
107
+ lookupDomainReputation(opts = {}) {
108
+ return this._makeRequest({
109
+ path: "/v1/domain/security",
110
+ ...opts,
111
+ });
112
+ },
113
+ lookupIpReputation(opts = {}) {
114
+ return this._makeRequest({
115
+ path: "/v1.0/security",
116
+ ...opts,
117
+ });
118
+ },
119
+ lookupBulkWhois(opts = {}) {
120
+ return this._makePostRequest({
121
+ path: "/v2.0/bulkwhois/live",
122
+ ...opts,
123
+ });
124
+ },
125
+ lookupBulkDnsDomain(opts = {}) {
126
+ return this._makePostRequest({
127
+ path: "/v2.0/dns/bulk/live",
128
+ ...opts,
129
+ });
130
+ },
131
+ lookupBulkIpGeolocation(opts = {}) {
132
+ return this._makePostRequest({
133
+ path: "/v1.0/geolocation",
134
+ ...opts,
135
+ });
136
+ },
137
+ lookupBulkIpReputation(opts = {}) {
138
+ return this._makePostRequest({
139
+ path: "/v1.0/security",
51
140
  ...opts,
52
141
  });
53
142
  },