@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,212 @@
|
|
|
1
|
+
export interface Newsletter {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string | null;
|
|
4
|
+
slug: string | null;
|
|
5
|
+
status: string | null;
|
|
6
|
+
goal: string | null;
|
|
7
|
+
audience_list_id: unknown;
|
|
8
|
+
created_at: string | null;
|
|
9
|
+
updated_at: string | null;
|
|
10
|
+
[key: string]: unknown;
|
|
11
|
+
}
|
|
12
|
+
export interface NewsletterIssue {
|
|
13
|
+
id: string;
|
|
14
|
+
newsletter_id: string | null;
|
|
15
|
+
subject: string | null;
|
|
16
|
+
status: string | null;
|
|
17
|
+
scheduled_at: string | null;
|
|
18
|
+
sent_at: string | null;
|
|
19
|
+
[key: string]: unknown;
|
|
20
|
+
}
|
|
21
|
+
export interface NewsletterTemplate {
|
|
22
|
+
id: string;
|
|
23
|
+
name: string | null;
|
|
24
|
+
[key: string]: unknown;
|
|
25
|
+
}
|
|
26
|
+
export interface NewsletterSubscriber {
|
|
27
|
+
id: string;
|
|
28
|
+
email: string | null;
|
|
29
|
+
status: string | null;
|
|
30
|
+
subscribed_at: string | null;
|
|
31
|
+
[key: string]: unknown;
|
|
32
|
+
}
|
|
33
|
+
export interface NewsletterIssueKpis {
|
|
34
|
+
sent: number | null;
|
|
35
|
+
delivered: number | null;
|
|
36
|
+
opens: number | null;
|
|
37
|
+
clicks: number | null;
|
|
38
|
+
unsubscribes: number | null;
|
|
39
|
+
bounces: number | null;
|
|
40
|
+
[key: string]: unknown;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Mirrors `NewsletterCreateRequest` in
|
|
44
|
+
* `developer_api/interfaces/dtos/newsletter.py:29`. No index signature: an
|
|
45
|
+
* invented field here (e.g. `description`/`from_name`/`from_email`, none of
|
|
46
|
+
* which the DTO declares) would 422 in production while every fetch-mocked
|
|
47
|
+
* test stayed green.
|
|
48
|
+
*/
|
|
49
|
+
export interface NewsletterCreateParams {
|
|
50
|
+
/** newsletter.py:32 — required, max_length=255. */
|
|
51
|
+
name: string;
|
|
52
|
+
/** newsletter.py:33 — optional. */
|
|
53
|
+
goal?: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Mirrors `IssueCreateRequest` in `developer_api/interfaces/dtos/newsletter.py:42`.
|
|
57
|
+
* `subject` and `html_body` are the only required fields — everything else is
|
|
58
|
+
* optional. No index signature (see `NewsletterCreateParams`).
|
|
59
|
+
*/
|
|
60
|
+
export interface NewsletterIssueCreateParams {
|
|
61
|
+
/** newsletter.py:43 — required, max_length=2000. */
|
|
62
|
+
subject: string;
|
|
63
|
+
/** newsletter.py:45 — required. */
|
|
64
|
+
html_body: string;
|
|
65
|
+
/** newsletter.py:44 — optional, max_length=500. */
|
|
66
|
+
preview_text?: string;
|
|
67
|
+
/** newsletter.py:46 — optional. */
|
|
68
|
+
plain_text?: string;
|
|
69
|
+
/** newsletter.py:47 — optional, max_length=255. */
|
|
70
|
+
sender_name?: string;
|
|
71
|
+
/** newsletter.py:48 — optional, must be a valid email. */
|
|
72
|
+
sender_email?: string;
|
|
73
|
+
/** newsletter.py:49 — optional, must be a valid email. */
|
|
74
|
+
reply_to?: string;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Mirrors `IssueUpdateRequest` in `developer_api/interfaces/dtos/newsletter.py:52`
|
|
78
|
+
* — a SEPARATE, fully-partial DTO from `IssueCreateRequest`. Every field is
|
|
79
|
+
* optional (the backend applies `exclude_unset=True`, so only fields you pass
|
|
80
|
+
* are changed). Do not reuse `NewsletterIssueCreateParams` here: that type's
|
|
81
|
+
* required `subject`/`html_body` would force callers to resend the whole
|
|
82
|
+
* issue on every partial edit.
|
|
83
|
+
*/
|
|
84
|
+
export interface NewsletterIssueUpdateParams {
|
|
85
|
+
/** newsletter.py:57 — optional, max_length=2000. */
|
|
86
|
+
subject?: string;
|
|
87
|
+
/** newsletter.py:59 — optional. */
|
|
88
|
+
html_body?: string;
|
|
89
|
+
/** newsletter.py:58 — optional, max_length=500. */
|
|
90
|
+
preview_text?: string;
|
|
91
|
+
/** newsletter.py:60 — optional. */
|
|
92
|
+
plain_text?: string;
|
|
93
|
+
/** newsletter.py:61 — optional, max_length=255. */
|
|
94
|
+
sender_name?: string;
|
|
95
|
+
/** newsletter.py:62 — optional, must be a valid email. */
|
|
96
|
+
sender_email?: string;
|
|
97
|
+
/** newsletter.py:63 — optional, must be a valid email. */
|
|
98
|
+
reply_to?: string;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Query params for `list()`/`listSubscribers()`. Kept open (unlike the body
|
|
102
|
+
* param interfaces above): these flow into `RequestOptions.query`, which is
|
|
103
|
+
* `Record<string, unknown>`, so a closed interface fails `tsc` here even
|
|
104
|
+
* though the underlying router endpoints do not model these as a Pydantic
|
|
105
|
+
* request body — an extra query key is a silent no-op on the wire, not a
|
|
106
|
+
* 422, so this file's index-signature review does not apply the same way.
|
|
107
|
+
*/
|
|
108
|
+
export interface NewsletterListParams {
|
|
109
|
+
limit?: number;
|
|
110
|
+
offset?: number;
|
|
111
|
+
[key: string]: unknown;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Newsletter API - manage newsletters, issues, subscribers and send analytics.
|
|
115
|
+
* Requires API key (server-side).
|
|
116
|
+
*
|
|
117
|
+
* Backed by:
|
|
118
|
+
* GET /api/v1/newsletters
|
|
119
|
+
* POST /api/v1/newsletters
|
|
120
|
+
* GET /api/v1/newsletters/templates
|
|
121
|
+
* GET /api/v1/newsletters/{newsletter_id}
|
|
122
|
+
* GET /api/v1/newsletters/{newsletter_id}/issues
|
|
123
|
+
* POST /api/v1/newsletters/{newsletter_id}/issues
|
|
124
|
+
* GET /api/v1/newsletters/{newsletter_id}/issues/{issue_id}
|
|
125
|
+
* PUT /api/v1/newsletters/{newsletter_id}/issues/{issue_id}
|
|
126
|
+
* POST /api/v1/newsletters/{newsletter_id}/issues/{issue_id}/duplicate
|
|
127
|
+
* POST /api/v1/newsletters/{newsletter_id}/issues/{issue_id}/send
|
|
128
|
+
* POST /api/v1/newsletters/{newsletter_id}/issues/{issue_id}/send-test
|
|
129
|
+
* GET /api/v1/newsletters/{newsletter_id}/issues/{issue_id}/analytics/kpis
|
|
130
|
+
* GET /api/v1/newsletters/{newsletter_id}/subscribers
|
|
131
|
+
* POST /api/v1/newsletters/{newsletter_id}/subscribers
|
|
132
|
+
* PATCH /api/v1/newsletters/{newsletter_id}/subscribers/{subscriber_id}/unsubscribe
|
|
133
|
+
*
|
|
134
|
+
* Request param types are field-checked against the vendored
|
|
135
|
+
* `developer-contract/openapi.json` component schemas via
|
|
136
|
+
* `expectBodyMatchesContract()` in
|
|
137
|
+
* `tests/parity-companies-notes-newsletter.test.ts` — see that file before
|
|
138
|
+
* changing any interface above.
|
|
139
|
+
*/
|
|
140
|
+
export declare const createNewsletterClient: (apiKey: string, apiUrl?: string) => {
|
|
141
|
+
/** List newsletters for the org. */
|
|
142
|
+
list(params?: NewsletterListParams): Promise<{
|
|
143
|
+
data: Newsletter[];
|
|
144
|
+
}>;
|
|
145
|
+
/** Create a newsletter. Mirrors `NewsletterCreateRequest` (newsletter.py:29). */
|
|
146
|
+
create(params: NewsletterCreateParams): Promise<Newsletter>;
|
|
147
|
+
/** List available newsletter templates. */
|
|
148
|
+
templates(): Promise<{
|
|
149
|
+
data: NewsletterTemplate[];
|
|
150
|
+
}>;
|
|
151
|
+
/** Get a single newsletter. */
|
|
152
|
+
get(newsletterId: string): Promise<Newsletter>;
|
|
153
|
+
/** List issues of a newsletter. */
|
|
154
|
+
listIssues(newsletterId: string): Promise<{
|
|
155
|
+
data: NewsletterIssue[];
|
|
156
|
+
}>;
|
|
157
|
+
/** Create an issue on a newsletter. Mirrors `IssueCreateRequest` (newsletter.py:42). */
|
|
158
|
+
createIssue(newsletterId: string, params: NewsletterIssueCreateParams): Promise<NewsletterIssue>;
|
|
159
|
+
/** Get a single issue. */
|
|
160
|
+
getIssue(newsletterId: string, issueId: string): Promise<NewsletterIssue>;
|
|
161
|
+
/**
|
|
162
|
+
* Update fields on a draft issue. Partial — only the fields you pass are
|
|
163
|
+
* changed. Mirrors `IssueUpdateRequest` (newsletter.py:52), NOT
|
|
164
|
+
* `IssueCreateRequest`: every field is optional here even though the
|
|
165
|
+
* transport verb is PUT.
|
|
166
|
+
*/
|
|
167
|
+
updateIssue(newsletterId: string, issueId: string, params: NewsletterIssueUpdateParams): Promise<NewsletterIssue>;
|
|
168
|
+
/** Duplicate an issue into a new draft. */
|
|
169
|
+
duplicateIssue(newsletterId: string, issueId: string): Promise<NewsletterIssue>;
|
|
170
|
+
/**
|
|
171
|
+
* Send an issue to its subscribers. This sends real email — pass an
|
|
172
|
+
* `idempotencyKey` so a retry cannot double-send. `scheduled_at` mirrors
|
|
173
|
+
* `IssueSendRequest.scheduled_at` (newsletter.py:70); omitted (or left
|
|
174
|
+
* undefined) sends immediately, matching the DTO's own default. Note
|
|
175
|
+
* `idempotencyKey` is a transport header (`Idempotency-Key`), not a body
|
|
176
|
+
* field, so it is not part of the `IssueSendRequest` mirror.
|
|
177
|
+
*/
|
|
178
|
+
sendIssue(newsletterId: string, issueId: string, opts?: {
|
|
179
|
+
idempotencyKey?: string;
|
|
180
|
+
scheduled_at?: string;
|
|
181
|
+
}): Promise<{
|
|
182
|
+
data: unknown;
|
|
183
|
+
}>;
|
|
184
|
+
/**
|
|
185
|
+
* Send a test copy of an issue to a single address. Mirrors
|
|
186
|
+
* `IssueSendTestRequest` (newsletter.py:73): ONE required `test_email`
|
|
187
|
+
* string, not a `recipients` array — the previous shape here always
|
|
188
|
+
* 422'd against the real API.
|
|
189
|
+
*/
|
|
190
|
+
sendTestEmail(newsletterId: string, issueId: string, testEmail: string): Promise<{
|
|
191
|
+
data: unknown;
|
|
192
|
+
}>;
|
|
193
|
+
/** Engagement KPIs for a sent issue. */
|
|
194
|
+
issueKpis(newsletterId: string, issueId: string): Promise<NewsletterIssueKpis>;
|
|
195
|
+
/** List subscribers of a newsletter. */
|
|
196
|
+
listSubscribers(newsletterId: string, params?: NewsletterListParams): Promise<{
|
|
197
|
+
data: NewsletterSubscriber[];
|
|
198
|
+
}>;
|
|
199
|
+
/**
|
|
200
|
+
* Add a subscriber to a newsletter. Mirrors `SubscriberAddRequest`
|
|
201
|
+
* (newsletter.py:77) — `email` required, `first_name`/`last_name`
|
|
202
|
+
* optional.
|
|
203
|
+
*/
|
|
204
|
+
addSubscriber(newsletterId: string, email: string, opts?: {
|
|
205
|
+
first_name?: string;
|
|
206
|
+
last_name?: string;
|
|
207
|
+
}): Promise<NewsletterSubscriber>;
|
|
208
|
+
/** Unsubscribe a subscriber. */
|
|
209
|
+
unsubscribe(newsletterId: string, subscriberId: string): Promise<{
|
|
210
|
+
data: unknown;
|
|
211
|
+
}>;
|
|
212
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export interface Note {
|
|
2
|
+
id: string;
|
|
3
|
+
entity_type: string;
|
|
4
|
+
entity_id: string;
|
|
5
|
+
content: string;
|
|
6
|
+
created_by: string | null;
|
|
7
|
+
created_by_name: string | null;
|
|
8
|
+
created_at: string | null;
|
|
9
|
+
updated_at: string | null;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Notes API - CRUD for notes attached to contacts, companies and deals.
|
|
13
|
+
* Requires API key (server-side).
|
|
14
|
+
*
|
|
15
|
+
* Backed by:
|
|
16
|
+
* GET /api/v1/contacts/{contact_id}/notes
|
|
17
|
+
* POST /api/v1/contacts/{contact_id}/notes
|
|
18
|
+
* GET /api/v1/companies/{company_id}/notes
|
|
19
|
+
* POST /api/v1/companies/{company_id}/notes
|
|
20
|
+
* GET /api/v1/deals/{deal_id}/notes
|
|
21
|
+
* POST /api/v1/deals/{deal_id}/notes
|
|
22
|
+
* PATCH /api/v1/notes/{note_id}
|
|
23
|
+
* DELETE /api/v1/notes/{note_id}
|
|
24
|
+
*
|
|
25
|
+
* `list()` / `create()` remain contact-scoped for backwards compatibility.
|
|
26
|
+
* Use the `ForCompany` / `ForDeal` variants for the other two entity types.
|
|
27
|
+
* Note IDs are shared across entity types, so `update()` and `delete()` work
|
|
28
|
+
* on a note from any of the three.
|
|
29
|
+
*/
|
|
30
|
+
export declare const createNotesClient: (apiKey: string, apiUrl?: string) => {
|
|
31
|
+
/** List all notes on a contact. */
|
|
32
|
+
list(contactId: number): Promise<{
|
|
33
|
+
data: Note[];
|
|
34
|
+
}>;
|
|
35
|
+
/** Create a note on a contact. */
|
|
36
|
+
create(contactId: number, content: string): Promise<Note>;
|
|
37
|
+
/** List all notes on a company. */
|
|
38
|
+
listForCompany(companyId: number): Promise<{
|
|
39
|
+
data: Note[];
|
|
40
|
+
}>;
|
|
41
|
+
/** Create a note on a company. */
|
|
42
|
+
createForCompany(companyId: number, content: string): Promise<Note>;
|
|
43
|
+
/** List all notes on a deal. `dealId` is a UUID string, not a number. */
|
|
44
|
+
listForDeal(dealId: string): Promise<{
|
|
45
|
+
data: Note[];
|
|
46
|
+
}>;
|
|
47
|
+
/** Create a note on a deal. `dealId` is a UUID string, not a number. */
|
|
48
|
+
createForDeal(dealId: string, content: string): Promise<Note>;
|
|
49
|
+
/** Update a note's content. Works for contact, company and deal notes. */
|
|
50
|
+
update(noteId: string, content: string): Promise<Note>;
|
|
51
|
+
/** Delete a note. */
|
|
52
|
+
delete(noteId: string): Promise<{
|
|
53
|
+
data: {
|
|
54
|
+
deleted: boolean;
|
|
55
|
+
};
|
|
56
|
+
}>;
|
|
57
|
+
};
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
export type CustomObjectIcon = "box" | "briefcase" | "building" | "calendar" | "flag" | "folder" | "globe" | "heart" | "layers" | "package" | "target" | "users";
|
|
2
|
+
/** A custom object type in your workspace — a record type you define. */
|
|
3
|
+
export interface CustomObject {
|
|
4
|
+
/** Stable API slug, e.g. `invoices`. */
|
|
5
|
+
slug: string;
|
|
6
|
+
singular_noun: string;
|
|
7
|
+
plural_noun: string;
|
|
8
|
+
/** True for object types graph8 ships; system objects cannot be deleted. */
|
|
9
|
+
is_system: boolean;
|
|
10
|
+
is_archived: boolean;
|
|
11
|
+
/** Presentation settings may be absent on older servers. */
|
|
12
|
+
description?: string | null;
|
|
13
|
+
icon?: string | null;
|
|
14
|
+
display_attribute_slug?: string | null;
|
|
15
|
+
}
|
|
16
|
+
/** Native schema creation requires objects:manage and current Admin access. */
|
|
17
|
+
export interface CreateCustomObject {
|
|
18
|
+
slug: string;
|
|
19
|
+
singular_noun: string;
|
|
20
|
+
plural_noun: string;
|
|
21
|
+
description?: string | null;
|
|
22
|
+
icon?: CustomObjectIcon | null;
|
|
23
|
+
}
|
|
24
|
+
/** Omitted labels/state are preserved. The API slug is immutable. */
|
|
25
|
+
export interface UpdateCustomObject {
|
|
26
|
+
singular_noun?: string;
|
|
27
|
+
plural_noun?: string;
|
|
28
|
+
is_archived?: boolean;
|
|
29
|
+
/** Omit to preserve; null clears the setting. */
|
|
30
|
+
description?: string | null;
|
|
31
|
+
icon?: CustomObjectIcon | null;
|
|
32
|
+
display_attribute_slug?: string | null;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* One attribute on a custom object, and the rules its values must satisfy.
|
|
36
|
+
*
|
|
37
|
+
* `attribute_type` is one of 16 supported types and decides how a value is
|
|
38
|
+
* validated and canonicalized: `text`, `number`, `currency`, `date`,
|
|
39
|
+
* `timestamp`, `checkbox`, `select`, `status`, `email_address`, `phone_number`,
|
|
40
|
+
* `domain`, `location`, `personal_name`, `record_reference`, `rating`,
|
|
41
|
+
* `actor_reference`.
|
|
42
|
+
*/
|
|
43
|
+
export interface CustomObjectAttribute {
|
|
44
|
+
slug: string;
|
|
45
|
+
/** Customer-facing label. Display metadata is absent on older servers. */
|
|
46
|
+
title?: string;
|
|
47
|
+
description?: string | null;
|
|
48
|
+
/** Display order; ties are ordered by slug. */
|
|
49
|
+
sort_order?: number;
|
|
50
|
+
/** Protected system field rather than a customer-defined field. */
|
|
51
|
+
is_system?: boolean;
|
|
52
|
+
/** Archive state; absent on older servers. */
|
|
53
|
+
is_archived?: boolean;
|
|
54
|
+
attribute_type: string;
|
|
55
|
+
is_required: boolean;
|
|
56
|
+
/** No two ACTIVE records may hold the same value. A collision returns 409. */
|
|
57
|
+
is_unique: boolean;
|
|
58
|
+
is_multiselect: boolean;
|
|
59
|
+
/** Apply a non-null default to omitted create fields, never PATCH. Absent on older servers. */
|
|
60
|
+
is_default_value_enabled?: boolean;
|
|
61
|
+
/** Configured default; validated like an explicit value when enabled. */
|
|
62
|
+
default_value?: unknown;
|
|
63
|
+
/** Type-specific configuration, e.g. the allowed options for a `select`. */
|
|
64
|
+
config: Record<string, unknown>;
|
|
65
|
+
}
|
|
66
|
+
/** Schema creation requires objects:manage and current Admin access. */
|
|
67
|
+
export interface CreateCustomObjectAttribute {
|
|
68
|
+
slug: string;
|
|
69
|
+
title: string;
|
|
70
|
+
attribute_type: "text" | "number" | "currency" | "date" | "timestamp" | "checkbox" | "select" | "status" | "email_address" | "phone_number" | "domain" | "location" | "personal_name" | "record_reference" | "rating" | "actor_reference";
|
|
71
|
+
description?: string | null;
|
|
72
|
+
is_required?: boolean;
|
|
73
|
+
is_unique?: boolean;
|
|
74
|
+
is_multiselect?: boolean;
|
|
75
|
+
is_default_value_enabled?: boolean;
|
|
76
|
+
default_value?: unknown;
|
|
77
|
+
config?: Record<string, unknown>;
|
|
78
|
+
sort_order?: number;
|
|
79
|
+
}
|
|
80
|
+
/** Omitted fields are preserved; explicit null can clear the configured default. */
|
|
81
|
+
export type UpdateCustomObjectAttribute = Partial<Omit<CreateCustomObjectAttribute, "slug" | "attribute_type">> & {
|
|
82
|
+
is_archived?: boolean;
|
|
83
|
+
};
|
|
84
|
+
/** One record, with its currently active attribute values. */
|
|
85
|
+
export interface CustomObjectRecord {
|
|
86
|
+
id: string;
|
|
87
|
+
object_slug: string;
|
|
88
|
+
/**
|
|
89
|
+
* Values keyed by attribute slug. Untyped by necessity — the valid keys come
|
|
90
|
+
* from YOUR attribute definitions at runtime, so call `listAttributes` for the
|
|
91
|
+
* schema. Saying `any` here would imply the shape was considered and found to
|
|
92
|
+
* be free.
|
|
93
|
+
*/
|
|
94
|
+
values: Record<string, unknown>;
|
|
95
|
+
is_archived: boolean;
|
|
96
|
+
/** Revision for conditional updates; absent on older servers. */
|
|
97
|
+
revision?: number;
|
|
98
|
+
created_at: string | null;
|
|
99
|
+
updated_at: string | null;
|
|
100
|
+
}
|
|
101
|
+
/** One generation of one attribute's value. */
|
|
102
|
+
export interface CustomObjectHistoryEntry {
|
|
103
|
+
attribute: string;
|
|
104
|
+
value: unknown;
|
|
105
|
+
active_from: string | null;
|
|
106
|
+
/** Null means this value is still in force. */
|
|
107
|
+
active_until: string | null;
|
|
108
|
+
actor_id: string | null;
|
|
109
|
+
}
|
|
110
|
+
export interface CustomObjectHistory {
|
|
111
|
+
record_id: string;
|
|
112
|
+
entries: CustomObjectHistoryEntry[];
|
|
113
|
+
}
|
|
114
|
+
export interface CustomObjectMutation {
|
|
115
|
+
id: string;
|
|
116
|
+
action: "created" | "updated" | "archived" | "restored";
|
|
117
|
+
occurred_at: string;
|
|
118
|
+
revision: number;
|
|
119
|
+
actor_id: string | null;
|
|
120
|
+
actor_type: "user" | "api" | "app" | "integration" | "system";
|
|
121
|
+
source: string;
|
|
122
|
+
app_id: string | null;
|
|
123
|
+
changes: Record<string, {
|
|
124
|
+
before_present: boolean;
|
|
125
|
+
before: unknown;
|
|
126
|
+
after_present: boolean;
|
|
127
|
+
after: unknown;
|
|
128
|
+
}>;
|
|
129
|
+
was_archived: boolean;
|
|
130
|
+
is_archived: boolean;
|
|
131
|
+
}
|
|
132
|
+
export interface CustomObjectMutations {
|
|
133
|
+
record_id: string;
|
|
134
|
+
entries: CustomObjectMutation[];
|
|
135
|
+
next_cursor: string | null;
|
|
136
|
+
}
|
|
137
|
+
export interface ListRecordsParams {
|
|
138
|
+
page?: number;
|
|
139
|
+
/** 1-200, default 50. */
|
|
140
|
+
limit?: number;
|
|
141
|
+
/** Opaque cursor from a prior response. Takes precedence over `page`. */
|
|
142
|
+
cursor?: string;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Pagination envelope for record listings.
|
|
146
|
+
*
|
|
147
|
+
* Named distinctly rather than `PaginationMeta`: `deals.ts` and `quotes.ts` each
|
|
148
|
+
* already declare their own structurally identical `PaginationMeta`, and one of
|
|
149
|
+
* them is re-exported from `index.ts` — so a third with that name is a
|
|
150
|
+
* `TS2300: Duplicate identifier` at the package's export site. Consolidating the
|
|
151
|
+
* three into one shared type is worth doing and is not this change.
|
|
152
|
+
*/
|
|
153
|
+
export interface ObjectPagination {
|
|
154
|
+
page: number;
|
|
155
|
+
limit: number;
|
|
156
|
+
total: number;
|
|
157
|
+
has_next: boolean;
|
|
158
|
+
next_cursor: string | null;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Custom Objects API — your own record types, their schema, and their records (M6-3).
|
|
162
|
+
* Requires an API key (server-side). On the hardened HTTP core: throws a typed
|
|
163
|
+
* `G8Error` on failure and retries transient errors.
|
|
164
|
+
*
|
|
165
|
+
* Access requires an authenticated credential with the applicable object scope.
|
|
166
|
+
*
|
|
167
|
+
* HOW THIS DIFFERS FROM `g8.fields`. A FIELD adds a column to an existing
|
|
168
|
+
* contact or company. A CUSTOM OBJECT is a whole new record type with its own
|
|
169
|
+
* attributes and its own records. Use fields to extend a contact; use custom
|
|
170
|
+
* objects to model an invoice, a shipment, or a subscription.
|
|
171
|
+
*
|
|
172
|
+
* THREE BEHAVIOURS WORTH KNOWING BEFORE YOU WRITE
|
|
173
|
+
*
|
|
174
|
+
* 1. An unknown field is REJECTED (422), not ignored. A typo does not silently
|
|
175
|
+
* lose your data, and the response lists every problem at once so a payload
|
|
176
|
+
* with three mistakes takes one round trip to fix.
|
|
177
|
+
* 2. `update` is a PARTIAL write. Attributes you omit are left alone; sending
|
|
178
|
+
* an explicit `null` clears an optional attribute. Required attributes
|
|
179
|
+
* cannot be cleared with `null` or an empty multivalue list (422).
|
|
180
|
+
* 3. `archive` does not destroy anything. The record leaves listings, stays
|
|
181
|
+
* readable by id, and keeps its history.
|
|
182
|
+
*
|
|
183
|
+
* Record references must resolve to an active record of `config.target_object`
|
|
184
|
+
* within the same organization and app. Unavailable targets return a 422 with
|
|
185
|
+
* `invalid_reference` in the field error's `reason`, without disclosing whether
|
|
186
|
+
* a target exists outside the caller's scope.
|
|
187
|
+
*
|
|
188
|
+
* Backed by:
|
|
189
|
+
* GET /api/v1/objects
|
|
190
|
+
* GET /api/v1/objects/{slug}
|
|
191
|
+
* GET /api/v1/objects/{slug}/attributes
|
|
192
|
+
* GET /api/v1/objects/{slug}/records
|
|
193
|
+
* POST /api/v1/objects/{slug}/records
|
|
194
|
+
* GET /api/v1/objects/{slug}/records/{id}
|
|
195
|
+
* PATCH /api/v1/objects/{slug}/records/{id}
|
|
196
|
+
* DELETE /api/v1/objects/{slug}/records/{id}
|
|
197
|
+
* GET /api/v1/objects/{slug}/records/{id}/history
|
|
198
|
+
*/
|
|
199
|
+
export declare const createObjectsClient: (apiKey: string, apiUrl?: string) => {
|
|
200
|
+
/** List the custom object types in your workspace. */
|
|
201
|
+
list(params?: {
|
|
202
|
+
include_archived?: boolean;
|
|
203
|
+
}): Promise<{
|
|
204
|
+
data: CustomObject[];
|
|
205
|
+
}>;
|
|
206
|
+
/** Create a native custom object. Requires objects:manage and Admin access. */
|
|
207
|
+
create(input: CreateCustomObject): Promise<CustomObject>;
|
|
208
|
+
/** Rename, archive or restore an object while preserving its slug and data. */
|
|
209
|
+
update(objectSlug: string, input: UpdateCustomObject): Promise<CustomObject>;
|
|
210
|
+
/** Archive the object without deleting records; restore with update({ is_archived: false }). */
|
|
211
|
+
archive(objectSlug: string): Promise<CustomObject>;
|
|
212
|
+
/** Fetch one object type by slug. */
|
|
213
|
+
get(objectSlug: string): Promise<CustomObject>;
|
|
214
|
+
/** The object's attributes — the schema its records must satisfy. */
|
|
215
|
+
listAttributes(objectSlug: string, params?: {
|
|
216
|
+
include_archived?: boolean;
|
|
217
|
+
}): Promise<{
|
|
218
|
+
data: CustomObjectAttribute[];
|
|
219
|
+
}>;
|
|
220
|
+
/** Create a field using the same schema rules as the customer UI. */
|
|
221
|
+
createAttribute(objectSlug: string, input: CreateCustomObjectAttribute): Promise<CustomObjectAttribute>;
|
|
222
|
+
/** Edit or restore a field; its type and slug are immutable. */
|
|
223
|
+
updateAttribute(objectSlug: string, attributeSlug: string, input: UpdateCustomObjectAttribute): Promise<CustomObjectAttribute>;
|
|
224
|
+
/** Archive without deleting values; restore with updateAttribute({ is_archived: false }). */
|
|
225
|
+
archiveAttribute(objectSlug: string, attributeSlug: string): Promise<CustomObjectAttribute>;
|
|
226
|
+
/** Paginated custom records or canonical deals with current values and revisions.
|
|
227
|
+
* Deal totals and related references respect current record access. */
|
|
228
|
+
listRecords(objectSlug: string, params?: ListRecordsParams): Promise<{
|
|
229
|
+
data: CustomObjectRecord[];
|
|
230
|
+
pagination?: ObjectPagination;
|
|
231
|
+
}>;
|
|
232
|
+
/**
|
|
233
|
+
* Create a record. Every field is validated against the object's attributes;
|
|
234
|
+
* an unknown one is a 422 listing every problem at once, and a collision on a
|
|
235
|
+
* unique attribute is a 409.
|
|
236
|
+
*/
|
|
237
|
+
createRecord(objectSlug: string, values: Record<string, unknown>): Promise<CustomObjectRecord>;
|
|
238
|
+
/** Match a unique single-value key, creating or updating while preserving omitted fields. */
|
|
239
|
+
upsertRecord(objectSlug: string, matchingAttribute: string, values: Record<string, unknown>, options?: {
|
|
240
|
+
expectedRevision?: number;
|
|
241
|
+
}): Promise<CustomObjectRecord>;
|
|
242
|
+
/** Fetch one custom record, canonical contact/company, or deal by its stable graph8 ID.
|
|
243
|
+
* Deals retain their UUIDs and expose company, primary-contact and contact_ids references only
|
|
244
|
+
* when permitted. Generic deal mutations are not yet supported.
|
|
245
|
+
*/
|
|
246
|
+
getRecord(objectSlug: string, recordId: string): Promise<CustomObjectRecord>;
|
|
247
|
+
/**
|
|
248
|
+
* Update a record. PARTIAL: only the attributes you send are touched, so
|
|
249
|
+
* required attributes you omit are left alone rather than reported missing.
|
|
250
|
+
* Sending an explicit `null` CLEARS that attribute.
|
|
251
|
+
*
|
|
252
|
+
* Custom values retain generations through `history`. Canonical contacts and
|
|
253
|
+
* companies require expectedRevision from a fresh read and expose recorded
|
|
254
|
+
* mutations through `changes`. They do not yet support appendValues/removeValues.
|
|
255
|
+
*/
|
|
256
|
+
updateRecord(objectSlug: string, recordId: string, values: Record<string, unknown>, options?: {
|
|
257
|
+
expectedRevision?: number;
|
|
258
|
+
appendValues?: Record<string, unknown[]>;
|
|
259
|
+
removeValues?: Record<string, unknown[]>;
|
|
260
|
+
}): Promise<CustomObjectRecord>;
|
|
261
|
+
/**
|
|
262
|
+
* Archive a record. It leaves listings, stays readable by id, and keeps its
|
|
263
|
+
* history and associations. Nothing is destroyed.
|
|
264
|
+
*/
|
|
265
|
+
archiveRecord(objectSlug: string, recordId: string): Promise<CustomObjectRecord>;
|
|
266
|
+
/** Restore archived values under current constraints. Conflicts leave the record archived. */
|
|
267
|
+
restoreRecord(objectSlug: string, recordId: string): Promise<CustomObjectRecord>;
|
|
268
|
+
/**
|
|
269
|
+
* A record's value timeline, newest first. An entry whose `active_until` is
|
|
270
|
+
* null is the value currently in force.
|
|
271
|
+
*/
|
|
272
|
+
history(objectSlug: string, recordId: string, limit?: number): Promise<CustomObjectHistory>;
|
|
273
|
+
/** Recorded custom-record or canonical contact/company mutations. Pass next_cursor to continue.
|
|
274
|
+
* Canonical history respects current access/privacy; archived records and older
|
|
275
|
+
* unrecorded writes are not reconstructed. Store unavailability returns 503.
|
|
276
|
+
*/
|
|
277
|
+
changes(objectSlug: string, recordId: string, options?: {
|
|
278
|
+
limit?: number;
|
|
279
|
+
cursor?: string;
|
|
280
|
+
}): Promise<CustomObjectMutations>;
|
|
281
|
+
};
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Stage Checklist v2 pipelines. A "pipeline" here is a multi-stage workflow
|
|
3
|
+
* (with evidence requirements and per-channel scripts) that lives parallel
|
|
4
|
+
* to deal pipelines. Use `g8.deals.pipelines()` for deal-pipeline reads.
|
|
5
|
+
*/
|
|
6
|
+
export interface StagePipelineStage {
|
|
7
|
+
id: string;
|
|
8
|
+
name: string;
|
|
9
|
+
position: number;
|
|
10
|
+
/** Evidence keys that must be collected before the stage can be marked done. */
|
|
11
|
+
required_elements: string[];
|
|
12
|
+
/** Evidence keys that are recommended but not enforced. */
|
|
13
|
+
recommended_elements: string[];
|
|
14
|
+
/** Channel-specific scripts (call, email, linkedin, etc.). */
|
|
15
|
+
channel_scripts: Record<string, string>;
|
|
16
|
+
color: string | null;
|
|
17
|
+
stage_type: string | null;
|
|
18
|
+
}
|
|
19
|
+
export interface StagePipeline {
|
|
20
|
+
id: string;
|
|
21
|
+
name: string;
|
|
22
|
+
target: string | null;
|
|
23
|
+
is_default: boolean;
|
|
24
|
+
stages: StagePipelineStage[];
|
|
25
|
+
created_at: string | null;
|
|
26
|
+
updated_at: string | null;
|
|
27
|
+
}
|
|
28
|
+
export interface StagePipelineCreateParams {
|
|
29
|
+
name: string;
|
|
30
|
+
target?: string;
|
|
31
|
+
/** If true, creates an empty pipeline (no default stages). */
|
|
32
|
+
blank?: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface StagePipelineUpdateParams {
|
|
35
|
+
name?: string;
|
|
36
|
+
target?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface StageCreateParams {
|
|
39
|
+
name: string;
|
|
40
|
+
position?: number;
|
|
41
|
+
required_elements?: string[];
|
|
42
|
+
recommended_elements?: string[];
|
|
43
|
+
channel_scripts?: Record<string, string>;
|
|
44
|
+
color?: string;
|
|
45
|
+
stage_type?: string;
|
|
46
|
+
}
|
|
47
|
+
export interface StageUpdateParams {
|
|
48
|
+
name?: string;
|
|
49
|
+
position?: number;
|
|
50
|
+
required_elements?: string[];
|
|
51
|
+
recommended_elements?: string[];
|
|
52
|
+
channel_scripts?: Record<string, string>;
|
|
53
|
+
color?: string;
|
|
54
|
+
}
|
|
55
|
+
export interface EvidenceKey {
|
|
56
|
+
key: string;
|
|
57
|
+
label: string;
|
|
58
|
+
description: string;
|
|
59
|
+
category: string;
|
|
60
|
+
}
|
|
61
|
+
export interface PipelineSuggestion {
|
|
62
|
+
suggestion_id: string;
|
|
63
|
+
name: string;
|
|
64
|
+
target: string;
|
|
65
|
+
stages: Array<{
|
|
66
|
+
name: string;
|
|
67
|
+
required_elements: string[];
|
|
68
|
+
channel_scripts: Record<string, string>;
|
|
69
|
+
}>;
|
|
70
|
+
rationale: string;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Stage Checklist Pipelines API - workflow pipelines with evidence + scripts.
|
|
74
|
+
* Requires API key (server-side). On the hardened HTTP core: throws a typed
|
|
75
|
+
* `G8Error` on failure and retries transient errors.
|
|
76
|
+
*
|
|
77
|
+
* Backed by:
|
|
78
|
+
* GET /api/v1/pipelines
|
|
79
|
+
* GET /api/v1/pipelines/{id}
|
|
80
|
+
* GET /api/v1/pipelines/evidence-library
|
|
81
|
+
* POST /api/v1/pipelines
|
|
82
|
+
* PUT /api/v1/pipelines/{id}
|
|
83
|
+
* DELETE /api/v1/pipelines/{id}
|
|
84
|
+
* POST /api/v1/pipelines/{id}/stages
|
|
85
|
+
* PUT /api/v1/pipelines/{id}/stages/{stage_id}
|
|
86
|
+
* DELETE /api/v1/pipelines/{id}/stages/{stage_id}
|
|
87
|
+
* PUT /api/v1/pipelines/{id}/stages/reorder
|
|
88
|
+
* POST /api/v1/pipelines/suggest
|
|
89
|
+
* POST /api/v1/pipelines/from-suggestion
|
|
90
|
+
*/
|
|
91
|
+
export declare const createPipelinesClient: (apiKey: string, apiUrl?: string) => {
|
|
92
|
+
/** List all stage-checklist pipelines with stages, evidence, scripts. */
|
|
93
|
+
list(): Promise<{
|
|
94
|
+
data: StagePipeline[];
|
|
95
|
+
}>;
|
|
96
|
+
/** Get a single pipeline by ID. */
|
|
97
|
+
get(pipelineId: string): Promise<StagePipeline>;
|
|
98
|
+
/** Get the canonical evidence-key library (used when defining stages). */
|
|
99
|
+
evidenceLibrary(): Promise<{
|
|
100
|
+
data: EvidenceKey[];
|
|
101
|
+
}>;
|
|
102
|
+
/** Create a new pipeline. Defaults to a templated set of stages; pass blank=true for empty. */
|
|
103
|
+
create(params: StagePipelineCreateParams): Promise<StagePipeline>;
|
|
104
|
+
/** Update pipeline metadata (name, target). */
|
|
105
|
+
update(pipelineId: string, fields: StagePipelineUpdateParams): Promise<StagePipeline>;
|
|
106
|
+
/** Delete a pipeline. Only allowed when no deals reference it. */
|
|
107
|
+
delete(pipelineId: string): Promise<{
|
|
108
|
+
data: {
|
|
109
|
+
deleted: boolean;
|
|
110
|
+
};
|
|
111
|
+
}>;
|
|
112
|
+
/** Add a new stage to a pipeline. */
|
|
113
|
+
createStage(pipelineId: string, stage: StageCreateParams): Promise<StagePipelineStage>;
|
|
114
|
+
/** Update a stage (evidence, scripts, position). */
|
|
115
|
+
updateStage(pipelineId: string, stageId: string, fields: StageUpdateParams): Promise<StagePipelineStage>;
|
|
116
|
+
/** Reorder stages within a pipeline (pass full ordered list of stage IDs). */
|
|
117
|
+
reorderStages(pipelineId: string, stageIds: string[]): Promise<{
|
|
118
|
+
data: StagePipelineStage[];
|
|
119
|
+
}>;
|
|
120
|
+
/** Delete a stage from a pipeline. */
|
|
121
|
+
deleteStage(pipelineId: string, stageId: string): Promise<{
|
|
122
|
+
data: {
|
|
123
|
+
deleted: boolean;
|
|
124
|
+
};
|
|
125
|
+
}>;
|
|
126
|
+
/** Get an AI-suggested pipeline based on org context (brand, ICP, messaging). */
|
|
127
|
+
suggest(): Promise<{
|
|
128
|
+
data: PipelineSuggestion;
|
|
129
|
+
}>;
|
|
130
|
+
/** Create a real pipeline from an AI suggestion (optionally with overrides). */
|
|
131
|
+
fromSuggestion(suggestionId: string, overrides?: Partial<{
|
|
132
|
+
name: string;
|
|
133
|
+
target: string;
|
|
134
|
+
}>): Promise<StagePipeline>;
|
|
135
|
+
};
|