@graph8/sdk 0.251.0 → 0.262.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 +105 -7
- package/dist/index.d.ts +105 -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 +103 -7
- package/dist/react.d.ts +103 -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 +1697 -0
- package/docs/api/deals.md +2436 -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,286 @@
|
|
|
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.assertUpsert` (Assert / Upsert): 6 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<"assert_companies_batch_companies_assert_batch_put">;
|
|
9
|
+
*
|
|
10
|
+
* Reference with examples: assertUpsert.md
|
|
11
|
+
*/
|
|
12
|
+
/* eslint-disable */
|
|
13
|
+
|
|
14
|
+
/** `g8.api.assertUpsert.<member>` -> the operationId it calls. */
|
|
15
|
+
export interface AssertUpsertMembers {
|
|
16
|
+
assertCompaniesBatch: "assert_companies_batch_companies_assert_batch_put";
|
|
17
|
+
assertCompany: "assert_company_companies_assert_put";
|
|
18
|
+
assertContact: "assert_contact_contacts_assert_put";
|
|
19
|
+
assertContactsBatch: "assert_contacts_batch_contacts_assert_batch_put";
|
|
20
|
+
assertDeal: "assert_deal_deals_assert_put";
|
|
21
|
+
assertDealContact: "assert_deal_contact_contacts__contact_id__deals_assert_put";
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/** Input and output of every `g8.api.assertUpsert` operation, keyed by operationId. */
|
|
25
|
+
export interface AssertUpsertOperations {
|
|
26
|
+
/**
|
|
27
|
+
* PUT /companies/assert/batch
|
|
28
|
+
* Assert Companies Batch
|
|
29
|
+
* tier: write · scope: contacts:write
|
|
30
|
+
*/
|
|
31
|
+
assert_companies_batch_companies_assert_batch_put: {
|
|
32
|
+
input: {
|
|
33
|
+
headers?: {
|
|
34
|
+
"X-Target-Org-Id"?: string | null;
|
|
35
|
+
};
|
|
36
|
+
body: BatchCompanyAssertRequest;
|
|
37
|
+
};
|
|
38
|
+
output: ApiResponse_BatchAssertResponse_;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* PUT /companies/assert
|
|
42
|
+
* Assert Company
|
|
43
|
+
* tier: write · scope: contacts:write
|
|
44
|
+
*/
|
|
45
|
+
assert_company_companies_assert_put: {
|
|
46
|
+
input: {
|
|
47
|
+
headers?: {
|
|
48
|
+
"X-Target-Org-Id"?: string | null;
|
|
49
|
+
};
|
|
50
|
+
body: CompanyAssertRequest;
|
|
51
|
+
};
|
|
52
|
+
output: ApiResponse_CompanyAssertResponse_;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* PUT /contacts/assert
|
|
56
|
+
* Assert Contact
|
|
57
|
+
* tier: write · scope: contacts:write
|
|
58
|
+
*/
|
|
59
|
+
assert_contact_contacts_assert_put: {
|
|
60
|
+
input: {
|
|
61
|
+
headers?: {
|
|
62
|
+
"X-Target-Org-Id"?: string | null;
|
|
63
|
+
};
|
|
64
|
+
body: ContactAssertRequest;
|
|
65
|
+
};
|
|
66
|
+
output: ApiResponse_ContactAssertResponse_;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* PUT /contacts/assert/batch
|
|
70
|
+
* Assert Contacts Batch
|
|
71
|
+
* tier: write · scope: contacts:write
|
|
72
|
+
*/
|
|
73
|
+
assert_contacts_batch_contacts_assert_batch_put: {
|
|
74
|
+
input: {
|
|
75
|
+
headers?: {
|
|
76
|
+
"X-Target-Org-Id"?: string | null;
|
|
77
|
+
};
|
|
78
|
+
body: BatchContactAssertRequest;
|
|
79
|
+
};
|
|
80
|
+
output: ApiResponse_BatchAssertResponse_;
|
|
81
|
+
};
|
|
82
|
+
/**
|
|
83
|
+
* PUT /deals/assert
|
|
84
|
+
* Assert Deal
|
|
85
|
+
* tier: write · scope: contacts:write
|
|
86
|
+
*/
|
|
87
|
+
assert_deal_deals_assert_put: {
|
|
88
|
+
input: {
|
|
89
|
+
headers?: {
|
|
90
|
+
"X-Target-Org-Id"?: string | null;
|
|
91
|
+
};
|
|
92
|
+
body: DealAssertRequest;
|
|
93
|
+
};
|
|
94
|
+
output: ApiResponse_DealAssertResponse_;
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* PUT /contacts/{contact_id}/deals/assert
|
|
98
|
+
* Assert Deal Contact
|
|
99
|
+
* tier: write · scope: contacts:write
|
|
100
|
+
*/
|
|
101
|
+
assert_deal_contact_contacts__contact_id__deals_assert_put: {
|
|
102
|
+
input: {
|
|
103
|
+
path: {
|
|
104
|
+
/** Contact ID */
|
|
105
|
+
contact_id: number;
|
|
106
|
+
};
|
|
107
|
+
headers?: {
|
|
108
|
+
"X-Target-Org-Id"?: string | null;
|
|
109
|
+
};
|
|
110
|
+
body: DealContactAssertRequest;
|
|
111
|
+
};
|
|
112
|
+
output: ApiResponse_dict_;
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// 17 schemas referenced above (the same as G8Contract.<Name>).
|
|
117
|
+
|
|
118
|
+
export interface ApiResponse_BatchAssertResponse_ {
|
|
119
|
+
data: BatchAssertResponse;
|
|
120
|
+
pagination?: PaginationMeta | null;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export interface ApiResponse_CompanyAssertResponse_ {
|
|
124
|
+
data: CompanyAssertResponse;
|
|
125
|
+
pagination?: PaginationMeta | null;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export interface ApiResponse_ContactAssertResponse_ {
|
|
129
|
+
data: ContactAssertResponse;
|
|
130
|
+
pagination?: PaginationMeta | null;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export interface ApiResponse_DealAssertResponse_ {
|
|
134
|
+
data: DealAssertResponse;
|
|
135
|
+
pagination?: PaginationMeta | null;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export interface ApiResponse_dict_ {
|
|
139
|
+
data: Record<string, unknown>;
|
|
140
|
+
pagination?: PaginationMeta | null;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
export interface BatchAssertResponse {
|
|
144
|
+
created?: number;
|
|
145
|
+
custom_fields?: CustomFieldWriteReport;
|
|
146
|
+
errors?: Array<Record<string, unknown>>;
|
|
147
|
+
total: number;
|
|
148
|
+
updated?: number;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export interface BatchCompanyAssertRequest {
|
|
152
|
+
/** Up to 100 companies with domain or linkedin_url */
|
|
153
|
+
companies: Array<Record<string, unknown>>;
|
|
154
|
+
/** When true, any key in `custom_fields` that matches no existing column is created as a NEW list-scoped custom column (max 100 per request) and then written. Default false preserves the previous behaviour of not creating columns implicitly. */
|
|
155
|
+
create_missing_fields?: boolean;
|
|
156
|
+
/** Target list ID */
|
|
157
|
+
list_id: number;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export interface BatchContactAssertRequest {
|
|
161
|
+
/** Up to 100 contacts with work_email or linkedin_url */
|
|
162
|
+
contacts: Array<Record<string, unknown>>;
|
|
163
|
+
/** When true, any key in `custom_fields` that matches no existing column is created as a NEW list-scoped custom column (max 100 per request) and then written. Default false preserves the previous behaviour of not creating columns implicitly. */
|
|
164
|
+
create_missing_fields?: boolean;
|
|
165
|
+
/** Target list ID */
|
|
166
|
+
list_id: number;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
export interface CompanyAssertRequest {
|
|
170
|
+
annual_revenue?: string | null;
|
|
171
|
+
city?: string | null;
|
|
172
|
+
country?: string | null;
|
|
173
|
+
/** When true, any key in `custom_fields` that matches no existing column is created as a NEW list-scoped custom column (max 100 per request) and then written. Default false preserves the previous behaviour of not creating columns implicitly. */
|
|
174
|
+
create_missing_fields?: boolean;
|
|
175
|
+
/** Custom column values to write on this record, 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 that match no existing column are reported back in `ignored_fields` unless `create_missing_fields` is true. */
|
|
176
|
+
custom_fields?: (Record<string, string | null>) | null;
|
|
177
|
+
description?: string | null;
|
|
178
|
+
/** Company domain (primary match key) */
|
|
179
|
+
domain?: string | null;
|
|
180
|
+
employee_count?: number | null;
|
|
181
|
+
industry?: string | null;
|
|
182
|
+
/** LinkedIn URL (fallback match key) */
|
|
183
|
+
linkedin_url?: string | null;
|
|
184
|
+
/** Target list ID */
|
|
185
|
+
list_id: number;
|
|
186
|
+
name?: string | null;
|
|
187
|
+
state?: string | null;
|
|
188
|
+
website?: string | null;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
export interface CompanyAssertResponse {
|
|
192
|
+
/** 'created' or 'updated' */
|
|
193
|
+
action: string;
|
|
194
|
+
count?: number;
|
|
195
|
+
custom_fields?: CustomFieldWriteReport;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
export interface ContactAssertRequest {
|
|
199
|
+
city?: string | null;
|
|
200
|
+
company_domain?: string | null;
|
|
201
|
+
country?: string | null;
|
|
202
|
+
/** When true, any key in `custom_fields` that matches no existing column is created as a NEW list-scoped custom column (max 100 per request) and then written. Default false preserves the previous behaviour of not creating columns implicitly. */
|
|
203
|
+
create_missing_fields?: boolean;
|
|
204
|
+
/** Custom column values to write on this record, 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 that match no existing column are reported back in `ignored_fields` unless `create_missing_fields` is true. */
|
|
205
|
+
custom_fields?: (Record<string, string | null>) | null;
|
|
206
|
+
direct_phone?: string | null;
|
|
207
|
+
first_name?: string | null;
|
|
208
|
+
job_department?: string | null;
|
|
209
|
+
job_title?: string | null;
|
|
210
|
+
last_name?: string | null;
|
|
211
|
+
/** LinkedIn URL (fallback match key) */
|
|
212
|
+
linkedin_url?: string | null;
|
|
213
|
+
/** Target list ID */
|
|
214
|
+
list_id: number;
|
|
215
|
+
mobile_phone?: string | null;
|
|
216
|
+
personal_emails?: string | null;
|
|
217
|
+
seniority_level?: string | null;
|
|
218
|
+
state?: string | null;
|
|
219
|
+
/** Work email (primary match key) */
|
|
220
|
+
work_email?: string | null;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
export interface ContactAssertResponse {
|
|
224
|
+
/** 'created' or 'updated' */
|
|
225
|
+
action: string;
|
|
226
|
+
count?: number;
|
|
227
|
+
custom_fields?: CustomFieldWriteReport;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* How a write path handled the request's custom (dynamic) column keys.
|
|
232
|
+
*
|
|
233
|
+
* Shared by every Developer API write surface that accepts custom columns
|
|
234
|
+
* (``POST /contacts``, ``PUT /contacts/assert[/batch]``,
|
|
235
|
+
* ``PUT /companies/assert[/batch]``).
|
|
236
|
+
*
|
|
237
|
+
* Every field defaults to empty, so a client that ignores this object sees no
|
|
238
|
+
* behavioural change. It exists because these keys were previously dropped
|
|
239
|
+
* with NO caller-visible signal — the only trace was a server-side
|
|
240
|
+
* ``logger.warning`` in ``append_to_audience``.
|
|
241
|
+
*/
|
|
242
|
+
export interface CustomFieldWriteReport {
|
|
243
|
+
/** Caller keys for which a NEW custom column was created by this request. */
|
|
244
|
+
created?: Array<string>;
|
|
245
|
+
/** Caller keys that matched no custom column and were NOT written. Create the column first (POST /fields) or pass create_missing_fields=true. */
|
|
246
|
+
ignored?: Array<string>;
|
|
247
|
+
/** Caller keys that resolved to a custom column and were written. */
|
|
248
|
+
written?: Array<string>;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
export interface DealAssertRequest {
|
|
252
|
+
amount?: number | null;
|
|
253
|
+
close_date?: string | null;
|
|
254
|
+
/** Company ID (match key, combined with name) */
|
|
255
|
+
company_id?: string | null;
|
|
256
|
+
currency?: string | null;
|
|
257
|
+
description?: string | null;
|
|
258
|
+
/** Deal name (match key) */
|
|
259
|
+
name: string;
|
|
260
|
+
pipeline_id?: string | null;
|
|
261
|
+
stage_id?: string | null;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
export interface DealAssertResponse {
|
|
265
|
+
/** 'created' or 'updated' */
|
|
266
|
+
action: string;
|
|
267
|
+
deal_id: string;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
export interface DealContactAssertRequest {
|
|
271
|
+
/** Deal ID to associate */
|
|
272
|
+
deal_id: string;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
export interface PaginationMeta {
|
|
276
|
+
/** Whether there are more pages */
|
|
277
|
+
has_next: boolean;
|
|
278
|
+
/** Items per page */
|
|
279
|
+
limit: number;
|
|
280
|
+
/** 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. */
|
|
281
|
+
next_cursor?: string | null;
|
|
282
|
+
/** Current page number (1-indexed) */
|
|
283
|
+
page: number;
|
|
284
|
+
/** Total number of items */
|
|
285
|
+
total: number;
|
|
286
|
+
}
|
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
<!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
|
|
2
|
+
|
|
3
|
+
# `g8.api.assertUpsert`: Assert / Upsert
|
|
4
|
+
|
|
5
|
+
6 operations (6 write).
|
|
6
|
+
|
|
7
|
+
1 of these also have a hand-written method (`g8.contacts`), marked **★** below. Prefer the hand-written method when one exists: it unwraps the `data` envelope and takes friendlier arguments. See [../sdk-clients.md](../sdk-clients.md).
|
|
8
|
+
|
|
9
|
+
Every example below assumes this setup (server-side, API key):
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
import { g8 } from "@graph8/sdk";
|
|
13
|
+
|
|
14
|
+
g8.init({ apiKey: process.env.G8_API_KEY! });
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Example values are placeholders that match each field's type. Only required fields are shown. Every example is type-checked against the SDK in CI.
|
|
18
|
+
|
|
19
|
+
Exact TypeScript types for every operation on this page, and every schema they use: [assertUpsert.d.ts](assertUpsert.d.ts).
|
|
20
|
+
|
|
21
|
+
## Operations
|
|
22
|
+
|
|
23
|
+
| Call | HTTP | Tier | Scope | Summary |
|
|
24
|
+
|---|---|---|---|---|
|
|
25
|
+
| [`assertCompaniesBatch`](#op-assertcompaniesbatch) | `PUT /api/v1/companies/assert/batch` | write | `contacts:write` | Assert Companies Batch |
|
|
26
|
+
| [`assertCompany`](#op-assertcompany) | `PUT /api/v1/companies/assert` | write | `contacts:write` | Assert Company |
|
|
27
|
+
| [`assertContact`](#op-assertcontact) ★ | `PUT /api/v1/contacts/assert` | write | `contacts:write` | Assert Contact |
|
|
28
|
+
| [`assertContactsBatch`](#op-assertcontactsbatch) | `PUT /api/v1/contacts/assert/batch` | write | `contacts:write` | Assert Contacts Batch |
|
|
29
|
+
| [`assertDeal`](#op-assertdeal) | `PUT /api/v1/deals/assert` | write | `contacts:write` | Assert Deal |
|
|
30
|
+
| [`assertDealContact`](#op-assertdealcontact) | `PUT /api/v1/contacts/{contact_id}/deals/assert` | write | `contacts:write` | Assert Deal Contact |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
<a id="op-assertcompaniesbatch"></a>
|
|
35
|
+
|
|
36
|
+
### `g8.api.assertUpsert.assertCompaniesBatch(input)`
|
|
37
|
+
|
|
38
|
+
**Assert Companies Batch**
|
|
39
|
+
|
|
40
|
+
- HTTP: `PUT /api/v1/companies/assert/batch`
|
|
41
|
+
- operationId: `assert_companies_batch_companies_assert_batch_put` (also callable as `g8.api.call("assert_companies_batch_companies_assert_batch_put", input)`)
|
|
42
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
43
|
+
- API-key scope: `contacts:write`
|
|
44
|
+
|
|
45
|
+
Batch create or update up to 100 companies. Matches by domain, then linkedin_url.
|
|
46
|
+
|
|
47
|
+
**Input**
|
|
48
|
+
|
|
49
|
+
| Field | Type | Required | Description |
|
|
50
|
+
|---|---|---|---|
|
|
51
|
+
| `body` | `BatchCompanyAssertRequest` | yes | Request body; fields below. |
|
|
52
|
+
|
|
53
|
+
Body fields (`BatchCompanyAssertRequest`):
|
|
54
|
+
|
|
55
|
+
| Field | Type | Required | Description |
|
|
56
|
+
|---|---|---|---|
|
|
57
|
+
| `body.companies` | `Array<Record<string, unknown>>` | yes | Up to 100 companies with domain or linkedin_url max items 100 |
|
|
58
|
+
| `body.list_id` | `integer` | yes | Target list ID |
|
|
59
|
+
| `body.create_missing_fields` | `boolean` | no | When true, any key in `custom_fields` that matches no existing column is created as a NEW list-scoped custom column (max 100 per request) and then written. Default false preserves the previous behaviour of not creating columns implicitly. default `false` |
|
|
60
|
+
|
|
61
|
+
**Returns** `ApiResponse_BatchAssertResponse_`: the envelope `{ data: BatchAssertResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
62
|
+
|
|
63
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
64
|
+
|
|
65
|
+
`BatchAssertResponse` fields:
|
|
66
|
+
|
|
67
|
+
| Field | Type | Required | Description |
|
|
68
|
+
|---|---|---|---|
|
|
69
|
+
| `total` | `integer` | yes | |
|
|
70
|
+
| `created` | `integer` | no | default `0` |
|
|
71
|
+
| `custom_fields` | `CustomFieldWriteReport` | no | |
|
|
72
|
+
| `errors` | `Array<Record<string, unknown>>` | no | default `[]` |
|
|
73
|
+
| `updated` | `integer` | no | default `0` |
|
|
74
|
+
|
|
75
|
+
**Example**
|
|
76
|
+
|
|
77
|
+
```ts
|
|
78
|
+
const result = await g8.api.assertUpsert.assertCompaniesBatch({ body: { companies: [{}], list_id: 123 } });
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
<a id="op-assertcompany"></a>
|
|
84
|
+
|
|
85
|
+
### `g8.api.assertUpsert.assertCompany(input)`
|
|
86
|
+
|
|
87
|
+
**Assert Company**
|
|
88
|
+
|
|
89
|
+
- HTTP: `PUT /api/v1/companies/assert`
|
|
90
|
+
- operationId: `assert_company_companies_assert_put` (also callable as `g8.api.call("assert_company_companies_assert_put", input)`)
|
|
91
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
92
|
+
- API-key scope: `contacts:write`
|
|
93
|
+
|
|
94
|
+
Create or update a company. Matches by domain, then linkedin_url.
|
|
95
|
+
|
|
96
|
+
**Input**
|
|
97
|
+
|
|
98
|
+
| Field | Type | Required | Description |
|
|
99
|
+
|---|---|---|---|
|
|
100
|
+
| `body` | `CompanyAssertRequest` | yes | Request body; fields below. |
|
|
101
|
+
|
|
102
|
+
Body fields (`CompanyAssertRequest`):
|
|
103
|
+
|
|
104
|
+
| Field | Type | Required | Description |
|
|
105
|
+
|---|---|---|---|
|
|
106
|
+
| `body.list_id` | `integer` | yes | Target list ID |
|
|
107
|
+
| `body.annual_revenue` | `string \| null` | no | |
|
|
108
|
+
| `body.city` | `string \| null` | no | |
|
|
109
|
+
| `body.country` | `string \| null` | no | |
|
|
110
|
+
| `body.create_missing_fields` | `boolean` | no | When true, any key in `custom_fields` that matches no existing column is created as a NEW list-scoped custom column (max 100 per request) and then written. Default false preserves the previous behaviour of not creating columns implicitly. default `false` |
|
|
111
|
+
| `body.custom_fields` | `Record<string, string \| null> \| null` | no | Custom column values to write on this record, 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 that match no existing column are reported back in `ignored_fields` unless `create_missing_fields` is true. |
|
|
112
|
+
| `body.description` | `string \| null` | no | |
|
|
113
|
+
| `body.domain` | `string \| null` | no | Company domain (primary match key) |
|
|
114
|
+
| `body.employee_count` | `integer \| null` | no | |
|
|
115
|
+
| `body.industry` | `string \| null` | no | |
|
|
116
|
+
| `body.linkedin_url` | `string \| null` | no | LinkedIn URL (fallback match key) |
|
|
117
|
+
| `body.name` | `string \| null` | no | |
|
|
118
|
+
| `body.state` | `string \| null` | no | |
|
|
119
|
+
| `body.website` | `string \| null` | no | |
|
|
120
|
+
|
|
121
|
+
**Returns** `ApiResponse_CompanyAssertResponse_`: the envelope `{ data: CompanyAssertResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
122
|
+
|
|
123
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
124
|
+
|
|
125
|
+
`CompanyAssertResponse` fields:
|
|
126
|
+
|
|
127
|
+
| Field | Type | Required | Description |
|
|
128
|
+
|---|---|---|---|
|
|
129
|
+
| `action` | `string` | yes | 'created' or 'updated' |
|
|
130
|
+
| `count` | `integer` | no | default `1` |
|
|
131
|
+
| `custom_fields` | `CustomFieldWriteReport` | no | |
|
|
132
|
+
|
|
133
|
+
**Example**
|
|
134
|
+
|
|
135
|
+
```ts
|
|
136
|
+
const result = await g8.api.assertUpsert.assertCompany({ body: { list_id: 123 } });
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
<a id="op-assertcontact"></a>
|
|
142
|
+
|
|
143
|
+
### `g8.api.assertUpsert.assertContact(input)`
|
|
144
|
+
|
|
145
|
+
**Assert Contact**
|
|
146
|
+
|
|
147
|
+
- HTTP: `PUT /api/v1/contacts/assert`
|
|
148
|
+
- operationId: `assert_contact_contacts_assert_put` (also callable as `g8.api.call("assert_contact_contacts_assert_put", input)`)
|
|
149
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
150
|
+
- API-key scope: `contacts:write`
|
|
151
|
+
- ★ Hand-written: [`g8.contacts.upsert()`](../sdk-clients.md#g8-contacts-upsert)
|
|
152
|
+
|
|
153
|
+
Create or update a contact. Matches by work_email, then linkedin_url.
|
|
154
|
+
|
|
155
|
+
**Input**
|
|
156
|
+
|
|
157
|
+
| Field | Type | Required | Description |
|
|
158
|
+
|---|---|---|---|
|
|
159
|
+
| `body` | `ContactAssertRequest` | yes | Request body; fields below. |
|
|
160
|
+
|
|
161
|
+
Body fields (`ContactAssertRequest`):
|
|
162
|
+
|
|
163
|
+
| Field | Type | Required | Description |
|
|
164
|
+
|---|---|---|---|
|
|
165
|
+
| `body.list_id` | `integer` | yes | Target list ID |
|
|
166
|
+
| `body.city` | `string \| null` | no | |
|
|
167
|
+
| `body.company_domain` | `string \| null` | no | |
|
|
168
|
+
| `body.country` | `string \| null` | no | |
|
|
169
|
+
| `body.create_missing_fields` | `boolean` | no | When true, any key in `custom_fields` that matches no existing column is created as a NEW list-scoped custom column (max 100 per request) and then written. Default false preserves the previous behaviour of not creating columns implicitly. default `false` |
|
|
170
|
+
| `body.custom_fields` | `Record<string, string \| null> \| null` | no | Custom column values to write on this record, 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 that match no existing column are reported back in `ignored_fields` unless `create_missing_fields` is true. |
|
|
171
|
+
| `body.direct_phone` | `string \| null` | no | |
|
|
172
|
+
| `body.first_name` | `string \| null` | no | |
|
|
173
|
+
| `body.job_department` | `string \| null` | no | |
|
|
174
|
+
| `body.job_title` | `string \| null` | no | |
|
|
175
|
+
| `body.last_name` | `string \| null` | no | |
|
|
176
|
+
| `body.linkedin_url` | `string \| null` | no | LinkedIn URL (fallback match key) |
|
|
177
|
+
| `body.mobile_phone` | `string \| null` | no | |
|
|
178
|
+
| `body.personal_emails` | `string \| null` | no | |
|
|
179
|
+
| `body.seniority_level` | `string \| null` | no | |
|
|
180
|
+
| `body.state` | `string \| null` | no | |
|
|
181
|
+
| `body.work_email` | `string \| null` | no | Work email (primary match key) |
|
|
182
|
+
|
|
183
|
+
**Returns** `ApiResponse_ContactAssertResponse_`: the envelope `{ data: ContactAssertResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
184
|
+
|
|
185
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
186
|
+
|
|
187
|
+
`ContactAssertResponse` fields:
|
|
188
|
+
|
|
189
|
+
| Field | Type | Required | Description |
|
|
190
|
+
|---|---|---|---|
|
|
191
|
+
| `action` | `string` | yes | 'created' or 'updated' |
|
|
192
|
+
| `count` | `integer` | no | default `1` |
|
|
193
|
+
| `custom_fields` | `CustomFieldWriteReport` | no | |
|
|
194
|
+
|
|
195
|
+
**Example**
|
|
196
|
+
|
|
197
|
+
```ts
|
|
198
|
+
const result = await g8.api.assertUpsert.assertContact({ body: { list_id: 123 } });
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
<a id="op-assertcontactsbatch"></a>
|
|
204
|
+
|
|
205
|
+
### `g8.api.assertUpsert.assertContactsBatch(input)`
|
|
206
|
+
|
|
207
|
+
**Assert Contacts Batch**
|
|
208
|
+
|
|
209
|
+
- HTTP: `PUT /api/v1/contacts/assert/batch`
|
|
210
|
+
- operationId: `assert_contacts_batch_contacts_assert_batch_put` (also callable as `g8.api.call("assert_contacts_batch_contacts_assert_batch_put", input)`)
|
|
211
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
212
|
+
- API-key scope: `contacts:write`
|
|
213
|
+
|
|
214
|
+
Batch create or update up to 100 contacts. Matches by work_email, then linkedin_url.
|
|
215
|
+
|
|
216
|
+
**Input**
|
|
217
|
+
|
|
218
|
+
| Field | Type | Required | Description |
|
|
219
|
+
|---|---|---|---|
|
|
220
|
+
| `body` | `BatchContactAssertRequest` | yes | Request body; fields below. |
|
|
221
|
+
|
|
222
|
+
Body fields (`BatchContactAssertRequest`):
|
|
223
|
+
|
|
224
|
+
| Field | Type | Required | Description |
|
|
225
|
+
|---|---|---|---|
|
|
226
|
+
| `body.contacts` | `Array<Record<string, unknown>>` | yes | Up to 100 contacts with work_email or linkedin_url max items 100 |
|
|
227
|
+
| `body.list_id` | `integer` | yes | Target list ID |
|
|
228
|
+
| `body.create_missing_fields` | `boolean` | no | When true, any key in `custom_fields` that matches no existing column is created as a NEW list-scoped custom column (max 100 per request) and then written. Default false preserves the previous behaviour of not creating columns implicitly. default `false` |
|
|
229
|
+
|
|
230
|
+
**Returns** `ApiResponse_BatchAssertResponse_`: the envelope `{ data: BatchAssertResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
231
|
+
|
|
232
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
233
|
+
|
|
234
|
+
`BatchAssertResponse` fields:
|
|
235
|
+
|
|
236
|
+
| Field | Type | Required | Description |
|
|
237
|
+
|---|---|---|---|
|
|
238
|
+
| `total` | `integer` | yes | |
|
|
239
|
+
| `created` | `integer` | no | default `0` |
|
|
240
|
+
| `custom_fields` | `CustomFieldWriteReport` | no | |
|
|
241
|
+
| `errors` | `Array<Record<string, unknown>>` | no | default `[]` |
|
|
242
|
+
| `updated` | `integer` | no | default `0` |
|
|
243
|
+
|
|
244
|
+
**Example**
|
|
245
|
+
|
|
246
|
+
```ts
|
|
247
|
+
const result = await g8.api.assertUpsert.assertContactsBatch({ body: { contacts: [{}], list_id: 123 } });
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
<a id="op-assertdeal"></a>
|
|
253
|
+
|
|
254
|
+
### `g8.api.assertUpsert.assertDeal(input)`
|
|
255
|
+
|
|
256
|
+
**Assert Deal**
|
|
257
|
+
|
|
258
|
+
- HTTP: `PUT /api/v1/deals/assert`
|
|
259
|
+
- operationId: `assert_deal_deals_assert_put` (also callable as `g8.api.call("assert_deal_deals_assert_put", input)`)
|
|
260
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
261
|
+
- API-key scope: `contacts:write`
|
|
262
|
+
|
|
263
|
+
Create or update a deal. Matches by name + company_id.
|
|
264
|
+
|
|
265
|
+
Deliberately NOT wired into the closed-stage gates or the completeness
|
|
266
|
+
rule: assert is the sync-shaped surface (external systems pushing state,
|
|
267
|
+
no human to answer a 400), the same category the internal router excludes
|
|
268
|
+
for POST /v1/deals/webhook/sync and the CRM pull worker (#15530
|
|
269
|
+
"Out of scope"). Only input hygiene applies here: ids must exist and
|
|
270
|
+
close_date must parse.
|
|
271
|
+
|
|
272
|
+
#16060: a stage move made here now emits ``deal.stage_changed`` and writes
|
|
273
|
+
``cb_deal_stage_history``, like every other stage writer. ``background_tasks``
|
|
274
|
+
is injected (not a body field, so the request schema is unchanged) and the
|
|
275
|
+
publish is queued only after the session context has exited — a rolled-back
|
|
276
|
+
assert publishes nothing. Because assert is the sync-shaped surface, the
|
|
277
|
+
SAME stage arrives on every tick of the caller's poll loop: the event fires
|
|
278
|
+
only on an actual transition, never on a re-assert of the current stage.
|
|
279
|
+
|
|
280
|
+
**Input**
|
|
281
|
+
|
|
282
|
+
| Field | Type | Required | Description |
|
|
283
|
+
|---|---|---|---|
|
|
284
|
+
| `body` | `DealAssertRequest` | yes | Request body; fields below. |
|
|
285
|
+
|
|
286
|
+
Body fields (`DealAssertRequest`):
|
|
287
|
+
|
|
288
|
+
| Field | Type | Required | Description |
|
|
289
|
+
|---|---|---|---|
|
|
290
|
+
| `body.name` | `string` | yes | Deal name (match key) |
|
|
291
|
+
| `body.amount` | `number \| null` | no | |
|
|
292
|
+
| `body.close_date` | `string \| null` | no | |
|
|
293
|
+
| `body.company_id` | `string \| null` | no | Company ID (match key, combined with name) |
|
|
294
|
+
| `body.currency` | `string \| null` | no | |
|
|
295
|
+
| `body.description` | `string \| null` | no | |
|
|
296
|
+
| `body.pipeline_id` | `string \| null` | no | |
|
|
297
|
+
| `body.stage_id` | `string \| null` | no | |
|
|
298
|
+
|
|
299
|
+
**Returns** `ApiResponse_DealAssertResponse_`: the envelope `{ data: DealAssertResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
300
|
+
|
|
301
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
302
|
+
|
|
303
|
+
`DealAssertResponse` fields:
|
|
304
|
+
|
|
305
|
+
| Field | Type | Required | Description |
|
|
306
|
+
|---|---|---|---|
|
|
307
|
+
| `action` | `string` | yes | 'created' or 'updated' |
|
|
308
|
+
| `deal_id` | `string` | yes | |
|
|
309
|
+
|
|
310
|
+
**Example**
|
|
311
|
+
|
|
312
|
+
```ts
|
|
313
|
+
const result = await g8.api.assertUpsert.assertDeal({ body: { name: "Example" } });
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
<a id="op-assertdealcontact"></a>
|
|
319
|
+
|
|
320
|
+
### `g8.api.assertUpsert.assertDealContact(input)`
|
|
321
|
+
|
|
322
|
+
**Assert Deal Contact**
|
|
323
|
+
|
|
324
|
+
- HTTP: `PUT /api/v1/contacts/{contact_id}/deals/assert`
|
|
325
|
+
- operationId: `assert_deal_contact_contacts__contact_id__deals_assert_put` (also callable as `g8.api.call("assert_deal_contact_contacts__contact_id__deals_assert_put", input)`)
|
|
326
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
327
|
+
- API-key scope: `contacts:write`
|
|
328
|
+
|
|
329
|
+
Assert a deal-contact association. Idempotent — no error if already linked.
|
|
330
|
+
|
|
331
|
+
**Input**
|
|
332
|
+
|
|
333
|
+
| Field | Type | Required | Description |
|
|
334
|
+
|---|---|---|---|
|
|
335
|
+
| `path.contact_id` | `integer` | yes | Contact ID |
|
|
336
|
+
| `body` | `DealContactAssertRequest` | yes | Request body; fields below. |
|
|
337
|
+
|
|
338
|
+
Body fields (`DealContactAssertRequest`):
|
|
339
|
+
|
|
340
|
+
| Field | Type | Required | Description |
|
|
341
|
+
|---|---|---|---|
|
|
342
|
+
| `body.deal_id` | `string` | yes | Deal ID to associate |
|
|
343
|
+
|
|
344
|
+
**Returns** `ApiResponse_dict_`: the envelope `{ data: Record<string, unknown>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
345
|
+
|
|
346
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
347
|
+
|
|
348
|
+
**Example**
|
|
349
|
+
|
|
350
|
+
```ts
|
|
351
|
+
const result = await g8.api.assertUpsert.assertDealContact({ path: { contact_id: 123 }, body: { deal_id: "id" } });
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
---
|
|
355
|
+
|
|
356
|
+
## Referenced types
|
|
357
|
+
|
|
358
|
+
Named types that appear in the tables above. Full TypeScript definitions: `G8Contract.<Name>` (`import type { G8Contract } from "@graph8/sdk"`).
|
|
359
|
+
|
|
360
|
+
<a id="type-customfieldwritereport"></a>
|
|
361
|
+
|
|
362
|
+
### `CustomFieldWriteReport`
|
|
363
|
+
|
|
364
|
+
How a write path handled the request's custom (dynamic) column keys. Shared by every Developer API write surface that accepts custom columns (``POST /contacts``, ``PUT /contacts/assert[/batch]``, ``PUT /companies/assert[/batch]``). Every field defaults to empty, so a client that ignores this object sees no behavioural change. It exists because these keys were previously dropped with NO caller-visible signal — the only trace was a server-side ``logger.warning`` in ``append_to_audience``.
|
|
365
|
+
|
|
366
|
+
| Field | Type | Required | Description |
|
|
367
|
+
|---|---|---|---|
|
|
368
|
+
| `created` | `Array<string>` | no | Caller keys for which a NEW custom column was created by this request. |
|
|
369
|
+
| `ignored` | `Array<string>` | no | Caller keys that matched no custom column and were NOT written. Create the column first (POST /fields) or pass create_missing_fields=true. |
|
|
370
|
+
| `written` | `Array<string>` | no | Caller keys that resolved to a custom column and were written. |
|