@graph8/sdk 0.251.0 → 0.260.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -2
- package/dist/cli.js +216 -0
- package/dist/index.d.mts +104 -7
- package/dist/index.d.ts +104 -7
- package/dist/index.js +44 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +44 -3
- package/dist/index.mjs.map +1 -1
- package/dist/react.d.mts +102 -7
- package/dist/react.d.ts +102 -7
- package/dist/react.js +62 -11
- package/dist/react.js.map +1 -1
- package/dist/react.mjs +53 -12
- package/dist/react.mjs.map +1 -1
- package/dist/types/README.md +7 -0
- package/dist/types/agency.d.ts +20 -0
- package/dist/types/agentSetup.d.ts +57 -0
- package/dist/types/api.d.ts +127 -0
- package/dist/types/appClient.d.ts +99 -0
- package/dist/types/appPlatform.d.ts +269 -0
- package/dist/types/appTokens.d.ts +125 -0
- package/dist/types/apps.d.ts +130 -0
- package/dist/types/audiences.d.ts +88 -0
- package/dist/types/calendar.d.ts +55 -0
- package/dist/types/campaigns.d.ts +61 -0
- package/dist/types/chat.d.ts +35 -0
- package/dist/types/cli.d.ts +14 -0
- package/dist/types/companies.d.ts +123 -0
- package/dist/types/contacts.d.ts +200 -0
- package/dist/types/copilot.d.ts +31 -0
- package/dist/types/core.d.ts +1052 -0
- package/dist/types/deals.d.ts +215 -0
- package/dist/types/enrich.d.ts +51 -0
- package/dist/types/fields.d.ts +84 -0
- package/dist/types/forms.d.ts +16 -0
- package/dist/types/http.d.ts +141 -0
- package/dist/types/inbox.d.ts +123 -0
- package/dist/types/index.d.ts +63 -0
- package/dist/types/intent.d.ts +196 -0
- package/dist/types/lists.d.ts +44 -0
- package/dist/types/mailboxes.d.ts +240 -0
- package/dist/types/marketplace.d.ts +62 -0
- package/dist/types/meetings.d.ts +70 -0
- package/dist/types/newsletter.d.ts +212 -0
- package/dist/types/notes.d.ts +57 -0
- package/dist/types/objects.d.ts +281 -0
- package/dist/types/pipelines.d.ts +135 -0
- package/dist/types/quotes.d.ts +143 -0
- package/dist/types/react.d.ts +978 -0
- package/dist/types/search.d.ts +99 -0
- package/dist/types/sequences.d.ts +255 -0
- package/dist/types/signals.d.ts +28 -0
- package/dist/types/skills.d.ts +176 -0
- package/dist/types/snippet.d.ts +24 -0
- package/dist/types/studio.d.ts +161 -0
- package/dist/types/tasks.d.ts +101 -0
- package/dist/types/types.d.ts +45 -0
- package/dist/types/utils.d.ts +21 -0
- package/dist/types/version.d.ts +10 -0
- package/dist/types/visitors.d.ts +29 -0
- package/dist/types/voice.d.ts +304 -0
- package/dist/types/webhooks.d.ts +71 -0
- package/dist/types/workflows.d.ts +229 -0
- package/docs/agents.md +748 -0
- package/docs/api/README.md +165 -0
- package/docs/api/accounts.d.ts +396 -0
- package/docs/api/accounts.md +644 -0
- package/docs/api/adCampaigns.d.ts +707 -0
- package/docs/api/adCampaigns.md +1091 -0
- package/docs/api/adCreatives.d.ts +996 -0
- package/docs/api/adCreatives.md +1708 -0
- package/docs/api/agency.d.ts +556 -0
- package/docs/api/agency.md +845 -0
- package/docs/api/agent.d.ts +330 -0
- package/docs/api/agent.md +514 -0
- package/docs/api/agents.d.ts +1622 -0
- package/docs/api/agents.md +2860 -0
- package/docs/api/aiInbox.d.ts +1984 -0
- package/docs/api/aiInbox.md +3490 -0
- package/docs/api/analytics.d.ts +1273 -0
- package/docs/api/analytics.md +2095 -0
- package/docs/api/apiKeys.d.ts +252 -0
- package/docs/api/apiKeys.md +318 -0
- package/docs/api/appDeployments.d.ts +236 -0
- package/docs/api/appDeployments.md +471 -0
- package/docs/api/appDomains.d.ts +171 -0
- package/docs/api/appDomains.md +281 -0
- package/docs/api/appLogs.d.ts +120 -0
- package/docs/api/appLogs.md +159 -0
- package/docs/api/appObjects.d.ts +415 -0
- package/docs/api/appObjects.md +568 -0
- package/docs/api/appPages.d.ts +557 -0
- package/docs/api/appPages.md +796 -0
- package/docs/api/appPlatformTokens.d.ts +123 -0
- package/docs/api/appPlatformTokens.md +172 -0
- package/docs/api/appointments.d.ts +2361 -0
- package/docs/api/appointments.md +3917 -0
- package/docs/api/apps.d.ts +822 -0
- package/docs/api/apps.md +1342 -0
- package/docs/api/assertUpsert.d.ts +286 -0
- package/docs/api/assertUpsert.md +370 -0
- package/docs/api/audienceSyncs.d.ts +259 -0
- package/docs/api/audienceSyncs.md +395 -0
- package/docs/api/brandKit.d.ts +686 -0
- package/docs/api/brandKit.md +1133 -0
- package/docs/api/bugReports.d.ts +181 -0
- package/docs/api/bugReports.md +268 -0
- package/docs/api/by-path.md +3260 -0
- package/docs/api/calendarInvites.d.ts +117 -0
- package/docs/api/calendarInvites.md +148 -0
- package/docs/api/campaignWorkflows.d.ts +152 -0
- package/docs/api/campaignWorkflows.md +200 -0
- package/docs/api/campaigns.d.ts +721 -0
- package/docs/api/campaigns.md +1236 -0
- package/docs/api/channels.d.ts +171 -0
- package/docs/api/channels.md +235 -0
- package/docs/api/cliCampaigns.d.ts +205 -0
- package/docs/api/cliCampaigns.md +256 -0
- package/docs/api/cliPipelines.d.ts +324 -0
- package/docs/api/cliPipelines.md +562 -0
- package/docs/api/clickHouse.d.ts +115 -0
- package/docs/api/clickHouse.md +138 -0
- package/docs/api/companies.d.ts +1636 -0
- package/docs/api/companies.md +2211 -0
- package/docs/api/companyIntelligence.d.ts +299 -0
- package/docs/api/companyIntelligence.md +488 -0
- package/docs/api/contacts.d.ts +2173 -0
- package/docs/api/contacts.md +3143 -0
- package/docs/api/content.d.ts +968 -0
- package/docs/api/content.md +1667 -0
- package/docs/api/contentGridSkills.d.ts +177 -0
- package/docs/api/contentGridSkills.md +271 -0
- package/docs/api/copilot.d.ts +1017 -0
- package/docs/api/copilot.md +1765 -0
- package/docs/api/crmSyncs.d.ts +215 -0
- package/docs/api/crmSyncs.md +301 -0
- package/docs/api/customerSuccess.d.ts +491 -0
- package/docs/api/customerSuccess.md +776 -0
- package/docs/api/deals.d.ts +1696 -0
- package/docs/api/deals.md +2432 -0
- package/docs/api/deliverability.d.ts +418 -0
- package/docs/api/deliverability.md +677 -0
- package/docs/api/desk.d.ts +1765 -0
- package/docs/api/desk.md +3007 -0
- package/docs/api/dialer.d.ts +1185 -0
- package/docs/api/dialer.md +2166 -0
- package/docs/api/dialerAnalytics.d.ts +187 -0
- package/docs/api/dialerAnalytics.md +257 -0
- package/docs/api/documents.d.ts +895 -0
- package/docs/api/documents.md +1440 -0
- package/docs/api/duplicates.d.ts +195 -0
- package/docs/api/duplicates.md +315 -0
- package/docs/api/eSign.d.ts +38 -0
- package/docs/api/eSign.md +54 -0
- package/docs/api/eSignature.d.ts +242 -0
- package/docs/api/eSignature.md +341 -0
- package/docs/api/enrichment.d.ts +3207 -0
- package/docs/api/enrichment.md +5225 -0
- package/docs/api/events.d.ts +115 -0
- package/docs/api/events.md +105 -0
- package/docs/api/fields.d.ts +482 -0
- package/docs/api/fields.md +566 -0
- package/docs/api/forms.d.ts +1012 -0
- package/docs/api/forms.md +1542 -0
- package/docs/api/gtmCampaigns.d.ts +662 -0
- package/docs/api/gtmCampaigns.md +1044 -0
- package/docs/api/gtmContext.d.ts +1187 -0
- package/docs/api/gtmContext.md +2112 -0
- package/docs/api/gtmDeliverability.d.ts +60 -0
- package/docs/api/gtmDeliverability.md +63 -0
- package/docs/api/gtmKnowledgeBase.d.ts +76 -0
- package/docs/api/gtmKnowledgeBase.md +91 -0
- package/docs/api/gtmLaunchHelpers.d.ts +123 -0
- package/docs/api/gtmLaunchHelpers.md +148 -0
- package/docs/api/gtmLibrary.d.ts +448 -0
- package/docs/api/gtmLibrary.md +780 -0
- package/docs/api/health.d.ts +39 -0
- package/docs/api/health.md +58 -0
- package/docs/api/imageLibrary.d.ts +341 -0
- package/docs/api/imageLibrary.md +569 -0
- package/docs/api/imports.d.ts +157 -0
- package/docs/api/imports.md +174 -0
- package/docs/api/inbox.d.ts +709 -0
- package/docs/api/inbox.md +1067 -0
- package/docs/api/install.d.ts +213 -0
- package/docs/api/install.md +317 -0
- package/docs/api/installedApps.d.ts +131 -0
- package/docs/api/installedApps.md +241 -0
- package/docs/api/integrationStatus.d.ts +142 -0
- package/docs/api/integrationStatus.md +205 -0
- package/docs/api/integrations.d.ts +2327 -0
- package/docs/api/integrations.md +3791 -0
- package/docs/api/intent.d.ts +482 -0
- package/docs/api/intent.md +858 -0
- package/docs/api/knowledge.d.ts +501 -0
- package/docs/api/knowledge.md +843 -0
- package/docs/api/knowledgeBase.d.ts +84 -0
- package/docs/api/knowledgeBase.md +96 -0
- package/docs/api/landingPages.d.ts +1411 -0
- package/docs/api/landingPages.md +2488 -0
- package/docs/api/leads.d.ts +133 -0
- package/docs/api/leads.md +180 -0
- package/docs/api/library.d.ts +217 -0
- package/docs/api/library.md +338 -0
- package/docs/api/linkedIn.d.ts +227 -0
- package/docs/api/linkedIn.md +289 -0
- package/docs/api/linkedInOutreach.d.ts +727 -0
- package/docs/api/linkedInOutreach.md +990 -0
- package/docs/api/lists.d.ts +1106 -0
- package/docs/api/lists.md +1609 -0
- package/docs/api/logs.d.ts +71 -0
- package/docs/api/logs.md +70 -0
- package/docs/api/mailboxes.d.ts +1050 -0
- package/docs/api/mailboxes.md +1690 -0
- package/docs/api/marketingIntelligence.d.ts +256 -0
- package/docs/api/marketingIntelligence.md +454 -0
- package/docs/api/marketplace.d.ts +3173 -0
- package/docs/api/marketplace.md +5953 -0
- package/docs/api/mcp.d.ts +69 -0
- package/docs/api/mcp.md +69 -0
- package/docs/api/me.d.ts +54 -0
- package/docs/api/me.md +56 -0
- package/docs/api/meetings.d.ts +539 -0
- package/docs/api/meetings.md +747 -0
- package/docs/api/newsletter.d.ts +1613 -0
- package/docs/api/newsletter.md +2746 -0
- package/docs/api/notes.d.ts +517 -0
- package/docs/api/notes.md +888 -0
- package/docs/api/notifications.d.ts +94 -0
- package/docs/api/notifications.md +105 -0
- package/docs/api/objects.d.ts +621 -0
- package/docs/api/objects.md +1098 -0
- package/docs/api/openSearch.d.ts +234 -0
- package/docs/api/openSearch.md +297 -0
- package/docs/api/ops.d.ts +299 -0
- package/docs/api/ops.md +339 -0
- package/docs/api/orgGovernance.d.ts +393 -0
- package/docs/api/orgGovernance.md +623 -0
- package/docs/api/orgVideos.d.ts +184 -0
- package/docs/api/orgVideos.md +252 -0
- package/docs/api/organizationSettings.d.ts +626 -0
- package/docs/api/organizationSettings.md +911 -0
- package/docs/api/phoneNumbers.d.ts +484 -0
- package/docs/api/phoneNumbers.md +777 -0
- package/docs/api/profile.d.ts +329 -0
- package/docs/api/profile.md +540 -0
- package/docs/api/programmaticPages.d.ts +400 -0
- package/docs/api/programmaticPages.md +626 -0
- package/docs/api/providerDomains.d.ts +866 -0
- package/docs/api/providerDomains.md +1446 -0
- package/docs/api/providerUsage.d.ts +129 -0
- package/docs/api/providerUsage.md +186 -0
- package/docs/api/public.d.ts +69 -0
- package/docs/api/public.md +78 -0
- package/docs/api/publicCopilot.d.ts +67 -0
- package/docs/api/publicCopilot.md +80 -0
- package/docs/api/publicSignals.d.ts +66 -0
- package/docs/api/publicSignals.md +71 -0
- package/docs/api/publicVisitors.d.ts +97 -0
- package/docs/api/publicVisitors.md +118 -0
- package/docs/api/quotes.d.ts +1564 -0
- package/docs/api/quotes.md +2553 -0
- package/docs/api/radar.d.ts +808 -0
- package/docs/api/radar.md +1431 -0
- package/docs/api/radarReports.d.ts +208 -0
- package/docs/api/radarReports.md +306 -0
- package/docs/api/recordRoles.d.ts +143 -0
- package/docs/api/recordRoles.md +175 -0
- package/docs/api/repos.d.ts +146 -0
- package/docs/api/repos.md +211 -0
- package/docs/api/research.d.ts +295 -0
- package/docs/api/research.md +534 -0
- package/docs/api/revenue.d.ts +402 -0
- package/docs/api/revenue.md +608 -0
- package/docs/api/revenueAnalytics.d.ts +147 -0
- package/docs/api/revenueAnalytics.md +212 -0
- package/docs/api/revenueLifecycle.d.ts +207 -0
- package/docs/api/revenueLifecycle.md +274 -0
- package/docs/api/revenueRecords.d.ts +372 -0
- package/docs/api/revenueRecords.md +563 -0
- package/docs/api/roles.d.ts +431 -0
- package/docs/api/roles.md +812 -0
- package/docs/api/salesCoach.d.ts +877 -0
- package/docs/api/salesCoach.md +1540 -0
- package/docs/api/sandbox.d.ts +210 -0
- package/docs/api/sandbox.md +380 -0
- package/docs/api/scans.d.ts +104 -0
- package/docs/api/scans.md +136 -0
- package/docs/api/scheduleBuy.d.ts +293 -0
- package/docs/api/scheduleBuy.md +431 -0
- package/docs/api/scraping.d.ts +266 -0
- package/docs/api/scraping.md +383 -0
- package/docs/api/sdrAnalytics.d.ts +138 -0
- package/docs/api/sdrAnalytics.md +246 -0
- package/docs/api/search.d.ts +598 -0
- package/docs/api/search.md +866 -0
- package/docs/api/seo.d.ts +447 -0
- package/docs/api/seo.md +660 -0
- package/docs/api/sequenceLifecycle.d.ts +439 -0
- package/docs/api/sequenceLifecycle.md +513 -0
- package/docs/api/sequences.d.ts +1936 -0
- package/docs/api/sequences.md +3232 -0
- package/docs/api/settings.d.ts +448 -0
- package/docs/api/settings.md +731 -0
- package/docs/api/signals.d.ts +1441 -0
- package/docs/api/signals.md +2526 -0
- package/docs/api/signatures.d.ts +719 -0
- package/docs/api/signatures.md +1247 -0
- package/docs/api/skills.d.ts +230 -0
- package/docs/api/skills.md +466 -0
- package/docs/api/snippet.d.ts +85 -0
- package/docs/api/snippet.md +106 -0
- package/docs/api/socialPublishing.d.ts +824 -0
- package/docs/api/socialPublishing.md +1245 -0
- package/docs/api/studioDocuments.d.ts +244 -0
- package/docs/api/studioDocuments.md +348 -0
- package/docs/api/support.d.ts +90 -0
- package/docs/api/support.md +76 -0
- package/docs/api/suppressions.d.ts +241 -0
- package/docs/api/suppressions.md +343 -0
- package/docs/api/surveys.d.ts +847 -0
- package/docs/api/surveys.md +1223 -0
- package/docs/api/tasks.d.ts +813 -0
- package/docs/api/tasks.md +1344 -0
- package/docs/api/teamMembers.d.ts +668 -0
- package/docs/api/teamMembers.md +1040 -0
- package/docs/api/teams.d.ts +784 -0
- package/docs/api/teams.md +1395 -0
- package/docs/api/usage.d.ts +277 -0
- package/docs/api/usage.md +389 -0
- package/docs/api/visitors.d.ts +690 -0
- package/docs/api/visitors.md +1075 -0
- package/docs/api/voice.d.ts +4661 -0
- package/docs/api/voice.md +7905 -0
- package/docs/api/webAnalytics.d.ts +964 -0
- package/docs/api/webAnalytics.md +1452 -0
- package/docs/api/webChat.d.ts +1704 -0
- package/docs/api/webChat.md +2048 -0
- package/docs/api/webhooks.d.ts +251 -0
- package/docs/api/webhooks.md +386 -0
- package/docs/api/websiteEditor.d.ts +324 -0
- package/docs/api/websiteEditor.md +517 -0
- package/docs/api/work.d.ts +2298 -0
- package/docs/api/work.md +3096 -0
- package/docs/api/workbench.d.ts +2962 -0
- package/docs/api/workbench.md +4884 -0
- package/docs/api/workflows.d.ts +1218 -0
- package/docs/api/workflows.md +2302 -0
- package/docs/sdk-clients.md +4339 -0
- package/package.json +10 -3
|
@@ -0,0 +1,2173 @@
|
|
|
1
|
+
/* Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. */
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Types for `g8.api.contacts` (Contacts): 70 operations.
|
|
5
|
+
*
|
|
6
|
+
* For reading. In code, import from the package instead:
|
|
7
|
+
* import type { ApiInput, ApiOutput, G8Contract } from "@graph8/sdk";
|
|
8
|
+
* type In = ApiInput<"assign_contact_owner_contacts_assign_owner_post">;
|
|
9
|
+
*
|
|
10
|
+
* Reference with examples: contacts.md
|
|
11
|
+
*/
|
|
12
|
+
/* eslint-disable */
|
|
13
|
+
|
|
14
|
+
/** `g8.api.contacts.<member>` -> the operationId it calls. */
|
|
15
|
+
export interface ContactsMembers {
|
|
16
|
+
assignContactOwner: "assign_contact_owner_contacts_assign_owner_post";
|
|
17
|
+
assignContactTags: "assign_contact_tags_contacts_tags_assign_post";
|
|
18
|
+
batchContactRelated: "batch_contact_related_contacts_related_post";
|
|
19
|
+
bulkGetContacts: "bulk_get_contacts_contacts_bulk_get_post";
|
|
20
|
+
bulkUpdateContacts: "bulk_update_contacts_contacts_bulk_update_post";
|
|
21
|
+
cancelRecordWorkflowExecution: "cancel_record_workflow_execution_contacts_workflow_executions__execution_id__cancel_post";
|
|
22
|
+
createContactColumn: "create_contact_column_contacts_columns_create_post";
|
|
23
|
+
createContactTag: "create_contact_tag_contacts_tags_post";
|
|
24
|
+
createContacts: "create_contacts_contacts_post";
|
|
25
|
+
decideRecordWorkflowExecution: "decide_record_workflow_execution_contacts_workflow_executions__execution_id__approve_post";
|
|
26
|
+
deleteContact: "delete_contact_contacts__contact_id__delete";
|
|
27
|
+
deleteContactColumn: "delete_contact_column_contacts_columns__column_id__delete";
|
|
28
|
+
deleteContactDocument: "delete_contact_document_contacts__contact_id__documents__document_id__delete";
|
|
29
|
+
deleteContactTag: "delete_contact_tag_contacts_tags__tag_id__delete";
|
|
30
|
+
fetchContacts: "fetch_contacts_contacts_fetch_post";
|
|
31
|
+
generateAllContactDocuments: "generate_all_contact_documents_contacts__contact_id__documents_generate_all_post";
|
|
32
|
+
generateContactDocument: "generate_contact_document_contacts__contact_id__documents_types__doc_type__generate_post";
|
|
33
|
+
getActivityFeed: "get_activity_feed_activity_feed_get";
|
|
34
|
+
getContact: "get_contact_contacts__contact_id__get";
|
|
35
|
+
getContactAnalysis: "get_contact_analysis_contacts__contact_id__analysis_get";
|
|
36
|
+
getContactDashboard: "get_contact_dashboard_contacts__contact_id__dashboard_get";
|
|
37
|
+
getContactDashboardStats: "get_contact_dashboard_stats_contacts_dashboard_stats_get";
|
|
38
|
+
getContactDetail: "get_contact_detail_contacts__contact_id__detail_get";
|
|
39
|
+
getContactDocument: "get_contact_document_contacts__contact_id__documents_types__doc_type__get";
|
|
40
|
+
getContactEngagementSummary: "get_contact_engagement_summary_contacts__contact_id__engagement_summary_get";
|
|
41
|
+
getContactFormFields: "get_contact_form_fields_contacts_form_fields_get";
|
|
42
|
+
getContactGenerationStatus: "get_contact_generation_status_contacts__contact_id__documents_generation_status_get";
|
|
43
|
+
getContactLists: "get_contact_lists_contacts__contact_id__lists_get";
|
|
44
|
+
getContactMeetings: "get_contact_meetings_contacts__contact_id__meetings_get";
|
|
45
|
+
getContactNextBestStep: "get_contact_next_best_step_contacts__contact_id__next_best_step_get";
|
|
46
|
+
getContactProfilePictures: "get_contact_profile_pictures_contacts_profile_pictures_post";
|
|
47
|
+
getContactRowDetail: "get_contact_row_detail_contacts_row_detail__record_id__get";
|
|
48
|
+
getContactSequences: "get_contact_sequences_contacts__contact_id__sequences_get";
|
|
49
|
+
getContactSignals: "get_contact_signals_contacts__contact_id__signals_get";
|
|
50
|
+
getContactSitesVisited: "get_contact_sites_visited_contacts__contact_id__sites_visited_get";
|
|
51
|
+
getContactTagIds: "get_contact_tag_ids_contacts__contact_id__tags_get";
|
|
52
|
+
getDuplicateSettings: "get_duplicate_settings_duplicates_settings_get";
|
|
53
|
+
getRecordColumnValues: "get_record_column_values_contacts_column_values_post";
|
|
54
|
+
listBaseColumns: "list_base_columns_contacts_base_columns_get";
|
|
55
|
+
listColumnNames: "list_column_names_contacts_column_names_get";
|
|
56
|
+
listContactColumnDefinitions: "list_contact_column_definitions_contacts_column_definitions_get";
|
|
57
|
+
listContactColumns: "list_contact_columns_contacts_columns_get";
|
|
58
|
+
listContactDocuments: "list_contact_documents_contacts__contact_id__documents_get";
|
|
59
|
+
listContactTags: "list_contact_tags_contacts_tags_get";
|
|
60
|
+
listContacts: "list_contacts_contacts_get";
|
|
61
|
+
listCustomColumnDefinitions: "list_custom_column_definitions_contacts_custom_column_definitions_get";
|
|
62
|
+
listDuplicateDetectionRuns: "list_duplicate_detection_runs_duplicates_detection_runs_get";
|
|
63
|
+
listRecordWorkflowExecutions: "list_record_workflow_executions_contacts_workflow_executions_get";
|
|
64
|
+
listSearchableFields: "list_searchable_fields_contacts_searchable_fields_get";
|
|
65
|
+
mergeContact: "merge_contact_contacts__contact_id__merge_post";
|
|
66
|
+
mergeContactTags: "merge_contact_tags_contacts_tags_merge_post";
|
|
67
|
+
mergeFilteredContacts: "merge_filtered_contacts_contacts_merge_filtered_post";
|
|
68
|
+
pauseRecordWorkflowExecution: "pause_record_workflow_execution_contacts_workflow_executions__execution_id__pause_post";
|
|
69
|
+
previewContactMerge: "preview_contact_merge_contacts__contact_id__merge_preview_get";
|
|
70
|
+
previewDetectionRule: "preview_detection_rule_duplicates_settings_preview_detection_rule_post";
|
|
71
|
+
regenerateContactDocument: "regenerate_contact_document_contacts__contact_id__documents_types__doc_type__regenerate_post";
|
|
72
|
+
resumeRecordWorkflowExecution: "resume_record_workflow_execution_contacts_workflow_executions__execution_id__resume_post";
|
|
73
|
+
runDuplicateDetection: "run_duplicate_detection_duplicates_detection_run_post";
|
|
74
|
+
runRecordWorkflow: "run_record_workflow_contacts_workflow_executions_run_post";
|
|
75
|
+
saveSkillResultToContact: "save_skill_result_to_contact_contacts__contact_id__documents_from_skill_post";
|
|
76
|
+
triggerAutoMerge: "trigger_auto_merge_duplicates_auto_merge_post";
|
|
77
|
+
unassignContactTags: "unassign_contact_tags_contacts_tags_unassign_post";
|
|
78
|
+
unlockContactInfo: "unlock_contact_info_contacts_unlock_info_post";
|
|
79
|
+
updateContact: "update_contact_contacts__contact_id__patch";
|
|
80
|
+
updateContactDocument: "update_contact_document_contacts__contact_id__documents__document_id__put";
|
|
81
|
+
updateContactTag: "update_contact_tag_contacts_tags__tag_id__patch";
|
|
82
|
+
updateDuplicateSettings: "update_duplicate_settings_duplicates_settings_put";
|
|
83
|
+
verifyContactEmails: "verify_contact_emails_contacts_verify_email_post";
|
|
84
|
+
verifyContactEmailsAsync: "verify_contact_emails_async_contacts_verify_email_async_post";
|
|
85
|
+
withdrawContactsFromSequences: "withdraw_contacts_from_sequences_contacts_withdraw_from_sequences_post";
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/** Input and output of every `g8.api.contacts` operation, keyed by operationId. */
|
|
89
|
+
export interface ContactsOperations {
|
|
90
|
+
/**
|
|
91
|
+
* POST /contacts/assign-owner
|
|
92
|
+
* Assign Contact Owner
|
|
93
|
+
* tier: write · scope: contacts:write
|
|
94
|
+
*/
|
|
95
|
+
assign_contact_owner_contacts_assign_owner_post: {
|
|
96
|
+
input: {
|
|
97
|
+
headers?: {
|
|
98
|
+
"X-Target-Org-Id"?: string | null;
|
|
99
|
+
};
|
|
100
|
+
body: AssignOwnerMatchingRequest;
|
|
101
|
+
};
|
|
102
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* POST /contacts/tags/assign
|
|
106
|
+
* Assign Contact Tags
|
|
107
|
+
* tier: write · scope: contacts:write
|
|
108
|
+
*/
|
|
109
|
+
assign_contact_tags_contacts_tags_assign_post: {
|
|
110
|
+
input: {
|
|
111
|
+
headers?: {
|
|
112
|
+
"X-Target-Org-Id"?: string | null;
|
|
113
|
+
};
|
|
114
|
+
body: ContactTagAssignRequest;
|
|
115
|
+
};
|
|
116
|
+
output: ApiResponse_ContactTagWriteResult_;
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* POST /contacts/related
|
|
120
|
+
* Batch Contact Related
|
|
121
|
+
* tier: read · scope: contacts:read
|
|
122
|
+
*/
|
|
123
|
+
batch_contact_related_contacts_related_post: {
|
|
124
|
+
input: {
|
|
125
|
+
headers?: {
|
|
126
|
+
"X-Target-Org-Id"?: string | null;
|
|
127
|
+
};
|
|
128
|
+
body: ContactRelatedBatchRequest;
|
|
129
|
+
};
|
|
130
|
+
output: ApiResponse_ContactRelatedBatchResponse_;
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* POST /contacts/bulk-get
|
|
134
|
+
* Bulk Get Contacts
|
|
135
|
+
* tier: read · scope: contacts:read
|
|
136
|
+
*/
|
|
137
|
+
bulk_get_contacts_contacts_bulk_get_post: {
|
|
138
|
+
input: {
|
|
139
|
+
headers?: {
|
|
140
|
+
"X-Target-Org-Id"?: string | null;
|
|
141
|
+
};
|
|
142
|
+
body: ContactBulkGetRequest;
|
|
143
|
+
};
|
|
144
|
+
output: ApiResponse_ContactBulkGetResponse_;
|
|
145
|
+
};
|
|
146
|
+
/**
|
|
147
|
+
* POST /contacts/bulk-update
|
|
148
|
+
* Bulk Update Contacts
|
|
149
|
+
* tier: write · scope: contacts:write
|
|
150
|
+
*/
|
|
151
|
+
bulk_update_contacts_contacts_bulk_update_post: {
|
|
152
|
+
input: {
|
|
153
|
+
headers?: {
|
|
154
|
+
"X-Target-Org-Id"?: string | null;
|
|
155
|
+
};
|
|
156
|
+
body: Array<Record<string, unknown>>;
|
|
157
|
+
};
|
|
158
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
159
|
+
};
|
|
160
|
+
/**
|
|
161
|
+
* POST /contacts/workflow-executions/{execution_id}/cancel
|
|
162
|
+
* Cancel Record Workflow Execution
|
|
163
|
+
* tier: destructive · scope: contacts:delete
|
|
164
|
+
*/
|
|
165
|
+
cancel_record_workflow_execution_contacts_workflow_executions__execution_id__cancel_post: {
|
|
166
|
+
input: {
|
|
167
|
+
path: {
|
|
168
|
+
/** Workflow execution id. */
|
|
169
|
+
execution_id: string;
|
|
170
|
+
};
|
|
171
|
+
headers?: {
|
|
172
|
+
"X-Target-Org-Id"?: string | null;
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
176
|
+
};
|
|
177
|
+
/**
|
|
178
|
+
* POST /contacts/columns/create
|
|
179
|
+
* Create Contact Column
|
|
180
|
+
* tier: write · scope: contacts:write
|
|
181
|
+
*/
|
|
182
|
+
create_contact_column_contacts_columns_create_post: {
|
|
183
|
+
input: {
|
|
184
|
+
headers?: {
|
|
185
|
+
"X-Target-Org-Id"?: string | null;
|
|
186
|
+
};
|
|
187
|
+
body: CreateContactColumnRequest;
|
|
188
|
+
};
|
|
189
|
+
output: ApiResponse_CreateContactColumnResponse_;
|
|
190
|
+
};
|
|
191
|
+
/**
|
|
192
|
+
* POST /contacts/tags
|
|
193
|
+
* Create Contact Tag
|
|
194
|
+
* tier: write · scope: contacts:write
|
|
195
|
+
*/
|
|
196
|
+
create_contact_tag_contacts_tags_post: {
|
|
197
|
+
input: {
|
|
198
|
+
headers?: {
|
|
199
|
+
"X-Target-Org-Id"?: string | null;
|
|
200
|
+
};
|
|
201
|
+
body: ContactTagCreateRequest;
|
|
202
|
+
};
|
|
203
|
+
output: ApiResponse_ContactTag_;
|
|
204
|
+
};
|
|
205
|
+
/**
|
|
206
|
+
* POST /contacts
|
|
207
|
+
* Create Contacts
|
|
208
|
+
* tier: write · scope: contacts:write
|
|
209
|
+
*/
|
|
210
|
+
create_contacts_contacts_post: {
|
|
211
|
+
input: {
|
|
212
|
+
headers?: {
|
|
213
|
+
/** Optional. Retrying a create with the same key returns the first response instead of creating a duplicate (cached 24h). Omit for the existing non-idempotent behavior. */
|
|
214
|
+
"Idempotency-Key"?: string | null;
|
|
215
|
+
"X-Target-Org-Id"?: string | null;
|
|
216
|
+
};
|
|
217
|
+
body: ContactCreateRequest;
|
|
218
|
+
};
|
|
219
|
+
output: ApiResponse_ContactCreateResponse_;
|
|
220
|
+
};
|
|
221
|
+
/**
|
|
222
|
+
* POST /contacts/workflow-executions/{execution_id}/approve
|
|
223
|
+
* Decide Record Workflow Execution
|
|
224
|
+
* tier: write · scope: contacts:write
|
|
225
|
+
*/
|
|
226
|
+
decide_record_workflow_execution_contacts_workflow_executions__execution_id__approve_post: {
|
|
227
|
+
input: {
|
|
228
|
+
path: {
|
|
229
|
+
/** Workflow execution id. */
|
|
230
|
+
execution_id: string;
|
|
231
|
+
};
|
|
232
|
+
headers?: {
|
|
233
|
+
"X-Target-Org-Id"?: string | null;
|
|
234
|
+
};
|
|
235
|
+
body: ApproveExecutionRequest;
|
|
236
|
+
};
|
|
237
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
238
|
+
};
|
|
239
|
+
/**
|
|
240
|
+
* DELETE /contacts/{contact_id}
|
|
241
|
+
* Delete Contact
|
|
242
|
+
* tier: destructive · scope: contacts:delete
|
|
243
|
+
*/
|
|
244
|
+
delete_contact_contacts__contact_id__delete: {
|
|
245
|
+
input: {
|
|
246
|
+
path: {
|
|
247
|
+
/** Contact ID */
|
|
248
|
+
contact_id: number;
|
|
249
|
+
};
|
|
250
|
+
headers?: {
|
|
251
|
+
"X-Target-Org-Id"?: string | null;
|
|
252
|
+
};
|
|
253
|
+
};
|
|
254
|
+
output: ApiResponse_dict_;
|
|
255
|
+
};
|
|
256
|
+
/**
|
|
257
|
+
* DELETE /contacts/columns/{column_id}
|
|
258
|
+
* Delete Contact Column
|
|
259
|
+
* tier: destructive · scope: contacts:delete
|
|
260
|
+
*/
|
|
261
|
+
delete_contact_column_contacts_columns__column_id__delete: {
|
|
262
|
+
input: {
|
|
263
|
+
path: {
|
|
264
|
+
/** ID of the column to delete */
|
|
265
|
+
column_id: number;
|
|
266
|
+
};
|
|
267
|
+
headers?: {
|
|
268
|
+
"X-Target-Org-Id"?: string | null;
|
|
269
|
+
};
|
|
270
|
+
};
|
|
271
|
+
output: ApiResponse_dict_;
|
|
272
|
+
};
|
|
273
|
+
/**
|
|
274
|
+
* DELETE /contacts/{contact_id}/documents/{document_id}
|
|
275
|
+
* Delete Contact Document
|
|
276
|
+
* tier: destructive · scope: contacts:delete
|
|
277
|
+
*/
|
|
278
|
+
delete_contact_document_contacts__contact_id__documents__document_id__delete: {
|
|
279
|
+
input: {
|
|
280
|
+
path: {
|
|
281
|
+
/** Contact id. */
|
|
282
|
+
contact_id: number;
|
|
283
|
+
/** Document id. */
|
|
284
|
+
document_id: string;
|
|
285
|
+
};
|
|
286
|
+
headers?: {
|
|
287
|
+
"X-Target-Org-Id"?: string | null;
|
|
288
|
+
};
|
|
289
|
+
};
|
|
290
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
291
|
+
};
|
|
292
|
+
/**
|
|
293
|
+
* DELETE /contacts/tags/{tag_id}
|
|
294
|
+
* Delete Contact Tag
|
|
295
|
+
* tier: destructive · scope: contacts:delete
|
|
296
|
+
*/
|
|
297
|
+
delete_contact_tag_contacts_tags__tag_id__delete: {
|
|
298
|
+
input: {
|
|
299
|
+
path: {
|
|
300
|
+
/** Tag id. */
|
|
301
|
+
tag_id: string;
|
|
302
|
+
};
|
|
303
|
+
query?: {
|
|
304
|
+
/** Move every assignment to this tag before deleting. Omit to drop the assignments with the tag. */
|
|
305
|
+
reassign_to?: string | null;
|
|
306
|
+
};
|
|
307
|
+
headers?: {
|
|
308
|
+
"X-Target-Org-Id"?: string | null;
|
|
309
|
+
};
|
|
310
|
+
};
|
|
311
|
+
output: ApiResponse_ContactTagWriteResult_;
|
|
312
|
+
};
|
|
313
|
+
/**
|
|
314
|
+
* POST /contacts/fetch
|
|
315
|
+
* Fetch Contacts
|
|
316
|
+
* tier: read · scope: contacts:read
|
|
317
|
+
*/
|
|
318
|
+
fetch_contacts_contacts_fetch_post: {
|
|
319
|
+
input: {
|
|
320
|
+
headers?: {
|
|
321
|
+
"X-Target-Org-Id"?: string | null;
|
|
322
|
+
};
|
|
323
|
+
body: FetchContactsRequest;
|
|
324
|
+
};
|
|
325
|
+
output: ApiResponse_CrmCollectionPayload_;
|
|
326
|
+
};
|
|
327
|
+
/**
|
|
328
|
+
* POST /contacts/{contact_id}/documents/generate-all
|
|
329
|
+
* Generate All Contact Documents
|
|
330
|
+
* tier: billable · scope: enrichment:run
|
|
331
|
+
*/
|
|
332
|
+
generate_all_contact_documents_contacts__contact_id__documents_generate_all_post: {
|
|
333
|
+
input: {
|
|
334
|
+
path: {
|
|
335
|
+
/** Contact primary key. */
|
|
336
|
+
contact_id: number;
|
|
337
|
+
};
|
|
338
|
+
headers?: {
|
|
339
|
+
"X-Target-Org-Id"?: string | null;
|
|
340
|
+
};
|
|
341
|
+
};
|
|
342
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
343
|
+
};
|
|
344
|
+
/**
|
|
345
|
+
* POST /contacts/{contact_id}/documents/types/{doc_type}/generate
|
|
346
|
+
* Generate Contact Document
|
|
347
|
+
* tier: billable · scope: enrichment:run
|
|
348
|
+
*/
|
|
349
|
+
generate_contact_document_contacts__contact_id__documents_types__doc_type__generate_post: {
|
|
350
|
+
input: {
|
|
351
|
+
path: {
|
|
352
|
+
/** Contact id. */
|
|
353
|
+
contact_id: number;
|
|
354
|
+
/** Document type. */
|
|
355
|
+
doc_type: string;
|
|
356
|
+
};
|
|
357
|
+
headers?: {
|
|
358
|
+
"X-Target-Org-Id"?: string | null;
|
|
359
|
+
};
|
|
360
|
+
};
|
|
361
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
362
|
+
};
|
|
363
|
+
/**
|
|
364
|
+
* GET /activity-feed
|
|
365
|
+
* Get Activity Feed
|
|
366
|
+
* tier: read · scope: contacts:read
|
|
367
|
+
*/
|
|
368
|
+
get_activity_feed_activity_feed_get: {
|
|
369
|
+
input: {
|
|
370
|
+
query: {
|
|
371
|
+
/** contact | company | deal | team_member */
|
|
372
|
+
entity_type: string;
|
|
373
|
+
/** Id of that record. */
|
|
374
|
+
entity_id: string;
|
|
375
|
+
/** Comma-separated subset of task,note,email,call,meeting,sms,chat,stage_change,quote,record_change,deal. Omit for all. */
|
|
376
|
+
types?: string | null;
|
|
377
|
+
/** manual | crm | system | dialer | automation | api | all */
|
|
378
|
+
source?: string;
|
|
379
|
+
/** ISO 8601 cursor; returns events at or after it. */
|
|
380
|
+
since?: string | null;
|
|
381
|
+
limit?: number;
|
|
382
|
+
};
|
|
383
|
+
headers?: {
|
|
384
|
+
"X-Target-Org-Id"?: string | null;
|
|
385
|
+
};
|
|
386
|
+
};
|
|
387
|
+
output: ApiResponse_CrmCollectionPayload_;
|
|
388
|
+
};
|
|
389
|
+
/**
|
|
390
|
+
* GET /contacts/{contact_id}
|
|
391
|
+
* Get Contact
|
|
392
|
+
* tier: read · scope: contacts:read
|
|
393
|
+
*/
|
|
394
|
+
get_contact_contacts__contact_id__get: {
|
|
395
|
+
input: {
|
|
396
|
+
path: {
|
|
397
|
+
/** Contact ID */
|
|
398
|
+
contact_id: number;
|
|
399
|
+
};
|
|
400
|
+
query?: {
|
|
401
|
+
/** When true, the response includes a `custom_fields` object of custom column values keyed by column slug. Default false omits it. */
|
|
402
|
+
include_custom_fields?: boolean;
|
|
403
|
+
};
|
|
404
|
+
headers?: {
|
|
405
|
+
"X-Target-Org-Id"?: string | null;
|
|
406
|
+
};
|
|
407
|
+
};
|
|
408
|
+
output: ApiResponse_ContactResponse_;
|
|
409
|
+
};
|
|
410
|
+
/**
|
|
411
|
+
* GET /contacts/{contact_id}/analysis
|
|
412
|
+
* Get Contact Analysis
|
|
413
|
+
* tier: read · scope: contacts:read
|
|
414
|
+
*/
|
|
415
|
+
get_contact_analysis_contacts__contact_id__analysis_get: {
|
|
416
|
+
input: {
|
|
417
|
+
path: {
|
|
418
|
+
/** Contact id. */
|
|
419
|
+
contact_id: number;
|
|
420
|
+
};
|
|
421
|
+
headers?: {
|
|
422
|
+
"X-Target-Org-Id"?: string | null;
|
|
423
|
+
};
|
|
424
|
+
};
|
|
425
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
426
|
+
};
|
|
427
|
+
/**
|
|
428
|
+
* GET /contacts/{contact_id}/dashboard
|
|
429
|
+
* Get Contact Dashboard
|
|
430
|
+
* tier: read · scope: contacts:read
|
|
431
|
+
*/
|
|
432
|
+
get_contact_dashboard_contacts__contact_id__dashboard_get: {
|
|
433
|
+
input: {
|
|
434
|
+
path: {
|
|
435
|
+
/** Contact primary key. */
|
|
436
|
+
contact_id: number;
|
|
437
|
+
};
|
|
438
|
+
headers?: {
|
|
439
|
+
"X-Target-Org-Id"?: string | null;
|
|
440
|
+
};
|
|
441
|
+
};
|
|
442
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
443
|
+
};
|
|
444
|
+
/**
|
|
445
|
+
* GET /contacts/dashboard-stats
|
|
446
|
+
* Get Contact Dashboard Stats
|
|
447
|
+
* tier: read · scope: contacts:read
|
|
448
|
+
*/
|
|
449
|
+
get_contact_dashboard_stats_contacts_dashboard_stats_get: {
|
|
450
|
+
input: {
|
|
451
|
+
headers?: {
|
|
452
|
+
"X-Target-Org-Id"?: string | null;
|
|
453
|
+
};
|
|
454
|
+
};
|
|
455
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
456
|
+
};
|
|
457
|
+
/**
|
|
458
|
+
* GET /contacts/{contact_id}/detail
|
|
459
|
+
* Get Contact Detail
|
|
460
|
+
* tier: read · scope: contacts:read
|
|
461
|
+
*/
|
|
462
|
+
get_contact_detail_contacts__contact_id__detail_get: {
|
|
463
|
+
input: {
|
|
464
|
+
path: {
|
|
465
|
+
/** Contact id. */
|
|
466
|
+
contact_id: number;
|
|
467
|
+
};
|
|
468
|
+
headers?: {
|
|
469
|
+
"X-Target-Org-Id"?: string | null;
|
|
470
|
+
};
|
|
471
|
+
};
|
|
472
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
473
|
+
};
|
|
474
|
+
/**
|
|
475
|
+
* GET /contacts/{contact_id}/documents/types/{doc_type}
|
|
476
|
+
* Get Contact Document
|
|
477
|
+
* tier: read · scope: contacts:read
|
|
478
|
+
*/
|
|
479
|
+
get_contact_document_contacts__contact_id__documents_types__doc_type__get: {
|
|
480
|
+
input: {
|
|
481
|
+
path: {
|
|
482
|
+
/** Contact id. */
|
|
483
|
+
contact_id: number;
|
|
484
|
+
/** Document type, e.g. `contact_brief`. */
|
|
485
|
+
doc_type: string;
|
|
486
|
+
};
|
|
487
|
+
headers?: {
|
|
488
|
+
"X-Target-Org-Id"?: string | null;
|
|
489
|
+
};
|
|
490
|
+
};
|
|
491
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
492
|
+
};
|
|
493
|
+
/**
|
|
494
|
+
* GET /contacts/{contact_id}/engagement-summary
|
|
495
|
+
* Get Contact Engagement Summary
|
|
496
|
+
* tier: read · scope: contacts:read
|
|
497
|
+
*/
|
|
498
|
+
get_contact_engagement_summary_contacts__contact_id__engagement_summary_get: {
|
|
499
|
+
input: {
|
|
500
|
+
path: {
|
|
501
|
+
/** Contact primary key. */
|
|
502
|
+
contact_id: number;
|
|
503
|
+
};
|
|
504
|
+
headers?: {
|
|
505
|
+
"X-Target-Org-Id"?: string | null;
|
|
506
|
+
};
|
|
507
|
+
};
|
|
508
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
509
|
+
};
|
|
510
|
+
/**
|
|
511
|
+
* GET /contacts/form-fields
|
|
512
|
+
* Get Contact Form Fields
|
|
513
|
+
* tier: read · scope: contacts:read
|
|
514
|
+
*/
|
|
515
|
+
get_contact_form_fields_contacts_form_fields_get: {
|
|
516
|
+
input: {
|
|
517
|
+
query?: {
|
|
518
|
+
/** Include this list's custom fields. */
|
|
519
|
+
list_id?: number | null;
|
|
520
|
+
};
|
|
521
|
+
headers?: {
|
|
522
|
+
"X-Target-Org-Id"?: string | null;
|
|
523
|
+
};
|
|
524
|
+
};
|
|
525
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
526
|
+
};
|
|
527
|
+
/**
|
|
528
|
+
* GET /contacts/{contact_id}/documents/generation-status
|
|
529
|
+
* Get Contact Generation Status
|
|
530
|
+
* tier: read · scope: contacts:read
|
|
531
|
+
*/
|
|
532
|
+
get_contact_generation_status_contacts__contact_id__documents_generation_status_get: {
|
|
533
|
+
input: {
|
|
534
|
+
path: {
|
|
535
|
+
/** Contact primary key. */
|
|
536
|
+
contact_id: number;
|
|
537
|
+
};
|
|
538
|
+
headers?: {
|
|
539
|
+
"X-Target-Org-Id"?: string | null;
|
|
540
|
+
};
|
|
541
|
+
};
|
|
542
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
543
|
+
};
|
|
544
|
+
/**
|
|
545
|
+
* GET /contacts/{contact_id}/lists
|
|
546
|
+
* Get Contact Lists
|
|
547
|
+
* tier: read · scope: contacts:read
|
|
548
|
+
*/
|
|
549
|
+
get_contact_lists_contacts__contact_id__lists_get: {
|
|
550
|
+
input: {
|
|
551
|
+
path: {
|
|
552
|
+
/** Contact primary key (`mashup_contacts.id`). */
|
|
553
|
+
contact_id: number;
|
|
554
|
+
};
|
|
555
|
+
headers?: {
|
|
556
|
+
"X-Target-Org-Id"?: string | null;
|
|
557
|
+
};
|
|
558
|
+
};
|
|
559
|
+
output: ApiResponse_CrmCollectionPayload_;
|
|
560
|
+
};
|
|
561
|
+
/**
|
|
562
|
+
* GET /contacts/{contact_id}/meetings
|
|
563
|
+
* Get Contact Meetings
|
|
564
|
+
* tier: read · scope: contacts:read
|
|
565
|
+
*/
|
|
566
|
+
get_contact_meetings_contacts__contact_id__meetings_get: {
|
|
567
|
+
input: {
|
|
568
|
+
path: {
|
|
569
|
+
/** Contact id. */
|
|
570
|
+
contact_id: number;
|
|
571
|
+
};
|
|
572
|
+
headers?: {
|
|
573
|
+
"X-Target-Org-Id"?: string | null;
|
|
574
|
+
};
|
|
575
|
+
};
|
|
576
|
+
output: ApiResponse_CrmCollectionPayload_;
|
|
577
|
+
};
|
|
578
|
+
/**
|
|
579
|
+
* GET /contacts/{contact_id}/next-best-step
|
|
580
|
+
* Get Contact Next Best Step
|
|
581
|
+
* tier: billable · scope: enrichment:run
|
|
582
|
+
*/
|
|
583
|
+
get_contact_next_best_step_contacts__contact_id__next_best_step_get: {
|
|
584
|
+
input: {
|
|
585
|
+
path: {
|
|
586
|
+
/** Contact primary key. */
|
|
587
|
+
contact_id: number;
|
|
588
|
+
};
|
|
589
|
+
headers?: {
|
|
590
|
+
"X-Target-Org-Id"?: string | null;
|
|
591
|
+
};
|
|
592
|
+
};
|
|
593
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
594
|
+
};
|
|
595
|
+
/**
|
|
596
|
+
* POST /contacts/profile-pictures
|
|
597
|
+
* Get Contact Profile Pictures
|
|
598
|
+
* tier: read · scope: contacts:read
|
|
599
|
+
*/
|
|
600
|
+
get_contact_profile_pictures_contacts_profile_pictures_post: {
|
|
601
|
+
input: {
|
|
602
|
+
headers?: {
|
|
603
|
+
"X-Target-Org-Id"?: string | null;
|
|
604
|
+
};
|
|
605
|
+
body: ProfilePicturesRequest;
|
|
606
|
+
};
|
|
607
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
608
|
+
};
|
|
609
|
+
/**
|
|
610
|
+
* GET /contacts/row-detail/{record_id}
|
|
611
|
+
* Get Contact Row Detail
|
|
612
|
+
* tier: read · scope: contacts:read
|
|
613
|
+
*/
|
|
614
|
+
get_contact_row_detail_contacts_row_detail__record_id__get: {
|
|
615
|
+
input: {
|
|
616
|
+
path: {
|
|
617
|
+
/** Record primary key. */
|
|
618
|
+
record_id: number;
|
|
619
|
+
};
|
|
620
|
+
query: {
|
|
621
|
+
/** Required: the list the record is read through. */
|
|
622
|
+
list_id: number;
|
|
623
|
+
};
|
|
624
|
+
headers?: {
|
|
625
|
+
"X-Target-Org-Id"?: string | null;
|
|
626
|
+
};
|
|
627
|
+
};
|
|
628
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
629
|
+
};
|
|
630
|
+
/**
|
|
631
|
+
* GET /contacts/{contact_id}/sequences
|
|
632
|
+
* Get Contact Sequences
|
|
633
|
+
* tier: read · scope: contacts:read
|
|
634
|
+
*/
|
|
635
|
+
get_contact_sequences_contacts__contact_id__sequences_get: {
|
|
636
|
+
input: {
|
|
637
|
+
path: {
|
|
638
|
+
/** Contact id. */
|
|
639
|
+
contact_id: number;
|
|
640
|
+
};
|
|
641
|
+
headers?: {
|
|
642
|
+
"X-Target-Org-Id"?: string | null;
|
|
643
|
+
};
|
|
644
|
+
};
|
|
645
|
+
output: ApiResponse_CrmCollectionPayload_;
|
|
646
|
+
};
|
|
647
|
+
/**
|
|
648
|
+
* GET /contacts/{contact_id}/signals
|
|
649
|
+
* Get Contact Signals
|
|
650
|
+
* tier: read · scope: contacts:read
|
|
651
|
+
*/
|
|
652
|
+
get_contact_signals_contacts__contact_id__signals_get: {
|
|
653
|
+
input: {
|
|
654
|
+
path: {
|
|
655
|
+
/** Contact id. */
|
|
656
|
+
contact_id: number;
|
|
657
|
+
};
|
|
658
|
+
headers?: {
|
|
659
|
+
"X-Target-Org-Id"?: string | null;
|
|
660
|
+
};
|
|
661
|
+
};
|
|
662
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
663
|
+
};
|
|
664
|
+
/**
|
|
665
|
+
* GET /contacts/{contact_id}/sites-visited
|
|
666
|
+
* Get Contact Sites Visited
|
|
667
|
+
* tier: read · scope: contacts:read
|
|
668
|
+
*/
|
|
669
|
+
get_contact_sites_visited_contacts__contact_id__sites_visited_get: {
|
|
670
|
+
input: {
|
|
671
|
+
path: {
|
|
672
|
+
/** Contact primary key. */
|
|
673
|
+
contact_id: number;
|
|
674
|
+
};
|
|
675
|
+
query?: {
|
|
676
|
+
/** Lookback window. Bounded here rather than left open: the query is an unindexed analytics scan and an unbounded window is a cheap way to exhaust it. */
|
|
677
|
+
days?: number;
|
|
678
|
+
};
|
|
679
|
+
headers?: {
|
|
680
|
+
"X-Target-Org-Id"?: string | null;
|
|
681
|
+
};
|
|
682
|
+
};
|
|
683
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
684
|
+
};
|
|
685
|
+
/**
|
|
686
|
+
* GET /contacts/{contact_id}/tags
|
|
687
|
+
* Get Contact Tag Ids
|
|
688
|
+
* tier: read · scope: contacts:read
|
|
689
|
+
*/
|
|
690
|
+
get_contact_tag_ids_contacts__contact_id__tags_get: {
|
|
691
|
+
input: {
|
|
692
|
+
path: {
|
|
693
|
+
/** Contact id. */
|
|
694
|
+
contact_id: number;
|
|
695
|
+
};
|
|
696
|
+
headers?: {
|
|
697
|
+
"X-Target-Org-Id"?: string | null;
|
|
698
|
+
};
|
|
699
|
+
};
|
|
700
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
701
|
+
};
|
|
702
|
+
/**
|
|
703
|
+
* GET /duplicates/settings
|
|
704
|
+
* Get Duplicate Settings
|
|
705
|
+
* tier: read · scope: contacts:read
|
|
706
|
+
*/
|
|
707
|
+
get_duplicate_settings_duplicates_settings_get: {
|
|
708
|
+
input: {
|
|
709
|
+
headers?: {
|
|
710
|
+
"X-Target-Org-Id"?: string | null;
|
|
711
|
+
};
|
|
712
|
+
};
|
|
713
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
714
|
+
};
|
|
715
|
+
/**
|
|
716
|
+
* POST /contacts/column-values
|
|
717
|
+
* Get Record Column Values
|
|
718
|
+
* tier: read · scope: contacts:read
|
|
719
|
+
*/
|
|
720
|
+
get_record_column_values_contacts_column_values_post: {
|
|
721
|
+
input: {
|
|
722
|
+
headers?: {
|
|
723
|
+
"X-Target-Org-Id"?: string | null;
|
|
724
|
+
};
|
|
725
|
+
body: RecordColumnValuesRequest;
|
|
726
|
+
};
|
|
727
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
728
|
+
};
|
|
729
|
+
/**
|
|
730
|
+
* GET /contacts/base-columns
|
|
731
|
+
* List Base Columns
|
|
732
|
+
* tier: read · scope: contacts:read
|
|
733
|
+
*/
|
|
734
|
+
list_base_columns_contacts_base_columns_get: {
|
|
735
|
+
input: {
|
|
736
|
+
query: {
|
|
737
|
+
/** Required: the list decides which base columns exist. */
|
|
738
|
+
list_id: number;
|
|
739
|
+
};
|
|
740
|
+
headers?: {
|
|
741
|
+
"X-Target-Org-Id"?: string | null;
|
|
742
|
+
};
|
|
743
|
+
};
|
|
744
|
+
output: ApiResponse_CrmCollectionPayload_;
|
|
745
|
+
};
|
|
746
|
+
/**
|
|
747
|
+
* GET /contacts/column-names
|
|
748
|
+
* List Column Names
|
|
749
|
+
* tier: read · scope: contacts:read
|
|
750
|
+
*/
|
|
751
|
+
list_column_names_contacts_column_names_get: {
|
|
752
|
+
input: {
|
|
753
|
+
query?: {
|
|
754
|
+
/** Include this list's own columns. */
|
|
755
|
+
list_id?: number | null;
|
|
756
|
+
};
|
|
757
|
+
headers?: {
|
|
758
|
+
"X-Target-Org-Id"?: string | null;
|
|
759
|
+
};
|
|
760
|
+
};
|
|
761
|
+
output: ApiResponse_CrmCollectionPayload_;
|
|
762
|
+
};
|
|
763
|
+
/**
|
|
764
|
+
* GET /contacts/column-definitions
|
|
765
|
+
* List Contact Column Definitions
|
|
766
|
+
* tier: read · scope: contacts:read
|
|
767
|
+
*/
|
|
768
|
+
list_contact_column_definitions_contacts_column_definitions_get: {
|
|
769
|
+
input: {
|
|
770
|
+
query?: {
|
|
771
|
+
/** Include the columns specific to this list. The list also decides whether contact or company columns are returned - a companies list returns company columns from this contacts path. */
|
|
772
|
+
list_id?: number | null;
|
|
773
|
+
};
|
|
774
|
+
headers?: {
|
|
775
|
+
"X-Target-Org-Id"?: string | null;
|
|
776
|
+
};
|
|
777
|
+
};
|
|
778
|
+
output: ApiResponse_CrmCollectionPayload_;
|
|
779
|
+
};
|
|
780
|
+
/**
|
|
781
|
+
* GET /contacts/columns
|
|
782
|
+
* List Contact Columns
|
|
783
|
+
* tier: read · scope: contacts:read
|
|
784
|
+
*/
|
|
785
|
+
list_contact_columns_contacts_columns_get: {
|
|
786
|
+
input: {
|
|
787
|
+
query?: {
|
|
788
|
+
/** Optional list ID. When provided, list-specific dynamic columns are included alongside global ones. */
|
|
789
|
+
list_id?: number | null;
|
|
790
|
+
};
|
|
791
|
+
headers?: {
|
|
792
|
+
"X-Target-Org-Id"?: string | null;
|
|
793
|
+
};
|
|
794
|
+
};
|
|
795
|
+
output: ApiResponse_list_Column__;
|
|
796
|
+
};
|
|
797
|
+
/**
|
|
798
|
+
* GET /contacts/{contact_id}/documents
|
|
799
|
+
* List Contact Documents
|
|
800
|
+
* tier: read · scope: contacts:read
|
|
801
|
+
*/
|
|
802
|
+
list_contact_documents_contacts__contact_id__documents_get: {
|
|
803
|
+
input: {
|
|
804
|
+
path: {
|
|
805
|
+
/** Contact id. */
|
|
806
|
+
contact_id: number;
|
|
807
|
+
};
|
|
808
|
+
query?: {
|
|
809
|
+
/** Only documents in this folder. */
|
|
810
|
+
folder?: string | null;
|
|
811
|
+
};
|
|
812
|
+
headers?: {
|
|
813
|
+
"X-Target-Org-Id"?: string | null;
|
|
814
|
+
};
|
|
815
|
+
};
|
|
816
|
+
output: ApiResponse_CrmCollectionPayload_;
|
|
817
|
+
};
|
|
818
|
+
/**
|
|
819
|
+
* GET /contacts/tags
|
|
820
|
+
* List Contact Tags
|
|
821
|
+
* tier: read · scope: contacts:read
|
|
822
|
+
*/
|
|
823
|
+
list_contact_tags_contacts_tags_get: {
|
|
824
|
+
input: {
|
|
825
|
+
query?: {
|
|
826
|
+
/** Include archived tags. */
|
|
827
|
+
include_archived?: boolean;
|
|
828
|
+
};
|
|
829
|
+
headers?: {
|
|
830
|
+
"X-Target-Org-Id"?: string | null;
|
|
831
|
+
};
|
|
832
|
+
};
|
|
833
|
+
output: ApiResponse_ContactTagListResponse_;
|
|
834
|
+
};
|
|
835
|
+
/**
|
|
836
|
+
* GET /contacts
|
|
837
|
+
* List Contacts
|
|
838
|
+
* tier: read · scope: contacts:read
|
|
839
|
+
*/
|
|
840
|
+
list_contacts_contacts_get: {
|
|
841
|
+
input: {
|
|
842
|
+
query?: {
|
|
843
|
+
/** Page number (1-indexed) */
|
|
844
|
+
page?: number;
|
|
845
|
+
/** Items per page (max 200) */
|
|
846
|
+
limit?: number;
|
|
847
|
+
/** Filter by work email (exact match) */
|
|
848
|
+
email?: string | null;
|
|
849
|
+
/** Filter by list ID */
|
|
850
|
+
list_id?: number | null;
|
|
851
|
+
/** Filter by first or last name (partial match) */
|
|
852
|
+
name?: string | null;
|
|
853
|
+
/** Filter by job title (partial match) */
|
|
854
|
+
job_title?: string | null;
|
|
855
|
+
/** Filter by seniority level (exact match) */
|
|
856
|
+
seniority_level?: string | null;
|
|
857
|
+
/** Filter by company name (partial match) */
|
|
858
|
+
company_name?: string | null;
|
|
859
|
+
/** Filter by company ID */
|
|
860
|
+
company_id?: number | null;
|
|
861
|
+
/** Filter by country (exact match) */
|
|
862
|
+
country?: string | null;
|
|
863
|
+
/** Filter by state (exact match) */
|
|
864
|
+
state?: string | null;
|
|
865
|
+
/** Filter by city (partial match) */
|
|
866
|
+
city?: string | null;
|
|
867
|
+
/** Filter by job department (partial match) */
|
|
868
|
+
job_department?: string | null;
|
|
869
|
+
/** Filter by company industry (partial match) */
|
|
870
|
+
industry?: string | null;
|
|
871
|
+
/** When true, each contact includes a `custom_fields` object of custom column values keyed by column slug. Default false keeps the legacy response shape and adds no extra query. */
|
|
872
|
+
include_custom_fields?: boolean;
|
|
873
|
+
};
|
|
874
|
+
headers?: {
|
|
875
|
+
"X-Target-Org-Id"?: string | null;
|
|
876
|
+
};
|
|
877
|
+
};
|
|
878
|
+
output: ApiResponse_list_ContactListItem__;
|
|
879
|
+
};
|
|
880
|
+
/**
|
|
881
|
+
* GET /contacts/custom-column-definitions
|
|
882
|
+
* List Custom Column Definitions
|
|
883
|
+
* tier: read · scope: contacts:read
|
|
884
|
+
*/
|
|
885
|
+
list_custom_column_definitions_contacts_custom_column_definitions_get: {
|
|
886
|
+
input: {
|
|
887
|
+
query?: {
|
|
888
|
+
/** `contact` or `company`. Anything else is refused. */
|
|
889
|
+
entity_type?: string;
|
|
890
|
+
};
|
|
891
|
+
headers?: {
|
|
892
|
+
"X-Target-Org-Id"?: string | null;
|
|
893
|
+
};
|
|
894
|
+
};
|
|
895
|
+
output: ApiResponse_CrmCollectionPayload_;
|
|
896
|
+
};
|
|
897
|
+
/**
|
|
898
|
+
* GET /duplicates/detection/runs
|
|
899
|
+
* List Duplicate Detection Runs
|
|
900
|
+
* tier: read · scope: contacts:read
|
|
901
|
+
*/
|
|
902
|
+
list_duplicate_detection_runs_duplicates_detection_runs_get: {
|
|
903
|
+
input: {
|
|
904
|
+
query?: {
|
|
905
|
+
/** Only runs for this record type. */
|
|
906
|
+
entity_type?: ("contact" | "company" | "deal") | null;
|
|
907
|
+
/** How many runs, newest first. */
|
|
908
|
+
limit?: number;
|
|
909
|
+
};
|
|
910
|
+
headers?: {
|
|
911
|
+
"X-Target-Org-Id"?: string | null;
|
|
912
|
+
};
|
|
913
|
+
};
|
|
914
|
+
output: ApiResponse_CrmCollectionPayload_;
|
|
915
|
+
};
|
|
916
|
+
/**
|
|
917
|
+
* GET /contacts/workflow-executions
|
|
918
|
+
* List Record Workflow Executions
|
|
919
|
+
* tier: read · scope: contacts:read
|
|
920
|
+
*/
|
|
921
|
+
list_record_workflow_executions_contacts_workflow_executions_get: {
|
|
922
|
+
input: {
|
|
923
|
+
query: {
|
|
924
|
+
/** The list the row belongs to. */
|
|
925
|
+
list_id: number;
|
|
926
|
+
/** The row (contact) id. */
|
|
927
|
+
record_id: number;
|
|
928
|
+
/** Only runs of this workflow. */
|
|
929
|
+
workflow_id?: string | null;
|
|
930
|
+
/** Only this status. */
|
|
931
|
+
status?: string | null;
|
|
932
|
+
/** Include each run's step events. */
|
|
933
|
+
include_events?: boolean;
|
|
934
|
+
};
|
|
935
|
+
headers?: {
|
|
936
|
+
"X-Target-Org-Id"?: string | null;
|
|
937
|
+
};
|
|
938
|
+
};
|
|
939
|
+
output: ApiResponse_CrmCollectionPayload_;
|
|
940
|
+
};
|
|
941
|
+
/**
|
|
942
|
+
* GET /contacts/searchable-fields
|
|
943
|
+
* List Searchable Fields
|
|
944
|
+
* tier: read · scope: contacts:read
|
|
945
|
+
*/
|
|
946
|
+
list_searchable_fields_contacts_searchable_fields_get: {
|
|
947
|
+
input: {
|
|
948
|
+
query?: {
|
|
949
|
+
/** `contact` or `company`. Anything else is refused. */
|
|
950
|
+
entity_type?: string;
|
|
951
|
+
};
|
|
952
|
+
headers?: {
|
|
953
|
+
"X-Target-Org-Id"?: string | null;
|
|
954
|
+
};
|
|
955
|
+
};
|
|
956
|
+
output: ApiResponse_CrmCollectionPayload_;
|
|
957
|
+
};
|
|
958
|
+
/**
|
|
959
|
+
* POST /contacts/{contact_id}/merge
|
|
960
|
+
* Merge Contact
|
|
961
|
+
* tier: destructive · scope: contacts:delete
|
|
962
|
+
*/
|
|
963
|
+
merge_contact_contacts__contact_id__merge_post: {
|
|
964
|
+
input: {
|
|
965
|
+
path: {
|
|
966
|
+
/** The contact that SURVIVES the merge. */
|
|
967
|
+
contact_id: number;
|
|
968
|
+
};
|
|
969
|
+
headers?: {
|
|
970
|
+
"X-Target-Org-Id"?: string | null;
|
|
971
|
+
};
|
|
972
|
+
body: MergeRecordRequest;
|
|
973
|
+
};
|
|
974
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
975
|
+
};
|
|
976
|
+
/**
|
|
977
|
+
* POST /contacts/tags/merge
|
|
978
|
+
* Merge Contact Tags
|
|
979
|
+
* tier: write · scope: contacts:write
|
|
980
|
+
*/
|
|
981
|
+
merge_contact_tags_contacts_tags_merge_post: {
|
|
982
|
+
input: {
|
|
983
|
+
headers?: {
|
|
984
|
+
"X-Target-Org-Id"?: string | null;
|
|
985
|
+
};
|
|
986
|
+
body: ContactTagMergeRequest;
|
|
987
|
+
};
|
|
988
|
+
output: ApiResponse_ContactTagWriteResult_;
|
|
989
|
+
};
|
|
990
|
+
/**
|
|
991
|
+
* POST /contacts/merge-filtered
|
|
992
|
+
* Merge Filtered Contacts
|
|
993
|
+
* tier: write · scope: contacts:write
|
|
994
|
+
*/
|
|
995
|
+
merge_filtered_contacts_contacts_merge_filtered_post: {
|
|
996
|
+
input: {
|
|
997
|
+
query?: {
|
|
998
|
+
/** Optional per-column filter JSON, applied alongside `filter`. */
|
|
999
|
+
filterModel?: string | null;
|
|
1000
|
+
/** Optional sort JSON. */
|
|
1001
|
+
sortModel?: string | null;
|
|
1002
|
+
};
|
|
1003
|
+
headers?: {
|
|
1004
|
+
"X-Target-Org-Id"?: string | null;
|
|
1005
|
+
};
|
|
1006
|
+
body: MergeFilteredRequest;
|
|
1007
|
+
};
|
|
1008
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
1009
|
+
};
|
|
1010
|
+
/**
|
|
1011
|
+
* POST /contacts/workflow-executions/{execution_id}/pause
|
|
1012
|
+
* Pause Record Workflow Execution
|
|
1013
|
+
* tier: write · scope: contacts:write
|
|
1014
|
+
*/
|
|
1015
|
+
pause_record_workflow_execution_contacts_workflow_executions__execution_id__pause_post: {
|
|
1016
|
+
input: {
|
|
1017
|
+
path: {
|
|
1018
|
+
/** Workflow execution id. */
|
|
1019
|
+
execution_id: string;
|
|
1020
|
+
};
|
|
1021
|
+
headers?: {
|
|
1022
|
+
"X-Target-Org-Id"?: string | null;
|
|
1023
|
+
};
|
|
1024
|
+
};
|
|
1025
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
1026
|
+
};
|
|
1027
|
+
/**
|
|
1028
|
+
* GET /contacts/{contact_id}/merge/preview
|
|
1029
|
+
* Preview Contact Merge
|
|
1030
|
+
* tier: read · scope: contacts:read
|
|
1031
|
+
*/
|
|
1032
|
+
preview_contact_merge_contacts__contact_id__merge_preview_get: {
|
|
1033
|
+
input: {
|
|
1034
|
+
path: {
|
|
1035
|
+
/** The contact that SURVIVES the merge. */
|
|
1036
|
+
contact_id: number;
|
|
1037
|
+
};
|
|
1038
|
+
query: {
|
|
1039
|
+
/** The contact that would be merged AWAY. */
|
|
1040
|
+
secondary: number;
|
|
1041
|
+
};
|
|
1042
|
+
headers?: {
|
|
1043
|
+
"X-Target-Org-Id"?: string | null;
|
|
1044
|
+
};
|
|
1045
|
+
};
|
|
1046
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
1047
|
+
};
|
|
1048
|
+
/**
|
|
1049
|
+
* POST /duplicates/settings/preview-detection-rule
|
|
1050
|
+
* Preview Detection Rule
|
|
1051
|
+
* tier: read · scope: contacts:read
|
|
1052
|
+
*/
|
|
1053
|
+
preview_detection_rule_duplicates_settings_preview_detection_rule_post: {
|
|
1054
|
+
input: {
|
|
1055
|
+
headers?: {
|
|
1056
|
+
"X-Target-Org-Id"?: string | null;
|
|
1057
|
+
};
|
|
1058
|
+
body: PreviewDetectionRuleRequest;
|
|
1059
|
+
};
|
|
1060
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
1061
|
+
};
|
|
1062
|
+
/**
|
|
1063
|
+
* POST /contacts/{contact_id}/documents/types/{doc_type}/regenerate
|
|
1064
|
+
* Regenerate Contact Document
|
|
1065
|
+
* tier: billable · scope: enrichment:run
|
|
1066
|
+
*/
|
|
1067
|
+
regenerate_contact_document_contacts__contact_id__documents_types__doc_type__regenerate_post: {
|
|
1068
|
+
input: {
|
|
1069
|
+
path: {
|
|
1070
|
+
/** Contact id. */
|
|
1071
|
+
contact_id: number;
|
|
1072
|
+
/** Document type. */
|
|
1073
|
+
doc_type: string;
|
|
1074
|
+
};
|
|
1075
|
+
headers?: {
|
|
1076
|
+
"X-Target-Org-Id"?: string | null;
|
|
1077
|
+
};
|
|
1078
|
+
};
|
|
1079
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
1080
|
+
};
|
|
1081
|
+
/**
|
|
1082
|
+
* POST /contacts/workflow-executions/{execution_id}/resume
|
|
1083
|
+
* Resume Record Workflow Execution
|
|
1084
|
+
* tier: write · scope: contacts:write
|
|
1085
|
+
*/
|
|
1086
|
+
resume_record_workflow_execution_contacts_workflow_executions__execution_id__resume_post: {
|
|
1087
|
+
input: {
|
|
1088
|
+
path: {
|
|
1089
|
+
/** Workflow execution id. */
|
|
1090
|
+
execution_id: string;
|
|
1091
|
+
};
|
|
1092
|
+
headers?: {
|
|
1093
|
+
"X-Target-Org-Id"?: string | null;
|
|
1094
|
+
};
|
|
1095
|
+
};
|
|
1096
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
1097
|
+
};
|
|
1098
|
+
/**
|
|
1099
|
+
* POST /duplicates/detection/run
|
|
1100
|
+
* Run Duplicate Detection
|
|
1101
|
+
* tier: write · scope: contacts:write
|
|
1102
|
+
*/
|
|
1103
|
+
run_duplicate_detection_duplicates_detection_run_post: {
|
|
1104
|
+
input: {
|
|
1105
|
+
headers?: {
|
|
1106
|
+
"X-Target-Org-Id"?: string | null;
|
|
1107
|
+
};
|
|
1108
|
+
body: RunDetectionRequest;
|
|
1109
|
+
};
|
|
1110
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
1111
|
+
};
|
|
1112
|
+
/**
|
|
1113
|
+
* POST /contacts/workflow-executions/run
|
|
1114
|
+
* Run Record Workflow
|
|
1115
|
+
* tier: billable · scope: enrichment:run
|
|
1116
|
+
*/
|
|
1117
|
+
run_record_workflow_contacts_workflow_executions_run_post: {
|
|
1118
|
+
input: {
|
|
1119
|
+
headers?: {
|
|
1120
|
+
"X-Target-Org-Id"?: string | null;
|
|
1121
|
+
};
|
|
1122
|
+
body: RunRecordWorkflowRequest;
|
|
1123
|
+
};
|
|
1124
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
1125
|
+
};
|
|
1126
|
+
/**
|
|
1127
|
+
* POST /contacts/{contact_id}/documents/from-skill
|
|
1128
|
+
* Save Skill Result To Contact
|
|
1129
|
+
* tier: write · scope: contacts:write
|
|
1130
|
+
*/
|
|
1131
|
+
save_skill_result_to_contact_contacts__contact_id__documents_from_skill_post: {
|
|
1132
|
+
input: {
|
|
1133
|
+
path: {
|
|
1134
|
+
/** Contact primary key. */
|
|
1135
|
+
contact_id: number;
|
|
1136
|
+
};
|
|
1137
|
+
headers?: {
|
|
1138
|
+
"X-Target-Org-Id"?: string | null;
|
|
1139
|
+
};
|
|
1140
|
+
body: SaveSkillResultRequest;
|
|
1141
|
+
};
|
|
1142
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
1143
|
+
};
|
|
1144
|
+
/**
|
|
1145
|
+
* POST /duplicates/auto-merge
|
|
1146
|
+
* Trigger Auto Merge
|
|
1147
|
+
* tier: destructive · scope: contacts:delete
|
|
1148
|
+
*/
|
|
1149
|
+
trigger_auto_merge_duplicates_auto_merge_post: {
|
|
1150
|
+
input: {
|
|
1151
|
+
headers?: {
|
|
1152
|
+
"X-Target-Org-Id"?: string | null;
|
|
1153
|
+
};
|
|
1154
|
+
body: AutoMergeRequest;
|
|
1155
|
+
};
|
|
1156
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
1157
|
+
};
|
|
1158
|
+
/**
|
|
1159
|
+
* POST /contacts/tags/unassign
|
|
1160
|
+
* Unassign Contact Tags
|
|
1161
|
+
* tier: write · scope: contacts:write
|
|
1162
|
+
*/
|
|
1163
|
+
unassign_contact_tags_contacts_tags_unassign_post: {
|
|
1164
|
+
input: {
|
|
1165
|
+
headers?: {
|
|
1166
|
+
"X-Target-Org-Id"?: string | null;
|
|
1167
|
+
};
|
|
1168
|
+
body: ContactTagAssignRequest;
|
|
1169
|
+
};
|
|
1170
|
+
output: ApiResponse_ContactTagWriteResult_;
|
|
1171
|
+
};
|
|
1172
|
+
/**
|
|
1173
|
+
* POST /contacts/unlock-info
|
|
1174
|
+
* Unlock Contact Info
|
|
1175
|
+
* tier: billable · scope: enrichment:run
|
|
1176
|
+
*/
|
|
1177
|
+
unlock_contact_info_contacts_unlock_info_post: {
|
|
1178
|
+
input: {
|
|
1179
|
+
query?: {
|
|
1180
|
+
/** Per-column filter JSON, resolved against `list_id`. */
|
|
1181
|
+
filterModel?: string | null;
|
|
1182
|
+
};
|
|
1183
|
+
headers?: {
|
|
1184
|
+
"X-Target-Org-Id"?: string | null;
|
|
1185
|
+
};
|
|
1186
|
+
body: UnlockContactInfoRequest;
|
|
1187
|
+
};
|
|
1188
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
1189
|
+
};
|
|
1190
|
+
/**
|
|
1191
|
+
* PATCH /contacts/{contact_id}
|
|
1192
|
+
* Update Contact
|
|
1193
|
+
* tier: write · scope: contacts:write
|
|
1194
|
+
*/
|
|
1195
|
+
update_contact_contacts__contact_id__patch: {
|
|
1196
|
+
input: {
|
|
1197
|
+
path: {
|
|
1198
|
+
/** Contact ID */
|
|
1199
|
+
contact_id: number;
|
|
1200
|
+
};
|
|
1201
|
+
headers?: {
|
|
1202
|
+
"X-Target-Org-Id"?: string | null;
|
|
1203
|
+
};
|
|
1204
|
+
body: ContactUpdateRequest;
|
|
1205
|
+
};
|
|
1206
|
+
output: ApiResponse_dict_;
|
|
1207
|
+
};
|
|
1208
|
+
/**
|
|
1209
|
+
* PUT /contacts/{contact_id}/documents/{document_id}
|
|
1210
|
+
* Update Contact Document
|
|
1211
|
+
* tier: write · scope: contacts:write
|
|
1212
|
+
*/
|
|
1213
|
+
update_contact_document_contacts__contact_id__documents__document_id__put: {
|
|
1214
|
+
input: {
|
|
1215
|
+
path: {
|
|
1216
|
+
/** Contact id. */
|
|
1217
|
+
contact_id: number;
|
|
1218
|
+
/** Document id. */
|
|
1219
|
+
document_id: string;
|
|
1220
|
+
};
|
|
1221
|
+
headers?: {
|
|
1222
|
+
"X-Target-Org-Id"?: string | null;
|
|
1223
|
+
};
|
|
1224
|
+
body: ContactDocumentUpdateRequest;
|
|
1225
|
+
};
|
|
1226
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
1227
|
+
};
|
|
1228
|
+
/**
|
|
1229
|
+
* PATCH /contacts/tags/{tag_id}
|
|
1230
|
+
* Update Contact Tag
|
|
1231
|
+
* tier: write · scope: contacts:write
|
|
1232
|
+
*/
|
|
1233
|
+
update_contact_tag_contacts_tags__tag_id__patch: {
|
|
1234
|
+
input: {
|
|
1235
|
+
path: {
|
|
1236
|
+
/** Tag id. */
|
|
1237
|
+
tag_id: string;
|
|
1238
|
+
};
|
|
1239
|
+
headers?: {
|
|
1240
|
+
"X-Target-Org-Id"?: string | null;
|
|
1241
|
+
};
|
|
1242
|
+
body: ContactTagUpdateRequest;
|
|
1243
|
+
};
|
|
1244
|
+
output: ApiResponse_ContactTag_;
|
|
1245
|
+
};
|
|
1246
|
+
/**
|
|
1247
|
+
* PUT /duplicates/settings
|
|
1248
|
+
* Update Duplicate Settings
|
|
1249
|
+
* tier: write · scope: contacts:write
|
|
1250
|
+
*/
|
|
1251
|
+
update_duplicate_settings_duplicates_settings_put: {
|
|
1252
|
+
input: {
|
|
1253
|
+
headers?: {
|
|
1254
|
+
"X-Target-Org-Id"?: string | null;
|
|
1255
|
+
};
|
|
1256
|
+
body: Record<string, unknown>;
|
|
1257
|
+
};
|
|
1258
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
1259
|
+
};
|
|
1260
|
+
/**
|
|
1261
|
+
* POST /contacts/verify-email
|
|
1262
|
+
* Verify Contact Emails
|
|
1263
|
+
* tier: billable · scope: enrichment:run
|
|
1264
|
+
*/
|
|
1265
|
+
verify_contact_emails_contacts_verify_email_post: {
|
|
1266
|
+
input: {
|
|
1267
|
+
query?: {
|
|
1268
|
+
/** Restrict a filtered selection to this list. */
|
|
1269
|
+
list_id?: number | null;
|
|
1270
|
+
/** Per-column filter JSON. With `list_id`, verifies every matching contact instead of the ids in the body. */
|
|
1271
|
+
filterModel?: string | null;
|
|
1272
|
+
};
|
|
1273
|
+
headers?: {
|
|
1274
|
+
"X-Target-Org-Id"?: string | null;
|
|
1275
|
+
};
|
|
1276
|
+
body: VerifyContactEmailRequest;
|
|
1277
|
+
};
|
|
1278
|
+
output: ApiResponse_CrmCollectionPayload_;
|
|
1279
|
+
};
|
|
1280
|
+
/**
|
|
1281
|
+
* POST /contacts/verify-email/async
|
|
1282
|
+
* Verify Contact Emails Async
|
|
1283
|
+
* tier: billable · scope: enrichment:run
|
|
1284
|
+
*/
|
|
1285
|
+
verify_contact_emails_async_contacts_verify_email_async_post: {
|
|
1286
|
+
input: {
|
|
1287
|
+
headers?: {
|
|
1288
|
+
"X-Target-Org-Id"?: string | null;
|
|
1289
|
+
};
|
|
1290
|
+
body: VerifyContactEmailAsyncRequest;
|
|
1291
|
+
};
|
|
1292
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
1293
|
+
};
|
|
1294
|
+
/**
|
|
1295
|
+
* POST /contacts/withdraw-from-sequences
|
|
1296
|
+
* Withdraw Contacts From Sequences
|
|
1297
|
+
* tier: write · scope: contacts:write
|
|
1298
|
+
*/
|
|
1299
|
+
withdraw_contacts_from_sequences_contacts_withdraw_from_sequences_post: {
|
|
1300
|
+
input: {
|
|
1301
|
+
headers?: {
|
|
1302
|
+
"X-Target-Org-Id"?: string | null;
|
|
1303
|
+
};
|
|
1304
|
+
body: WithdrawFromSequencesRequest;
|
|
1305
|
+
};
|
|
1306
|
+
output: ApiResponse_CrmRecordPayload_;
|
|
1307
|
+
};
|
|
1308
|
+
}
|
|
1309
|
+
|
|
1310
|
+
// 68 schemas referenced above (the same as G8Contract.<Name>).
|
|
1311
|
+
|
|
1312
|
+
export interface ApiResponse_ContactBulkGetResponse_ {
|
|
1313
|
+
data: ContactBulkGetResponse;
|
|
1314
|
+
pagination?: PaginationMeta | null;
|
|
1315
|
+
}
|
|
1316
|
+
|
|
1317
|
+
export interface ApiResponse_ContactCreateResponse_ {
|
|
1318
|
+
data: ContactCreateResponse;
|
|
1319
|
+
pagination?: PaginationMeta | null;
|
|
1320
|
+
}
|
|
1321
|
+
|
|
1322
|
+
export interface ApiResponse_ContactRelatedBatchResponse_ {
|
|
1323
|
+
data: ContactRelatedBatchResponse;
|
|
1324
|
+
pagination?: PaginationMeta | null;
|
|
1325
|
+
}
|
|
1326
|
+
|
|
1327
|
+
export interface ApiResponse_ContactResponse_ {
|
|
1328
|
+
data: ContactResponse;
|
|
1329
|
+
pagination?: PaginationMeta | null;
|
|
1330
|
+
}
|
|
1331
|
+
|
|
1332
|
+
export interface ApiResponse_ContactTagListResponse_ {
|
|
1333
|
+
data: ContactTagListResponse;
|
|
1334
|
+
pagination?: PaginationMeta | null;
|
|
1335
|
+
}
|
|
1336
|
+
|
|
1337
|
+
export interface ApiResponse_ContactTagWriteResult_ {
|
|
1338
|
+
data: ContactTagWriteResult;
|
|
1339
|
+
pagination?: PaginationMeta | null;
|
|
1340
|
+
}
|
|
1341
|
+
|
|
1342
|
+
export interface ApiResponse_ContactTag_ {
|
|
1343
|
+
data: ContactTag;
|
|
1344
|
+
pagination?: PaginationMeta | null;
|
|
1345
|
+
}
|
|
1346
|
+
|
|
1347
|
+
export interface ApiResponse_CreateContactColumnResponse_ {
|
|
1348
|
+
data: CreateContactColumnResponse;
|
|
1349
|
+
pagination?: PaginationMeta | null;
|
|
1350
|
+
}
|
|
1351
|
+
|
|
1352
|
+
export interface ApiResponse_CrmCollectionPayload_ {
|
|
1353
|
+
data: CrmCollectionPayload;
|
|
1354
|
+
pagination?: PaginationMeta | null;
|
|
1355
|
+
}
|
|
1356
|
+
|
|
1357
|
+
export interface ApiResponse_CrmRecordPayload_ {
|
|
1358
|
+
data: CrmRecordPayload;
|
|
1359
|
+
pagination?: PaginationMeta | null;
|
|
1360
|
+
}
|
|
1361
|
+
|
|
1362
|
+
export interface ApiResponse_dict_ {
|
|
1363
|
+
data: Record<string, unknown>;
|
|
1364
|
+
pagination?: PaginationMeta | null;
|
|
1365
|
+
}
|
|
1366
|
+
|
|
1367
|
+
export interface ApiResponse_list_Column__ {
|
|
1368
|
+
data: Array<Column>;
|
|
1369
|
+
pagination?: PaginationMeta | null;
|
|
1370
|
+
}
|
|
1371
|
+
|
|
1372
|
+
export interface ApiResponse_list_ContactListItem__ {
|
|
1373
|
+
data: Array<ContactListItem>;
|
|
1374
|
+
pagination?: PaginationMeta | null;
|
|
1375
|
+
}
|
|
1376
|
+
|
|
1377
|
+
/** Mirrors `ApproveRequest`. The app refuses anything but these two decisions. */
|
|
1378
|
+
export interface ApproveExecutionRequest {
|
|
1379
|
+
/** Approve or reject the paused step. */
|
|
1380
|
+
decision: "approve" | "reject";
|
|
1381
|
+
/** Recorded with a rejection. */
|
|
1382
|
+
reason?: string | null;
|
|
1383
|
+
}
|
|
1384
|
+
|
|
1385
|
+
/**
|
|
1386
|
+
* Set the owner on every record matching a selection.
|
|
1387
|
+
*
|
|
1388
|
+
* A null `owner_id` UNASSIGNS the matching records rather than leaving them
|
|
1389
|
+
* alone, so an omitted owner is a destructive instruction, not a no-op.
|
|
1390
|
+
*/
|
|
1391
|
+
export interface AssignOwnerMatchingRequest {
|
|
1392
|
+
/** Per-column filters. */
|
|
1393
|
+
filterModel?: Record<string, unknown>;
|
|
1394
|
+
/** Restrict the selection to this list. */
|
|
1395
|
+
list_id?: number | null;
|
|
1396
|
+
/** Owner to assign. Null clears the owner on every match. */
|
|
1397
|
+
owner_id?: string | null;
|
|
1398
|
+
/** Advanced AND/OR filter tree. */
|
|
1399
|
+
segmentFilter?: SegmentFilterGroup | null;
|
|
1400
|
+
}
|
|
1401
|
+
|
|
1402
|
+
/**
|
|
1403
|
+
* Run auto-merge once. NOT REVERSIBLE unless you undo each merge.
|
|
1404
|
+
*
|
|
1405
|
+
* Honours the org's own auto-merge and shadow-mode settings: with either
|
|
1406
|
+
* disabled the response SAYS SO instead of failing, so a 200 does not by
|
|
1407
|
+
* itself mean records were merged. Send `dry_run=true` first.
|
|
1408
|
+
*/
|
|
1409
|
+
export interface AutoMergeRequest {
|
|
1410
|
+
/** Report what would merge without merging it. */
|
|
1411
|
+
dry_run?: boolean;
|
|
1412
|
+
/** Object to merge. */
|
|
1413
|
+
entity_type: "contact" | "company";
|
|
1414
|
+
}
|
|
1415
|
+
|
|
1416
|
+
/**
|
|
1417
|
+
* Column entity representing a database column definition.
|
|
1418
|
+
* Used to describe table column metadata for MashupContact and other entities.
|
|
1419
|
+
*/
|
|
1420
|
+
export interface Column {
|
|
1421
|
+
data_type?: ColumnType;
|
|
1422
|
+
id?: number | null;
|
|
1423
|
+
/** Automatically computed: True if object_id is None/empty, False otherwise. */
|
|
1424
|
+
is_global: boolean;
|
|
1425
|
+
name?: string | null;
|
|
1426
|
+
object_id?: string | null;
|
|
1427
|
+
source?: ColumnSource;
|
|
1428
|
+
title: string;
|
|
1429
|
+
}
|
|
1430
|
+
|
|
1431
|
+
/**
|
|
1432
|
+
* Which entity a field in the contact field list belongs to.
|
|
1433
|
+
*
|
|
1434
|
+
* The ``GET /contacts/columns`` response deliberately combines fields from
|
|
1435
|
+
* three provenances into one list (issue #21184): the person record, their
|
|
1436
|
+
* employer's company record, and user-created custom columns. Consumers
|
|
1437
|
+
* (form-mapping UI, AI-agent field listing, CSV import) need to tell them
|
|
1438
|
+
* apart — a company field like ``COMPANY_REVENUE`` describes the employer,
|
|
1439
|
+
* not the contact.
|
|
1440
|
+
*
|
|
1441
|
+
* - ``contact``: a field on the person record (``MashupContact.*``) — the default.
|
|
1442
|
+
* - ``company``: a field on the contact's employer (``MashupCompany.*``),
|
|
1443
|
+
* surfaced so contacts can be mapped/filtered by company attributes.
|
|
1444
|
+
* - ``custom``: a user-created dynamic column (global or list-scoped).
|
|
1445
|
+
*/
|
|
1446
|
+
export type ColumnSource = "contact" | "company" | "custom";
|
|
1447
|
+
|
|
1448
|
+
/**
|
|
1449
|
+
* User-selectable dynamic-column data types.
|
|
1450
|
+
*
|
|
1451
|
+
* Every member must have a physical type in the repos' pg_type_map
|
|
1452
|
+
* (contacts/companies CDP repos + enrichment DynamicColumnRepository:
|
|
1453
|
+
* int→INTEGER, numeric→NUMERIC, text→TEXT, boolean→BOOLEAN) and belong to
|
|
1454
|
+
* the user-owned family in lists/usecases/dynamic_column_write_contract.py —
|
|
1455
|
+
* both already list these four. Write paths coerce values per type via
|
|
1456
|
+
* shared.infrustructure.db.cdp.dynamic_column_values.coerce_dynamic_value.
|
|
1457
|
+
*/
|
|
1458
|
+
export type ColumnType = "text" | "int" | "numeric" | "boolean";
|
|
1459
|
+
|
|
1460
|
+
/** One contact: the full record, or `found: false`. */
|
|
1461
|
+
export interface ContactBulkGetItem {
|
|
1462
|
+
/** The same record `GET /contacts/{contact_id}` returns. Null when not found. */
|
|
1463
|
+
contact?: ContactResponse | null;
|
|
1464
|
+
contact_id: number;
|
|
1465
|
+
/** False when the contact does not exist or is outside this key's scope (indistinguishable on purpose, like the per-contact 404). */
|
|
1466
|
+
found: boolean;
|
|
1467
|
+
}
|
|
1468
|
+
|
|
1469
|
+
/** Which contacts to read in full. */
|
|
1470
|
+
export interface ContactBulkGetRequest {
|
|
1471
|
+
/** Up to 100 contact ids, the ids `GET /contacts` returns. Duplicates are read once; the response keeps first-seen order. */
|
|
1472
|
+
contact_ids: Array<number>;
|
|
1473
|
+
/** When true, each found contact includes a `custom_fields` object keyed by column slug, as `GET /contacts/{contact_id}?include_custom_fields=true` does. */
|
|
1474
|
+
include_custom_fields?: boolean;
|
|
1475
|
+
}
|
|
1476
|
+
|
|
1477
|
+
export interface ContactBulkGetResponse {
|
|
1478
|
+
items?: Array<ContactBulkGetItem>;
|
|
1479
|
+
}
|
|
1480
|
+
|
|
1481
|
+
export interface ContactCompanySummary {
|
|
1482
|
+
city?: string | null;
|
|
1483
|
+
country?: string | null;
|
|
1484
|
+
domain?: string | null;
|
|
1485
|
+
employee_count?: string | null;
|
|
1486
|
+
id?: number | null;
|
|
1487
|
+
industry?: string | null;
|
|
1488
|
+
linkedin_url?: string | null;
|
|
1489
|
+
logo_url?: string | null;
|
|
1490
|
+
name?: string | null;
|
|
1491
|
+
state?: string | null;
|
|
1492
|
+
website?: string | null;
|
|
1493
|
+
}
|
|
1494
|
+
|
|
1495
|
+
/** Request body for creating contacts. */
|
|
1496
|
+
export interface ContactCreateRequest {
|
|
1497
|
+
/** City */
|
|
1498
|
+
city?: string | null;
|
|
1499
|
+
/** Company domain for matching */
|
|
1500
|
+
company_domain?: string | null;
|
|
1501
|
+
/** Existing company id (mashup_companies.id) to attach */
|
|
1502
|
+
company_id?: number | null;
|
|
1503
|
+
/** Country */
|
|
1504
|
+
country?: string | null;
|
|
1505
|
+
/** When true, custom_fields keys that match no existing column are created as NEW custom columns (list-scoped when list_id is set) and then written. */
|
|
1506
|
+
create_missing_fields?: boolean;
|
|
1507
|
+
/** Custom column values keyed by the column's display title (e.g. 'Followup 1'), its slug (e.g. 'udo_followup_1_ab12cd34'), or a case/space variant of the title. Keys matching no existing column are reported in the response's `custom_fields.ignored` unless `create_missing_fields` is true. */
|
|
1508
|
+
custom_fields?: (Record<string, string | null>) | null;
|
|
1509
|
+
/** Direct phone number */
|
|
1510
|
+
direct_phone?: string | null;
|
|
1511
|
+
/** Contact first name */
|
|
1512
|
+
first_name?: string | null;
|
|
1513
|
+
/** Department */
|
|
1514
|
+
job_department?: string | null;
|
|
1515
|
+
/** Job title */
|
|
1516
|
+
job_title?: string | null;
|
|
1517
|
+
/** Contact last name */
|
|
1518
|
+
last_name?: string | null;
|
|
1519
|
+
/** LinkedIn profile URL */
|
|
1520
|
+
linkedin_url?: string | null;
|
|
1521
|
+
/** Optional target list ID. When provided, the contact is added to this list after it is created; omit to create the contact without a list. */
|
|
1522
|
+
list_id?: number | null;
|
|
1523
|
+
/** Mobile phone number */
|
|
1524
|
+
mobile_phone?: string | null;
|
|
1525
|
+
/** Personal email addresses */
|
|
1526
|
+
personal_emails?: string | null;
|
|
1527
|
+
/** Seniority level */
|
|
1528
|
+
seniority_level?: string | null;
|
|
1529
|
+
/** State/Province */
|
|
1530
|
+
state?: string | null;
|
|
1531
|
+
/** Work email address */
|
|
1532
|
+
work_email?: string | null;
|
|
1533
|
+
}
|
|
1534
|
+
|
|
1535
|
+
export interface ContactCreateResponse {
|
|
1536
|
+
company_attached?: boolean;
|
|
1537
|
+
contact_id?: number | null;
|
|
1538
|
+
count: number;
|
|
1539
|
+
custom_fields?: CustomFieldWriteReport;
|
|
1540
|
+
merged?: boolean;
|
|
1541
|
+
status: string;
|
|
1542
|
+
validation_errors?: Array<string>;
|
|
1543
|
+
}
|
|
1544
|
+
|
|
1545
|
+
/** Mirrors `campaign_builder.models.contact_documents.UpdateContactDocumentRequest`. */
|
|
1546
|
+
export interface ContactDocumentUpdateRequest {
|
|
1547
|
+
/** Replacement document body. */
|
|
1548
|
+
content?: string | null;
|
|
1549
|
+
/** Replacement structured payload. */
|
|
1550
|
+
structured_data?: Record<string, unknown> | null;
|
|
1551
|
+
}
|
|
1552
|
+
|
|
1553
|
+
/** Lighter contact representation for list endpoints. */
|
|
1554
|
+
export interface ContactListItem {
|
|
1555
|
+
city?: string | null;
|
|
1556
|
+
company_id?: number | null;
|
|
1557
|
+
country?: string | null;
|
|
1558
|
+
custom_fields?: (Record<string, string | null>) | null;
|
|
1559
|
+
direct_phone?: string | null;
|
|
1560
|
+
first_name?: string | null;
|
|
1561
|
+
id?: number | null;
|
|
1562
|
+
job_department?: string | null;
|
|
1563
|
+
job_title?: string | null;
|
|
1564
|
+
last_name?: string | null;
|
|
1565
|
+
linkedin_url?: string | null;
|
|
1566
|
+
mobile_phone?: string | null;
|
|
1567
|
+
owner_id?: string | null;
|
|
1568
|
+
owner_name?: string | null;
|
|
1569
|
+
seniority_level?: string | null;
|
|
1570
|
+
state?: string | null;
|
|
1571
|
+
work_email?: string | null;
|
|
1572
|
+
}
|
|
1573
|
+
|
|
1574
|
+
/** Which contacts, and which of their related records, to read in one call. */
|
|
1575
|
+
export interface ContactRelatedBatchRequest {
|
|
1576
|
+
/** Up to 100 contact ids, the same ids the per-contact routes take. Duplicates are read once; the response keeps first-seen order. */
|
|
1577
|
+
contact_ids: Array<number>;
|
|
1578
|
+
/** Related records to return per contact. `sequences` matches `GET /contacts/{contact_id}/sequences`; `lists` matches `GET /contacts/{contact_id}/lists` (keyed on the contact primary key). */
|
|
1579
|
+
include?: Array<"sequences" | "lists">;
|
|
1580
|
+
}
|
|
1581
|
+
|
|
1582
|
+
export interface ContactRelatedBatchResponse {
|
|
1583
|
+
items?: Array<ContactRelatedItem>;
|
|
1584
|
+
}
|
|
1585
|
+
|
|
1586
|
+
/** One contact's related records. A field is present only when requested. */
|
|
1587
|
+
export interface ContactRelatedItem {
|
|
1588
|
+
contact_id: number;
|
|
1589
|
+
/** False when the contact does not exist or is outside this key's scope (indistinguishable on purpose, like the per-contact 404). */
|
|
1590
|
+
found: boolean;
|
|
1591
|
+
lists?: Array<Record<string, unknown>> | null;
|
|
1592
|
+
sequences?: Array<Record<string, unknown>> | null;
|
|
1593
|
+
}
|
|
1594
|
+
|
|
1595
|
+
export interface ContactResponse {
|
|
1596
|
+
about?: string | null;
|
|
1597
|
+
city?: string | null;
|
|
1598
|
+
company?: ContactCompanySummary | null;
|
|
1599
|
+
confidence_score?: number | null;
|
|
1600
|
+
country?: string | null;
|
|
1601
|
+
created_at?: string | null;
|
|
1602
|
+
custom_fields?: (Record<string, string | null>) | null;
|
|
1603
|
+
direct_phone?: string | null;
|
|
1604
|
+
facebook_url?: string | null;
|
|
1605
|
+
first_name?: string | null;
|
|
1606
|
+
full_name?: string | null;
|
|
1607
|
+
id: number;
|
|
1608
|
+
job_department?: string | null;
|
|
1609
|
+
job_title?: string | null;
|
|
1610
|
+
last_name?: string | null;
|
|
1611
|
+
linkedin_url?: string | null;
|
|
1612
|
+
meta_data?: Record<string, unknown> | null;
|
|
1613
|
+
mobile_phone?: string | null;
|
|
1614
|
+
personal_emails?: unknown | null;
|
|
1615
|
+
seniority_level?: string | null;
|
|
1616
|
+
state?: string | null;
|
|
1617
|
+
twitter_url?: string | null;
|
|
1618
|
+
updated_at?: string | null;
|
|
1619
|
+
work_email?: string | null;
|
|
1620
|
+
}
|
|
1621
|
+
|
|
1622
|
+
export interface ContactTag {
|
|
1623
|
+
archived?: boolean | null;
|
|
1624
|
+
color?: string | null;
|
|
1625
|
+
/** Contacts currently carrying the tag. */
|
|
1626
|
+
contact_count?: number | null;
|
|
1627
|
+
description?: string | null;
|
|
1628
|
+
id?: string | null;
|
|
1629
|
+
name?: string | null;
|
|
1630
|
+
[key: string]: unknown;
|
|
1631
|
+
}
|
|
1632
|
+
|
|
1633
|
+
export interface ContactTagAssignRequest {
|
|
1634
|
+
/** Contacts to tag. */
|
|
1635
|
+
contact_ids?: Array<number>;
|
|
1636
|
+
tag_ids: Array<string>;
|
|
1637
|
+
}
|
|
1638
|
+
|
|
1639
|
+
export interface ContactTagCreateRequest {
|
|
1640
|
+
/** Six-digit hex colour, e.g. `#4F46E5`. */
|
|
1641
|
+
color?: string | null;
|
|
1642
|
+
description?: string | null;
|
|
1643
|
+
name: string;
|
|
1644
|
+
}
|
|
1645
|
+
|
|
1646
|
+
export interface ContactTagListResponse {
|
|
1647
|
+
tags?: Array<ContactTag>;
|
|
1648
|
+
total?: number;
|
|
1649
|
+
[key: string]: unknown;
|
|
1650
|
+
}
|
|
1651
|
+
|
|
1652
|
+
export interface ContactTagMergeRequest {
|
|
1653
|
+
/** Tags to fold in. Removed on success. */
|
|
1654
|
+
source_tag_ids: Array<string>;
|
|
1655
|
+
/** Tag that survives and absorbs the assignments. */
|
|
1656
|
+
target_tag_id: string;
|
|
1657
|
+
}
|
|
1658
|
+
|
|
1659
|
+
/** Every field is optional; omit one to leave it untouched. */
|
|
1660
|
+
export interface ContactTagUpdateRequest {
|
|
1661
|
+
/** Archive without deleting. */
|
|
1662
|
+
archived?: boolean | null;
|
|
1663
|
+
color?: string | null;
|
|
1664
|
+
description?: string | null;
|
|
1665
|
+
name?: string | null;
|
|
1666
|
+
}
|
|
1667
|
+
|
|
1668
|
+
/** Whatever the handler reports about a write - counts, ids, or both. */
|
|
1669
|
+
export type ContactTagWriteResult = Record<string, unknown>;
|
|
1670
|
+
|
|
1671
|
+
/** Request body for updating a contact. All fields optional (partial update). */
|
|
1672
|
+
export interface ContactUpdateRequest {
|
|
1673
|
+
city?: string | null;
|
|
1674
|
+
company_domain?: string | null;
|
|
1675
|
+
company_id?: number | null;
|
|
1676
|
+
country?: string | null;
|
|
1677
|
+
direct_phone?: string | null;
|
|
1678
|
+
first_name?: string | null;
|
|
1679
|
+
job_department?: string | null;
|
|
1680
|
+
job_title?: string | null;
|
|
1681
|
+
last_name?: string | null;
|
|
1682
|
+
linkedin_url?: string | null;
|
|
1683
|
+
mobile_phone?: string | null;
|
|
1684
|
+
seniority_level?: string | null;
|
|
1685
|
+
state?: string | null;
|
|
1686
|
+
work_email?: string | null;
|
|
1687
|
+
}
|
|
1688
|
+
|
|
1689
|
+
/**
|
|
1690
|
+
* Request body for `POST /contacts/columns/create`.
|
|
1691
|
+
*
|
|
1692
|
+
* Mirrors the shared `CreateColumnRequest` shape (`title`, `data_type`,
|
|
1693
|
+
* `list_id`, `created_by`) plus an OPTIONAL `enrichment` block that, when
|
|
1694
|
+
* supplied, provisions a companion waterfall pipeline in the same
|
|
1695
|
+
* request — so the new column is immediately runnable via
|
|
1696
|
+
* `POST /enrichment/waterfall/enrich`.
|
|
1697
|
+
*
|
|
1698
|
+
* Without the `enrichment` block the column is created, but it has no
|
|
1699
|
+
* enrichment plan; the UI "Enrich" button (and `g8_enrich_contacts` in
|
|
1700
|
+
* waterfall mode) will return 422 (`waterfall_config_missing`) until a
|
|
1701
|
+
* pipeline is provisioned separately via
|
|
1702
|
+
* `POST /enrichment/waterfall/configs`.
|
|
1703
|
+
*
|
|
1704
|
+
* Backwards compatible: callers that previously POSTed only `title` /
|
|
1705
|
+
* `data_type` / `list_id` / `created_by` continue to work unchanged.
|
|
1706
|
+
*/
|
|
1707
|
+
export interface CreateContactColumnRequest {
|
|
1708
|
+
/** Email of the user creating the column (for audit). */
|
|
1709
|
+
created_by: string;
|
|
1710
|
+
/** Column data type. Currently only 'text' is supported. */
|
|
1711
|
+
data_type?: ColumnType;
|
|
1712
|
+
/** STRONGLY RECOMMENDED. Optional waterfall enrichment block. When supplied, a companion `enrichment_configs` row is created alongside the column so the UI 'Enrich' button works immediately. Without it the column exists but isn't enrichable until a pipeline is configured via POST /enrichment/waterfall/configs. */
|
|
1713
|
+
enrichment?: CreateFieldEnrichmentInput | null;
|
|
1714
|
+
/** If set, the column is list-scoped (only visible on that list). Required when `enrichment` is supplied — waterfall pipelines are list-scoped. */
|
|
1715
|
+
list_id?: number | null;
|
|
1716
|
+
/** Column title shown in the UI (e.g. 'Lead Score') */
|
|
1717
|
+
title: string;
|
|
1718
|
+
}
|
|
1719
|
+
|
|
1720
|
+
/**
|
|
1721
|
+
* Response shape for `POST /contacts/columns/create`.
|
|
1722
|
+
*
|
|
1723
|
+
* Mirrors the `Column` entity fields verbatim so existing callers reading
|
|
1724
|
+
* `data.id` / `data.title` / `data.name` / `data.is_global` etc. keep
|
|
1725
|
+
* working without code changes. Adds one new optional `enrichment` field
|
|
1726
|
+
* that is populated when the request included an `enrichment` block.
|
|
1727
|
+
*/
|
|
1728
|
+
export interface CreateContactColumnResponse {
|
|
1729
|
+
data_type?: ColumnType;
|
|
1730
|
+
/** Populated when the request included an `enrichment` block. Use `enrichment.column_id` for subsequent POST /enrichment/waterfall/enrich calls. */
|
|
1731
|
+
enrichment?: CreateFieldEnrichmentResponse | null;
|
|
1732
|
+
id?: number | null;
|
|
1733
|
+
/** Computed: True when object_id is null/empty (global column). */
|
|
1734
|
+
is_global?: boolean;
|
|
1735
|
+
name?: string | null;
|
|
1736
|
+
object_id?: string | null;
|
|
1737
|
+
title: string;
|
|
1738
|
+
}
|
|
1739
|
+
|
|
1740
|
+
/**
|
|
1741
|
+
* Optional enrichment-pipeline block attached at column-create time.
|
|
1742
|
+
*
|
|
1743
|
+
* When supplied, `POST /fields` creates a companion `enrichment_configs`
|
|
1744
|
+
* row in the same request so the new column is immediately runnable via
|
|
1745
|
+
* `POST /enrichment/waterfall/enrich`. Without this block the column
|
|
1746
|
+
* exists but has no enrichment plan — calling /waterfall/enrich on it
|
|
1747
|
+
* returns 422 (`waterfall_config_missing`).
|
|
1748
|
+
*
|
|
1749
|
+
* Currently only `type='waterfall'` is supported; AI / formula
|
|
1750
|
+
* enrichment will follow once the rest of the agent surface lands.
|
|
1751
|
+
*/
|
|
1752
|
+
export interface CreateFieldEnrichmentInput {
|
|
1753
|
+
/** Optional post-enrichment email verification config. */
|
|
1754
|
+
email_verification?: EmailVerificationInput | null;
|
|
1755
|
+
/** Target field identifier. Defaults to the new column's slug. */
|
|
1756
|
+
field_to_enrich?: string | null;
|
|
1757
|
+
/** Pipeline name. Defaults to `<column title> Enrichment` if omitted. */
|
|
1758
|
+
name?: string | null;
|
|
1759
|
+
/** Ordered list of provider names. Without `target_field`, server maps each to its default email-finder action (legacy). With `target_field`, filters the column template to these providers (correct per-field action preserved). Mutually exclusive with `steps`. */
|
|
1760
|
+
providers?: Array<string> | null;
|
|
1761
|
+
/** If true, skip rows where the target field is already populated. */
|
|
1762
|
+
skip_existing_values?: boolean;
|
|
1763
|
+
/** Full caller-supplied step list. Persisted verbatim. Mutually exclusive with `providers`. */
|
|
1764
|
+
steps?: Array<WaterfallStepInput> | null;
|
|
1765
|
+
/** Kind of data this column holds — CONTACT_DIRECT_PHONE, CONTACT_MOBILE_PHONE, CONTACT_WORK_EMAIL, CONTACT_LINKEDIN_URL, COMPANY_PHONE, ... or a friendly synonym ('phone', 'mobile', 'email', 'linkedin'). When set, the pipeline is built from the server's per-column TEMPLATE so each provider runs its CORRECT action for that data kind (e.g. leadmagic `mobile_finder` for a phone, NOT `email_finder`) — the same actions the web UI's 'Add column -> Waterfall' picks. Combine with `providers[]` to keep only those providers from the template. Mutually exclusive with `steps`. When omitted, the legacy `providers[]` email-finder shortcut is unchanged. */
|
|
1766
|
+
target_field?: string | null;
|
|
1767
|
+
/** Pipeline kind. Only 'waterfall' is supported today. */
|
|
1768
|
+
type?: string;
|
|
1769
|
+
}
|
|
1770
|
+
|
|
1771
|
+
/** Echo of the companion enrichment config created by `enrichment` block. */
|
|
1772
|
+
export interface CreateFieldEnrichmentResponse {
|
|
1773
|
+
/** column_id slug to pass to /enrichment/waterfall/enrich */
|
|
1774
|
+
column_id: string;
|
|
1775
|
+
config_id: string;
|
|
1776
|
+
email_verification?: Record<string, unknown> | null;
|
|
1777
|
+
name: string;
|
|
1778
|
+
providers?: Array<string>;
|
|
1779
|
+
type: string;
|
|
1780
|
+
}
|
|
1781
|
+
|
|
1782
|
+
/** An open envelope for a LIST result, so a bare list keeps its shape. */
|
|
1783
|
+
export interface CrmCollectionPayload {
|
|
1784
|
+
items?: Array<unknown>;
|
|
1785
|
+
[key: string]: unknown;
|
|
1786
|
+
}
|
|
1787
|
+
|
|
1788
|
+
/**
|
|
1789
|
+
* An open envelope for one record, one dashboard or one job receipt.
|
|
1790
|
+
*
|
|
1791
|
+
* Open because most of these reads are COMPUTED shapes - an engagement
|
|
1792
|
+
* summary, a next-best-step, an intelligence status - that grow with the
|
|
1793
|
+
* product, and dropping a field from an advisory read makes it say "nothing
|
|
1794
|
+
* to report" rather than "we did not tell you".
|
|
1795
|
+
*/
|
|
1796
|
+
export type CrmRecordPayload = Record<string, unknown>;
|
|
1797
|
+
|
|
1798
|
+
/**
|
|
1799
|
+
* How a write path handled the request's custom (dynamic) column keys.
|
|
1800
|
+
*
|
|
1801
|
+
* Shared by every Developer API write surface that accepts custom columns
|
|
1802
|
+
* (``POST /contacts``, ``PUT /contacts/assert[/batch]``,
|
|
1803
|
+
* ``PUT /companies/assert[/batch]``).
|
|
1804
|
+
*
|
|
1805
|
+
* Every field defaults to empty, so a client that ignores this object sees no
|
|
1806
|
+
* behavioural change. It exists because these keys were previously dropped
|
|
1807
|
+
* with NO caller-visible signal — the only trace was a server-side
|
|
1808
|
+
* ``logger.warning`` in ``append_to_audience``.
|
|
1809
|
+
*/
|
|
1810
|
+
export interface CustomFieldWriteReport {
|
|
1811
|
+
/** Caller keys for which a NEW custom column was created by this request. */
|
|
1812
|
+
created?: Array<string>;
|
|
1813
|
+
/** Caller keys that matched no custom column and were NOT written. Create the column first (POST /fields) or pass create_missing_fields=true. */
|
|
1814
|
+
ignored?: Array<string>;
|
|
1815
|
+
/** Caller keys that resolved to a custom column and were written. */
|
|
1816
|
+
written?: Array<string>;
|
|
1817
|
+
}
|
|
1818
|
+
|
|
1819
|
+
/**
|
|
1820
|
+
* Email verification config attached to a waterfall pipeline.
|
|
1821
|
+
*
|
|
1822
|
+
* Mirrors the canonical `EmailVerificationConfigDto` in
|
|
1823
|
+
* `enrichment/interfaces/fastapi/waterfall_dtos.py` so the dev-API and the
|
|
1824
|
+
* UI persist an identical settings shape (the CF worker reads `settings.
|
|
1825
|
+
* email_verification.*` regardless of which surface saved the pipeline).
|
|
1826
|
+
*/
|
|
1827
|
+
export interface EmailVerificationInput {
|
|
1828
|
+
/** Treat catch-all responses as valid (domains that accept any address). */
|
|
1829
|
+
accept_catchall?: boolean;
|
|
1830
|
+
/** Enable post-enrichment email verification */
|
|
1831
|
+
enabled?: boolean;
|
|
1832
|
+
/** Verification provider. Charges credits when use_system_credentials=True. */
|
|
1833
|
+
provider?: "zerobounce" | "hunter" | "icypeas" | "leadmagic";
|
|
1834
|
+
/** Use graph8-managed API keys (charges credits). False = use org's BYOK keys. */
|
|
1835
|
+
use_system_credentials?: boolean;
|
|
1836
|
+
/** Verification statuses to accept as valid. Typical: ['valid'] or ['valid','catch-all']. */
|
|
1837
|
+
valid_statuses?: Array<string>;
|
|
1838
|
+
}
|
|
1839
|
+
|
|
1840
|
+
/**
|
|
1841
|
+
* Page through contacts, optionally projecting a narrow column set.
|
|
1842
|
+
*
|
|
1843
|
+
* `mapping_columns` is not only a smaller payload: naming a narrow set lets
|
|
1844
|
+
* the planner drop joins the full row would force, so it is materially
|
|
1845
|
+
* cheaper on a wide org.
|
|
1846
|
+
*/
|
|
1847
|
+
export interface FetchContactsRequest {
|
|
1848
|
+
/** Serialized per-column filter JSON. Omit for no filter. */
|
|
1849
|
+
filter?: string | null;
|
|
1850
|
+
/** Records per page. */
|
|
1851
|
+
limit?: number;
|
|
1852
|
+
/** Columns to return. Omit for every column. */
|
|
1853
|
+
mapping_columns?: Array<string> | null;
|
|
1854
|
+
/** Page number (1-indexed). */
|
|
1855
|
+
page?: number;
|
|
1856
|
+
}
|
|
1857
|
+
|
|
1858
|
+
/**
|
|
1859
|
+
* One structured filter condition.
|
|
1860
|
+
*
|
|
1861
|
+
* Mirrors `shared.interfaces.fastapi.dtos.DtoCondition`.
|
|
1862
|
+
*/
|
|
1863
|
+
export interface FilterCondition {
|
|
1864
|
+
/** Field name to apply the condition to. */
|
|
1865
|
+
field: string;
|
|
1866
|
+
/** Operator, e.g. `=`, `in`, `like`. */
|
|
1867
|
+
operator?: string;
|
|
1868
|
+
/** Value to compare against. */
|
|
1869
|
+
value?: unknown;
|
|
1870
|
+
/** Secondary value, for range operators. */
|
|
1871
|
+
value_to?: unknown | null;
|
|
1872
|
+
}
|
|
1873
|
+
|
|
1874
|
+
/** Which side of a merge wins one field. */
|
|
1875
|
+
export interface MergeFieldOverride {
|
|
1876
|
+
/** Field name, e.g. `CONTACT_JOB_TITLE`. */
|
|
1877
|
+
field: string;
|
|
1878
|
+
/** Which record's value to keep. */
|
|
1879
|
+
winner: "primary" | "secondary";
|
|
1880
|
+
}
|
|
1881
|
+
|
|
1882
|
+
/**
|
|
1883
|
+
* Add every record matching a filter into a target list.
|
|
1884
|
+
*
|
|
1885
|
+
* Mirrors `MergeFilteredContactsRequest` / `MergeFilteredCompaniesRequest`,
|
|
1886
|
+
* which are field-identical. Despite the name this MERGES A SELECTION INTO A
|
|
1887
|
+
* LIST - it does not merge duplicate records together. `/duplicates` is the
|
|
1888
|
+
* surface that does that.
|
|
1889
|
+
*
|
|
1890
|
+
* On a 409 the call is telling you some records need a decision; re-send
|
|
1891
|
+
* with `conflict_resolution` set.
|
|
1892
|
+
*/
|
|
1893
|
+
export interface MergeFilteredRequest {
|
|
1894
|
+
/** Required when retrying after a 409. `add_all` takes every warned record, `skip_all` takes none of them, `custom` takes the ids in `include_warned_ids`. Blocked records are excluded either way. */
|
|
1895
|
+
conflict_resolution?: ("add_all" | "skip_all" | "custom") | null;
|
|
1896
|
+
/** Source-column to target-column mapping for custom columns. */
|
|
1897
|
+
dynamic_column_mapping?: Record<string, string>;
|
|
1898
|
+
/** Conditions selecting the source records. */
|
|
1899
|
+
filter?: Array<FilterCondition>;
|
|
1900
|
+
/** With `conflict_resolution=custom`, the warned ids to include. */
|
|
1901
|
+
include_warned_ids?: Array<string> | null;
|
|
1902
|
+
/** Advanced AND/OR filter tree. */
|
|
1903
|
+
segmentFilter?: SegmentFilterGroup | null;
|
|
1904
|
+
/** List the matching records are added to. */
|
|
1905
|
+
target_list_id: number;
|
|
1906
|
+
}
|
|
1907
|
+
|
|
1908
|
+
/**
|
|
1909
|
+
* Merge `secondary_id` INTO the record in the path. The secondary stops existing.
|
|
1910
|
+
*
|
|
1911
|
+
* Mirrors `_MergeContactRequest` / `_MergeCompanyRequest`, which are identical.
|
|
1912
|
+
*/
|
|
1913
|
+
export interface MergeRecordRequest {
|
|
1914
|
+
/** The bulk criterion, when `trigger` is `bulk_criterion`. */
|
|
1915
|
+
bulk_criterion?: string | null;
|
|
1916
|
+
/** Decide individual fields instead of the app's rules. */
|
|
1917
|
+
field_overrides?: Array<MergeFieldOverride>;
|
|
1918
|
+
/** The record merged AWAY. */
|
|
1919
|
+
secondary_id: number;
|
|
1920
|
+
/** The duplicate suggestion this merge acts on, if any. */
|
|
1921
|
+
suggestion_id?: string | null;
|
|
1922
|
+
/** What prompted the merge. Recorded on the audit row. */
|
|
1923
|
+
trigger?: "manual" | "bulk_criterion";
|
|
1924
|
+
}
|
|
1925
|
+
|
|
1926
|
+
export interface PaginationMeta {
|
|
1927
|
+
/** Whether there are more pages */
|
|
1928
|
+
has_next: boolean;
|
|
1929
|
+
/** Items per page */
|
|
1930
|
+
limit: number;
|
|
1931
|
+
/** Opaque cursor for the next page; null when there are no more items. Pass it back as the `cursor` query param to fetch the following page without computing page numbers. */
|
|
1932
|
+
next_cursor?: string | null;
|
|
1933
|
+
/** Current page number (1-indexed) */
|
|
1934
|
+
page: number;
|
|
1935
|
+
/** Total number of items */
|
|
1936
|
+
total: number;
|
|
1937
|
+
}
|
|
1938
|
+
|
|
1939
|
+
/**
|
|
1940
|
+
* Dry-run a duplicate-detection rule. Writes nothing.
|
|
1941
|
+
*
|
|
1942
|
+
* Returns how many pairs the rule would match plus a small sample, which is
|
|
1943
|
+
* the only way to size a rule before auto-merge starts acting on it.
|
|
1944
|
+
*/
|
|
1945
|
+
export interface PreviewDetectionRuleRequest {
|
|
1946
|
+
/** Override the default confidence bucket. */
|
|
1947
|
+
confidence_bucket?: ("high" | "medium" | "low") | null;
|
|
1948
|
+
/** Object the rule matches on. */
|
|
1949
|
+
entity_type: "contact" | "company" | "deal";
|
|
1950
|
+
/** Column the rule compares. */
|
|
1951
|
+
field: string;
|
|
1952
|
+
/** How two values are considered equal. */
|
|
1953
|
+
match_mode: "exact" | "normalized" | "fuzzy_levenshtein" | "domain_match" | "phone_e164" | "linkedin_handle";
|
|
1954
|
+
/** Name for the rule being previewed. */
|
|
1955
|
+
rule_name: string;
|
|
1956
|
+
/** Override the platform default score for this rule. */
|
|
1957
|
+
score?: number | null;
|
|
1958
|
+
/** Platform rule template the rule is built from. */
|
|
1959
|
+
template: string;
|
|
1960
|
+
}
|
|
1961
|
+
|
|
1962
|
+
/**
|
|
1963
|
+
* Resolve profile photos for a batch of LinkedIn URLs.
|
|
1964
|
+
*
|
|
1965
|
+
* Returns an entry only for contacts that have an allow-listed https photo,
|
|
1966
|
+
* so a missing key means "no photo", not "lookup failed".
|
|
1967
|
+
*/
|
|
1968
|
+
export interface ProfilePicturesRequest {
|
|
1969
|
+
/** LinkedIn profile URLs (deduplicated, max 200). */
|
|
1970
|
+
linkedin_urls?: Array<string>;
|
|
1971
|
+
}
|
|
1972
|
+
|
|
1973
|
+
/**
|
|
1974
|
+
* Read every column value for ONE row, resolved against a list.
|
|
1975
|
+
*
|
|
1976
|
+
* The list decides whether `record_id` is read as a contact or a company,
|
|
1977
|
+
* and which list-scoped custom columns are in play - which is why it is
|
|
1978
|
+
* required rather than inferred.
|
|
1979
|
+
*/
|
|
1980
|
+
export interface RecordColumnValuesRequest {
|
|
1981
|
+
/** List the record is read through. */
|
|
1982
|
+
list_id: number;
|
|
1983
|
+
/** Record primary key. */
|
|
1984
|
+
record_id: number;
|
|
1985
|
+
}
|
|
1986
|
+
|
|
1987
|
+
/** Mirrors `duplicates.interfaces.router._RunDetectionRequest`. */
|
|
1988
|
+
export interface RunDetectionRequest {
|
|
1989
|
+
/** What to scan. */
|
|
1990
|
+
entity_type: "contact" | "company" | "deal";
|
|
1991
|
+
}
|
|
1992
|
+
|
|
1993
|
+
/** Mirrors `RunWorkflowRequest`. `run_mode` is closed to the app's three values. */
|
|
1994
|
+
export interface RunRecordWorkflowRequest {
|
|
1995
|
+
/** List (workbench) the workflow belongs to. */
|
|
1996
|
+
list_id: number;
|
|
1997
|
+
/** Rows to run it on, for `selected`. */
|
|
1998
|
+
record_ids: Array<number>;
|
|
1999
|
+
/** Which rows to run on. */
|
|
2000
|
+
run_mode?: "selected" | "filtered" | "all";
|
|
2001
|
+
/** Workflow to run. */
|
|
2002
|
+
workflow_id: string;
|
|
2003
|
+
}
|
|
2004
|
+
|
|
2005
|
+
/** Attach the output of a skill run to a record as a document. */
|
|
2006
|
+
export interface SaveSkillResultRequest {
|
|
2007
|
+
/** Action within that execution. */
|
|
2008
|
+
action_name: string;
|
|
2009
|
+
/** Document body to store. */
|
|
2010
|
+
content: string;
|
|
2011
|
+
/** The skill execution that produced the content. */
|
|
2012
|
+
execution_id: string;
|
|
2013
|
+
}
|
|
2014
|
+
|
|
2015
|
+
/**
|
|
2016
|
+
* An AND/OR group of leaves and nested groups, at most three groups deep.
|
|
2017
|
+
*
|
|
2018
|
+
* Mirrors `SegmentFilterGroup` in `contacts.domain.value_objects.ag_grid_models`.
|
|
2019
|
+
* `op` is closed because the app REFUSES an unrecognised connector rather
|
|
2020
|
+
* than defaulting to AND - defaulting would silently return a different
|
|
2021
|
+
* result set, and on a destructive route that is a different set of records
|
|
2022
|
+
* acted on.
|
|
2023
|
+
*
|
|
2024
|
+
* FIXED DEPTH, NOT RECURSIVE. The app's model is self-referencing; the
|
|
2025
|
+
* published one deliberately is not, because a schema that reaches itself
|
|
2026
|
+
* through `$ref` sends the docs renderer into unbounded recursion. Three
|
|
2027
|
+
* group levels (this one, `SegmentFilterSubgroup`, `SegmentFilterInnerGroup`)
|
|
2028
|
+
* cover every filter the app's own builder produces; the app's larger depth
|
|
2029
|
+
* and leaf budget still applies and surfaces as a 422.
|
|
2030
|
+
*/
|
|
2031
|
+
export interface SegmentFilterGroup {
|
|
2032
|
+
/** Nested groups and/or leaf conditions. */
|
|
2033
|
+
children?: Array<SegmentFilterSubgroup | SegmentFilterLeaf>;
|
|
2034
|
+
/** Connector for this group. Case-insensitive. */
|
|
2035
|
+
op: "AND" | "OR" | "and" | "or";
|
|
2036
|
+
}
|
|
2037
|
+
|
|
2038
|
+
/** The third and deepest group level: leaf conditions only. */
|
|
2039
|
+
export interface SegmentFilterInnerGroup {
|
|
2040
|
+
/** Leaf conditions. */
|
|
2041
|
+
children?: Array<SegmentFilterLeaf>;
|
|
2042
|
+
/** Connector for this group. Case-insensitive. */
|
|
2043
|
+
op: "AND" | "OR" | "and" | "or";
|
|
2044
|
+
}
|
|
2045
|
+
|
|
2046
|
+
/**
|
|
2047
|
+
* One field-level condition inside an advanced-filter tree.
|
|
2048
|
+
*
|
|
2049
|
+
* Mirrors `contacts.domain.value_objects.ag_grid_models.SegmentFilterLeaf`.
|
|
2050
|
+
* `op` is CLOSED here: the app compiles its UI vocabulary down to this
|
|
2051
|
+
* canonical set before sending, and an unrecognised operator reaching the
|
|
2052
|
+
* SQL builder is a 500 rather than a refusal naming the valid operators.
|
|
2053
|
+
*/
|
|
2054
|
+
export interface SegmentFilterLeaf {
|
|
2055
|
+
/** Column to test, e.g. `CONTACT_JOB_TITLE`. */
|
|
2056
|
+
field: string;
|
|
2057
|
+
/** Comparison to apply. */
|
|
2058
|
+
op: "eq" | "neq" | "lt" | "lte" | "gt" | "gte" | "contains" | "icontains" | "starts_with" | "ends_with" | "in" | "not_in" | "between" | "is_null" | "is_not_null";
|
|
2059
|
+
/** Value to compare against. */
|
|
2060
|
+
value?: unknown | null;
|
|
2061
|
+
/** Upper bound. Only meaningful with `between`. */
|
|
2062
|
+
valueTo?: unknown | null;
|
|
2063
|
+
}
|
|
2064
|
+
|
|
2065
|
+
/** The second group level: leaves and/or innermost groups. */
|
|
2066
|
+
export interface SegmentFilterSubgroup {
|
|
2067
|
+
/** Innermost groups and/or leaf conditions. */
|
|
2068
|
+
children?: Array<SegmentFilterInnerGroup | SegmentFilterLeaf>;
|
|
2069
|
+
/** Connector for this group. Case-insensitive. */
|
|
2070
|
+
op: "AND" | "OR" | "and" | "or";
|
|
2071
|
+
}
|
|
2072
|
+
|
|
2073
|
+
/**
|
|
2074
|
+
* Reveal withheld contact details. SPENDS CREDITS.
|
|
2075
|
+
*
|
|
2076
|
+
* Charges per contact actually unlocked. Already-unlocked contacts are not
|
|
2077
|
+
* charged again, so re-sending the same ids is safe but not free to compute.
|
|
2078
|
+
*/
|
|
2079
|
+
export interface UnlockContactInfoRequest {
|
|
2080
|
+
/** Resolve the complete matching set server-side. */
|
|
2081
|
+
allMatching?: boolean;
|
|
2082
|
+
/** Contacts to unlock (max 1000). */
|
|
2083
|
+
contact_ids?: Array<number> | null;
|
|
2084
|
+
/** Per-column filters. */
|
|
2085
|
+
filterModel?: Record<string, unknown>;
|
|
2086
|
+
/** Unlock the contacts in this list. */
|
|
2087
|
+
list_id?: number | null;
|
|
2088
|
+
/** Advanced AND/OR filter tree. */
|
|
2089
|
+
segmentFilter?: SegmentFilterGroup | null;
|
|
2090
|
+
}
|
|
2091
|
+
|
|
2092
|
+
/**
|
|
2093
|
+
* Queue verification for a LIST or a filtered selection.
|
|
2094
|
+
*
|
|
2095
|
+
* SPENDS CREDITS, and unlike the synchronous route the size is not known
|
|
2096
|
+
* when the call returns - `all_matching` resolves the selection server-side.
|
|
2097
|
+
*/
|
|
2098
|
+
export interface VerifyContactEmailAsyncRequest {
|
|
2099
|
+
/** Resolve the complete matching set server-side, not just a page. */
|
|
2100
|
+
allMatching?: boolean;
|
|
2101
|
+
/** Per-column filters, keyed by column name. */
|
|
2102
|
+
filterModel?: Record<string, unknown>;
|
|
2103
|
+
/** Restrict the selection to this list. */
|
|
2104
|
+
list_id?: number | null;
|
|
2105
|
+
/** Advanced cross-column AND/OR filter tree. */
|
|
2106
|
+
segmentFilter?: SegmentFilterGroup | null;
|
|
2107
|
+
}
|
|
2108
|
+
|
|
2109
|
+
/**
|
|
2110
|
+
* Re-check the deliverability of a named batch of contacts' emails.
|
|
2111
|
+
*
|
|
2112
|
+
* SPENDS CREDITS: each address is sent to the email-verification service.
|
|
2113
|
+
* Use the async variant for a whole list or a filtered selection.
|
|
2114
|
+
*/
|
|
2115
|
+
export interface VerifyContactEmailRequest {
|
|
2116
|
+
/** Contact primary keys (max 1000). Empty verifies nothing. */
|
|
2117
|
+
contact_pks?: Array<number>;
|
|
2118
|
+
}
|
|
2119
|
+
|
|
2120
|
+
/**
|
|
2121
|
+
* Single step in a caller-supplied waterfall sequence.
|
|
2122
|
+
*
|
|
2123
|
+
* Mirrors `WaterfallStepDto` in `enrichment/interfaces/fastapi/waterfall_dtos.py`.
|
|
2124
|
+
* Persisted verbatim into `enrichment_configs.config.steps[]` so the CF
|
|
2125
|
+
* worker can resolve provider, action and credentials the same way
|
|
2126
|
+
* UI-saved pipelines do.
|
|
2127
|
+
*/
|
|
2128
|
+
export interface WaterfallStepInput {
|
|
2129
|
+
/** Provider action: lookup_person, find_email, enrich_person, ... */
|
|
2130
|
+
action: string;
|
|
2131
|
+
/** Human-readable label shown in UI. Auto-titled from `action` if omitted. */
|
|
2132
|
+
action_display_name?: string | null;
|
|
2133
|
+
confidence_threshold?: number;
|
|
2134
|
+
/** Provider-specific options (e.g. apollo `reveal_phone_numbers=true`). */
|
|
2135
|
+
config?: Record<string, unknown>;
|
|
2136
|
+
enabled?: boolean;
|
|
2137
|
+
/** Step identifier. Auto-generated (`step_<provider>_<uuid8>`) if omitted. */
|
|
2138
|
+
id?: string | null;
|
|
2139
|
+
/** Maps provider input names to graph8 column identifiers (CONTACT_*). */
|
|
2140
|
+
input_mapping?: Record<string, string>;
|
|
2141
|
+
/** True = use graph8-managed credentials + charge credits. False = use org BYOK. */
|
|
2142
|
+
is_system_provider?: boolean;
|
|
2143
|
+
max_retries?: number;
|
|
2144
|
+
/** 0-indexed execution order. */
|
|
2145
|
+
order?: number;
|
|
2146
|
+
/** Dotted path the worker writes into (e.g. 'contact.work_email'). */
|
|
2147
|
+
output_field?: string | null;
|
|
2148
|
+
/** Optional output field remap (deprecated — prefer `output_field`). */
|
|
2149
|
+
output_mapping?: Record<string, string>;
|
|
2150
|
+
/** Provider name: graph8, hunter, prospeo, dropcontact, apollo, ... */
|
|
2151
|
+
provider: string;
|
|
2152
|
+
stop_on_success?: boolean;
|
|
2153
|
+
}
|
|
2154
|
+
|
|
2155
|
+
/**
|
|
2156
|
+
* Take contacts OUT of a sequence. They stop receiving its steps.
|
|
2157
|
+
*
|
|
2158
|
+
* `remove_all=true` withdraws them from EVERY sequence they are enrolled
|
|
2159
|
+
* in and ignores `sequence_id`; that is the wider blast radius of the two
|
|
2160
|
+
* and it is never the default.
|
|
2161
|
+
*/
|
|
2162
|
+
export interface WithdrawFromSequencesRequest {
|
|
2163
|
+
/** Contact primary keys to withdraw (max 5000). */
|
|
2164
|
+
contact_ids?: Array<number>;
|
|
2165
|
+
/** Withdraw from EVERY enrolled sequence. Ignores `sequence_id`. */
|
|
2166
|
+
remove_all?: boolean;
|
|
2167
|
+
/** Sequence to withdraw from. Required unless `remove_all` is true. */
|
|
2168
|
+
sequence_id?: string | null;
|
|
2169
|
+
/** Origin label recorded on the resulting event. */
|
|
2170
|
+
source?: string | null;
|
|
2171
|
+
/** Terminal state to record: removed | completed | not_interested. */
|
|
2172
|
+
target_state?: string | null;
|
|
2173
|
+
}
|