@corsair-dev/zoominfo 0.1.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/LICENSE +191 -0
- package/dist/api.test.d.ts +2 -0
- package/dist/api.test.d.ts.map +1 -0
- package/dist/auth.d.ts +31 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.test.d.ts +2 -0
- package/dist/auth.test.d.ts.map +1 -0
- package/dist/client.d.ts +49 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/endpoints/endpoints.test.d.ts +2 -0
- package/dist/endpoints/endpoints.test.d.ts.map +1 -0
- package/dist/endpoints/enrichments.d.ts +16 -0
- package/dist/endpoints/enrichments.d.ts.map +1 -0
- package/dist/endpoints/index.d.ts +21 -0
- package/dist/endpoints/index.d.ts.map +1 -0
- package/dist/endpoints/input-fields.d.ts +8 -0
- package/dist/endpoints/input-fields.d.ts.map +1 -0
- package/dist/endpoints/searches.d.ts +9 -0
- package/dist/endpoints/searches.d.ts.map +1 -0
- package/dist/endpoints/shared.d.ts +21 -0
- package/dist/endpoints/shared.d.ts.map +1 -0
- package/dist/endpoints/types.d.ts +1769 -0
- package/dist/endpoints/types.d.ts.map +1 -0
- package/dist/error-handlers.d.ts +22 -0
- package/dist/error-handlers.d.ts.map +1 -0
- package/dist/index.d.ts +971 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -0
- package/dist/schema/database.d.ts +122 -0
- package/dist/schema/database.d.ts.map +1 -0
- package/dist/schema/index.d.ts +120 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/tsup.config.d.ts +3 -0
- package/dist/tsup.config.d.ts.map +1 -0
- package/dist/webhooks/index.d.ts +79 -0
- package/dist/webhooks/index.d.ts.map +1 -0
- package/dist/webhooks/subscribe.d.ts +27 -0
- package/dist/webhooks/subscribe.d.ts.map +1 -0
- package/dist/webhooks/subscribe.test.d.ts +2 -0
- package/dist/webhooks/subscribe.test.d.ts.map +1 -0
- package/dist/webhooks/tenant-matcher.d.ts +13 -0
- package/dist/webhooks/tenant-matcher.d.ts.map +1 -0
- package/dist/webhooks/types.d.ts +113 -0
- package/dist/webhooks/types.d.ts.map +1 -0
- package/dist/webhooks/updates.d.ts +4 -0
- package/dist/webhooks/updates.d.ts.map +1 -0
- package/dist/webhooks/webhooks.test.d.ts +2 -0
- package/dist/webhooks/webhooks.test.d.ts.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{AuthMissingError as Tn}from"corsair/core";import{AuthMissingError as mn}from"corsair/core";import{createSign as en}from"crypto";import{ApiError as an,request as rn}from"corsair/http";var k=class extends Error{constructor(r,i){super(r);this.code=i;this.name="ZoominfoAPIError"}},mo="https://api.zoominfo.com",sn=3600*1e3,pn=300*1e3;function uo(n,t,r=Date.now()){if(!n)return!1;let i=typeof t=="number"?t:Number(t??Number.NaN);return Number.isFinite(i)?i-pn>r:!1}function cn(n){let t=n.length;for(;t>0&&n.charCodeAt(t-1)===47;)t--;return n.slice(0,t)}function P(n){return Buffer.from(n).toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function ln({username:n,clientId:t,privateKey:r,now:i=Date.now()}){let s=Math.floor(i/1e3),h={typ:"JWT",alg:"RS256"},u={aud:"enterprise_api",iss:"zoominfo-api-auth-client-nodejs",username:n,client_id:t,iat:s-60,exp:s+300-60},p=`${P(JSON.stringify(h))}.${P(JSON.stringify(u))}`,g=en("RSA-SHA256");return g.update(p),g.end(),`${p}.${P(g.sign(r))}`}async function ho(n,{baseUrl:t=mo,now:r=Date.now()}={}){let i={"Content-Type":"application/json"},s="{}";n.kind==="basic"?s=JSON.stringify({username:n.username,password:n.password}):i.Authorization=`Bearer ${ln({username:n.username,clientId:n.clientId,privateKey:n.privateKey,now:r})}`;let h=await fetch(`${cn(t)}/authenticate`,{method:"POST",headers:i,body:s}),u=await h.text();if(!h.ok)throw new k(`ZoomInfo authentication failed: ${u||h.statusText}`,String(h.status));let p;try{p=JSON.parse(u).jwt}catch{p=void 0}if(!p)throw new k("ZoomInfo authentication returned no JWT in the response body");return{accessToken:p,expiresAt:r+sn}}async function T(n,t,r={}){let{method:i="GET",body:s,query:h,baseUrl:u=mo}=r,p={BASE:u,VERSION:"1.0.0",WITH_CREDENTIALS:!1,CREDENTIALS:"omit",TOKEN:t,HEADERS:{"Content-Type":"application/json"}},g={method:i,url:n,body:i==="GET"||i==="DELETE"?void 0:s,mediaType:"application/json",query:h};try{return await rn(p,g)}catch(f){throw f instanceof an?f:f instanceof Error?new k(f.message):new k("Unknown error")}}var R=new Map;function go(n){let t=n.zoominfo_username;return t?n.zoominfo_client_id&&n.zoominfo_private_key?{kind:"pki",username:t,clientId:n.zoominfo_client_id,privateKey:n.zoominfo_private_key}:n.zoominfo_password?{kind:"basic",username:t,password:n.zoominfo_password}:null:null}async function z(n,{baseUrl:t}={}){let[r,i,s]=await Promise.all([n.keys.get_access_token(),n.keys.get_expires_at(),n.keys.get_integration_credentials()]);if(r&&uo(r,i))return r;let h=go(s);if(!h)throw new mn("zoominfo","oauth_2");let u=R.get(n.tenantId);if(u)return u;let p=(async()=>{let g=await ho(h,{baseUrl:t});try{await n.keys.set_access_token(g.accessToken),await n.keys.set_expires_at(String(g.expiresAt))}catch(f){console.warn(`[corsair:zoominfo] Obtained a JWT but failed to persist it: ${f instanceof Error?f.message:String(f)}`)}return g.accessToken})();R.set(n.tenantId,p);try{return await p}finally{R.delete(n.tenantId)}}import{logEventFromContext as un}from"corsair/core";function dn(n){if(typeof n!="object"||n===null)return{filters:[]};let t=n,i={filters:Object.keys(t).filter(s=>t[s]!==void 0).filter(s=>s!=="rpp"&&s!=="page").sort()};return typeof t.rpp=="number"&&(i.rpp=t.rpp),typeof t.page=="number"&&(i.page=t.page),i}async function d(n,{event:t,path:r,method:i="POST",inputSchema:s,outputSchema:h},u){let p=s.parse(u),g=await T(r,n.key,{method:i,body:i==="POST"?p:void 0}),f=h.parse(g);return await un(n,t,dn(p),"completed"),f}import{z as o}from"zod";var b=o.object({rpp:o.number().int().positive().optional(),page:o.number().int().positive().optional(),sortBy:o.string().optional(),sortOrder:o.enum(["asc","ascending","desc","descending"]).optional().describe("Defaults to desc.")}),O=o.object({companyDescription:o.string().optional(),companyType:o.string().optional(),companyRanking:o.string().optional(),companyStructureIncludedSubUnitTypes:o.string().optional(),subUnitTypes:o.string().optional(),address:o.string().optional(),street:o.string().optional(),state:o.string().optional(),zipCode:o.string().optional(),country:o.string().optional(),continent:o.string().optional(),metroRegion:o.string().optional(),excludedRegions:o.string().optional(),zipCodeRadiusMiles:o.string().optional(),locationSearchType:o.enum(["PersonOrHQ","PersonAndHQ","Person","HQ","PersonThenHQ"]).optional(),hashTagString:o.string().optional(),techAttributeTagList:o.string().optional(),primaryIndustriesOnly:o.boolean().optional(),industryCodes:o.string().optional(),industryKeywords:o.string().optional(),sicCodes:o.string().optional(),naicsCodes:o.string().optional(),revenue:o.string().optional(),revenueMin:o.number().int().optional(),revenueMax:o.number().int().optional(),employeeCount:o.string().optional(),employeeRangeMin:o.string().optional(),employeeRangeMax:o.string().optional(),fundingAmountMin:o.number().int().optional(),fundingAmountMax:o.number().int().optional(),fundingStartDate:o.string().optional(),fundingEndDate:o.string().optional(),oneYearEmployeeGrowthRateMin:o.string().optional(),oneYearEmployeeGrowthRateMax:o.string().optional(),twoYearEmployeeGrowthRateMin:o.string().optional(),twoYearEmployeeGrowthRateMax:o.string().optional(),zoominfoContactsMin:o.string().optional(),zoominfoContactsMax:o.string().optional()}),A=o.object({companyId:o.string().optional(),companyName:o.string().optional(),companyWebsite:o.string().optional(),parentId:o.string().optional(),ultimateParentId:o.string().optional()}),fo=o.object({personId:o.string().optional(),emailAddress:o.string().optional(),hashedEmail:o.string().optional(),fullName:o.string().optional(),firstName:o.string().optional(),middleInitial:o.string().optional(),lastName:o.string().optional(),jobTitle:o.string().optional(),excludeJobTitle:o.string().optional(),managementLevel:o.string().optional(),excludeManagementLevel:o.string().optional(),department:o.string().optional(),jobFunction:o.string().optional(),boardMember:o.enum(["include","exclude","only"]).optional(),hasBeenNotified:o.enum(["include","exclude","only"]).optional(),companyPastOrPresent:o.enum(["present","past","pastAndPresent"]).optional(),excludePartialProfiles:o.boolean().optional(),executivesOnly:o.boolean().optional(),requiredFields:o.string().optional(),contactAccuracyScoreMin:o.string().optional(),contactAccuracyScoreMax:o.string().optional(),lastUpdatedInMonths:o.number().int().optional(),school:o.string().optional(),degree:o.string().optional(),locationCompanyId:o.array(o.string()).optional()}),x=o.looseObject({id:o.number().optional(),name:o.string().optional()});function y(n){return o.looseObject({maxResults:o.number().optional(),totalResults:o.number().optional(),currentPage:o.number().optional(),data:o.array(n)})}function yo(n){return o.looseObject({success:o.boolean().optional(),data:o.looseObject({outputFields:o.array(o.array(o.string())).optional(),result:o.array(o.looseObject({input:o.record(o.string(),o.unknown()).optional(),data:o.array(n)}))})})}var hn=o.looseObject({id:o.number().optional(),name:o.string().optional(),website:o.string().optional(),ticker:o.string().optional(),domainList:o.array(o.string()).optional(),logo:o.string().optional(),revenue:o.number().optional(),employeeCount:o.number().optional(),phone:o.string().optional(),street:o.string().optional(),city:o.string().optional(),state:o.string().optional(),zipCode:o.string().optional(),country:o.string().optional(),companyStatus:o.string().optional()}),gn=o.looseObject({id:o.number().optional(),firstName:o.string().optional(),middleName:o.string().optional(),lastName:o.string().optional(),email:o.string().optional(),phone:o.string().optional(),mobilePhone:o.string().optional(),jobTitle:o.string().optional(),contactAccuracyScore:o.number().optional(),lastUpdatedDate:o.string().optional(),validDate:o.string().optional(),companyId:o.number().optional(),companyName:o.string().optional(),companyWebsite:o.string().optional()}),fn=o.looseObject({fieldName:o.string(),fieldType:o.string().optional(),description:o.string().optional(),accessGranted:o.string().optional()}),S=o.array(fn),F=b.extend(O.shape).extend(A.shape).extend({companyTicker:o.array(o.string()).optional(),certified:o.union([o.literal(0),o.literal(1)]).optional(),excludeDefunctCompanies:o.boolean().optional(),businessModel:o.array(o.enum(["B2C","B2B","B2G"])).optional(),engagementStartDate:o.string().optional(),engagementEndDate:o.string().optional(),engagementType:o.array(o.enum(["email","phone","online meeting"])).optional(),marketingDepartmentBudgetMin:o.number().int().min(0).optional(),marketingDepartmentBudgetMax:o.number().int().min(0).optional(),financeDepartmentBudgetMin:o.number().int().min(0).optional(),financeDepartmentBudgetMax:o.number().int().min(0).optional(),itDepartmentBudgetMin:o.number().int().min(0).optional(),itDepartmentBudgetMax:o.number().int().min(0).optional(),hrDepartmentBudgetMin:o.number().int().min(0).optional(),hrDepartmentBudgetMax:o.number().int().min(0).optional()}),W=y(o.looseObject({id:o.number(),name:o.string().optional()})),j=b.extend(O.shape).extend(A.shape).extend(fo.shape).extend({companyTicker:o.array(o.string()).optional(),exactJobTitle:o.string().optional(),yearsOfExperience:o.string().optional(),phone:o.array(o.string()).optional(),supplementalEmail:o.array(o.string()).optional(),webReferences:o.array(o.string()).optional(),techSkills:o.array(o.string()).optional(),buyingGroup:o.array(o.string()).max(1).optional(),lastUpdatedDateAfter:o.string().optional(),validDateAfter:o.string().optional(),positionStartDateMin:o.string().optional(),positionStartDateMax:o.string().optional(),engagementStartDate:o.string().optional(),engagementEndDate:o.string().optional(),engagementType:o.array(o.enum(["email","phone","online meeting"])).optional()}),U=y(o.looseObject({id:o.number(),firstName:o.string().optional(),middleName:o.string().optional(),lastName:o.string().optional(),validDate:o.string().optional(),lastUpdatedDate:o.string().optional(),jobTitle:o.string().optional(),contactAccuracyScore:o.number().optional(),hasEmail:o.boolean().optional(),hasSupplementalEmail:o.boolean().optional(),hasDirectPhone:o.boolean().optional(),hasMobilePhone:o.boolean().optional(),hasCompanyIndustry:o.boolean().optional(),hasCompanyPhone:o.boolean().optional(),hasCompanyStreet:o.boolean().optional(),hasCompanyState:o.boolean().optional(),hasCompanyZipCode:o.boolean().optional(),hasCompanyCountry:o.boolean().optional(),hasCompanyRevenue:o.boolean().optional(),hasCompanyEmployeeCount:o.boolean().optional(),company:x.optional()})),v=o.enum(["A","B","C","D","E"]),D=b.extend(O.shape).extend({topics:o.array(o.string()).optional(),signalStartDate:o.string().optional(),signalEndDate:o.string().optional(),signalScoreMin:o.number().int().min(60).max(100).optional(),signalScoreMax:o.number().int().min(60).max(100).optional(),audienceStrengthMin:v.optional(),audienceStrengthMax:v.optional(),certified:o.union([o.literal(0),o.literal(1)]).optional(),excludeDefunctCompanies:o.boolean().optional()}),bo=o.looseObject({id:o.string(),category:o.string().optional(),topic:o.string().optional(),signalScore:o.number().optional(),audienceStrength:o.string().optional(),newSignal:o.boolean().optional(),signalDate:o.string().optional(),trend:o.number().optional(),recommendedContacts:o.array(o.looseObject({id:o.number().optional(),firstName:o.string().optional(),lastName:o.string().optional(),jobTitle:o.string().optional(),jobFunction:o.array(o.looseObject({name:o.string().optional(),department:o.string().optional()})).optional()})).optional(),company:x.extend({website:o.string().optional(),hasOtherTopicConsumption:o.boolean().optional()}).optional()}),_=y(bo),M=o.object({rpp:o.number().int().positive().optional(),page:o.number().int().positive().optional(),categories:o.array(o.string()).optional(),pageDateMin:o.string().optional(),pageDateMax:o.string().optional()}),So=o.looseObject({domain:o.string().optional(),title:o.string().optional(),url:o.string().optional(),imageUrl:o.string().optional(),pageDate:o.string().optional(),description:o.string().optional(),categories:o.array(o.string()).optional(),company:o.array(x).optional()}),L=y(So),B=b.extend(O.shape).extend(A.shape).extend(fo.shape).extend({scoopId:o.string().optional(),scoopType:o.string().optional(),scoopTopic:o.string().optional(),description:o.string().optional(),publishedStartDate:o.string().optional(),publishedEndDate:o.string().optional(),updatedSinceCreation:o.boolean().optional(),certified:o.union([o.literal(0),o.literal(1)]).optional(),excludeDefunctCompanies:o.boolean().optional()}),Co=o.looseObject({id:o.number(),publishedDate:o.string().optional(),originalPublishedDate:o.string().optional(),linkText:o.string().optional(),link:o.string().optional(),description:o.string().optional(),updateText:o.string().optional(),topics:o.array(o.unknown()).optional(),types:o.array(o.looseObject({id:o.number().optional(),type:o.string().optional()})).optional(),contacts:o.array(o.unknown()).optional(),company:x.optional()}),H=y(Co),K=o.object({matchCompanyInput:o.array(o.object({companyId:o.union([o.number(),o.string()]).optional(),companyName:o.string().optional(),companyWebsite:o.string().optional(),companyTicker:o.string().optional(),companyPhone:o.string().optional(),companyFax:o.string().optional(),companyStreet:o.string().optional(),companyCity:o.string().optional(),companyState:o.string().optional(),companyZipCode:o.string().optional(),companyCountry:o.string().optional(),ipAddress:o.string().optional()}).refine(n=>Object.values(n).some(t=>t!==void 0),{message:"each matchCompanyInput entry needs one identifier"})).min(1).max(25),outputFields:o.array(o.string()).optional()}),q=yo(hn),G=o.object({matchPersonInput:o.array(o.object({personId:o.union([o.number(),o.string()]).optional(),firstName:o.string().optional(),lastName:o.string().optional(),fullName:o.string().optional(),emailAddress:o.string().optional(),hashedEmail:o.string().optional(),phone:o.string().optional(),jobTitle:o.string().optional(),companyId:o.union([o.number(),o.string()]).optional(),companyName:o.string().optional(),companyWebsite:o.string().optional()}).refine(n=>Object.values(n).some(t=>t!==void 0),{message:"each matchPersonInput entry needs one identifier"})).min(1).max(25),outputFields:o.array(o.string()).optional()}),$=yo(gn),J=b.extend({companyId:o.string().optional(),companyName:o.string().optional(),companyWebsite:o.string().optional(),street:o.string().optional(),city:o.string().optional(),state:o.string().optional(),zipCode:o.string().optional(),country:o.string().optional()}).refine(n=>n.companyId!==void 0||n.companyName!==void 0||n.companyWebsite!==void 0,{message:"companyId, companyName or companyWebsite is required"}),Y=y(o.looseObject({phone:o.string().optional(),fax:o.string().optional(),street:o.string().optional(),city:o.string().optional(),state:o.string().optional(),zipCode:o.string().optional(),country:o.string().optional(),company:x.extend({addressStatus:o.string().optional(),subUnitType:o.string().optional(),locationName:o.string().optional(),locationEmployeeCount:o.number().optional()}).optional()})),Q=b.extend({companyId:o.union([o.number(),o.string()]).optional(),companyName:o.string().optional(),companyWebsite:o.string().optional(),topics:o.array(o.string()).optional(),signalStartDate:o.string().optional(),signalEndDate:o.string().optional(),signalScoreMin:o.number().int().min(60).max(100).optional(),signalScoreMax:o.number().int().min(60).max(100).optional(),audienceStrengthMin:v.optional(),audienceStrengthMax:v.optional()}).refine(n=>n.companyId!==void 0||n.companyName!==void 0||n.companyWebsite!==void 0,{message:"companyId, companyName or companyWebsite is required"}),V=y(bo),X=o.object({companyId:o.union([o.number(),o.string()]).optional(),companyName:o.string().optional(),companyWebsite:o.string().optional(),categories:o.array(o.string()).optional(),url:o.array(o.string()).optional(),pageDateMin:o.string().optional(),pageDateMax:o.string().optional(),limit:o.number().int().positive().optional()}).refine(n=>n.companyId!==void 0||n.companyName!==void 0||n.companyWebsite!==void 0,{message:"companyId, companyName or companyWebsite is required"}),oo=y(So),no=b.extend({companyId:o.union([o.number(),o.string()]).optional(),companyName:o.string().optional(),companyWebsite:o.string().optional(),scoopType:o.string().optional(),scoopTopic:o.string().optional(),department:o.string().optional(),publishedStartDate:o.string().optional(),publishedEndDate:o.string().optional(),updatedSinceCreation:o.boolean().optional()}).refine(n=>n.companyId!==void 0||n.companyName!==void 0||n.companyWebsite!==void 0,{message:"companyId, companyName or companyWebsite is required"}),to=y(Co),eo=b.extend({companyId:o.union([o.number(),o.string()]).optional(),companyName:o.string().optional(),companyWebsite:o.string().optional()}).refine(n=>n.companyId!==void 0||n.companyName!==void 0||n.companyWebsite!==void 0,{message:"companyId, companyName or companyWebsite is required"}),io=y(o.looseObject({tag:o.string().optional(),categoryParent:o.string().optional(),category:o.string().optional(),vendor:o.string().optional(),product:o.string().optional(),attribute:o.string().optional(),website:o.string().optional(),logo:o.string().optional(),domain:o.string().optional(),createdTime:o.string().optional(),modifiedTime:o.string().optional(),description:o.string().optional()})),C=o.object({}),c={searchCompanies:F,searchContacts:j,searchIntent:D,searchNews:M,searchScoops:B,enrichCompany:K,enrichContact:G,enrichIntent:Q,enrichLocation:J,enrichNews:X,enrichScoop:no,enrichTechnology:eo,getCompanySearchInputFields:C,getContactSearchInputFields:C,getIntentSearchInputFields:C,getNewsSearchInputFields:C,getScoopSearchInputFields:C},l={searchCompanies:W,searchContacts:U,searchIntent:_,searchNews:L,searchScoops:H,enrichCompany:q,enrichContact:$,enrichIntent:V,enrichLocation:Y,enrichNews:oo,enrichScoop:to,enrichTechnology:io,getCompanySearchInputFields:S,getContactSearchInputFields:S,getIntentSearchInputFields:S,getNewsSearchInputFields:S,getScoopSearchInputFields:S};var ko=(n,t)=>d(n,{event:"zoominfo.enrichCompany",path:"enrich/company",inputSchema:K,outputSchema:q},t),xo=(n,t)=>d(n,{event:"zoominfo.enrichContact",path:"enrich/contact",inputSchema:G,outputSchema:$},t),Io=(n,t)=>d(n,{event:"zoominfo.enrichIntent",path:"enrich/intent",inputSchema:Q,outputSchema:V},t),Zo=(n,t)=>d(n,{event:"zoominfo.enrichLocation",path:"enrich/location",inputSchema:J,outputSchema:Y},t),wo=(n,t)=>d(n,{event:"zoominfo.enrichNews",path:"enrich/news",inputSchema:X,outputSchema:oo},t),Eo=(n,t)=>d(n,{event:"zoominfo.enrichScoop",path:"enrich/scoop",inputSchema:no,outputSchema:to},t),To=(n,t)=>d(n,{event:"zoominfo.enrichTechnology",path:"enrich/tech",inputSchema:eo,outputSchema:io},t);function I(n,t){return(r,i)=>d(r,{event:t,path:`lookup/inputfields/${n}/search`,method:"GET",inputSchema:C,outputSchema:S},i)}var zo=I("company","zoominfo.getCompanySearchInputFields"),vo=I("contact","zoominfo.getContactSearchInputFields"),Oo=I("intent","zoominfo.getIntentSearchInputFields"),No=I("news","zoominfo.getNewsSearchInputFields"),Po=I("scoop","zoominfo.getScoopSearchInputFields");var Ro=(n,t)=>d(n,{event:"zoominfo.searchCompanies",path:"search/company",inputSchema:F,outputSchema:W},t),Ao=(n,t)=>d(n,{event:"zoominfo.searchContacts",path:"search/contact",inputSchema:j,outputSchema:U},t),Fo=(n,t)=>d(n,{event:"zoominfo.searchIntent",path:"search/intent",inputSchema:D,outputSchema:_},t),Wo=(n,t)=>d(n,{event:"zoominfo.searchNews",path:"search/news",inputSchema:M,outputSchema:L},t),jo=(n,t)=>d(n,{event:"zoominfo.searchScoops",path:"search/scoop",inputSchema:B,outputSchema:H},t);var m={searchCompanies:Ro,searchContacts:Ao,searchIntent:Fo,searchNews:Wo,searchScoops:jo,enrichCompany:ko,enrichContact:xo,enrichIntent:Io,enrichLocation:Zo,enrichNews:wo,enrichScoop:Eo,enrichTechnology:To,getCompanySearchInputFields:zo,getContactSearchInputFields:vo,getIntentSearchInputFields:Oo,getNewsSearchInputFields:No,getScoopSearchInputFields:Po};import{ApiError as ao}from"corsair/http";var yn="zi0001",Uo={RATE_LIMIT_ERROR:{match:n=>{if(n instanceof ao&&n.status===429)return!0;let t=n.message.toLowerCase();return t.includes("rate limit")||t.includes("429")},handler:async n=>({maxRetries:0,headersRetryAfterMs:n instanceof ao?n.retryAfter:void 0})},AUTH_ERROR:{match:n=>{if(n instanceof ao&&n.status===401)return!0;let t=n.message.toLowerCase();return t.includes(yn)||t.includes("unauthorized")||t.includes("authentication failed")||t.includes("invalid bearer token")},handler:async()=>({maxRetries:0})},DEFAULT:{match:()=>!0,handler:async()=>({maxRetries:0})}};import{z as e}from"zod";var Z=e.object({id:e.number().nullable().optional(),name:e.string().nullable().optional()}),Do=e.object({id:e.union([e.string(),e.number()]),name:e.string().nullable().optional(),website:e.string().nullable().optional(),ticker:e.string().nullable().optional(),revenue:e.number().nullable().optional(),employeeCount:e.number().nullable().optional(),numberOfContactsInZoomInfo:e.number().nullable().optional(),phone:e.string().nullable().optional(),street:e.string().nullable().optional(),city:e.string().nullable().optional(),state:e.string().nullable().optional(),zipCode:e.string().nullable().optional(),country:e.string().nullable().optional(),companyStatus:e.string().nullable().optional(),foundedYear:e.union([e.string(),e.number()]).nullable().optional(),logo:e.string().nullable().optional(),socialMediaUrls:e.array(e.unknown()).nullable().optional(),domainList:e.array(e.string()).nullable().optional(),sicCodes:e.array(e.unknown()).nullable().optional(),naicsCodes:e.array(e.unknown()).nullable().optional()}),_o=e.object({id:e.union([e.string(),e.number()]),firstName:e.string().nullable().optional(),middleName:e.string().nullable().optional(),lastName:e.string().nullable().optional(),jobTitle:e.string().nullable().optional(),contactAccuracyScore:e.number().nullable().optional(),hasEmail:e.boolean().nullable().optional(),hasSupplementalEmail:e.boolean().nullable().optional(),hasDirectPhone:e.boolean().nullable().optional(),hasMobilePhone:e.boolean().nullable().optional(),validDate:e.coerce.date().nullable().optional(),lastUpdatedDate:e.coerce.date().nullable().optional(),company:Z.nullable().optional()}),Mo=e.object({id:e.string(),category:e.string().nullable().optional(),topic:e.string().nullable().optional(),signalScore:e.number().nullable().optional(),audienceStrength:e.string().nullable().optional(),newSignal:e.boolean().nullable().optional(),signalDate:e.coerce.date().nullable().optional(),trend:e.number().nullable().optional(),company:Z.nullable().optional()}),Lo=e.object({id:e.string(),url:e.string().nullable().optional(),title:e.string().nullable().optional(),domain:e.string().nullable().optional(),imageUrl:e.string().nullable().optional(),description:e.string().nullable().optional(),pageDate:e.coerce.date().nullable().optional(),categories:e.array(e.string()).nullable().optional(),companies:e.array(Z).nullable().optional()}),Bo=e.object({id:e.union([e.string(),e.number()]),description:e.string().nullable().optional(),link:e.string().nullable().optional(),linkText:e.string().nullable().optional(),updateText:e.string().nullable().optional(),publishedDate:e.coerce.date().nullable().optional(),originalPublishedDate:e.coerce.date().nullable().optional(),topics:e.array(e.unknown()).nullable().optional(),types:e.array(e.unknown()).nullable().optional(),company:Z.nullable().optional()}),Ho=e.object({id:e.string(),vendor:e.string().nullable().optional(),product:e.string().nullable().optional(),category:e.string().nullable().optional(),categoryParent:e.string().nullable().optional(),attribute:e.string().nullable().optional(),website:e.string().nullable().optional(),domain:e.string().nullable().optional(),logo:e.string().nullable().optional(),description:e.string().nullable().optional()}),Ko=e.object({id:e.string(),street:e.string().nullable().optional(),city:e.string().nullable().optional(),state:e.string().nullable().optional(),zipCode:e.string().nullable().optional(),country:e.string().nullable().optional(),phone:e.string().nullable().optional(),fax:e.string().nullable().optional(),addressStatus:e.string().nullable().optional(),subUnitType:e.string().nullable().optional(),locationName:e.string().nullable().optional(),locationEmployeeCount:e.number().nullable().optional(),company:Z.nullable().optional()});var qo={version:"1.0.0",entities:{companies:Do,contacts:_o,intentSignals:Mo,newsArticles:Lo,scoops:Bo,technologies:Ho,locations:Ko}};import{logEventFromContext as Yo}from"corsair/core";import{timingSafeEqual as bn}from"crypto";import{z as a}from"zod";var N="x-zoominfo-token",ro=a.looseObject({id:a.string(),title:a.string().optional(),objectType:a.string(),eventType:a.string()}),Go=a.looseObject({webhookDetails:ro,data:a.array(a.looseObject({id:a.union([a.string(),a.number()])}))}),so=n=>t=>typeof t=="string"&&t.toLowerCase()===n,w=Go.extend({webhookDetails:ro.extend({objectType:a.string().refine(so("contact"))}),data:a.array(a.looseObject({id:a.union([a.string(),a.number()]),firstName:a.string().optional(),lastName:a.string().optional(),email:a.string().optional(),changedAttributes:a.array(a.string()).optional()}))}),E=Go.extend({webhookDetails:ro.extend({objectType:a.string().refine(so("company"))}),data:a.array(a.looseObject({id:a.union([a.string(),a.number()]),name:a.string().optional(),website:a.string().optional(),changedAttributes:a.array(a.string()).optional()}))});function Sn(n){if(typeof n=="string")try{let t=JSON.parse(n);return t!==null&&typeof t=="object"&&!Array.isArray(t)?t:null}catch{return null}return n!==null&&typeof n=="object"&&!Array.isArray(n)?n:null}function po(n){return t=>{let i=Sn(t.body)?.webhookDetails;return typeof i!="object"||i===null?!1:so(n)(i.objectType)}}function Cn(n,t){if(n){for(let[r,i]of Object.entries(n))if(r.toLowerCase()===t){if(typeof i=="string")return i;if(Array.isArray(i)&&typeof i[0]=="string")return i[0]}}}function co(n,t){if(n.hubVerified===!0)return{valid:!0};if(!t)return{valid:!1,error:"No ZoomInfo verification token configured"};let r=Cn(n.headers,N);if(!r)return{valid:!1,error:`Missing ${N} header`};let i=Buffer.from(r),s=Buffer.from(t);return i.length!==s.length||!bn(i,s)?{valid:!1,error:"Verification token mismatch"}:{valid:!0}}var kn=a.looseObject({subscriptionId:a.string().optional(),eventType:a.string().optional(),objectType:a.string().optional(),fullPayload:a.boolean().optional()}),lo=a.looseObject({id:a.string(),title:a.string().optional(),enabled:a.boolean().optional(),targetUrl:a.string(),createdDate:a.string().optional(),verificationToken:a.string().optional(),subscriptions:a.array(kn).optional()}),$o=a.looseObject({webhooks:a.array(lo)}),Jo=a.looseObject({verificationToken:a.string()});var Qo={match:po("contact"),handler:async(n,t)=>{let r=co(t,n.key);if(!r.valid)return{success:!1,statusCode:401,error:r.error??"Signature verification failed"};let i=w.parse(t.payload);return await Yo(n,"zoominfo.webhook.contactUpdate",{webhookId:i.webhookDetails.id,eventType:i.webhookDetails.eventType,recordCount:i.data.length,changedAttributes:[...new Set(i.data.flatMap(s=>s.changedAttributes??[]))].sort()},"completed"),{success:!0,data:i}}},Vo={match:po("company"),handler:async(n,t)=>{let r=co(t,n.key);if(!r.valid)return{success:!1,statusCode:401,error:r.error??"Signature verification failed"};let i=E.parse(t.payload);return await Yo(n,"zoominfo.webhook.companyUpdate",{webhookId:i.webhookDetails.id,eventType:i.webhookDetails.eventType,recordCount:i.data.length,changedAttributes:[...new Set(i.data.flatMap(s=>s.changedAttributes??[]))].sort()},"completed"),{success:!0,data:i}}};import{asRecord as xn,firstString as In,readBodyRecord as Zn}from"corsair/core";function Xo(n){let t=Zn(n);if(!t)return null;let r=In([xn(t.webhookDetails)?.id]);return r?{linkType:"tenant_external_id",externalId:r}:null}var on={contactUpdate:Qo,companyUpdate:Vo};var nn=[{eventType:"Update",objectType:"Contact",fullPayload:!0},{eventType:"Update",objectType:"Company",fullPayload:!0}],wn="Corsair";async function tn(n,t){let r=n.options?.baseUrl,i=await z(n,{baseUrl:r}),s=(g,f)=>T(g,i,{...f,baseUrl:r}),u=await En(s,t.webhookUrl)??lo.parse(await s("webhooks",{method:"POST",body:{title:wn,enabled:!1,targetUrl:t.webhookUrl,subscriptions:nn}})),p=u.verificationToken??Jo.parse(await s(`webhooks/${u.id}/token`,{method:"POST"})).verificationToken;return await n.keys.set_webhook_signature(p),await s(`webhooks/${u.id}`,{method:"PUT",body:{enabled:!0,subscriptions:nn}}),{webhookLink:{linkType:"tenant_external_id",externalId:u.id},webhookSecret:p}}async function En(n,t){let r=$o.safeParse(await n("webhooks",{method:"GET"}));return r.success?r.data.webhooks.find(i=>i.targetUrl===t)??null:null}var zn={zoominfo:{searchCompanies:m.searchCompanies,searchContacts:m.searchContacts,searchIntent:m.searchIntent,searchNews:m.searchNews,searchScoops:m.searchScoops,enrichCompany:m.enrichCompany,enrichContact:m.enrichContact,enrichIntent:m.enrichIntent,enrichLocation:m.enrichLocation,enrichNews:m.enrichNews,enrichScoop:m.enrichScoop,enrichTechnology:m.enrichTechnology,getCompanySearchInputFields:m.getCompanySearchInputFields,getContactSearchInputFields:m.getContactSearchInputFields,getIntentSearchInputFields:m.getIntentSearchInputFields,getNewsSearchInputFields:m.getNewsSearchInputFields,getScoopSearchInputFields:m.getScoopSearchInputFields}},vn={zoominfo:on},On={"zoominfo.searchCompanies":{input:c.searchCompanies,output:l.searchCompanies},"zoominfo.searchContacts":{input:c.searchContacts,output:l.searchContacts},"zoominfo.searchIntent":{input:c.searchIntent,output:l.searchIntent},"zoominfo.searchNews":{input:c.searchNews,output:l.searchNews},"zoominfo.searchScoops":{input:c.searchScoops,output:l.searchScoops},"zoominfo.enrichCompany":{input:c.enrichCompany,output:l.enrichCompany},"zoominfo.enrichContact":{input:c.enrichContact,output:l.enrichContact},"zoominfo.enrichIntent":{input:c.enrichIntent,output:l.enrichIntent},"zoominfo.enrichLocation":{input:c.enrichLocation,output:l.enrichLocation},"zoominfo.enrichNews":{input:c.enrichNews,output:l.enrichNews},"zoominfo.enrichScoop":{input:c.enrichScoop,output:l.enrichScoop},"zoominfo.enrichTechnology":{input:c.enrichTechnology,output:l.enrichTechnology},"zoominfo.getCompanySearchInputFields":{input:c.getCompanySearchInputFields,output:l.getCompanySearchInputFields},"zoominfo.getContactSearchInputFields":{input:c.getContactSearchInputFields,output:l.getContactSearchInputFields},"zoominfo.getIntentSearchInputFields":{input:c.getIntentSearchInputFields,output:l.getIntentSearchInputFields},"zoominfo.getNewsSearchInputFields":{input:c.getNewsSearchInputFields,output:l.getNewsSearchInputFields},"zoominfo.getScoopSearchInputFields":{input:c.getScoopSearchInputFields,output:l.getScoopSearchInputFields}},Nn={"zoominfo.contactUpdate":{description:"A contact you have enriched was updated",payload:w,response:w},"zoominfo.companyUpdate":{description:"A company you have enriched was updated",payload:E,response:E}},Pn="oauth_2",Rn={"zoominfo.searchCompanies":{riskLevel:"read",description:"Search companies by firmographics, location and technology"},"zoominfo.searchContacts":{riskLevel:"read",description:"Search contacts by name, title, seniority and company"},"zoominfo.searchIntent":{riskLevel:"read",description:"Search companies showing buying intent on given topics"},"zoominfo.searchNews":{riskLevel:"read",description:"Search news articles by category and publish date"},"zoominfo.searchScoops":{riskLevel:"read",description:"Search Scoops, ZoomInfo research notes about companies"},"zoominfo.enrichCompany":{riskLevel:"read",description:"Enrich up to 25 companies from partial identifiers"},"zoominfo.enrichContact":{riskLevel:"read",description:"Enrich up to 25 contacts from partial identifiers"},"zoominfo.enrichIntent":{riskLevel:"read",description:"Fetch intent signals for one company"},"zoominfo.enrichLocation":{riskLevel:"read",description:"Fetch every known office location for one company"},"zoominfo.enrichNews":{riskLevel:"read",description:"Fetch news articles for one company"},"zoominfo.enrichScoop":{riskLevel:"read",description:"Fetch Scoops for one company"},"zoominfo.enrichTechnology":{riskLevel:"read",description:"Fetch the technologies detected in one company's stack"},"zoominfo.getCompanySearchInputFields":{riskLevel:"read",description:"List the company search filters this account may use"},"zoominfo.getContactSearchInputFields":{riskLevel:"read",description:"List the contact search filters this account may use"},"zoominfo.getIntentSearchInputFields":{riskLevel:"read",description:"List the intent search filters this account may use"},"zoominfo.getNewsSearchInputFields":{riskLevel:"read",description:"List the news search filters this account may use"},"zoominfo.getScoopSearchInputFields":{riskLevel:"read",description:"List the scoop search filters this account may use"}},An={oauth_2:{integration:["zoominfo_username","zoominfo_password","zoominfo_client_id","zoominfo_private_key"],account:["tenant_external_id"]}};function Dt(n={}){let t={...n,authType:n.authType??Pn};return{id:"zoominfo",authConfig:An,schema:qo,options:t,hooks:t.hooks,webhookHooks:t.webhookHooks,endpoints:zn,webhooks:vn,endpointMeta:Rn,endpointSchemas:On,webhookSchemas:Nn,pluginWebhookMatcher:r=>Object.keys(r.headers??{}).some(i=>i.toLowerCase()===N),pluginTenantWebhookMatcher:Xo,oauthWebhookTenantLinkResolver:void 0,subscribe:tn,errorHandlers:{...Uo,...t.errorHandlers},keyBuilder:async(r,i)=>{if(i==="webhook"){if(t.webhookSecret)return t.webhookSecret;let s=await r.keys.get_webhook_signature();if(!s)throw new Tn("zoominfo","webhook_signature");return s}return t.key?t.key:z(r,{baseUrl:t.baseUrl})}}}export{go as selectZoominfoCredentials,Dt as zoominfo,An as zoominfoAuthConfig,On as zoominfoEndpointSchemas};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const ZoominfoCompany: z.ZodObject<{
|
|
3
|
+
id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
4
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
5
|
+
website: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
6
|
+
ticker: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
7
|
+
revenue: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
8
|
+
employeeCount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
9
|
+
numberOfContactsInZoomInfo: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
10
|
+
phone: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
11
|
+
street: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
12
|
+
city: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
13
|
+
state: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
14
|
+
zipCode: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
15
|
+
country: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
16
|
+
companyStatus: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
17
|
+
foundedYear: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>>;
|
|
18
|
+
logo: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
19
|
+
socialMediaUrls: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodUnknown>>>;
|
|
20
|
+
domainList: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
21
|
+
sicCodes: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodUnknown>>>;
|
|
22
|
+
naicsCodes: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodUnknown>>>;
|
|
23
|
+
}, z.core.$strip>;
|
|
24
|
+
export type ZoominfoCompany = z.infer<typeof ZoominfoCompany>;
|
|
25
|
+
export declare const ZoominfoContact: z.ZodObject<{
|
|
26
|
+
id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
27
|
+
firstName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
28
|
+
middleName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
29
|
+
lastName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
30
|
+
jobTitle: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
31
|
+
contactAccuracyScore: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
32
|
+
hasEmail: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
33
|
+
hasSupplementalEmail: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
34
|
+
hasDirectPhone: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
35
|
+
hasMobilePhone: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
36
|
+
validDate: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
37
|
+
lastUpdatedDate: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
38
|
+
company: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
39
|
+
id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
40
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
41
|
+
}, z.core.$strip>>>;
|
|
42
|
+
}, z.core.$strip>;
|
|
43
|
+
export type ZoominfoContact = z.infer<typeof ZoominfoContact>;
|
|
44
|
+
export declare const ZoominfoIntentSignal: z.ZodObject<{
|
|
45
|
+
id: z.ZodString;
|
|
46
|
+
category: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
47
|
+
topic: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
48
|
+
signalScore: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
49
|
+
audienceStrength: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
50
|
+
newSignal: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
51
|
+
signalDate: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
52
|
+
trend: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
53
|
+
company: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
54
|
+
id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
55
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
56
|
+
}, z.core.$strip>>>;
|
|
57
|
+
}, z.core.$strip>;
|
|
58
|
+
export type ZoominfoIntentSignal = z.infer<typeof ZoominfoIntentSignal>;
|
|
59
|
+
export declare const ZoominfoNewsArticle: z.ZodObject<{
|
|
60
|
+
id: z.ZodString;
|
|
61
|
+
url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
62
|
+
title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
63
|
+
domain: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
64
|
+
imageUrl: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
65
|
+
description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
66
|
+
pageDate: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
67
|
+
categories: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodString>>>;
|
|
68
|
+
companies: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodObject<{
|
|
69
|
+
id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
70
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
71
|
+
}, z.core.$strip>>>>;
|
|
72
|
+
}, z.core.$strip>;
|
|
73
|
+
export type ZoominfoNewsArticle = z.infer<typeof ZoominfoNewsArticle>;
|
|
74
|
+
export declare const ZoominfoScoop: z.ZodObject<{
|
|
75
|
+
id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
76
|
+
description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
77
|
+
link: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
78
|
+
linkText: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
79
|
+
updateText: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
80
|
+
publishedDate: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
81
|
+
originalPublishedDate: z.ZodOptional<z.ZodNullable<z.ZodCoercedDate<unknown>>>;
|
|
82
|
+
topics: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodUnknown>>>;
|
|
83
|
+
types: z.ZodOptional<z.ZodNullable<z.ZodArray<z.ZodUnknown>>>;
|
|
84
|
+
company: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
85
|
+
id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
86
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
87
|
+
}, z.core.$strip>>>;
|
|
88
|
+
}, z.core.$strip>;
|
|
89
|
+
export type ZoominfoScoop = z.infer<typeof ZoominfoScoop>;
|
|
90
|
+
export declare const ZoominfoTechnology: z.ZodObject<{
|
|
91
|
+
id: z.ZodString;
|
|
92
|
+
vendor: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
93
|
+
product: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
94
|
+
category: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
95
|
+
categoryParent: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
96
|
+
attribute: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
97
|
+
website: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
98
|
+
domain: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
99
|
+
logo: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
100
|
+
description: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
101
|
+
}, z.core.$strip>;
|
|
102
|
+
export type ZoominfoTechnology = z.infer<typeof ZoominfoTechnology>;
|
|
103
|
+
export declare const ZoominfoLocation: z.ZodObject<{
|
|
104
|
+
id: z.ZodString;
|
|
105
|
+
street: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
106
|
+
city: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
107
|
+
state: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
108
|
+
zipCode: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
109
|
+
country: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
110
|
+
phone: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
111
|
+
fax: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
112
|
+
addressStatus: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
113
|
+
subUnitType: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
114
|
+
locationName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
115
|
+
locationEmployeeCount: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
116
|
+
company: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
117
|
+
id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
118
|
+
name: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
119
|
+
}, z.core.$strip>>>;
|
|
120
|
+
}, z.core.$strip>;
|
|
121
|
+
export type ZoominfoLocation = z.infer<typeof ZoominfoLocation>;
|
|
122
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../schema/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;iBAuB1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;iBAgB1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;iBAa/B,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;iBAY9B,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEtE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;iBAYxB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE1D,eAAO,MAAM,kBAAkB;;;;;;;;;;;iBAa7B,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEpE,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;iBAe3B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
export declare const ZoominfoSchema: {
|
|
2
|
+
readonly version: "1.0.0";
|
|
3
|
+
readonly entities: {
|
|
4
|
+
readonly companies: import("zod").ZodObject<{
|
|
5
|
+
id: import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>;
|
|
6
|
+
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
7
|
+
website: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
8
|
+
ticker: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
9
|
+
revenue: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
10
|
+
employeeCount: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
11
|
+
numberOfContactsInZoomInfo: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
12
|
+
phone: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
13
|
+
street: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
14
|
+
city: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
15
|
+
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
16
|
+
zipCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
17
|
+
country: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
18
|
+
companyStatus: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
19
|
+
foundedYear: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>>>;
|
|
20
|
+
logo: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
21
|
+
socialMediaUrls: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodUnknown>>>;
|
|
22
|
+
domainList: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodString>>>;
|
|
23
|
+
sicCodes: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodUnknown>>>;
|
|
24
|
+
naicsCodes: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodUnknown>>>;
|
|
25
|
+
}, import("zod/v4/core").$strip>;
|
|
26
|
+
readonly contacts: import("zod").ZodObject<{
|
|
27
|
+
id: import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>;
|
|
28
|
+
firstName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
29
|
+
middleName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
30
|
+
lastName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
31
|
+
jobTitle: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
32
|
+
contactAccuracyScore: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
33
|
+
hasEmail: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
|
|
34
|
+
hasSupplementalEmail: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
|
|
35
|
+
hasDirectPhone: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
|
|
36
|
+
hasMobilePhone: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
|
|
37
|
+
validDate: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodCoercedDate<unknown>>>;
|
|
38
|
+
lastUpdatedDate: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodCoercedDate<unknown>>>;
|
|
39
|
+
company: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
|
|
40
|
+
id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
41
|
+
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
42
|
+
}, import("zod/v4/core").$strip>>>;
|
|
43
|
+
}, import("zod/v4/core").$strip>;
|
|
44
|
+
readonly intentSignals: import("zod").ZodObject<{
|
|
45
|
+
id: import("zod").ZodString;
|
|
46
|
+
category: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
47
|
+
topic: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
48
|
+
signalScore: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
49
|
+
audienceStrength: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
50
|
+
newSignal: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodBoolean>>;
|
|
51
|
+
signalDate: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodCoercedDate<unknown>>>;
|
|
52
|
+
trend: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
53
|
+
company: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
|
|
54
|
+
id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
55
|
+
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
56
|
+
}, import("zod/v4/core").$strip>>>;
|
|
57
|
+
}, import("zod/v4/core").$strip>;
|
|
58
|
+
readonly newsArticles: import("zod").ZodObject<{
|
|
59
|
+
id: import("zod").ZodString;
|
|
60
|
+
url: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
61
|
+
title: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
62
|
+
domain: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
63
|
+
imageUrl: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
64
|
+
description: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
65
|
+
pageDate: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodCoercedDate<unknown>>>;
|
|
66
|
+
categories: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodString>>>;
|
|
67
|
+
companies: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodObject<{
|
|
68
|
+
id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
69
|
+
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
70
|
+
}, import("zod/v4/core").$strip>>>>;
|
|
71
|
+
}, import("zod/v4/core").$strip>;
|
|
72
|
+
readonly scoops: import("zod").ZodObject<{
|
|
73
|
+
id: import("zod").ZodUnion<readonly [import("zod").ZodString, import("zod").ZodNumber]>;
|
|
74
|
+
description: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
75
|
+
link: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
76
|
+
linkText: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
77
|
+
updateText: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
78
|
+
publishedDate: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodCoercedDate<unknown>>>;
|
|
79
|
+
originalPublishedDate: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodCoercedDate<unknown>>>;
|
|
80
|
+
topics: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodUnknown>>>;
|
|
81
|
+
types: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodArray<import("zod").ZodUnknown>>>;
|
|
82
|
+
company: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
|
|
83
|
+
id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
84
|
+
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
85
|
+
}, import("zod/v4/core").$strip>>>;
|
|
86
|
+
}, import("zod/v4/core").$strip>;
|
|
87
|
+
readonly technologies: import("zod").ZodObject<{
|
|
88
|
+
id: import("zod").ZodString;
|
|
89
|
+
vendor: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
90
|
+
product: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
91
|
+
category: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
92
|
+
categoryParent: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
93
|
+
attribute: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
94
|
+
website: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
95
|
+
domain: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
96
|
+
logo: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
97
|
+
description: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
98
|
+
}, import("zod/v4/core").$strip>;
|
|
99
|
+
readonly locations: import("zod").ZodObject<{
|
|
100
|
+
id: import("zod").ZodString;
|
|
101
|
+
street: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
102
|
+
city: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
103
|
+
state: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
104
|
+
zipCode: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
105
|
+
country: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
106
|
+
phone: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
107
|
+
fax: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
108
|
+
addressStatus: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
109
|
+
subUnitType: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
110
|
+
locationName: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
111
|
+
locationEmployeeCount: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
112
|
+
company: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodObject<{
|
|
113
|
+
id: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodNumber>>;
|
|
114
|
+
name: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
|
|
115
|
+
}, import("zod/v4/core").$strip>>>;
|
|
116
|
+
}, import("zod/v4/core").$strip>;
|
|
117
|
+
};
|
|
118
|
+
};
|
|
119
|
+
export * from './database';
|
|
120
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../schema/index.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWjB,CAAC;AAEX,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
declare const _default: import("tsup").Options | import("tsup").Options[] | ((overrideOptions: import("tsup").Options) => import("tsup").Options | import("tsup").Options[] | Promise<import("tsup").Options | import("tsup").Options[]>);
|
|
2
|
+
export default _default;
|
|
3
|
+
//# sourceMappingURL=tsup.config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsup.config.d.ts","sourceRoot":"","sources":["../tsup.config.ts"],"names":[],"mappings":";AAEA,wBAYG"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export declare const ZoominfoWebhookHandlers: {
|
|
2
|
+
contactUpdate: {
|
|
3
|
+
match: import("corsair/core").CorsairWebhookMatcher;
|
|
4
|
+
handler: import("corsair/core").CorsairWebhookHandler<import("..").ZoominfoContext, {
|
|
5
|
+
[x: string]: unknown;
|
|
6
|
+
webhookDetails: {
|
|
7
|
+
[x: string]: unknown;
|
|
8
|
+
id: string;
|
|
9
|
+
eventType: string;
|
|
10
|
+
objectType: string;
|
|
11
|
+
title?: string | undefined;
|
|
12
|
+
};
|
|
13
|
+
data: {
|
|
14
|
+
[x: string]: unknown;
|
|
15
|
+
id: string | number;
|
|
16
|
+
firstName?: string | undefined;
|
|
17
|
+
lastName?: string | undefined;
|
|
18
|
+
email?: string | undefined;
|
|
19
|
+
changedAttributes?: string[] | undefined;
|
|
20
|
+
}[];
|
|
21
|
+
}, {
|
|
22
|
+
[x: string]: unknown;
|
|
23
|
+
webhookDetails: {
|
|
24
|
+
[x: string]: unknown;
|
|
25
|
+
id: string;
|
|
26
|
+
eventType: string;
|
|
27
|
+
objectType: string;
|
|
28
|
+
title?: string | undefined;
|
|
29
|
+
};
|
|
30
|
+
data: {
|
|
31
|
+
[x: string]: unknown;
|
|
32
|
+
id: string | number;
|
|
33
|
+
firstName?: string | undefined;
|
|
34
|
+
lastName?: string | undefined;
|
|
35
|
+
email?: string | undefined;
|
|
36
|
+
changedAttributes?: string[] | undefined;
|
|
37
|
+
}[];
|
|
38
|
+
}>;
|
|
39
|
+
};
|
|
40
|
+
companyUpdate: {
|
|
41
|
+
match: import("corsair/core").CorsairWebhookMatcher;
|
|
42
|
+
handler: import("corsair/core").CorsairWebhookHandler<import("..").ZoominfoContext, {
|
|
43
|
+
[x: string]: unknown;
|
|
44
|
+
webhookDetails: {
|
|
45
|
+
[x: string]: unknown;
|
|
46
|
+
id: string;
|
|
47
|
+
eventType: string;
|
|
48
|
+
objectType: string;
|
|
49
|
+
title?: string | undefined;
|
|
50
|
+
};
|
|
51
|
+
data: {
|
|
52
|
+
[x: string]: unknown;
|
|
53
|
+
id: string | number;
|
|
54
|
+
name?: string | undefined;
|
|
55
|
+
website?: string | undefined;
|
|
56
|
+
changedAttributes?: string[] | undefined;
|
|
57
|
+
}[];
|
|
58
|
+
}, {
|
|
59
|
+
[x: string]: unknown;
|
|
60
|
+
webhookDetails: {
|
|
61
|
+
[x: string]: unknown;
|
|
62
|
+
id: string;
|
|
63
|
+
eventType: string;
|
|
64
|
+
objectType: string;
|
|
65
|
+
title?: string | undefined;
|
|
66
|
+
};
|
|
67
|
+
data: {
|
|
68
|
+
[x: string]: unknown;
|
|
69
|
+
id: string | number;
|
|
70
|
+
name?: string | undefined;
|
|
71
|
+
website?: string | undefined;
|
|
72
|
+
changedAttributes?: string[] | undefined;
|
|
73
|
+
}[];
|
|
74
|
+
}>;
|
|
75
|
+
};
|
|
76
|
+
};
|
|
77
|
+
export * from './tenant-matcher';
|
|
78
|
+
export * from './types';
|
|
79
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../webhooks/index.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGnC,CAAC;AAEF,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { CorsairPluginSubscribeResult } from 'corsair/core';
|
|
2
|
+
import type { ZoominfoAuthContext } from '../auth';
|
|
3
|
+
/**
|
|
4
|
+
* ctx is the account context `keyBuilder` receives, plus the webhook-signature
|
|
5
|
+
* setter used to persist the verification token.
|
|
6
|
+
*/
|
|
7
|
+
export type ZoominfoSubscribeContext = ZoominfoAuthContext & {
|
|
8
|
+
keys: {
|
|
9
|
+
set_webhook_signature: (value: string) => Promise<unknown>;
|
|
10
|
+
};
|
|
11
|
+
options?: {
|
|
12
|
+
baseUrl?: string;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Arms the ZoomInfo webhook for this account and hands Hub the two values it
|
|
17
|
+
* needs: the webhook id inbound deliveries are routed on, and the verification
|
|
18
|
+
* token they are checked against.
|
|
19
|
+
*
|
|
20
|
+
* Follows the order ZoomInfo's Monitoring API docs recommend — create disabled,
|
|
21
|
+
* confirm the target URL is reachable, then enable — so a webhook is never live
|
|
22
|
+
* before the token that guards it has been stored.
|
|
23
|
+
*/
|
|
24
|
+
export declare function zoominfoSubscribe(ctx: ZoominfoSubscribeContext, input: {
|
|
25
|
+
webhookUrl: string;
|
|
26
|
+
}): Promise<CorsairPluginSubscribeResult | null>;
|
|
27
|
+
//# sourceMappingURL=subscribe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscribe.d.ts","sourceRoot":"","sources":["../../webhooks/subscribe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAUnD;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG,mBAAmB,GAAG;IAC5D,IAAI,EAAE;QAAE,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC;IACrE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/B,CAAC;AAeF;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACtC,GAAG,EAAE,wBAAwB,EAC7B,KAAK,EAAE;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,GAC3B,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAkD9C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subscribe.test.d.ts","sourceRoot":"","sources":["../../webhooks/subscribe.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { RawWebhookRequest, WebhookTenantMatch } from 'corsair/core';
|
|
2
|
+
/**
|
|
3
|
+
* ZoomInfo deliveries identify themselves by the webhook's own id, which the
|
|
4
|
+
* Monitoring API assigns at creation time and repeats in every payload. It is
|
|
5
|
+
* the only stable per-tenant value in the request, so it is what accounts are
|
|
6
|
+
* linked on.
|
|
7
|
+
*
|
|
8
|
+
* `subscribe` is what puts that id on the account: it creates the webhook via
|
|
9
|
+
* POST /webhooks at connect time and returns the id as the account's
|
|
10
|
+
* `tenant_external_id`. ZoomInfo has no OAuth callback to derive it from.
|
|
11
|
+
*/
|
|
12
|
+
export declare function matchZoominfoTenantWebhook(request: RawWebhookRequest): WebhookTenantMatch | null;
|
|
13
|
+
//# sourceMappingURL=tenant-matcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-matcher.d.ts","sourceRoot":"","sources":["../../webhooks/tenant-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAG1E;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACzC,OAAO,EAAE,iBAAiB,GACxB,kBAAkB,GAAG,IAAI,CAQ3B"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import type { CorsairWebhookMatcher, WebhookRequest } from 'corsair/core';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
/**
|
|
4
|
+
* ZoomInfo's Monitoring API sends the webhook's verification token in the
|
|
5
|
+
* x-zoominfo-token header. It is a shared secret rather than a signature over
|
|
6
|
+
* the body, so verification is an equality check on the token itself.
|
|
7
|
+
*/
|
|
8
|
+
export declare const ZOOMINFO_TOKEN_HEADER = "x-zoominfo-token";
|
|
9
|
+
/** Contact and Company are the only object types; Update is the only event. */
|
|
10
|
+
export declare const ZoominfoWebhookDetailsSchema: z.ZodObject<{
|
|
11
|
+
id: z.ZodString;
|
|
12
|
+
title: z.ZodOptional<z.ZodString>;
|
|
13
|
+
objectType: z.ZodString;
|
|
14
|
+
eventType: z.ZodString;
|
|
15
|
+
}, z.core.$loose>;
|
|
16
|
+
export declare const ZoominfoWebhookPayloadSchema: z.ZodObject<{
|
|
17
|
+
webhookDetails: z.ZodObject<{
|
|
18
|
+
id: z.ZodString;
|
|
19
|
+
title: z.ZodOptional<z.ZodString>;
|
|
20
|
+
objectType: z.ZodString;
|
|
21
|
+
eventType: z.ZodString;
|
|
22
|
+
}, z.core.$loose>;
|
|
23
|
+
data: z.ZodArray<z.ZodObject<{
|
|
24
|
+
id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
25
|
+
}, z.core.$loose>>;
|
|
26
|
+
}, z.core.$loose>;
|
|
27
|
+
export type ZoominfoWebhookPayload = z.infer<typeof ZoominfoWebhookPayloadSchema>;
|
|
28
|
+
export declare const ContactUpdateEventSchema: z.ZodObject<{
|
|
29
|
+
webhookDetails: z.ZodObject<{
|
|
30
|
+
id: z.ZodString;
|
|
31
|
+
title: z.ZodOptional<z.ZodString>;
|
|
32
|
+
eventType: z.ZodString;
|
|
33
|
+
objectType: z.ZodString;
|
|
34
|
+
}, z.core.$loose>;
|
|
35
|
+
data: z.ZodArray<z.ZodObject<{
|
|
36
|
+
id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
37
|
+
firstName: z.ZodOptional<z.ZodString>;
|
|
38
|
+
lastName: z.ZodOptional<z.ZodString>;
|
|
39
|
+
email: z.ZodOptional<z.ZodString>;
|
|
40
|
+
changedAttributes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
41
|
+
}, z.core.$loose>>;
|
|
42
|
+
}, z.core.$loose>;
|
|
43
|
+
export declare const CompanyUpdateEventSchema: z.ZodObject<{
|
|
44
|
+
webhookDetails: z.ZodObject<{
|
|
45
|
+
id: z.ZodString;
|
|
46
|
+
title: z.ZodOptional<z.ZodString>;
|
|
47
|
+
eventType: z.ZodString;
|
|
48
|
+
objectType: z.ZodString;
|
|
49
|
+
}, z.core.$loose>;
|
|
50
|
+
data: z.ZodArray<z.ZodObject<{
|
|
51
|
+
id: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
|
|
52
|
+
name: z.ZodOptional<z.ZodString>;
|
|
53
|
+
website: z.ZodOptional<z.ZodString>;
|
|
54
|
+
changedAttributes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
55
|
+
}, z.core.$loose>>;
|
|
56
|
+
}, z.core.$loose>;
|
|
57
|
+
export type ContactUpdateEvent = z.infer<typeof ContactUpdateEventSchema>;
|
|
58
|
+
export type CompanyUpdateEvent = z.infer<typeof CompanyUpdateEventSchema>;
|
|
59
|
+
export type ZoominfoWebhookOutputs = {
|
|
60
|
+
contactUpdate: ContactUpdateEvent;
|
|
61
|
+
companyUpdate: CompanyUpdateEvent;
|
|
62
|
+
};
|
|
63
|
+
/** Routes a delivery by its objectType, which is the only discriminator. */
|
|
64
|
+
export declare function createZoominfoMatch(objectType: 'contact' | 'company'): CorsairWebhookMatcher;
|
|
65
|
+
/**
|
|
66
|
+
* Fails closed: without a configured token there is nothing to check against,
|
|
67
|
+
* so the delivery is rejected rather than trusted.
|
|
68
|
+
*/
|
|
69
|
+
export declare function verifyZoominfoWebhookSignature(request: WebhookRequest<ZoominfoWebhookPayload>, secret?: string): {
|
|
70
|
+
valid: boolean;
|
|
71
|
+
error?: string;
|
|
72
|
+
};
|
|
73
|
+
export declare const ZoominfoWebhookSubscriptionSchema: z.ZodObject<{
|
|
74
|
+
subscriptionId: z.ZodOptional<z.ZodString>;
|
|
75
|
+
eventType: z.ZodOptional<z.ZodString>;
|
|
76
|
+
objectType: z.ZodOptional<z.ZodString>;
|
|
77
|
+
fullPayload: z.ZodOptional<z.ZodBoolean>;
|
|
78
|
+
}, z.core.$loose>;
|
|
79
|
+
export declare const ZoominfoWebhookRecordSchema: z.ZodObject<{
|
|
80
|
+
id: z.ZodString;
|
|
81
|
+
title: z.ZodOptional<z.ZodString>;
|
|
82
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
83
|
+
targetUrl: z.ZodString;
|
|
84
|
+
createdDate: z.ZodOptional<z.ZodString>;
|
|
85
|
+
verificationToken: z.ZodOptional<z.ZodString>;
|
|
86
|
+
subscriptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
87
|
+
subscriptionId: z.ZodOptional<z.ZodString>;
|
|
88
|
+
eventType: z.ZodOptional<z.ZodString>;
|
|
89
|
+
objectType: z.ZodOptional<z.ZodString>;
|
|
90
|
+
fullPayload: z.ZodOptional<z.ZodBoolean>;
|
|
91
|
+
}, z.core.$loose>>>;
|
|
92
|
+
}, z.core.$loose>;
|
|
93
|
+
export type ZoominfoWebhookRecord = z.infer<typeof ZoominfoWebhookRecordSchema>;
|
|
94
|
+
export declare const ZoominfoWebhookListSchema: z.ZodObject<{
|
|
95
|
+
webhooks: z.ZodArray<z.ZodObject<{
|
|
96
|
+
id: z.ZodString;
|
|
97
|
+
title: z.ZodOptional<z.ZodString>;
|
|
98
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
99
|
+
targetUrl: z.ZodString;
|
|
100
|
+
createdDate: z.ZodOptional<z.ZodString>;
|
|
101
|
+
verificationToken: z.ZodOptional<z.ZodString>;
|
|
102
|
+
subscriptions: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
103
|
+
subscriptionId: z.ZodOptional<z.ZodString>;
|
|
104
|
+
eventType: z.ZodOptional<z.ZodString>;
|
|
105
|
+
objectType: z.ZodOptional<z.ZodString>;
|
|
106
|
+
fullPayload: z.ZodOptional<z.ZodBoolean>;
|
|
107
|
+
}, z.core.$loose>>>;
|
|
108
|
+
}, z.core.$loose>>;
|
|
109
|
+
}, z.core.$loose>;
|
|
110
|
+
export declare const ZoominfoWebhookTokenSchema: z.ZodObject<{
|
|
111
|
+
verificationToken: z.ZodString;
|
|
112
|
+
}, z.core.$loose>;
|
|
113
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../webhooks/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,qBAAqB,EAErB,cAAc,EACd,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAExD,+EAA+E;AAC/E,eAAO,MAAM,4BAA4B;;;;;iBAKvC,CAAC;AAEH,eAAO,MAAM,4BAA4B;;;;;;;;;;iBAIvC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAC3C,OAAO,4BAA4B,CACnC,CAAC;AAKF,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;iBAgBnC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;iBAYnC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,MAAM,MAAM,sBAAsB,GAAG;IACpC,aAAa,EAAE,kBAAkB,CAAC;IAClC,aAAa,EAAE,kBAAkB,CAAC;CAClC,CAAC;AAoBF,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAClC,UAAU,EAAE,SAAS,GAAG,SAAS,GAC/B,qBAAqB,CASvB;AAeD;;;GAGG;AACH,wBAAgB,8BAA8B,CAC7C,OAAO,EAAE,cAAc,CAAC,sBAAsB,CAAC,EAC/C,MAAM,CAAC,EAAE,MAAM,GACb;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CA0BpC;AAMD,eAAO,MAAM,iCAAiC;;;;;iBAK5C,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;iBAUtC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;iBAEpC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;iBAErC,CAAC"}
|