feat: add Hunter.io integration (closes #14)#71
Open
jackulau wants to merge 1 commit into
Open
Conversation
Add Hunter.io email finder and verifier integration (issue wespreadjam#14): - hunterDomainSearchNode: search emails by domain with filters - hunterEmailFinderNode: find email for person at domain - hunterEmailVerifierNode: verify email deliverability - hunterCredential: API key auth via query parameter - 47 tests covering all operations, errors, and edge cases Spec: tasks/hunter-io-integration/spec.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds the Hunter.io integration to
@jam-nodes/nodeswith three operations for email discovery and verification, plus an API key credential definition. Follows the establisheddefineNode()pattern used by existing integrations (Airtable, Slack, Apollo).Operations
hunterDomainSearchNode— searches all email addresses associated with a domain. Supports optional filters forlimit(1-100),type(personal/generic),seniority(junior/senior/executive), anddepartment(sales/marketing/hr/it/finance/executive). CallsGET https://api.hunter.io/v2/domain-search.hunterEmailFinderNode— finds the email address of a specific person at a domain given their first and last name. Returns email, confidence score, position, and company. CallsGET https://api.hunter.io/v2/email-finder.hunterEmailVerifierNode— verifies the deliverability of an email address. Returns status, score, and 8 boolean verification fields (regexp, gibberish, disposable, webmail, mxRecords, smtpServer, smtpCheck, acceptAll). CallsGET https://api.hunter.io/v2/email-verifier.Design
?api_key=...), usingdefineApiKeyCredentialwithauthenticate.type: 'query'URLSearchParamsfor all query string construction (handles URL-encoding of special characters in names likeO'Brien)first_name→firstName,mx_records→mxRecords,extracted_on→extractedOn)z.enum()validation on constrained input fields (type, seniority, department) to catch invalid values before calling the API{ success: false, error }) consistent with other integrations — never lets HTTP failures propagate silentlyCloses #14
Files Changed
New files (7):
packages/nodes/src/integrations/hunter/credentials.ts—hunterCredentialdefinition with query-param auth andtestRequestpointing to/accountpackages/nodes/src/integrations/hunter/schemas.ts— Zod input/output schemas and inferred types for all 3 operationspackages/nodes/src/integrations/hunter/hunter-domain-search.ts— domain search node implementation with full email/source camelCase mappingpackages/nodes/src/integrations/hunter/hunter-email-finder.ts— email finder node implementationpackages/nodes/src/integrations/hunter/hunter-email-verifier.ts— email verifier node implementation with all 10 fields mappedpackages/nodes/src/integrations/hunter/index.ts— barrel export for all nodes, schemas, types, and credentialpackages/nodes/src/integrations/hunter/__tests__/hunter.test.ts— 47 tests (credentials, schemas, all 3 nodes, integration flow)Modified files (3):
packages/core/src/types/node.ts— addedhunter?: { apiKey: string }to theNodeCredentialsinterfacepackages/nodes/src/integrations/index.ts— re-exports Hunter nodes, schemas, types, and credential from the integrations barrelpackages/nodes/src/index.ts— adds Hunter exports to the main package index and includes the 3 nodes in thebuiltInNodesarrayAcceptance Criteria
Test Plan