@graph8/sdk 0.251.0 → 0.260.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -2
- package/dist/cli.js +216 -0
- package/dist/index.d.mts +104 -7
- package/dist/index.d.ts +104 -7
- package/dist/index.js +44 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +44 -3
- package/dist/index.mjs.map +1 -1
- package/dist/react.d.mts +102 -7
- package/dist/react.d.ts +102 -7
- package/dist/react.js +62 -11
- package/dist/react.js.map +1 -1
- package/dist/react.mjs +53 -12
- package/dist/react.mjs.map +1 -1
- package/dist/types/README.md +7 -0
- package/dist/types/agency.d.ts +20 -0
- package/dist/types/agentSetup.d.ts +57 -0
- package/dist/types/api.d.ts +127 -0
- package/dist/types/appClient.d.ts +99 -0
- package/dist/types/appPlatform.d.ts +269 -0
- package/dist/types/appTokens.d.ts +125 -0
- package/dist/types/apps.d.ts +130 -0
- package/dist/types/audiences.d.ts +88 -0
- package/dist/types/calendar.d.ts +55 -0
- package/dist/types/campaigns.d.ts +61 -0
- package/dist/types/chat.d.ts +35 -0
- package/dist/types/cli.d.ts +14 -0
- package/dist/types/companies.d.ts +123 -0
- package/dist/types/contacts.d.ts +200 -0
- package/dist/types/copilot.d.ts +31 -0
- package/dist/types/core.d.ts +1052 -0
- package/dist/types/deals.d.ts +215 -0
- package/dist/types/enrich.d.ts +51 -0
- package/dist/types/fields.d.ts +84 -0
- package/dist/types/forms.d.ts +16 -0
- package/dist/types/http.d.ts +141 -0
- package/dist/types/inbox.d.ts +123 -0
- package/dist/types/index.d.ts +63 -0
- package/dist/types/intent.d.ts +196 -0
- package/dist/types/lists.d.ts +44 -0
- package/dist/types/mailboxes.d.ts +240 -0
- package/dist/types/marketplace.d.ts +62 -0
- package/dist/types/meetings.d.ts +70 -0
- package/dist/types/newsletter.d.ts +212 -0
- package/dist/types/notes.d.ts +57 -0
- package/dist/types/objects.d.ts +281 -0
- package/dist/types/pipelines.d.ts +135 -0
- package/dist/types/quotes.d.ts +143 -0
- package/dist/types/react.d.ts +978 -0
- package/dist/types/search.d.ts +99 -0
- package/dist/types/sequences.d.ts +255 -0
- package/dist/types/signals.d.ts +28 -0
- package/dist/types/skills.d.ts +176 -0
- package/dist/types/snippet.d.ts +24 -0
- package/dist/types/studio.d.ts +161 -0
- package/dist/types/tasks.d.ts +101 -0
- package/dist/types/types.d.ts +45 -0
- package/dist/types/utils.d.ts +21 -0
- package/dist/types/version.d.ts +10 -0
- package/dist/types/visitors.d.ts +29 -0
- package/dist/types/voice.d.ts +304 -0
- package/dist/types/webhooks.d.ts +71 -0
- package/dist/types/workflows.d.ts +229 -0
- package/docs/agents.md +748 -0
- package/docs/api/README.md +165 -0
- package/docs/api/accounts.d.ts +396 -0
- package/docs/api/accounts.md +644 -0
- package/docs/api/adCampaigns.d.ts +707 -0
- package/docs/api/adCampaigns.md +1091 -0
- package/docs/api/adCreatives.d.ts +996 -0
- package/docs/api/adCreatives.md +1708 -0
- package/docs/api/agency.d.ts +556 -0
- package/docs/api/agency.md +845 -0
- package/docs/api/agent.d.ts +330 -0
- package/docs/api/agent.md +514 -0
- package/docs/api/agents.d.ts +1622 -0
- package/docs/api/agents.md +2860 -0
- package/docs/api/aiInbox.d.ts +1984 -0
- package/docs/api/aiInbox.md +3490 -0
- package/docs/api/analytics.d.ts +1273 -0
- package/docs/api/analytics.md +2095 -0
- package/docs/api/apiKeys.d.ts +252 -0
- package/docs/api/apiKeys.md +318 -0
- package/docs/api/appDeployments.d.ts +236 -0
- package/docs/api/appDeployments.md +471 -0
- package/docs/api/appDomains.d.ts +171 -0
- package/docs/api/appDomains.md +281 -0
- package/docs/api/appLogs.d.ts +120 -0
- package/docs/api/appLogs.md +159 -0
- package/docs/api/appObjects.d.ts +415 -0
- package/docs/api/appObjects.md +568 -0
- package/docs/api/appPages.d.ts +557 -0
- package/docs/api/appPages.md +796 -0
- package/docs/api/appPlatformTokens.d.ts +123 -0
- package/docs/api/appPlatformTokens.md +172 -0
- package/docs/api/appointments.d.ts +2361 -0
- package/docs/api/appointments.md +3917 -0
- package/docs/api/apps.d.ts +822 -0
- package/docs/api/apps.md +1342 -0
- package/docs/api/assertUpsert.d.ts +286 -0
- package/docs/api/assertUpsert.md +370 -0
- package/docs/api/audienceSyncs.d.ts +259 -0
- package/docs/api/audienceSyncs.md +395 -0
- package/docs/api/brandKit.d.ts +686 -0
- package/docs/api/brandKit.md +1133 -0
- package/docs/api/bugReports.d.ts +181 -0
- package/docs/api/bugReports.md +268 -0
- package/docs/api/by-path.md +3260 -0
- package/docs/api/calendarInvites.d.ts +117 -0
- package/docs/api/calendarInvites.md +148 -0
- package/docs/api/campaignWorkflows.d.ts +152 -0
- package/docs/api/campaignWorkflows.md +200 -0
- package/docs/api/campaigns.d.ts +721 -0
- package/docs/api/campaigns.md +1236 -0
- package/docs/api/channels.d.ts +171 -0
- package/docs/api/channels.md +235 -0
- package/docs/api/cliCampaigns.d.ts +205 -0
- package/docs/api/cliCampaigns.md +256 -0
- package/docs/api/cliPipelines.d.ts +324 -0
- package/docs/api/cliPipelines.md +562 -0
- package/docs/api/clickHouse.d.ts +115 -0
- package/docs/api/clickHouse.md +138 -0
- package/docs/api/companies.d.ts +1636 -0
- package/docs/api/companies.md +2211 -0
- package/docs/api/companyIntelligence.d.ts +299 -0
- package/docs/api/companyIntelligence.md +488 -0
- package/docs/api/contacts.d.ts +2173 -0
- package/docs/api/contacts.md +3143 -0
- package/docs/api/content.d.ts +968 -0
- package/docs/api/content.md +1667 -0
- package/docs/api/contentGridSkills.d.ts +177 -0
- package/docs/api/contentGridSkills.md +271 -0
- package/docs/api/copilot.d.ts +1017 -0
- package/docs/api/copilot.md +1765 -0
- package/docs/api/crmSyncs.d.ts +215 -0
- package/docs/api/crmSyncs.md +301 -0
- package/docs/api/customerSuccess.d.ts +491 -0
- package/docs/api/customerSuccess.md +776 -0
- package/docs/api/deals.d.ts +1696 -0
- package/docs/api/deals.md +2432 -0
- package/docs/api/deliverability.d.ts +418 -0
- package/docs/api/deliverability.md +677 -0
- package/docs/api/desk.d.ts +1765 -0
- package/docs/api/desk.md +3007 -0
- package/docs/api/dialer.d.ts +1185 -0
- package/docs/api/dialer.md +2166 -0
- package/docs/api/dialerAnalytics.d.ts +187 -0
- package/docs/api/dialerAnalytics.md +257 -0
- package/docs/api/documents.d.ts +895 -0
- package/docs/api/documents.md +1440 -0
- package/docs/api/duplicates.d.ts +195 -0
- package/docs/api/duplicates.md +315 -0
- package/docs/api/eSign.d.ts +38 -0
- package/docs/api/eSign.md +54 -0
- package/docs/api/eSignature.d.ts +242 -0
- package/docs/api/eSignature.md +341 -0
- package/docs/api/enrichment.d.ts +3207 -0
- package/docs/api/enrichment.md +5225 -0
- package/docs/api/events.d.ts +115 -0
- package/docs/api/events.md +105 -0
- package/docs/api/fields.d.ts +482 -0
- package/docs/api/fields.md +566 -0
- package/docs/api/forms.d.ts +1012 -0
- package/docs/api/forms.md +1542 -0
- package/docs/api/gtmCampaigns.d.ts +662 -0
- package/docs/api/gtmCampaigns.md +1044 -0
- package/docs/api/gtmContext.d.ts +1187 -0
- package/docs/api/gtmContext.md +2112 -0
- package/docs/api/gtmDeliverability.d.ts +60 -0
- package/docs/api/gtmDeliverability.md +63 -0
- package/docs/api/gtmKnowledgeBase.d.ts +76 -0
- package/docs/api/gtmKnowledgeBase.md +91 -0
- package/docs/api/gtmLaunchHelpers.d.ts +123 -0
- package/docs/api/gtmLaunchHelpers.md +148 -0
- package/docs/api/gtmLibrary.d.ts +448 -0
- package/docs/api/gtmLibrary.md +780 -0
- package/docs/api/health.d.ts +39 -0
- package/docs/api/health.md +58 -0
- package/docs/api/imageLibrary.d.ts +341 -0
- package/docs/api/imageLibrary.md +569 -0
- package/docs/api/imports.d.ts +157 -0
- package/docs/api/imports.md +174 -0
- package/docs/api/inbox.d.ts +709 -0
- package/docs/api/inbox.md +1067 -0
- package/docs/api/install.d.ts +213 -0
- package/docs/api/install.md +317 -0
- package/docs/api/installedApps.d.ts +131 -0
- package/docs/api/installedApps.md +241 -0
- package/docs/api/integrationStatus.d.ts +142 -0
- package/docs/api/integrationStatus.md +205 -0
- package/docs/api/integrations.d.ts +2327 -0
- package/docs/api/integrations.md +3791 -0
- package/docs/api/intent.d.ts +482 -0
- package/docs/api/intent.md +858 -0
- package/docs/api/knowledge.d.ts +501 -0
- package/docs/api/knowledge.md +843 -0
- package/docs/api/knowledgeBase.d.ts +84 -0
- package/docs/api/knowledgeBase.md +96 -0
- package/docs/api/landingPages.d.ts +1411 -0
- package/docs/api/landingPages.md +2488 -0
- package/docs/api/leads.d.ts +133 -0
- package/docs/api/leads.md +180 -0
- package/docs/api/library.d.ts +217 -0
- package/docs/api/library.md +338 -0
- package/docs/api/linkedIn.d.ts +227 -0
- package/docs/api/linkedIn.md +289 -0
- package/docs/api/linkedInOutreach.d.ts +727 -0
- package/docs/api/linkedInOutreach.md +990 -0
- package/docs/api/lists.d.ts +1106 -0
- package/docs/api/lists.md +1609 -0
- package/docs/api/logs.d.ts +71 -0
- package/docs/api/logs.md +70 -0
- package/docs/api/mailboxes.d.ts +1050 -0
- package/docs/api/mailboxes.md +1690 -0
- package/docs/api/marketingIntelligence.d.ts +256 -0
- package/docs/api/marketingIntelligence.md +454 -0
- package/docs/api/marketplace.d.ts +3173 -0
- package/docs/api/marketplace.md +5953 -0
- package/docs/api/mcp.d.ts +69 -0
- package/docs/api/mcp.md +69 -0
- package/docs/api/me.d.ts +54 -0
- package/docs/api/me.md +56 -0
- package/docs/api/meetings.d.ts +539 -0
- package/docs/api/meetings.md +747 -0
- package/docs/api/newsletter.d.ts +1613 -0
- package/docs/api/newsletter.md +2746 -0
- package/docs/api/notes.d.ts +517 -0
- package/docs/api/notes.md +888 -0
- package/docs/api/notifications.d.ts +94 -0
- package/docs/api/notifications.md +105 -0
- package/docs/api/objects.d.ts +621 -0
- package/docs/api/objects.md +1098 -0
- package/docs/api/openSearch.d.ts +234 -0
- package/docs/api/openSearch.md +297 -0
- package/docs/api/ops.d.ts +299 -0
- package/docs/api/ops.md +339 -0
- package/docs/api/orgGovernance.d.ts +393 -0
- package/docs/api/orgGovernance.md +623 -0
- package/docs/api/orgVideos.d.ts +184 -0
- package/docs/api/orgVideos.md +252 -0
- package/docs/api/organizationSettings.d.ts +626 -0
- package/docs/api/organizationSettings.md +911 -0
- package/docs/api/phoneNumbers.d.ts +484 -0
- package/docs/api/phoneNumbers.md +777 -0
- package/docs/api/profile.d.ts +329 -0
- package/docs/api/profile.md +540 -0
- package/docs/api/programmaticPages.d.ts +400 -0
- package/docs/api/programmaticPages.md +626 -0
- package/docs/api/providerDomains.d.ts +866 -0
- package/docs/api/providerDomains.md +1446 -0
- package/docs/api/providerUsage.d.ts +129 -0
- package/docs/api/providerUsage.md +186 -0
- package/docs/api/public.d.ts +69 -0
- package/docs/api/public.md +78 -0
- package/docs/api/publicCopilot.d.ts +67 -0
- package/docs/api/publicCopilot.md +80 -0
- package/docs/api/publicSignals.d.ts +66 -0
- package/docs/api/publicSignals.md +71 -0
- package/docs/api/publicVisitors.d.ts +97 -0
- package/docs/api/publicVisitors.md +118 -0
- package/docs/api/quotes.d.ts +1564 -0
- package/docs/api/quotes.md +2553 -0
- package/docs/api/radar.d.ts +808 -0
- package/docs/api/radar.md +1431 -0
- package/docs/api/radarReports.d.ts +208 -0
- package/docs/api/radarReports.md +306 -0
- package/docs/api/recordRoles.d.ts +143 -0
- package/docs/api/recordRoles.md +175 -0
- package/docs/api/repos.d.ts +146 -0
- package/docs/api/repos.md +211 -0
- package/docs/api/research.d.ts +295 -0
- package/docs/api/research.md +534 -0
- package/docs/api/revenue.d.ts +402 -0
- package/docs/api/revenue.md +608 -0
- package/docs/api/revenueAnalytics.d.ts +147 -0
- package/docs/api/revenueAnalytics.md +212 -0
- package/docs/api/revenueLifecycle.d.ts +207 -0
- package/docs/api/revenueLifecycle.md +274 -0
- package/docs/api/revenueRecords.d.ts +372 -0
- package/docs/api/revenueRecords.md +563 -0
- package/docs/api/roles.d.ts +431 -0
- package/docs/api/roles.md +812 -0
- package/docs/api/salesCoach.d.ts +877 -0
- package/docs/api/salesCoach.md +1540 -0
- package/docs/api/sandbox.d.ts +210 -0
- package/docs/api/sandbox.md +380 -0
- package/docs/api/scans.d.ts +104 -0
- package/docs/api/scans.md +136 -0
- package/docs/api/scheduleBuy.d.ts +293 -0
- package/docs/api/scheduleBuy.md +431 -0
- package/docs/api/scraping.d.ts +266 -0
- package/docs/api/scraping.md +383 -0
- package/docs/api/sdrAnalytics.d.ts +138 -0
- package/docs/api/sdrAnalytics.md +246 -0
- package/docs/api/search.d.ts +598 -0
- package/docs/api/search.md +866 -0
- package/docs/api/seo.d.ts +447 -0
- package/docs/api/seo.md +660 -0
- package/docs/api/sequenceLifecycle.d.ts +439 -0
- package/docs/api/sequenceLifecycle.md +513 -0
- package/docs/api/sequences.d.ts +1936 -0
- package/docs/api/sequences.md +3232 -0
- package/docs/api/settings.d.ts +448 -0
- package/docs/api/settings.md +731 -0
- package/docs/api/signals.d.ts +1441 -0
- package/docs/api/signals.md +2526 -0
- package/docs/api/signatures.d.ts +719 -0
- package/docs/api/signatures.md +1247 -0
- package/docs/api/skills.d.ts +230 -0
- package/docs/api/skills.md +466 -0
- package/docs/api/snippet.d.ts +85 -0
- package/docs/api/snippet.md +106 -0
- package/docs/api/socialPublishing.d.ts +824 -0
- package/docs/api/socialPublishing.md +1245 -0
- package/docs/api/studioDocuments.d.ts +244 -0
- package/docs/api/studioDocuments.md +348 -0
- package/docs/api/support.d.ts +90 -0
- package/docs/api/support.md +76 -0
- package/docs/api/suppressions.d.ts +241 -0
- package/docs/api/suppressions.md +343 -0
- package/docs/api/surveys.d.ts +847 -0
- package/docs/api/surveys.md +1223 -0
- package/docs/api/tasks.d.ts +813 -0
- package/docs/api/tasks.md +1344 -0
- package/docs/api/teamMembers.d.ts +668 -0
- package/docs/api/teamMembers.md +1040 -0
- package/docs/api/teams.d.ts +784 -0
- package/docs/api/teams.md +1395 -0
- package/docs/api/usage.d.ts +277 -0
- package/docs/api/usage.md +389 -0
- package/docs/api/visitors.d.ts +690 -0
- package/docs/api/visitors.md +1075 -0
- package/docs/api/voice.d.ts +4661 -0
- package/docs/api/voice.md +7905 -0
- package/docs/api/webAnalytics.d.ts +964 -0
- package/docs/api/webAnalytics.md +1452 -0
- package/docs/api/webChat.d.ts +1704 -0
- package/docs/api/webChat.md +2048 -0
- package/docs/api/webhooks.d.ts +251 -0
- package/docs/api/webhooks.md +386 -0
- package/docs/api/websiteEditor.d.ts +324 -0
- package/docs/api/websiteEditor.md +517 -0
- package/docs/api/work.d.ts +2298 -0
- package/docs/api/work.md +3096 -0
- package/docs/api/workbench.d.ts +2962 -0
- package/docs/api/workbench.md +4884 -0
- package/docs/api/workflows.d.ts +1218 -0
- package/docs/api/workflows.md +2302 -0
- package/docs/sdk-clients.md +4339 -0
- package/package.json +10 -3
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
<!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
|
|
2
|
+
|
|
3
|
+
# `g8.api.support`: Support
|
|
4
|
+
|
|
5
|
+
1 operation (1 write).
|
|
6
|
+
|
|
7
|
+
No hand-written client covers this area. Call it through `g8.api.support.*` as shown below, or by operationId with `g8.api.call(operationId, input)`.
|
|
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: [support.d.ts](support.d.ts).
|
|
20
|
+
|
|
21
|
+
## Operations
|
|
22
|
+
|
|
23
|
+
| Call | HTTP | Tier | Scope | Summary |
|
|
24
|
+
|---|---|---|---|---|
|
|
25
|
+
| [`contactSupport`](#op-contactsupport) | `POST /api/v1/support/contact` | write | `account:write` | Contact Support |
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
<a id="op-contactsupport"></a>
|
|
30
|
+
|
|
31
|
+
### `g8.api.support.contactSupport(input)`
|
|
32
|
+
|
|
33
|
+
**Contact Support**
|
|
34
|
+
|
|
35
|
+
- HTTP: `POST /api/v1/support/contact`
|
|
36
|
+
- operationId: `contact_support_support_contact_post` (also callable as `g8.api.call("contact_support_support_contact_post", input)`)
|
|
37
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
38
|
+
- API-key scope: `account:write`
|
|
39
|
+
|
|
40
|
+
Send a message to graph8's human support team.
|
|
41
|
+
|
|
42
|
+
The reply channel is email: support answers to ``contact_email`` when
|
|
43
|
+
provided, otherwise to the authenticated user's own address.
|
|
44
|
+
|
|
45
|
+
**Input**
|
|
46
|
+
|
|
47
|
+
| Field | Type | Required | Description |
|
|
48
|
+
|---|---|---|---|
|
|
49
|
+
| `body` | `ContactSupportRequest` | yes | Request body; fields below. |
|
|
50
|
+
|
|
51
|
+
Body fields (`ContactSupportRequest`):
|
|
52
|
+
|
|
53
|
+
| Field | Type | Required | Description |
|
|
54
|
+
|---|---|---|---|
|
|
55
|
+
| `body.message` | `string` | yes | What the user needs help with, in their own words. min length 3, max length 5000 |
|
|
56
|
+
| `body.contact_email` | `string (email) \| null` | no | Where graph8 support should reply. Optional for personal API keys (the key's own user email is used); REQUIRED for org-scoped machine keys, which carry no personal email. |
|
|
57
|
+
| `body.urgency` | `string \| null` | no | Free-form urgency hint, e.g. 'normal', 'high', 'urgent'. max length 32 |
|
|
58
|
+
|
|
59
|
+
**Returns** `ApiResponse_ContactSupportResponse_`: the envelope `{ data: ContactSupportResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
60
|
+
|
|
61
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
62
|
+
|
|
63
|
+
`ContactSupportResponse` fields:
|
|
64
|
+
|
|
65
|
+
| Field | Type | Required | Description |
|
|
66
|
+
|---|---|---|---|
|
|
67
|
+
| `status` | `string` | yes | |
|
|
68
|
+
| `note` | `string` | no | Human-readable summary for the caller to relay to the user. default `""` |
|
|
69
|
+
| `notified` | `integer` | no | Support staff notified on this call (0 on cooldown). default `0` |
|
|
70
|
+
| `reply_email` | `string \| null` | no | Address graph8 support will reply to. |
|
|
71
|
+
|
|
72
|
+
**Example**
|
|
73
|
+
|
|
74
|
+
```ts
|
|
75
|
+
const result = await g8.api.support.contactSupport({ body: { message: "example" } });
|
|
76
|
+
```
|
|
@@ -0,0 +1,241 @@
|
|
|
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.suppressions` (Suppressions): 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<"bulk_add_suppressions_contacts_suppressions_bulk_add_post">;
|
|
9
|
+
*
|
|
10
|
+
* Reference with examples: suppressions.md
|
|
11
|
+
*/
|
|
12
|
+
/* eslint-disable */
|
|
13
|
+
|
|
14
|
+
/** `g8.api.suppressions.<member>` -> the operationId it calls. */
|
|
15
|
+
export interface SuppressionsMembers {
|
|
16
|
+
bulkAddSuppressions: "bulk_add_suppressions_contacts_suppressions_bulk_add_post";
|
|
17
|
+
checkContactSuppression: "check_contact_suppression_contacts__contact_id__suppression_get";
|
|
18
|
+
listSuppressions: "list_suppressions_contacts_suppressions_get";
|
|
19
|
+
reinstateSuppressions: "reinstate_suppressions_contacts_suppressions_reinstate_post";
|
|
20
|
+
suppressContact: "suppress_contact_contacts__contact_id__suppress_post";
|
|
21
|
+
unsuppressContact: "unsuppress_contact_contacts__contact_id__unsuppress_post";
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/** Input and output of every `g8.api.suppressions` operation, keyed by operationId. */
|
|
25
|
+
export interface SuppressionsOperations {
|
|
26
|
+
/**
|
|
27
|
+
* POST /contacts/suppressions/bulk-add
|
|
28
|
+
* Bulk Add Suppressions
|
|
29
|
+
* tier: write · scope: contacts:write
|
|
30
|
+
*/
|
|
31
|
+
bulk_add_suppressions_contacts_suppressions_bulk_add_post: {
|
|
32
|
+
input: {
|
|
33
|
+
headers?: {
|
|
34
|
+
"X-Target-Org-Id"?: string | null;
|
|
35
|
+
};
|
|
36
|
+
body: SuppressionsBulkAddRequest;
|
|
37
|
+
};
|
|
38
|
+
output: ApiResponse_BulkSuppressResponse_;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* GET /contacts/{contact_id}/suppression
|
|
42
|
+
* Check Contact Suppression
|
|
43
|
+
* tier: read · scope: contacts:read
|
|
44
|
+
*/
|
|
45
|
+
check_contact_suppression_contacts__contact_id__suppression_get: {
|
|
46
|
+
input: {
|
|
47
|
+
path: {
|
|
48
|
+
/** Contact ID (mashup_contacts.id) */
|
|
49
|
+
contact_id: number;
|
|
50
|
+
};
|
|
51
|
+
headers?: {
|
|
52
|
+
"X-Target-Org-Id"?: string | null;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
output: ApiResponse_SuppressionStatusResponse_;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* GET /contacts/suppressions
|
|
59
|
+
* List Suppressions
|
|
60
|
+
* tier: read · scope: contacts:read
|
|
61
|
+
*/
|
|
62
|
+
list_suppressions_contacts_suppressions_get: {
|
|
63
|
+
input: {
|
|
64
|
+
query?: {
|
|
65
|
+
/** Filter: all | email | phone | linkedin */
|
|
66
|
+
channel?: ("all" | "email" | "phone" | "linkedin") | null;
|
|
67
|
+
/** Filter: contact_initiated | org_initiated | system */
|
|
68
|
+
category?: ("contact_initiated" | "org_initiated" | "system") | null;
|
|
69
|
+
limit?: number;
|
|
70
|
+
offset?: number;
|
|
71
|
+
};
|
|
72
|
+
headers?: {
|
|
73
|
+
"X-Target-Org-Id"?: string | null;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
output: ApiResponse_list_SuppressionRecord__;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* POST /contacts/suppressions/reinstate
|
|
80
|
+
* Reinstate Suppressions
|
|
81
|
+
* tier: write · scope: contacts:write
|
|
82
|
+
*/
|
|
83
|
+
reinstate_suppressions_contacts_suppressions_reinstate_post: {
|
|
84
|
+
input: {
|
|
85
|
+
headers?: {
|
|
86
|
+
"X-Target-Org-Id"?: string | null;
|
|
87
|
+
};
|
|
88
|
+
body: SuppressionsReinstateRequest;
|
|
89
|
+
};
|
|
90
|
+
output: ApiResponse_BulkReinstateResponse_;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* POST /contacts/{contact_id}/suppress
|
|
94
|
+
* Suppress Contact
|
|
95
|
+
* tier: write · scope: contacts:write
|
|
96
|
+
*/
|
|
97
|
+
suppress_contact_contacts__contact_id__suppress_post: {
|
|
98
|
+
input: {
|
|
99
|
+
path: {
|
|
100
|
+
/** Contact ID (mashup_contacts.id) */
|
|
101
|
+
contact_id: number;
|
|
102
|
+
};
|
|
103
|
+
headers?: {
|
|
104
|
+
"X-Target-Org-Id"?: string | null;
|
|
105
|
+
};
|
|
106
|
+
body?: SuppressContactRequest;
|
|
107
|
+
};
|
|
108
|
+
output: ApiResponse_SuppressActionResponse_;
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* POST /contacts/{contact_id}/unsuppress
|
|
112
|
+
* Unsuppress Contact
|
|
113
|
+
* tier: write · scope: contacts:write
|
|
114
|
+
*/
|
|
115
|
+
unsuppress_contact_contacts__contact_id__unsuppress_post: {
|
|
116
|
+
input: {
|
|
117
|
+
path: {
|
|
118
|
+
/** Contact ID (mashup_contacts.id) */
|
|
119
|
+
contact_id: number;
|
|
120
|
+
};
|
|
121
|
+
headers?: {
|
|
122
|
+
"X-Target-Org-Id"?: string | null;
|
|
123
|
+
};
|
|
124
|
+
body?: SuppressContactRequest;
|
|
125
|
+
};
|
|
126
|
+
output: ApiResponse_UnsuppressActionResponse_;
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// 17 schemas referenced above (the same as G8Contract.<Name>).
|
|
131
|
+
|
|
132
|
+
export interface ApiResponse_BulkReinstateResponse_ {
|
|
133
|
+
data: BulkReinstateResponse;
|
|
134
|
+
pagination?: PaginationMeta | null;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export interface ApiResponse_BulkSuppressResponse_ {
|
|
138
|
+
data: BulkSuppressResponse;
|
|
139
|
+
pagination?: PaginationMeta | null;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
export interface ApiResponse_SuppressActionResponse_ {
|
|
143
|
+
data: SuppressActionResponse;
|
|
144
|
+
pagination?: PaginationMeta | null;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export interface ApiResponse_SuppressionStatusResponse_ {
|
|
148
|
+
data: SuppressionStatusResponse;
|
|
149
|
+
pagination?: PaginationMeta | null;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
export interface ApiResponse_UnsuppressActionResponse_ {
|
|
153
|
+
data: UnsuppressActionResponse;
|
|
154
|
+
pagination?: PaginationMeta | null;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export interface ApiResponse_list_SuppressionRecord__ {
|
|
158
|
+
data: Array<SuppressionRecord>;
|
|
159
|
+
pagination?: PaginationMeta | null;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export interface BulkReinstateResponse {
|
|
163
|
+
reinstated?: Array<number>;
|
|
164
|
+
skipped?: Array<ReinstateSkip>;
|
|
165
|
+
total_requested: number;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
export interface BulkSuppressResponse {
|
|
169
|
+
channel: string;
|
|
170
|
+
suppressed: number;
|
|
171
|
+
total_requested: number;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
export interface PaginationMeta {
|
|
175
|
+
/** Whether there are more pages */
|
|
176
|
+
has_next: boolean;
|
|
177
|
+
/** Items per page */
|
|
178
|
+
limit: number;
|
|
179
|
+
/** 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. */
|
|
180
|
+
next_cursor?: string | null;
|
|
181
|
+
/** Current page number (1-indexed) */
|
|
182
|
+
page: number;
|
|
183
|
+
/** Total number of items */
|
|
184
|
+
total: number;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export interface ReinstateSkip {
|
|
188
|
+
contact_id: number;
|
|
189
|
+
reason: string;
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
export interface SuppressActionResponse {
|
|
193
|
+
contact_id: number;
|
|
194
|
+
is_suppressed: boolean;
|
|
195
|
+
revision: number;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
export interface SuppressContactRequest {
|
|
199
|
+
reason?: string | null;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
/** One row of the central ``contact_suppressions`` ledger. */
|
|
203
|
+
export interface SuppressionRecord {
|
|
204
|
+
/** contact_initiated | org_initiated | system */
|
|
205
|
+
category: string;
|
|
206
|
+
/** all | email | phone | linkedin */
|
|
207
|
+
channel: string;
|
|
208
|
+
contact_id: number;
|
|
209
|
+
created_at?: string | null;
|
|
210
|
+
created_by?: string | null;
|
|
211
|
+
id: string;
|
|
212
|
+
reason?: string | null;
|
|
213
|
+
revision?: number | null;
|
|
214
|
+
source?: string | null;
|
|
215
|
+
source_ref?: string | null;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/** Answer to "is this contact suppressed, and on which channels?". */
|
|
219
|
+
export interface SuppressionStatusResponse {
|
|
220
|
+
active_channels?: Array<string>;
|
|
221
|
+
contact_id: number;
|
|
222
|
+
is_suppressed: boolean;
|
|
223
|
+
suppressions?: Array<SuppressionRecord>;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
export interface SuppressionsBulkAddRequest {
|
|
227
|
+
channel?: "all" | "email" | "phone" | "linkedin";
|
|
228
|
+
contact_ids: Array<number>;
|
|
229
|
+
reason?: string | null;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
export interface SuppressionsReinstateRequest {
|
|
233
|
+
contact_ids: Array<number>;
|
|
234
|
+
reason?: string | null;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
export interface UnsuppressActionResponse {
|
|
238
|
+
channels_cleared?: Array<string>;
|
|
239
|
+
contact_id: number;
|
|
240
|
+
is_suppressed: boolean;
|
|
241
|
+
}
|
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
<!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
|
|
2
|
+
|
|
3
|
+
# `g8.api.suppressions`: Suppressions
|
|
4
|
+
|
|
5
|
+
6 operations (2 read, 4 write).
|
|
6
|
+
|
|
7
|
+
No hand-written client covers this area. Call it through `g8.api.suppressions.*` as shown below, or by operationId with `g8.api.call(operationId, input)`.
|
|
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: [suppressions.d.ts](suppressions.d.ts).
|
|
20
|
+
|
|
21
|
+
## Operations
|
|
22
|
+
|
|
23
|
+
| Call | HTTP | Tier | Scope | Summary |
|
|
24
|
+
|---|---|---|---|---|
|
|
25
|
+
| [`bulkAddSuppressions`](#op-bulkaddsuppressions) | `POST /api/v1/contacts/suppressions/bulk-add` | write | `contacts:write` | Bulk Add Suppressions |
|
|
26
|
+
| [`checkContactSuppression`](#op-checkcontactsuppression) | `GET /api/v1/contacts/{contact_id}/suppression` | read | `contacts:read` | Check Contact Suppression |
|
|
27
|
+
| [`listSuppressions`](#op-listsuppressions) | `GET /api/v1/contacts/suppressions` | read | `contacts:read` | List Suppressions |
|
|
28
|
+
| [`reinstateSuppressions`](#op-reinstatesuppressions) | `POST /api/v1/contacts/suppressions/reinstate` | write | `contacts:write` | Reinstate Suppressions |
|
|
29
|
+
| [`suppressContact`](#op-suppresscontact) | `POST /api/v1/contacts/{contact_id}/suppress` | write | `contacts:write` | Suppress Contact |
|
|
30
|
+
| [`unsuppressContact`](#op-unsuppresscontact) | `POST /api/v1/contacts/{contact_id}/unsuppress` | write | `contacts:write` | Unsuppress Contact |
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
<a id="op-bulkaddsuppressions"></a>
|
|
35
|
+
|
|
36
|
+
### `g8.api.suppressions.bulkAddSuppressions(input)`
|
|
37
|
+
|
|
38
|
+
**Bulk Add Suppressions**
|
|
39
|
+
|
|
40
|
+
- HTTP: `POST /api/v1/contacts/suppressions/bulk-add`
|
|
41
|
+
- operationId: `bulk_add_suppressions_contacts_suppressions_bulk_add_post` (also callable as `g8.api.call("bulk_add_suppressions_contacts_suppressions_bulk_add_post", 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
|
+
Suppress an explicit set of contacts in one call. Proxies the SAME
|
|
46
|
+
handler the app's Lists -> add-to-suppressions bulk action calls
|
|
47
|
+
(``contacts/router.py:1819``), minus the list/filter-model resolution
|
|
48
|
+
(a UI concept) -- pass the contact PKs you already have. Idempotent:
|
|
49
|
+
already-active rows are left untouched.
|
|
50
|
+
|
|
51
|
+
**Input**
|
|
52
|
+
|
|
53
|
+
| Field | Type | Required | Description |
|
|
54
|
+
|---|---|---|---|
|
|
55
|
+
| `body` | `SuppressionsBulkAddRequest` | yes | Request body; fields below. |
|
|
56
|
+
|
|
57
|
+
Body fields (`SuppressionsBulkAddRequest`):
|
|
58
|
+
|
|
59
|
+
| Field | Type | Required | Description |
|
|
60
|
+
|---|---|---|---|
|
|
61
|
+
| `body.contact_ids` | `Array<integer>` | yes | min items 1, max items 5000 |
|
|
62
|
+
| `body.channel` | `"all" \| "email" \| "phone" \| "linkedin"` | no | default `"all"` |
|
|
63
|
+
| `body.reason` | `string \| null` | no | max length 1000 |
|
|
64
|
+
|
|
65
|
+
**Returns** `ApiResponse_BulkSuppressResponse_`: the envelope `{ data: BulkSuppressResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
66
|
+
|
|
67
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
68
|
+
|
|
69
|
+
`BulkSuppressResponse` fields:
|
|
70
|
+
|
|
71
|
+
| Field | Type | Required | Description |
|
|
72
|
+
|---|---|---|---|
|
|
73
|
+
| `channel` | `string` | yes | |
|
|
74
|
+
| `suppressed` | `integer` | yes | |
|
|
75
|
+
| `total_requested` | `integer` | yes | |
|
|
76
|
+
|
|
77
|
+
**Example**
|
|
78
|
+
|
|
79
|
+
```ts
|
|
80
|
+
const result = await g8.api.suppressions.bulkAddSuppressions({ body: { contact_ids: [123] } });
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
<a id="op-checkcontactsuppression"></a>
|
|
86
|
+
|
|
87
|
+
### `g8.api.suppressions.checkContactSuppression(input)`
|
|
88
|
+
|
|
89
|
+
**Check Contact Suppression**
|
|
90
|
+
|
|
91
|
+
- HTTP: `GET /api/v1/contacts/{contact_id}/suppression`
|
|
92
|
+
- operationId: `check_contact_suppression_contacts__contact_id__suppression_get` (also callable as `g8.api.call("check_contact_suppression_contacts__contact_id__suppression_get", input)`)
|
|
93
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
94
|
+
- API-key scope: `contacts:read`
|
|
95
|
+
|
|
96
|
+
Is this contact suppressed, and on which channel(s)?
|
|
97
|
+
|
|
98
|
+
Reads the SAME central ledger every send path checks
|
|
99
|
+
(``apps.suppression().service().list_suppressions``), so a "not
|
|
100
|
+
suppressed" answer here means the same thing it means to the sequencer
|
|
101
|
+
and newsletter send gates.
|
|
102
|
+
|
|
103
|
+
**Input**
|
|
104
|
+
|
|
105
|
+
| Field | Type | Required | Description |
|
|
106
|
+
|---|---|---|---|
|
|
107
|
+
| `path.contact_id` | `integer` | yes | Contact ID (mashup_contacts.id) |
|
|
108
|
+
|
|
109
|
+
**Returns** `ApiResponse_SuppressionStatusResponse_`: the envelope `{ data: SuppressionStatusResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
110
|
+
|
|
111
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
112
|
+
|
|
113
|
+
`SuppressionStatusResponse` fields:
|
|
114
|
+
|
|
115
|
+
| Field | Type | Required | Description |
|
|
116
|
+
|---|---|---|---|
|
|
117
|
+
| `contact_id` | `integer` | yes | |
|
|
118
|
+
| `is_suppressed` | `boolean` | yes | |
|
|
119
|
+
| `active_channels` | `Array<string>` | no | |
|
|
120
|
+
| `suppressions` | `Array<SuppressionRecord>` | no | |
|
|
121
|
+
|
|
122
|
+
**Example**
|
|
123
|
+
|
|
124
|
+
```ts
|
|
125
|
+
const result = await g8.api.suppressions.checkContactSuppression({ path: { contact_id: 123 } });
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
<a id="op-listsuppressions"></a>
|
|
131
|
+
|
|
132
|
+
### `g8.api.suppressions.listSuppressions(input?)`
|
|
133
|
+
|
|
134
|
+
**List Suppressions**
|
|
135
|
+
|
|
136
|
+
- HTTP: `GET /api/v1/contacts/suppressions`
|
|
137
|
+
- operationId: `list_suppressions_contacts_suppressions_get` (also callable as `g8.api.call("list_suppressions_contacts_suppressions_get", input)`)
|
|
138
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
139
|
+
- API-key scope: `contacts:read`
|
|
140
|
+
|
|
141
|
+
Paginated org-wide list of active suppressions.
|
|
142
|
+
|
|
143
|
+
Unlike the app's Data -> Suppressions grid (which joins contact/company
|
|
144
|
+
names for display), this is the raw ledger -- no PII, see module
|
|
145
|
+
docstring. Resolve a row's contact via ``GET /contacts/{contact_id}``.
|
|
146
|
+
|
|
147
|
+
**Input**
|
|
148
|
+
|
|
149
|
+
| Field | Type | Required | Description |
|
|
150
|
+
|---|---|---|---|
|
|
151
|
+
| `query.channel` | `"all" \| "email" \| "phone" \| "linkedin" \| null` | no | Filter: all \| email \| phone \| linkedin |
|
|
152
|
+
| `query.category` | `"contact_initiated" \| "org_initiated" \| "system" \| null` | no | Filter: contact_initiated \| org_initiated \| system |
|
|
153
|
+
| `query.limit` | `integer` | no | default `50` |
|
|
154
|
+
| `query.offset` | `integer` | no | default `0` |
|
|
155
|
+
|
|
156
|
+
**Returns** `ApiResponse_list_SuppressionRecord__`: the envelope `{ data: Array<SuppressionRecord>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
157
|
+
|
|
158
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
159
|
+
|
|
160
|
+
`SuppressionRecord` fields:
|
|
161
|
+
|
|
162
|
+
| Field | Type | Required | Description |
|
|
163
|
+
|---|---|---|---|
|
|
164
|
+
| `category` | `string` | yes | contact_initiated \| org_initiated \| system |
|
|
165
|
+
| `channel` | `string` | yes | all \| email \| phone \| linkedin |
|
|
166
|
+
| `contact_id` | `integer` | yes | |
|
|
167
|
+
| `id` | `string` | yes | |
|
|
168
|
+
| `created_at` | `string \| null` | no | |
|
|
169
|
+
| `created_by` | `string \| null` | no | |
|
|
170
|
+
| `reason` | `string \| null` | no | |
|
|
171
|
+
| `revision` | `integer \| null` | no | |
|
|
172
|
+
| `source` | `string \| null` | no | |
|
|
173
|
+
| `source_ref` | `string \| null` | no | |
|
|
174
|
+
|
|
175
|
+
**Example**
|
|
176
|
+
|
|
177
|
+
```ts
|
|
178
|
+
const result = await g8.api.suppressions.listSuppressions();
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
<a id="op-reinstatesuppressions"></a>
|
|
184
|
+
|
|
185
|
+
### `g8.api.suppressions.reinstateSuppressions(input)`
|
|
186
|
+
|
|
187
|
+
**Reinstate Suppressions**
|
|
188
|
+
|
|
189
|
+
- HTTP: `POST /api/v1/contacts/suppressions/reinstate`
|
|
190
|
+
- operationId: `reinstate_suppressions_contacts_suppressions_reinstate_post` (also callable as `g8.api.call("reinstate_suppressions_contacts_suppressions_reinstate_post", input)`)
|
|
191
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
192
|
+
- API-key scope: `contacts:write`
|
|
193
|
+
|
|
194
|
+
Bulk-reinstate contacts. Proxies the SAME handler the app's
|
|
195
|
+
Suppressions grid "Reinstate" bulk action calls
|
|
196
|
+
(``contacts/router.py:1771``). ``operator_reversible`` is recomputed
|
|
197
|
+
server-side per contact; a contact whose only active suppression is
|
|
198
|
+
contact_initiated or system is skipped and reported, never reinstated.
|
|
199
|
+
|
|
200
|
+
**Input**
|
|
201
|
+
|
|
202
|
+
| Field | Type | Required | Description |
|
|
203
|
+
|---|---|---|---|
|
|
204
|
+
| `body` | `SuppressionsReinstateRequest` | yes | Request body; fields below. |
|
|
205
|
+
|
|
206
|
+
Body fields (`SuppressionsReinstateRequest`):
|
|
207
|
+
|
|
208
|
+
| Field | Type | Required | Description |
|
|
209
|
+
|---|---|---|---|
|
|
210
|
+
| `body.contact_ids` | `Array<integer>` | yes | min items 1, max items 5000 |
|
|
211
|
+
| `body.reason` | `string \| null` | no | max length 1000 |
|
|
212
|
+
|
|
213
|
+
**Returns** `ApiResponse_BulkReinstateResponse_`: the envelope `{ data: BulkReinstateResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
214
|
+
|
|
215
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
216
|
+
|
|
217
|
+
`BulkReinstateResponse` fields:
|
|
218
|
+
|
|
219
|
+
| Field | Type | Required | Description |
|
|
220
|
+
|---|---|---|---|
|
|
221
|
+
| `total_requested` | `integer` | yes | |
|
|
222
|
+
| `reinstated` | `Array<integer>` | no | |
|
|
223
|
+
| `skipped` | `Array<ReinstateSkip>` | no | |
|
|
224
|
+
|
|
225
|
+
**Example**
|
|
226
|
+
|
|
227
|
+
```ts
|
|
228
|
+
const result = await g8.api.suppressions.reinstateSuppressions({ body: { contact_ids: [123] } });
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
<a id="op-suppresscontact"></a>
|
|
234
|
+
|
|
235
|
+
### `g8.api.suppressions.suppressContact(input)`
|
|
236
|
+
|
|
237
|
+
**Suppress Contact**
|
|
238
|
+
|
|
239
|
+
- HTTP: `POST /api/v1/contacts/{contact_id}/suppress`
|
|
240
|
+
- operationId: `suppress_contact_contacts__contact_id__suppress_post` (also callable as `g8.api.call("suppress_contact_contacts__contact_id__suppress_post", input)`)
|
|
241
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
242
|
+
- API-key scope: `contacts:write`
|
|
243
|
+
|
|
244
|
+
Stop all outreach to a contact. Proxies the SAME handler the in-app
|
|
245
|
+
contact view's "Suppress" action calls (``contacts/router.py:1660``) --
|
|
246
|
+
channel=all, category=org_initiated, honoured by every surface that
|
|
247
|
+
reads the central ledger (sequencer, newsletter, audience_sync).
|
|
248
|
+
|
|
249
|
+
**Input**
|
|
250
|
+
|
|
251
|
+
| Field | Type | Required | Description |
|
|
252
|
+
|---|---|---|---|
|
|
253
|
+
| `path.contact_id` | `integer` | yes | Contact ID (mashup_contacts.id) |
|
|
254
|
+
| `body` | `SuppressContactRequest` | no | Request body; fields below. |
|
|
255
|
+
|
|
256
|
+
Body fields (`SuppressContactRequest`):
|
|
257
|
+
|
|
258
|
+
| Field | Type | Required | Description |
|
|
259
|
+
|---|---|---|---|
|
|
260
|
+
| `body.reason` | `string \| null` | no | max length 1000 |
|
|
261
|
+
|
|
262
|
+
**Returns** `ApiResponse_SuppressActionResponse_`: the envelope `{ data: SuppressActionResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
263
|
+
|
|
264
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
265
|
+
|
|
266
|
+
`SuppressActionResponse` fields:
|
|
267
|
+
|
|
268
|
+
| Field | Type | Required | Description |
|
|
269
|
+
|---|---|---|---|
|
|
270
|
+
| `contact_id` | `integer` | yes | |
|
|
271
|
+
| `is_suppressed` | `boolean` | yes | |
|
|
272
|
+
| `revision` | `integer` | yes | |
|
|
273
|
+
|
|
274
|
+
**Example**
|
|
275
|
+
|
|
276
|
+
```ts
|
|
277
|
+
const result = await g8.api.suppressions.suppressContact({ path: { contact_id: 123 } });
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
<a id="op-unsuppresscontact"></a>
|
|
283
|
+
|
|
284
|
+
### `g8.api.suppressions.unsuppressContact(input)`
|
|
285
|
+
|
|
286
|
+
**Unsuppress Contact**
|
|
287
|
+
|
|
288
|
+
- HTTP: `POST /api/v1/contacts/{contact_id}/unsuppress`
|
|
289
|
+
- operationId: `unsuppress_contact_contacts__contact_id__unsuppress_post` (also callable as `g8.api.call("unsuppress_contact_contacts__contact_id__unsuppress_post", input)`)
|
|
290
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
291
|
+
- API-key scope: `contacts:write`
|
|
292
|
+
|
|
293
|
+
Reverse an operator suppression. Proxies the SAME handler the in-app
|
|
294
|
+
contact view's "Unsuppress" action calls (``contacts/router.py:1702``).
|
|
295
|
+
Clears ONLY the org_initiated umbrella -- an independent
|
|
296
|
+
contact_initiated (they-asked) or system (bounce/complaint) opt-out is
|
|
297
|
+
never overridden through this endpoint, matching the app exactly.
|
|
298
|
+
|
|
299
|
+
**Input**
|
|
300
|
+
|
|
301
|
+
| Field | Type | Required | Description |
|
|
302
|
+
|---|---|---|---|
|
|
303
|
+
| `path.contact_id` | `integer` | yes | Contact ID (mashup_contacts.id) |
|
|
304
|
+
| `body` | `SuppressContactRequest` | no | Request body; fields below. |
|
|
305
|
+
|
|
306
|
+
Body fields (`SuppressContactRequest`):
|
|
307
|
+
|
|
308
|
+
| Field | Type | Required | Description |
|
|
309
|
+
|---|---|---|---|
|
|
310
|
+
| `body.reason` | `string \| null` | no | max length 1000 |
|
|
311
|
+
|
|
312
|
+
**Returns** `ApiResponse_UnsuppressActionResponse_`: the envelope `{ data: UnsuppressActionResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
313
|
+
|
|
314
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
315
|
+
|
|
316
|
+
`UnsuppressActionResponse` fields:
|
|
317
|
+
|
|
318
|
+
| Field | Type | Required | Description |
|
|
319
|
+
|---|---|---|---|
|
|
320
|
+
| `contact_id` | `integer` | yes | |
|
|
321
|
+
| `is_suppressed` | `boolean` | yes | |
|
|
322
|
+
| `channels_cleared` | `Array<string>` | no | |
|
|
323
|
+
|
|
324
|
+
**Example**
|
|
325
|
+
|
|
326
|
+
```ts
|
|
327
|
+
const result = await g8.api.suppressions.unsuppressContact({ path: { contact_id: 123 } });
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
---
|
|
331
|
+
|
|
332
|
+
## Referenced types
|
|
333
|
+
|
|
334
|
+
Named types that appear in the tables above. Full TypeScript definitions: `G8Contract.<Name>` (`import type { G8Contract } from "@graph8/sdk"`).
|
|
335
|
+
|
|
336
|
+
<a id="type-reinstateskip"></a>
|
|
337
|
+
|
|
338
|
+
### `ReinstateSkip`
|
|
339
|
+
|
|
340
|
+
| Field | Type | Required | Description |
|
|
341
|
+
|---|---|---|---|
|
|
342
|
+
| `contact_id` | `integer` | yes | |
|
|
343
|
+
| `reason` | `string` | yes | |
|