@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,1542 @@
|
|
|
1
|
+
<!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
|
|
2
|
+
|
|
3
|
+
# `g8.api.forms`: Forms
|
|
4
|
+
|
|
5
|
+
35 operations (15 read, 14 write, 2 destructive, 4 external).
|
|
6
|
+
|
|
7
|
+
No hand-written client covers this area. Call it through `g8.api.forms.*` 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: [forms.d.ts](forms.d.ts).
|
|
20
|
+
|
|
21
|
+
## Operations
|
|
22
|
+
|
|
23
|
+
| Call | HTTP | Tier | Scope | Summary |
|
|
24
|
+
|---|---|---|---|---|
|
|
25
|
+
| [`addFormGroupMembers`](#op-addformgroupmembers) | `POST /api/v1/forms/groups/{group_id}/members` | write | `forms:write` | Add Form Group Members |
|
|
26
|
+
| [`captureFormPreview`](#op-captureformpreview) | `POST /api/v1/forms/{form_key}/preview` | write | `forms:write` | Capture Form Preview |
|
|
27
|
+
| [`createFormBackfill`](#op-createformbackfill) | `POST /api/v1/forms/{form_key}/backfills` | external | `forms:run` | Create Form Backfill |
|
|
28
|
+
| [`createFormGroup`](#op-createformgroup) | `POST /api/v1/forms/groups` | write | `forms:write` | Create Form Group |
|
|
29
|
+
| [`deleteFormGroup`](#op-deleteformgroup) | `DELETE /api/v1/forms/groups/{group_id}` | destructive | `forms:delete` | Delete Form Group |
|
|
30
|
+
| [`getFormActivity`](#op-getformactivity) | `GET /api/v1/forms/{form_key}/activity` | read | `forms:read` | Get Form Activity |
|
|
31
|
+
| [`getFormBackfill`](#op-getformbackfill) | `GET /api/v1/forms/{form_key}/backfills/{job_id}` | read | `forms:read` | Get Form Backfill |
|
|
32
|
+
| [`getFormFields`](#op-getformfields) | `GET /api/v1/forms/{form_key}/fields` | read | `forms:read` | Get Form Fields |
|
|
33
|
+
| [`getFormOverview`](#op-getformoverview) | `GET /api/v1/forms/{form_key}/overview` | read | `forms:read` | Get Form Overview |
|
|
34
|
+
| [`getFormPlacements`](#op-getformplacements) | `GET /api/v1/forms/{form_key}/placements` | read | `forms:read` | Get Form Placements |
|
|
35
|
+
| [`getFormPreview`](#op-getformpreview) | `GET /api/v1/forms/{form_key}/preview/{preview_id}` | read | `forms:read` | Get Form Preview |
|
|
36
|
+
| [`getFormRouteRecommendations`](#op-getformrouterecommendations) | `GET /api/v1/forms/{form_key}/route/recommendations` | read | `forms:read` | Get Form Route Recommendations |
|
|
37
|
+
| [`getFormSubmissionTrace`](#op-getformsubmissiontrace) | `GET /api/v1/forms/{form_key}/submissions/{submission_id}/trace` | read | `forms:read` | Get Form Submission Trace |
|
|
38
|
+
| [`getSiteAudit`](#op-getsiteaudit) | `GET /api/v1/forms/site-audit` | read | `forms:read` | Get Site Audit |
|
|
39
|
+
| [`listFormGroups`](#op-listformgroups) | `GET /api/v1/forms/groups` | read | `forms:read` | List Form Groups |
|
|
40
|
+
| [`listForms`](#op-listforms) | `GET /api/v1/forms` | read | `forms:read` | List Forms |
|
|
41
|
+
| [`listSavedFormViews`](#op-listsavedformviews) | `GET /api/v1/forms/views/saved` | read | `forms:read` | List Saved Form Views |
|
|
42
|
+
| [`pauseFormDelivery`](#op-pauseformdelivery) | `POST /api/v1/forms/{form_key}/delivery/pause` | external | `forms:run` | Pause Form Delivery |
|
|
43
|
+
| [`previewFormMapping`](#op-previewformmapping) | `POST /api/v1/forms/{form_key}/mapping/preview` | read | `forms:read` | Preview Form Mapping |
|
|
44
|
+
| [`previewUnidentifiedGrouping`](#op-previewunidentifiedgrouping) | `GET /api/v1/forms/unidentified/grouping` | read | `forms:read` | Preview Unidentified Grouping |
|
|
45
|
+
| [`removeFormGroupMembers`](#op-removeformgroupmembers) | `POST /api/v1/forms/groups/{group_id}/members/remove` | write | `forms:write` | Remove Form Group Members |
|
|
46
|
+
| [`requestSiteAuditScan`](#op-requestsiteauditscan) | `POST /api/v1/forms/site-audit/scan` | write | `forms:write` | Request Site Audit Scan |
|
|
47
|
+
| [`resumeFormDelivery`](#op-resumeformdelivery) | `POST /api/v1/forms/{form_key}/delivery/resume` | external | `forms:run` | Resume Form Delivery |
|
|
48
|
+
| [`retryFormDelivery`](#op-retryformdelivery) | `POST /api/v1/forms/deliveries/{receipt_id}/retry` | external | `forms:run` | Retry Form Delivery |
|
|
49
|
+
| [`rollbackFormRoute`](#op-rollbackformroute) | `DELETE /api/v1/forms/{form_key}/route` | destructive | `forms:delete` | Rollback Form Route |
|
|
50
|
+
| [`saveFormMapping`](#op-saveformmapping) | `POST /api/v1/forms/{form_key}/mapping/save` | write | `forms:write` | Save Form Mapping |
|
|
51
|
+
| [`saveFormRoute`](#op-saveformroute) | `PUT /api/v1/forms/{form_key}/route` | write | `forms:write` | Save Form Route |
|
|
52
|
+
| [`saveFormView`](#op-saveformview) | `PUT /api/v1/forms/views/saved/{view_id}` | write | `forms:write` | Save Form View |
|
|
53
|
+
| [`searchFormSubmissions`](#op-searchformsubmissions) | `POST /api/v1/forms/{form_key}/submissions` | read | `forms:read` | Search Form Submissions |
|
|
54
|
+
| [`setUnidentifiedGrouping`](#op-setunidentifiedgrouping) | `PUT /api/v1/forms/unidentified/grouping` | write | `forms:write` | Set Unidentified Grouping |
|
|
55
|
+
| [`syncUnidentifiedGroup`](#op-syncunidentifiedgroup) | `POST /api/v1/forms/unidentified/groups/sync` | write | `forms:write` | Sync Unidentified Group |
|
|
56
|
+
| [`testFormRoute`](#op-testformroute) | `POST /api/v1/forms/{form_key}/route/test` | write | `forms:write` | Test Form Route |
|
|
57
|
+
| [`updateFormGroup`](#op-updateformgroup) | `PATCH /api/v1/forms/groups/{group_id}` | write | `forms:write` | Update Form Group |
|
|
58
|
+
| [`updateFormRegistry`](#op-updateformregistry) | `PATCH /api/v1/forms/{form_key}` | write | `forms:write` | Update Form Registry |
|
|
59
|
+
| [`updateSiteAuditFinding`](#op-updatesiteauditfinding) | `PATCH /api/v1/forms/site-audit/findings/{finding_id}` | write | `forms:write` | Update Site Audit Finding |
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
<a id="op-addformgroupmembers"></a>
|
|
64
|
+
|
|
65
|
+
### `g8.api.forms.addFormGroupMembers(input)`
|
|
66
|
+
|
|
67
|
+
**Add Form Group Members**
|
|
68
|
+
|
|
69
|
+
- HTTP: `POST /api/v1/forms/groups/{group_id}/members`
|
|
70
|
+
- operationId: `add_form_group_members_forms_groups__group_id__members_post` (also callable as `g8.api.call("add_form_group_members_forms_groups__group_id__members_post", input)`)
|
|
71
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
72
|
+
- API-key scope: `forms:write`
|
|
73
|
+
|
|
74
|
+
Add inventory rows to a group. Existing members stay.
|
|
75
|
+
|
|
76
|
+
**Input**
|
|
77
|
+
|
|
78
|
+
| Field | Type | Required | Description |
|
|
79
|
+
|---|---|---|---|
|
|
80
|
+
| `path.group_id` | `string` | yes | The group's id. |
|
|
81
|
+
| `body` | `FormGroupMembersRequest` | yes | Request body; fields below. |
|
|
82
|
+
|
|
83
|
+
Body fields (`FormGroupMembersRequest`):
|
|
84
|
+
|
|
85
|
+
| Field | Type | Required | Description |
|
|
86
|
+
|---|---|---|---|
|
|
87
|
+
| `body.members` | `Array<FormGroupMemberRef>` | yes | min items 1, max items 200 |
|
|
88
|
+
|
|
89
|
+
**Returns** `ApiResponse_FormsAdminPayload_`: the envelope `{ data: FormsAdminPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
90
|
+
|
|
91
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
92
|
+
|
|
93
|
+
**Example**
|
|
94
|
+
|
|
95
|
+
```ts
|
|
96
|
+
const result = await g8.api.forms.addFormGroupMembers({
|
|
97
|
+
path: { group_id: "id" },
|
|
98
|
+
body: { members: [{ form_key: "example", source_id: "id" }] },
|
|
99
|
+
});
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
<a id="op-captureformpreview"></a>
|
|
105
|
+
|
|
106
|
+
### `g8.api.forms.captureFormPreview(input)`
|
|
107
|
+
|
|
108
|
+
**Capture Form Preview**
|
|
109
|
+
|
|
110
|
+
- HTTP: `POST /api/v1/forms/{form_key}/preview`
|
|
111
|
+
- operationId: `capture_form_preview_forms__form_key__preview_post` (also callable as `g8.api.call("capture_form_preview_forms__form_key__preview_post", input)`)
|
|
112
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
113
|
+
- API-key scope: `forms:write`
|
|
114
|
+
|
|
115
|
+
Queue a screenshot of this form on one page it was actually seen on.
|
|
116
|
+
|
|
117
|
+
ASYNCHRONOUS: poll `GET /forms/{form_key}/preview/{preview_id}`. A page the
|
|
118
|
+
form was never observed on is a 404 - it captures real placements only.
|
|
119
|
+
|
|
120
|
+
**Input**
|
|
121
|
+
|
|
122
|
+
| Field | Type | Required | Description |
|
|
123
|
+
|---|---|---|---|
|
|
124
|
+
| `path.form_key` | `string` | yes | The form's `form_key` (the `id` from `GET /forms`). |
|
|
125
|
+
| `body` | `FormPlacementPreviewRequest` | yes | Request body; fields below. |
|
|
126
|
+
|
|
127
|
+
Body fields (`FormPlacementPreviewRequest`):
|
|
128
|
+
|
|
129
|
+
| Field | Type | Required | Description |
|
|
130
|
+
|---|---|---|---|
|
|
131
|
+
| `body.page_url` | `string` | yes | A page the form was actually seen on. min length 8, max length 4096 |
|
|
132
|
+
| `body.source_id` | `string` | yes | The site (write key) the form is installed on. min length 1, max length 500 |
|
|
133
|
+
|
|
134
|
+
**Returns** `ApiResponse_FormsAdminPayload_`: the envelope `{ data: FormsAdminPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
135
|
+
|
|
136
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
137
|
+
|
|
138
|
+
**Example**
|
|
139
|
+
|
|
140
|
+
```ts
|
|
141
|
+
const result = await g8.api.forms.captureFormPreview({
|
|
142
|
+
path: { form_key: "example" },
|
|
143
|
+
body: { page_url: "https://example.com", source_id: "id" },
|
|
144
|
+
});
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
<a id="op-createformbackfill"></a>
|
|
150
|
+
|
|
151
|
+
### `g8.api.forms.createFormBackfill(input)`
|
|
152
|
+
|
|
153
|
+
**Create Form Backfill**
|
|
154
|
+
|
|
155
|
+
- HTTP: `POST /api/v1/forms/{form_key}/backfills`
|
|
156
|
+
- operationId: `create_form_backfill_forms__form_key__backfills_post` (also callable as `g8.api.call("create_form_backfill_forms__form_key__backfills_post", input)`)
|
|
157
|
+
- Tier: `external`: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first
|
|
158
|
+
- API-key scope: `forms:run`
|
|
159
|
+
|
|
160
|
+
Deliver submissions captured in a window through the form's current route.
|
|
161
|
+
|
|
162
|
+
`preview` DEFAULTS TO TRUE, and that default is the safety: a real backfill
|
|
163
|
+
delivers real leads to a real destination and there is no undo. Preview,
|
|
164
|
+
read the count, then send `preview: false` with that count as `estimated`.
|
|
165
|
+
|
|
166
|
+
**Input**
|
|
167
|
+
|
|
168
|
+
| Field | Type | Required | Description |
|
|
169
|
+
|---|---|---|---|
|
|
170
|
+
| `path.form_key` | `string` | yes | The form's `form_key` (the `id` from `GET /forms`). |
|
|
171
|
+
| `body` | `FormBackfillRequest` | yes | Request body; fields below. |
|
|
172
|
+
|
|
173
|
+
Body fields (`FormBackfillRequest`):
|
|
174
|
+
|
|
175
|
+
| Field | Type | Required | Description |
|
|
176
|
+
|---|---|---|---|
|
|
177
|
+
| `body.source_id` | `string` | yes | The site (write key) the form is installed on. min length 1, max length 500 |
|
|
178
|
+
| `body.end_at` | `string (date-time) \| null` | no | |
|
|
179
|
+
| `body.estimated` | `integer` | no | The count a preview reported, echoed back. default `0`, min 0 |
|
|
180
|
+
| `body.preview` | `boolean` | no | True reports what would be delivered without delivering it. default `true` |
|
|
181
|
+
| `body.start_at` | `string (date-time) \| null` | no | |
|
|
182
|
+
|
|
183
|
+
**Returns** `ApiResponse_FormsAdminPayload_`: the envelope `{ data: FormsAdminPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
184
|
+
|
|
185
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
186
|
+
|
|
187
|
+
**Example**
|
|
188
|
+
|
|
189
|
+
```ts
|
|
190
|
+
// external: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first.
|
|
191
|
+
const result = await g8.api.forms.createFormBackfill({ path: { form_key: "example" }, body: { source_id: "id" } });
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
<a id="op-createformgroup"></a>
|
|
197
|
+
|
|
198
|
+
### `g8.api.forms.createFormGroup(input)`
|
|
199
|
+
|
|
200
|
+
**Create Form Group**
|
|
201
|
+
|
|
202
|
+
- HTTP: `POST /api/v1/forms/groups`
|
|
203
|
+
- operationId: `create_form_group_forms_groups_post` (also callable as `g8.api.call("create_form_group_forms_groups_post", input)`)
|
|
204
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
205
|
+
- API-key scope: `forms:write`
|
|
206
|
+
|
|
207
|
+
Treat several inventory rows as one form.
|
|
208
|
+
|
|
209
|
+
A member already in another group is MOVED here, not copied.
|
|
210
|
+
|
|
211
|
+
**Input**
|
|
212
|
+
|
|
213
|
+
| Field | Type | Required | Description |
|
|
214
|
+
|---|---|---|---|
|
|
215
|
+
| `body` | `FormGroupCreateRequest` | yes | Request body; fields below. |
|
|
216
|
+
|
|
217
|
+
Body fields (`FormGroupCreateRequest`):
|
|
218
|
+
|
|
219
|
+
| Field | Type | Required | Description |
|
|
220
|
+
|---|---|---|---|
|
|
221
|
+
| `body.name` | `string` | yes | min length 1, max length 200 |
|
|
222
|
+
| `body.form_type` | `"lead" \| "newsletter" \| "meeting" \| "contact" \| "download" \| "other" \| null` | no | |
|
|
223
|
+
| `body.members` | `Array<FormGroupMemberRef>` | no | max items 200 |
|
|
224
|
+
|
|
225
|
+
**Returns** `ApiResponse_FormsAdminPayload_`: the envelope `{ data: FormsAdminPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
226
|
+
|
|
227
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
228
|
+
|
|
229
|
+
**Example**
|
|
230
|
+
|
|
231
|
+
```ts
|
|
232
|
+
const result = await g8.api.forms.createFormGroup({ body: { name: "Example" } });
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
<a id="op-deleteformgroup"></a>
|
|
238
|
+
|
|
239
|
+
### `g8.api.forms.deleteFormGroup(input)`
|
|
240
|
+
|
|
241
|
+
**Delete Form Group**
|
|
242
|
+
|
|
243
|
+
- HTTP: `DELETE /api/v1/forms/groups/{group_id}`
|
|
244
|
+
- operationId: `delete_form_group_forms_groups__group_id__delete` (also callable as `g8.api.call("delete_form_group_forms_groups__group_id__delete", input)`)
|
|
245
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
246
|
+
- API-key scope: `forms:delete`
|
|
247
|
+
|
|
248
|
+
Ungroup. The members return to standalone inventory rows; no submission is touched.
|
|
249
|
+
|
|
250
|
+
The app answers 204 with no body; this answers the id that was removed.
|
|
251
|
+
|
|
252
|
+
**Input**
|
|
253
|
+
|
|
254
|
+
| Field | Type | Required | Description |
|
|
255
|
+
|---|---|---|---|
|
|
256
|
+
| `path.group_id` | `string` | yes | The group's id. |
|
|
257
|
+
|
|
258
|
+
**Returns** `ApiResponse_FormsAdminPayload_`: the envelope `{ data: FormsAdminPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
259
|
+
|
|
260
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
261
|
+
|
|
262
|
+
**Example**
|
|
263
|
+
|
|
264
|
+
```ts
|
|
265
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
266
|
+
const result = await g8.api.forms.deleteFormGroup({ path: { group_id: "id" } });
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
<a id="op-getformactivity"></a>
|
|
272
|
+
|
|
273
|
+
### `g8.api.forms.getFormActivity(input)`
|
|
274
|
+
|
|
275
|
+
**Get Form Activity**
|
|
276
|
+
|
|
277
|
+
- HTTP: `GET /api/v1/forms/{form_key}/activity`
|
|
278
|
+
- operationId: `get_form_activity_forms__form_key__activity_get` (also callable as `g8.api.call("get_form_activity_forms__form_key__activity_get", input)`)
|
|
279
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
280
|
+
- API-key scope: `forms:read`
|
|
281
|
+
|
|
282
|
+
Recent submissions and what happened to each one.
|
|
283
|
+
|
|
284
|
+
**Input**
|
|
285
|
+
|
|
286
|
+
| Field | Type | Required | Description |
|
|
287
|
+
|---|---|---|---|
|
|
288
|
+
| `path.form_key` | `string` | yes | Form key. |
|
|
289
|
+
| `query.source_id` | `string` | yes | Which INSTALLED SOURCE of this form. Required: a form key can be present on more than one source, and every operation here is scoped to one. |
|
|
290
|
+
|
|
291
|
+
**Returns** `ApiResponse_FormPayload_`: the envelope `{ data: FormPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
292
|
+
|
|
293
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
294
|
+
|
|
295
|
+
**Example**
|
|
296
|
+
|
|
297
|
+
```ts
|
|
298
|
+
const result = await g8.api.forms.getFormActivity({ path: { form_key: "example" }, query: { source_id: "id" } });
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
<a id="op-getformbackfill"></a>
|
|
304
|
+
|
|
305
|
+
### `g8.api.forms.getFormBackfill(input)`
|
|
306
|
+
|
|
307
|
+
**Get Form Backfill**
|
|
308
|
+
|
|
309
|
+
- HTTP: `GET /api/v1/forms/{form_key}/backfills/{job_id}`
|
|
310
|
+
- operationId: `get_form_backfill_forms__form_key__backfills__job_id__get` (also callable as `g8.api.call("get_form_backfill_forms__form_key__backfills__job_id__get", input)`)
|
|
311
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
312
|
+
- API-key scope: `forms:read`
|
|
313
|
+
|
|
314
|
+
How a backfill is going, and what it delivered.
|
|
315
|
+
|
|
316
|
+
**Input**
|
|
317
|
+
|
|
318
|
+
| Field | Type | Required | Description |
|
|
319
|
+
|---|---|---|---|
|
|
320
|
+
| `path.form_key` | `string` | yes | The form's `form_key` (the `id` from `GET /forms`). |
|
|
321
|
+
| `path.job_id` | `string` | yes | Job id from the backfill that started it. |
|
|
322
|
+
|
|
323
|
+
**Returns** `ApiResponse_FormsAdminPayload_`: the envelope `{ data: FormsAdminPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
324
|
+
|
|
325
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
326
|
+
|
|
327
|
+
**Example**
|
|
328
|
+
|
|
329
|
+
```ts
|
|
330
|
+
const result = await g8.api.forms.getFormBackfill({ path: { form_key: "example", job_id: "id" } });
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
---
|
|
334
|
+
|
|
335
|
+
<a id="op-getformfields"></a>
|
|
336
|
+
|
|
337
|
+
### `g8.api.forms.getFormFields(input)`
|
|
338
|
+
|
|
339
|
+
**Get Form Fields**
|
|
340
|
+
|
|
341
|
+
- HTTP: `GET /api/v1/forms/{form_key}/fields`
|
|
342
|
+
- operationId: `get_form_fields_forms__form_key__fields_get` (also callable as `g8.api.call("get_form_fields_forms__form_key__fields_get", input)`)
|
|
343
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
344
|
+
- API-key scope: `forms:read`
|
|
345
|
+
|
|
346
|
+
The fields this form actually submits - what a mapping maps FROM.
|
|
347
|
+
|
|
348
|
+
**Input**
|
|
349
|
+
|
|
350
|
+
| Field | Type | Required | Description |
|
|
351
|
+
|---|---|---|---|
|
|
352
|
+
| `path.form_key` | `string` | yes | Form key. |
|
|
353
|
+
| `query.source_id` | `string` | yes | Which INSTALLED SOURCE of this form. Required: a form key can be present on more than one source, and every operation here is scoped to one. |
|
|
354
|
+
|
|
355
|
+
**Returns** `ApiResponse_FormPayload_`: the envelope `{ data: FormPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
356
|
+
|
|
357
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
358
|
+
|
|
359
|
+
**Example**
|
|
360
|
+
|
|
361
|
+
```ts
|
|
362
|
+
const result = await g8.api.forms.getFormFields({ path: { form_key: "example" }, query: { source_id: "id" } });
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
<a id="op-getformoverview"></a>
|
|
368
|
+
|
|
369
|
+
### `g8.api.forms.getFormOverview(input)`
|
|
370
|
+
|
|
371
|
+
**Get Form Overview**
|
|
372
|
+
|
|
373
|
+
- HTTP: `GET /api/v1/forms/{form_key}/overview`
|
|
374
|
+
- operationId: `get_form_overview_forms__form_key__overview_get` (also callable as `g8.api.call("get_form_overview_forms__form_key__overview_get", input)`)
|
|
375
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
376
|
+
- API-key scope: `forms:read`
|
|
377
|
+
|
|
378
|
+
Per-form operational detail: health, submission metrics, destination.
|
|
379
|
+
|
|
380
|
+
``source_id`` is required and comes from a ``list_forms`` result — a form
|
|
381
|
+
id is only unique within its source.
|
|
382
|
+
|
|
383
|
+
**Input**
|
|
384
|
+
|
|
385
|
+
| Field | Type | Required | Description |
|
|
386
|
+
|---|---|---|---|
|
|
387
|
+
| `path.form_key` | `string` | yes | The form's HTML tag id / group key (from list_forms). |
|
|
388
|
+
| `query.source_id` | `string` | yes | Write key / site the form belongs to (from list_forms). |
|
|
389
|
+
|
|
390
|
+
**Returns** `ApiResponse_FormOverview_`: the envelope `{ data: FormOverview, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
391
|
+
|
|
392
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
393
|
+
|
|
394
|
+
`FormOverview` fields:
|
|
395
|
+
|
|
396
|
+
| Field | Type | Required | Description |
|
|
397
|
+
|---|---|---|---|
|
|
398
|
+
| `form_key` | `string` | yes | |
|
|
399
|
+
| `source_id` | `string` | yes | |
|
|
400
|
+
| `activation_health` | `string \| null` | no | |
|
|
401
|
+
| `capture_health` | `string \| null` | no | |
|
|
402
|
+
| `delivery_health` | `string \| null` | no | |
|
|
403
|
+
| `display_name` | `string \| null` | no | |
|
|
404
|
+
| `identity_state` | `string \| null` | no | |
|
|
405
|
+
| `last_destination_verified_at` | `string (date-time) \| null` | no | |
|
|
406
|
+
| `metrics` | `Record<string, unknown>` | no | |
|
|
407
|
+
| `owner_id` | `string \| null` | no | |
|
|
408
|
+
| `placement_count` | `integer` | no | default `0` |
|
|
409
|
+
| `recommended_action` | `string \| null` | no | |
|
|
410
|
+
| `technical_form_id` | `string \| null` | no | |
|
|
411
|
+
|
|
412
|
+
**Example**
|
|
413
|
+
|
|
414
|
+
```ts
|
|
415
|
+
const result = await g8.api.forms.getFormOverview({ path: { form_key: "example" }, query: { source_id: "id" } });
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
---
|
|
419
|
+
|
|
420
|
+
<a id="op-getformplacements"></a>
|
|
421
|
+
|
|
422
|
+
### `g8.api.forms.getFormPlacements(input)`
|
|
423
|
+
|
|
424
|
+
**Get Form Placements**
|
|
425
|
+
|
|
426
|
+
- HTTP: `GET /api/v1/forms/{form_key}/placements`
|
|
427
|
+
- operationId: `get_form_placements_forms__form_key__placements_get` (also callable as `g8.api.call("get_form_placements_forms__form_key__placements_get", input)`)
|
|
428
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
429
|
+
- API-key scope: `forms:read`
|
|
430
|
+
|
|
431
|
+
Where this form appears - the pages it has actually been seen on.
|
|
432
|
+
|
|
433
|
+
**Input**
|
|
434
|
+
|
|
435
|
+
| Field | Type | Required | Description |
|
|
436
|
+
|---|---|---|---|
|
|
437
|
+
| `path.form_key` | `string` | yes | Form key. |
|
|
438
|
+
| `query.source_id` | `string` | yes | Which INSTALLED SOURCE of this form. Required: a form key can be present on more than one source, and every operation here is scoped to one. |
|
|
439
|
+
|
|
440
|
+
**Returns** `ApiResponse_FormPayload_`: the envelope `{ data: FormPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
441
|
+
|
|
442
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
443
|
+
|
|
444
|
+
**Example**
|
|
445
|
+
|
|
446
|
+
```ts
|
|
447
|
+
const result = await g8.api.forms.getFormPlacements({ path: { form_key: "example" }, query: { source_id: "id" } });
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
---
|
|
451
|
+
|
|
452
|
+
<a id="op-getformpreview"></a>
|
|
453
|
+
|
|
454
|
+
### `g8.api.forms.getFormPreview(input)`
|
|
455
|
+
|
|
456
|
+
**Get Form Preview**
|
|
457
|
+
|
|
458
|
+
- HTTP: `GET /api/v1/forms/{form_key}/preview/{preview_id}`
|
|
459
|
+
- operationId: `get_form_preview_forms__form_key__preview__preview_id__get` (also callable as `g8.api.call("get_form_preview_forms__form_key__preview__preview_id__get", input)`)
|
|
460
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
461
|
+
- API-key scope: `forms:read`
|
|
462
|
+
|
|
463
|
+
One placement preview: its state and, once captured, where the image is.
|
|
464
|
+
|
|
465
|
+
**Input**
|
|
466
|
+
|
|
467
|
+
| Field | Type | Required | Description |
|
|
468
|
+
|---|---|---|---|
|
|
469
|
+
| `path.form_key` | `string` | yes | The form's `form_key` (the `id` from `GET /forms`). |
|
|
470
|
+
| `path.preview_id` | `string` | yes | Id from the capture that started it. |
|
|
471
|
+
| `query.source_id` | `string` | yes | The site (write key) the form is installed on. |
|
|
472
|
+
|
|
473
|
+
**Returns** `ApiResponse_FormsAdminPayload_`: the envelope `{ data: FormsAdminPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
474
|
+
|
|
475
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
476
|
+
|
|
477
|
+
**Example**
|
|
478
|
+
|
|
479
|
+
```ts
|
|
480
|
+
const result = await g8.api.forms.getFormPreview({
|
|
481
|
+
path: { form_key: "example", preview_id: "id" },
|
|
482
|
+
query: { source_id: "id" },
|
|
483
|
+
});
|
|
484
|
+
```
|
|
485
|
+
|
|
486
|
+
---
|
|
487
|
+
|
|
488
|
+
<a id="op-getformrouterecommendations"></a>
|
|
489
|
+
|
|
490
|
+
### `g8.api.forms.getFormRouteRecommendations(input)`
|
|
491
|
+
|
|
492
|
+
**Get Form Route Recommendations**
|
|
493
|
+
|
|
494
|
+
- HTTP: `GET /api/v1/forms/{form_key}/route/recommendations`
|
|
495
|
+
- operationId: `get_form_route_recommendations_forms__form_key__route_recommendations_get` (also callable as `g8.api.call("get_form_route_recommendations_forms__form_key__route_recommendations_get", input)`)
|
|
496
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
497
|
+
- API-key scope: `forms:read`
|
|
498
|
+
|
|
499
|
+
Suggested field mappings for this form.
|
|
500
|
+
|
|
501
|
+
**Input**
|
|
502
|
+
|
|
503
|
+
| Field | Type | Required | Description |
|
|
504
|
+
|---|---|---|---|
|
|
505
|
+
| `path.form_key` | `string` | yes | Form key. |
|
|
506
|
+
| `query.source_id` | `string` | yes | Which INSTALLED SOURCE of this form. Required: a form key can be present on more than one source, and every operation here is scoped to one. |
|
|
507
|
+
| `query.target_list_id` | `integer \| null` | no | Destination list to tailor the mapping suggestions to. OPTIONAL on purpose: a caller asks for recommendations BEFORE choosing a destination, and making it required 422s every such request. |
|
|
508
|
+
|
|
509
|
+
**Returns** `ApiResponse_FormPayload_`: the envelope `{ data: FormPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
510
|
+
|
|
511
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
512
|
+
|
|
513
|
+
**Example**
|
|
514
|
+
|
|
515
|
+
```ts
|
|
516
|
+
const result = await g8.api.forms.getFormRouteRecommendations({ path: { form_key: "example" }, query: { source_id: "id" } });
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
---
|
|
520
|
+
|
|
521
|
+
<a id="op-getformsubmissiontrace"></a>
|
|
522
|
+
|
|
523
|
+
### `g8.api.forms.getFormSubmissionTrace(input)`
|
|
524
|
+
|
|
525
|
+
**Get Form Submission Trace**
|
|
526
|
+
|
|
527
|
+
- HTTP: `GET /api/v1/forms/{form_key}/submissions/{submission_id}/trace`
|
|
528
|
+
- operationId: `get_form_submission_trace_forms__form_key__submissions__submission_id__trace_get` (also callable as `g8.api.call("get_form_submission_trace_forms__form_key__submissions__submission_id__trace_get", input)`)
|
|
529
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
530
|
+
- API-key scope: `forms:read`
|
|
531
|
+
|
|
532
|
+
Follow ONE submission through the route, step by step.
|
|
533
|
+
|
|
534
|
+
This is the endpoint that answers "the customer filled in the form, where
|
|
535
|
+
did it go" - the question the whole surface exists for, and the one a
|
|
536
|
+
rebuilt forms UI could not ask without it.
|
|
537
|
+
|
|
538
|
+
**Input**
|
|
539
|
+
|
|
540
|
+
| Field | Type | Required | Description |
|
|
541
|
+
|---|---|---|---|
|
|
542
|
+
| `path.form_key` | `string` | yes | Form key. |
|
|
543
|
+
| `path.submission_id` | `string` | yes | Submission id from the activity feed. |
|
|
544
|
+
| `query.source_id` | `string` | yes | Which INSTALLED SOURCE of this form. Required: a form key can be present on more than one source, and every operation here is scoped to one. |
|
|
545
|
+
|
|
546
|
+
**Returns** `ApiResponse_FormPayload_`: the envelope `{ data: FormPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
547
|
+
|
|
548
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
549
|
+
|
|
550
|
+
**Example**
|
|
551
|
+
|
|
552
|
+
```ts
|
|
553
|
+
const result = await g8.api.forms.getFormSubmissionTrace({
|
|
554
|
+
path: { form_key: "example", submission_id: "id" },
|
|
555
|
+
query: { source_id: "id" },
|
|
556
|
+
});
|
|
557
|
+
```
|
|
558
|
+
|
|
559
|
+
---
|
|
560
|
+
|
|
561
|
+
<a id="op-getsiteaudit"></a>
|
|
562
|
+
|
|
563
|
+
### `g8.api.forms.getSiteAudit(input?)`
|
|
564
|
+
|
|
565
|
+
**Get Site Audit**
|
|
566
|
+
|
|
567
|
+
- HTTP: `GET /api/v1/forms/site-audit`
|
|
568
|
+
- operationId: `get_site_audit_forms_site_audit_get` (also callable as `g8.api.call("get_site_audit_forms_site_audit_get", input)`)
|
|
569
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
570
|
+
- API-key scope: `forms:read`
|
|
571
|
+
|
|
572
|
+
Findings from the last crawl: forms on the site that are not being captured.
|
|
573
|
+
|
|
574
|
+
**Input**: none.
|
|
575
|
+
|
|
576
|
+
**Returns** `ApiResponse_FormsAdminPayload_`: the envelope `{ data: FormsAdminPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
577
|
+
|
|
578
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
579
|
+
|
|
580
|
+
**Example**
|
|
581
|
+
|
|
582
|
+
```ts
|
|
583
|
+
const result = await g8.api.forms.getSiteAudit();
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
---
|
|
587
|
+
|
|
588
|
+
<a id="op-listformgroups"></a>
|
|
589
|
+
|
|
590
|
+
### `g8.api.forms.listFormGroups(input?)`
|
|
591
|
+
|
|
592
|
+
**List Form Groups**
|
|
593
|
+
|
|
594
|
+
- HTTP: `GET /api/v1/forms/groups`
|
|
595
|
+
- operationId: `list_form_groups_forms_groups_get` (also callable as `g8.api.call("list_form_groups_forms_groups_get", input)`)
|
|
596
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
597
|
+
- API-key scope: `forms:read`
|
|
598
|
+
|
|
599
|
+
Curated groups - several inventory rows treated as one form - with their members.
|
|
600
|
+
|
|
601
|
+
**Input**: none.
|
|
602
|
+
|
|
603
|
+
**Returns** `ApiResponse_FormsAdminPayload_`: the envelope `{ data: FormsAdminPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
604
|
+
|
|
605
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
606
|
+
|
|
607
|
+
**Example**
|
|
608
|
+
|
|
609
|
+
```ts
|
|
610
|
+
const result = await g8.api.forms.listFormGroups();
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
---
|
|
614
|
+
|
|
615
|
+
<a id="op-listforms"></a>
|
|
616
|
+
|
|
617
|
+
### `g8.api.forms.listForms(input?)`
|
|
618
|
+
|
|
619
|
+
**List Forms**
|
|
620
|
+
|
|
621
|
+
- HTTP: `GET /api/v1/forms`
|
|
622
|
+
- operationId: `list_forms_forms_get` (also callable as `g8.api.call("list_forms_forms_get", input)`)
|
|
623
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
624
|
+
- API-key scope: `forms:read`
|
|
625
|
+
|
|
626
|
+
List and search the org's lead-capture forms.
|
|
627
|
+
|
|
628
|
+
Use ``search`` to find a specific form by name (e.g. "discovery"). Each
|
|
629
|
+
item carries the ``source_id`` and ``form_key`` needed for the overview
|
|
630
|
+
endpoint.
|
|
631
|
+
|
|
632
|
+
**Input**
|
|
633
|
+
|
|
634
|
+
| Field | Type | Required | Description |
|
|
635
|
+
|---|---|---|---|
|
|
636
|
+
| `query.page` | `integer` | no | 1-indexed page. default `1` |
|
|
637
|
+
| `query.per_page` | `integer` | no | Rows per page (max 200). default `20` |
|
|
638
|
+
| `query.search` | `string \| null` | no | Case-insensitive substring match on form name/id. |
|
|
639
|
+
| `query.source_id` | `string \| null` | no | Filter to a single write key / site. |
|
|
640
|
+
| `query.sort_field` | `"submissions_30d" \| "total_submissions" \| "latest_submitted_at" \| "form_tag_id" \| null` | no | total_submissions \| latest_submitted_at \| form_tag_id |
|
|
641
|
+
| `query.sort_order` | `"asc" \| "desc" \| null` | no | asc \| desc |
|
|
642
|
+
|
|
643
|
+
**Returns** `ApiResponse_FormsListResponse_`: the envelope `{ data: FormsListResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
644
|
+
|
|
645
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
646
|
+
|
|
647
|
+
`FormsListResponse` fields:
|
|
648
|
+
|
|
649
|
+
| Field | Type | Required | Description |
|
|
650
|
+
|---|---|---|---|
|
|
651
|
+
| `items` | `Array<FormSummary>` | no | |
|
|
652
|
+
| `page` | `integer` | no | default `1` |
|
|
653
|
+
| `per_page` | `integer` | no | default `20` |
|
|
654
|
+
| `total` | `integer` | no | default `0` |
|
|
655
|
+
|
|
656
|
+
**Example**
|
|
657
|
+
|
|
658
|
+
```ts
|
|
659
|
+
const result = await g8.api.forms.listForms();
|
|
660
|
+
```
|
|
661
|
+
|
|
662
|
+
---
|
|
663
|
+
|
|
664
|
+
<a id="op-listsavedformviews"></a>
|
|
665
|
+
|
|
666
|
+
### `g8.api.forms.listSavedFormViews(input?)`
|
|
667
|
+
|
|
668
|
+
**List Saved Form Views**
|
|
669
|
+
|
|
670
|
+
- HTTP: `GET /api/v1/forms/views/saved`
|
|
671
|
+
- operationId: `list_saved_form_views_forms_views_saved_get` (also callable as `g8.api.call("list_saved_form_views_forms_views_saved_get", input)`)
|
|
672
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
673
|
+
- API-key scope: `forms:read`
|
|
674
|
+
|
|
675
|
+
Saved filter sets over the form inventory, as `items`.
|
|
676
|
+
|
|
677
|
+
**Input**: none.
|
|
678
|
+
|
|
679
|
+
**Returns** `ApiResponse_FormsAdminPayload_`: the envelope `{ data: FormsAdminPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
680
|
+
|
|
681
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
682
|
+
|
|
683
|
+
**Example**
|
|
684
|
+
|
|
685
|
+
```ts
|
|
686
|
+
const result = await g8.api.forms.listSavedFormViews();
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
---
|
|
690
|
+
|
|
691
|
+
<a id="op-pauseformdelivery"></a>
|
|
692
|
+
|
|
693
|
+
### `g8.api.forms.pauseFormDelivery(input)`
|
|
694
|
+
|
|
695
|
+
**Pause Form Delivery**
|
|
696
|
+
|
|
697
|
+
- HTTP: `POST /api/v1/forms/{form_key}/delivery/pause`
|
|
698
|
+
- operationId: `pause_form_delivery_forms__form_key__delivery_pause_post` (also callable as `g8.api.call("pause_form_delivery_forms__form_key__delivery_pause_post", input)`)
|
|
699
|
+
- Tier: `external`: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first
|
|
700
|
+
- API-key scope: `forms:run`
|
|
701
|
+
|
|
702
|
+
Stop delivering this form's submissions.
|
|
703
|
+
|
|
704
|
+
The form keeps ACCEPTING submissions - pausing stops them being routed
|
|
705
|
+
onward, it does not take the form down. They queue rather than vanish.
|
|
706
|
+
|
|
707
|
+
**Input**
|
|
708
|
+
|
|
709
|
+
| Field | Type | Required | Description |
|
|
710
|
+
|---|---|---|---|
|
|
711
|
+
| `path.form_key` | `string` | yes | Form key. |
|
|
712
|
+
| `body` | `FormSourceScopedRequest` | yes | Request body; fields below. |
|
|
713
|
+
|
|
714
|
+
Body fields (`FormSourceScopedRequest`):
|
|
715
|
+
|
|
716
|
+
| Field | Type | Required | Description |
|
|
717
|
+
|---|---|---|---|
|
|
718
|
+
| `body.source_id` | `string` | yes | min length 1, max length 500 |
|
|
719
|
+
|
|
720
|
+
**Returns** `ApiResponse_FormPayload_`: the envelope `{ data: FormPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
721
|
+
|
|
722
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
723
|
+
|
|
724
|
+
**Example**
|
|
725
|
+
|
|
726
|
+
```ts
|
|
727
|
+
// external: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first.
|
|
728
|
+
const result = await g8.api.forms.pauseFormDelivery({ path: { form_key: "example" }, body: { source_id: "id" } });
|
|
729
|
+
```
|
|
730
|
+
|
|
731
|
+
---
|
|
732
|
+
|
|
733
|
+
<a id="op-previewformmapping"></a>
|
|
734
|
+
|
|
735
|
+
### `g8.api.forms.previewFormMapping(input)`
|
|
736
|
+
|
|
737
|
+
**Preview Form Mapping**
|
|
738
|
+
|
|
739
|
+
- HTTP: `POST /api/v1/forms/{form_key}/mapping/preview`
|
|
740
|
+
- operationId: `preview_form_mapping_forms__form_key__mapping_preview_post` (also callable as `g8.api.call("preview_form_mapping_forms__form_key__mapping_preview_post", input)`)
|
|
741
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
742
|
+
- API-key scope: `forms:read`
|
|
743
|
+
|
|
744
|
+
What submissions would look like under a mapping, WITHOUT saving it.
|
|
745
|
+
|
|
746
|
+
Nothing is written and no list is filled. Same PII rule as the submissions read.
|
|
747
|
+
|
|
748
|
+
**Input**
|
|
749
|
+
|
|
750
|
+
| Field | Type | Required | Description |
|
|
751
|
+
|---|---|---|---|
|
|
752
|
+
| `path.form_key` | `string` | yes | The form's `form_key` (the `id` from `GET /forms`). |
|
|
753
|
+
| `body` | `FormMappingRequest` | yes | Request body; fields below. |
|
|
754
|
+
|
|
755
|
+
Body fields (`FormMappingRequest`):
|
|
756
|
+
|
|
757
|
+
| Field | Type | Required | Description |
|
|
758
|
+
|---|---|---|---|
|
|
759
|
+
| `body.target_list_name` | `string` | yes | Name of the list the mapped submissions are saved to. |
|
|
760
|
+
| `body.expected_route_version` | `integer \| null` | no | Optimistic-concurrency guard: the route version you last read. Omit for last-writer-wins. min 1 |
|
|
761
|
+
| `body.form_to_contact_field_mapping` | `Array<FormFieldMapping>` | no | Submitted field -> contact field. |
|
|
762
|
+
| `body.source_id` | `string \| null` | no | min length 1, max length 500 |
|
|
763
|
+
| `body.submissions_page` | `integer` | no | default `1`, min 1 |
|
|
764
|
+
| `body.submissions_per_page` | `integer` | no | default `20`, min 1 |
|
|
765
|
+
| `body.target_list_id` | `integer \| null` | no | Id of that list, when it already exists. min 1 |
|
|
766
|
+
|
|
767
|
+
**Returns** `ApiResponse_FormsAdminPayload_`: the envelope `{ data: FormsAdminPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
768
|
+
|
|
769
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
770
|
+
|
|
771
|
+
**Example**
|
|
772
|
+
|
|
773
|
+
```ts
|
|
774
|
+
const result = await g8.api.forms.previewFormMapping({
|
|
775
|
+
path: { form_key: "example" },
|
|
776
|
+
body: { target_list_name: "Example" },
|
|
777
|
+
});
|
|
778
|
+
```
|
|
779
|
+
|
|
780
|
+
---
|
|
781
|
+
|
|
782
|
+
<a id="op-previewunidentifiedgrouping"></a>
|
|
783
|
+
|
|
784
|
+
### `g8.api.forms.previewUnidentifiedGrouping(input?)`
|
|
785
|
+
|
|
786
|
+
**Preview Unidentified Grouping**
|
|
787
|
+
|
|
788
|
+
- HTTP: `GET /api/v1/forms/unidentified/grouping`
|
|
789
|
+
- operationId: `preview_unidentified_grouping_forms_unidentified_grouping_get` (also callable as `g8.api.call("preview_unidentified_grouping_forms_unidentified_grouping_get", input)`)
|
|
790
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
791
|
+
- API-key scope: `forms:read`
|
|
792
|
+
|
|
793
|
+
How submissions with no form id WOULD split under each grouping axis.
|
|
794
|
+
|
|
795
|
+
Some sites render forms with no stable id, so every such submission lands
|
|
796
|
+
in one bucket. Each option carries the numbers behind it, including whether
|
|
797
|
+
it would split one real form apart or merge several together.
|
|
798
|
+
|
|
799
|
+
**Input**
|
|
800
|
+
|
|
801
|
+
| Field | Type | Required | Description |
|
|
802
|
+
|---|---|---|---|
|
|
803
|
+
| `query.source_id` | `string \| null` | no | One site. Omit for every site. |
|
|
804
|
+
|
|
805
|
+
**Returns** `ApiResponse_FormsAdminPayload_`: the envelope `{ data: FormsAdminPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
806
|
+
|
|
807
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
808
|
+
|
|
809
|
+
**Example**
|
|
810
|
+
|
|
811
|
+
```ts
|
|
812
|
+
const result = await g8.api.forms.previewUnidentifiedGrouping();
|
|
813
|
+
```
|
|
814
|
+
|
|
815
|
+
---
|
|
816
|
+
|
|
817
|
+
<a id="op-removeformgroupmembers"></a>
|
|
818
|
+
|
|
819
|
+
### `g8.api.forms.removeFormGroupMembers(input)`
|
|
820
|
+
|
|
821
|
+
**Remove Form Group Members**
|
|
822
|
+
|
|
823
|
+
- HTTP: `POST /api/v1/forms/groups/{group_id}/members/remove`
|
|
824
|
+
- operationId: `remove_form_group_members_forms_groups__group_id__members_remove_post` (also callable as `g8.api.call("remove_form_group_members_forms_groups__group_id__members_remove_post", input)`)
|
|
825
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
826
|
+
- API-key scope: `forms:write`
|
|
827
|
+
|
|
828
|
+
Remove inventory rows from a group.
|
|
829
|
+
|
|
830
|
+
POST rather than DELETE because it names a SET in a body, and enough
|
|
831
|
+
proxies strip a DELETE body to make removal silently remove nothing.
|
|
832
|
+
|
|
833
|
+
**Input**
|
|
834
|
+
|
|
835
|
+
| Field | Type | Required | Description |
|
|
836
|
+
|---|---|---|---|
|
|
837
|
+
| `path.group_id` | `string` | yes | The group's id. |
|
|
838
|
+
| `body` | `FormGroupMembersRequest` | yes | Request body; fields below. |
|
|
839
|
+
|
|
840
|
+
Body fields (`FormGroupMembersRequest`):
|
|
841
|
+
|
|
842
|
+
| Field | Type | Required | Description |
|
|
843
|
+
|---|---|---|---|
|
|
844
|
+
| `body.members` | `Array<FormGroupMemberRef>` | yes | min items 1, max items 200 |
|
|
845
|
+
|
|
846
|
+
**Returns** `ApiResponse_FormsAdminPayload_`: the envelope `{ data: FormsAdminPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
847
|
+
|
|
848
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
849
|
+
|
|
850
|
+
**Example**
|
|
851
|
+
|
|
852
|
+
```ts
|
|
853
|
+
const result = await g8.api.forms.removeFormGroupMembers({
|
|
854
|
+
path: { group_id: "id" },
|
|
855
|
+
body: { members: [{ form_key: "example", source_id: "id" }] },
|
|
856
|
+
});
|
|
857
|
+
```
|
|
858
|
+
|
|
859
|
+
---
|
|
860
|
+
|
|
861
|
+
<a id="op-requestsiteauditscan"></a>
|
|
862
|
+
|
|
863
|
+
### `g8.api.forms.requestSiteAuditScan(input?)`
|
|
864
|
+
|
|
865
|
+
**Request Site Audit Scan**
|
|
866
|
+
|
|
867
|
+
- HTTP: `POST /api/v1/forms/site-audit/scan`
|
|
868
|
+
- operationId: `request_site_audit_scan_forms_site_audit_scan_post` (also callable as `g8.api.call("request_site_audit_scan_forms_site_audit_scan_post", input)`)
|
|
869
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
870
|
+
- API-key scope: `forms:write`
|
|
871
|
+
|
|
872
|
+
Crawl the site again. ASYNCHRONOUS; read `GET /forms/site-audit` afterwards.
|
|
873
|
+
|
|
874
|
+
At most one enqueue per org per minute: inside that window the answer is
|
|
875
|
+
`already_queued` and nothing new is started.
|
|
876
|
+
|
|
877
|
+
**Input**: none.
|
|
878
|
+
|
|
879
|
+
**Returns** `ApiResponse_FormsAdminPayload_`: the envelope `{ data: FormsAdminPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
880
|
+
|
|
881
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
882
|
+
|
|
883
|
+
**Example**
|
|
884
|
+
|
|
885
|
+
```ts
|
|
886
|
+
const result = await g8.api.forms.requestSiteAuditScan();
|
|
887
|
+
```
|
|
888
|
+
|
|
889
|
+
---
|
|
890
|
+
|
|
891
|
+
<a id="op-resumeformdelivery"></a>
|
|
892
|
+
|
|
893
|
+
### `g8.api.forms.resumeFormDelivery(input)`
|
|
894
|
+
|
|
895
|
+
**Resume Form Delivery**
|
|
896
|
+
|
|
897
|
+
- HTTP: `POST /api/v1/forms/{form_key}/delivery/resume`
|
|
898
|
+
- operationId: `resume_form_delivery_forms__form_key__delivery_resume_post` (also callable as `g8.api.call("resume_form_delivery_forms__form_key__delivery_resume_post", input)`)
|
|
899
|
+
- Tier: `external`: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first
|
|
900
|
+
- API-key scope: `forms:run`
|
|
901
|
+
|
|
902
|
+
Start delivering again.
|
|
903
|
+
|
|
904
|
+
**Input**
|
|
905
|
+
|
|
906
|
+
| Field | Type | Required | Description |
|
|
907
|
+
|---|---|---|---|
|
|
908
|
+
| `path.form_key` | `string` | yes | Form key. |
|
|
909
|
+
| `body` | `FormSourceScopedRequest` | yes | Request body; fields below. |
|
|
910
|
+
|
|
911
|
+
Body fields (`FormSourceScopedRequest`):
|
|
912
|
+
|
|
913
|
+
| Field | Type | Required | Description |
|
|
914
|
+
|---|---|---|---|
|
|
915
|
+
| `body.source_id` | `string` | yes | min length 1, max length 500 |
|
|
916
|
+
|
|
917
|
+
**Returns** `ApiResponse_FormPayload_`: the envelope `{ data: FormPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
918
|
+
|
|
919
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
920
|
+
|
|
921
|
+
**Example**
|
|
922
|
+
|
|
923
|
+
```ts
|
|
924
|
+
// external: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first.
|
|
925
|
+
const result = await g8.api.forms.resumeFormDelivery({ path: { form_key: "example" }, body: { source_id: "id" } });
|
|
926
|
+
```
|
|
927
|
+
|
|
928
|
+
---
|
|
929
|
+
|
|
930
|
+
<a id="op-retryformdelivery"></a>
|
|
931
|
+
|
|
932
|
+
### `g8.api.forms.retryFormDelivery(input)`
|
|
933
|
+
|
|
934
|
+
**Retry Form Delivery**
|
|
935
|
+
|
|
936
|
+
- HTTP: `POST /api/v1/forms/deliveries/{receipt_id}/retry`
|
|
937
|
+
- operationId: `retry_form_delivery_forms_deliveries__receipt_id__retry_post` (also callable as `g8.api.call("retry_form_delivery_forms_deliveries__receipt_id__retry_post", input)`)
|
|
938
|
+
- Tier: `external`: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first
|
|
939
|
+
- API-key scope: `forms:run`
|
|
940
|
+
|
|
941
|
+
Retry ONE failed delivery.
|
|
942
|
+
|
|
943
|
+
Scoped by receipt rather than by form, so a caller retries the specific
|
|
944
|
+
submission that failed instead of replaying everything - which is what the
|
|
945
|
+
backfill endpoints are for, and why they are not on this surface.
|
|
946
|
+
|
|
947
|
+
NOTE ON ROUTING ORDER: `/forms/deliveries/...` is a LITERAL first segment
|
|
948
|
+
that `/forms/{form_key}/...` would otherwise swallow, reading "deliveries"
|
|
949
|
+
as a form key. It is declared here, and the shadowing test compares
|
|
950
|
+
compiled match patterns to keep it that way.
|
|
951
|
+
|
|
952
|
+
**Input**
|
|
953
|
+
|
|
954
|
+
| Field | Type | Required | Description |
|
|
955
|
+
|---|---|---|---|
|
|
956
|
+
| `path.receipt_id` | `string` | yes | Delivery receipt id from the activity feed. |
|
|
957
|
+
|
|
958
|
+
**Returns** `ApiResponse_FormPayload_`: the envelope `{ data: FormPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
959
|
+
|
|
960
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
961
|
+
|
|
962
|
+
**Example**
|
|
963
|
+
|
|
964
|
+
```ts
|
|
965
|
+
// external: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first.
|
|
966
|
+
const result = await g8.api.forms.retryFormDelivery({ path: { receipt_id: "id" } });
|
|
967
|
+
```
|
|
968
|
+
|
|
969
|
+
---
|
|
970
|
+
|
|
971
|
+
<a id="op-rollbackformroute"></a>
|
|
972
|
+
|
|
973
|
+
### `g8.api.forms.rollbackFormRoute(input)`
|
|
974
|
+
|
|
975
|
+
**Rollback Form Route**
|
|
976
|
+
|
|
977
|
+
- HTTP: `DELETE /api/v1/forms/{form_key}/route`
|
|
978
|
+
- operationId: `rollback_form_route_forms__form_key__route_delete` (also callable as `g8.api.call("rollback_form_route_forms__form_key__route_delete", input)`)
|
|
979
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
980
|
+
- API-key scope: `forms:delete`
|
|
981
|
+
|
|
982
|
+
Roll the route back, or cancel a pending one.
|
|
983
|
+
|
|
984
|
+
A DELETE that takes a BODY, matching the app - because this is not "delete
|
|
985
|
+
the route", it is "move it back", and which version to move to has to
|
|
986
|
+
travel with the request. The form keeps routing; it routes as it did
|
|
987
|
+
before.
|
|
988
|
+
|
|
989
|
+
**Input**
|
|
990
|
+
|
|
991
|
+
| Field | Type | Required | Description |
|
|
992
|
+
|---|---|---|---|
|
|
993
|
+
| `path.form_key` | `string` | yes | Form key. |
|
|
994
|
+
| `body` | `FormRouteRollbackRequest` | yes | Request body; fields below. |
|
|
995
|
+
|
|
996
|
+
Body fields (`FormRouteRollbackRequest`):
|
|
997
|
+
|
|
998
|
+
| Field | Type | Required | Description |
|
|
999
|
+
|---|---|---|---|
|
|
1000
|
+
| `body.source_id` | `string` | yes | min length 1, max length 500 |
|
|
1001
|
+
| `body.cancel_current` | `boolean` | no | Cancel a pending route instead of restoring an old one. default `false` |
|
|
1002
|
+
| `body.expected_current_version` | `integer \| null` | no | PRECONDITION: the version you believe is live. Guards a concurrent rollback. min 1 |
|
|
1003
|
+
| `body.restore_version` | `integer \| null` | no | Version to restore. Omit to take the previous one. min 1 |
|
|
1004
|
+
|
|
1005
|
+
**Returns** `ApiResponse_FormPayload_`: the envelope `{ data: FormPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1006
|
+
|
|
1007
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1008
|
+
|
|
1009
|
+
**Example**
|
|
1010
|
+
|
|
1011
|
+
```ts
|
|
1012
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
1013
|
+
const result = await g8.api.forms.rollbackFormRoute({ path: { form_key: "example" }, body: { source_id: "id" } });
|
|
1014
|
+
```
|
|
1015
|
+
|
|
1016
|
+
---
|
|
1017
|
+
|
|
1018
|
+
<a id="op-saveformmapping"></a>
|
|
1019
|
+
|
|
1020
|
+
### `g8.api.forms.saveFormMapping(input)`
|
|
1021
|
+
|
|
1022
|
+
**Save Form Mapping**
|
|
1023
|
+
|
|
1024
|
+
- HTTP: `POST /api/v1/forms/{form_key}/mapping/save`
|
|
1025
|
+
- operationId: `save_form_mapping_forms__form_key__mapping_save_post` (also callable as `g8.api.call("save_form_mapping_forms__form_key__mapping_save_post", input)`)
|
|
1026
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1027
|
+
- API-key scope: `forms:write`
|
|
1028
|
+
|
|
1029
|
+
Save how a form's submitted fields become contact fields.
|
|
1030
|
+
|
|
1031
|
+
A FULL REPLACEMENT of the mapping. Everything captured from now on lands
|
|
1032
|
+
according to it, so preview first. `expected_route_version` makes it a
|
|
1033
|
+
conditional write (409 when someone else saved in between).
|
|
1034
|
+
|
|
1035
|
+
**Input**
|
|
1036
|
+
|
|
1037
|
+
| Field | Type | Required | Description |
|
|
1038
|
+
|---|---|---|---|
|
|
1039
|
+
| `path.form_key` | `string` | yes | The form's `form_key` (the `id` from `GET /forms`). |
|
|
1040
|
+
| `body` | `FormMappingRequest` | yes | Request body; fields below. |
|
|
1041
|
+
|
|
1042
|
+
Body fields (`FormMappingRequest`):
|
|
1043
|
+
|
|
1044
|
+
| Field | Type | Required | Description |
|
|
1045
|
+
|---|---|---|---|
|
|
1046
|
+
| `body.target_list_name` | `string` | yes | Name of the list the mapped submissions are saved to. |
|
|
1047
|
+
| `body.expected_route_version` | `integer \| null` | no | Optimistic-concurrency guard: the route version you last read. Omit for last-writer-wins. min 1 |
|
|
1048
|
+
| `body.form_to_contact_field_mapping` | `Array<FormFieldMapping>` | no | Submitted field -> contact field. |
|
|
1049
|
+
| `body.source_id` | `string \| null` | no | min length 1, max length 500 |
|
|
1050
|
+
| `body.submissions_page` | `integer` | no | default `1`, min 1 |
|
|
1051
|
+
| `body.submissions_per_page` | `integer` | no | default `20`, min 1 |
|
|
1052
|
+
| `body.target_list_id` | `integer \| null` | no | Id of that list, when it already exists. min 1 |
|
|
1053
|
+
|
|
1054
|
+
**Returns** `ApiResponse_FormsAdminPayload_`: the envelope `{ data: FormsAdminPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1055
|
+
|
|
1056
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1057
|
+
|
|
1058
|
+
**Example**
|
|
1059
|
+
|
|
1060
|
+
```ts
|
|
1061
|
+
const result = await g8.api.forms.saveFormMapping({
|
|
1062
|
+
path: { form_key: "example" },
|
|
1063
|
+
body: { target_list_name: "Example" },
|
|
1064
|
+
});
|
|
1065
|
+
```
|
|
1066
|
+
|
|
1067
|
+
---
|
|
1068
|
+
|
|
1069
|
+
<a id="op-saveformroute"></a>
|
|
1070
|
+
|
|
1071
|
+
### `g8.api.forms.saveFormRoute(input)`
|
|
1072
|
+
|
|
1073
|
+
**Save Form Route**
|
|
1074
|
+
|
|
1075
|
+
- HTTP: `PUT /api/v1/forms/{form_key}/route`
|
|
1076
|
+
- operationId: `save_form_route_forms__form_key__route_put` (also callable as `g8.api.call("save_form_route_forms__form_key__route_put", input)`)
|
|
1077
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1078
|
+
- API-key scope: `forms:write`
|
|
1079
|
+
|
|
1080
|
+
Set where this form's submissions go, and how its fields map.
|
|
1081
|
+
|
|
1082
|
+
SEND THE `expected_*` PRECONDITIONS. They are optimistic-concurrency
|
|
1083
|
+
guards, not settings: without them the save is last-writer-wins and can
|
|
1084
|
+
silently overwrite a colleague's route on a live form.
|
|
1085
|
+
|
|
1086
|
+
`workflow_policy` defaults to `disabled`. `simulate` records what WOULD
|
|
1087
|
+
have run without running it, which is the safe way to turn automation on
|
|
1088
|
+
for a form that is already receiving real submissions.
|
|
1089
|
+
|
|
1090
|
+
**Input**
|
|
1091
|
+
|
|
1092
|
+
| Field | Type | Required | Description |
|
|
1093
|
+
|---|---|---|---|
|
|
1094
|
+
| `path.form_key` | `string` | yes | Form key. |
|
|
1095
|
+
| `body` | `FormRouteRequest` | yes | Request body; fields below. |
|
|
1096
|
+
|
|
1097
|
+
Body fields (`FormRouteRequest`):
|
|
1098
|
+
|
|
1099
|
+
| Field | Type | Required | Description |
|
|
1100
|
+
|---|---|---|---|
|
|
1101
|
+
| `body.source_id` | `string` | yes | min length 1, max length 500 |
|
|
1102
|
+
| `body.target_list_id` | `integer` | yes | Audience list submissions land in. min 1 |
|
|
1103
|
+
| `body.defaults` | `Record<string, unknown>` | no | Values applied to every submission. |
|
|
1104
|
+
| `body.expected_current_route_version` | `integer \| null` | no | PRECONDITION. The route version you are replacing. Without it the save is last-writer-wins and can silently overwrite a colleague's route. min 0 |
|
|
1105
|
+
| `body.expected_route_history_version` | `integer \| null` | no | PRECONDITION on the route's history log. min 0 |
|
|
1106
|
+
| `body.expected_schema_version` | `integer \| null` | no | PRECONDITION, not a setting. The form schema version this mapping was built against; the save is rejected if the form has changed shape since. Omitting it saves a mapping against a schema you have not seen. min 1 |
|
|
1107
|
+
| `body.mapping` | `Array<Record<string, unknown>>` | no | Form field -> graph8 field. |
|
|
1108
|
+
| `body.schema_drift_approved` | `boolean` | no | Save anyway when the schema HAS drifted. Deliberate override. default `false` |
|
|
1109
|
+
| `body.workflow_policy` | `"disabled" \| "simulate" \| "enabled"` | no | Whether routed submissions trigger workflows. `simulate` records what WOULD have run without running it - the safe way to turn automation on for a live form. Defaults to `disabled`. default `"disabled"` |
|
|
1110
|
+
|
|
1111
|
+
**Returns** `ApiResponse_FormPayload_`: the envelope `{ data: FormPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1112
|
+
|
|
1113
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1114
|
+
|
|
1115
|
+
**Example**
|
|
1116
|
+
|
|
1117
|
+
```ts
|
|
1118
|
+
const result = await g8.api.forms.saveFormRoute({
|
|
1119
|
+
path: { form_key: "example" },
|
|
1120
|
+
body: { source_id: "id", target_list_id: 1 },
|
|
1121
|
+
});
|
|
1122
|
+
```
|
|
1123
|
+
|
|
1124
|
+
---
|
|
1125
|
+
|
|
1126
|
+
<a id="op-saveformview"></a>
|
|
1127
|
+
|
|
1128
|
+
### `g8.api.forms.saveFormView(input)`
|
|
1129
|
+
|
|
1130
|
+
**Save Form View**
|
|
1131
|
+
|
|
1132
|
+
- HTTP: `PUT /api/v1/forms/views/saved/{view_id}`
|
|
1133
|
+
- operationId: `save_form_view_forms_views_saved__view_id__put` (also callable as `g8.api.call("save_form_view_forms_views_saved__view_id__put", input)`)
|
|
1134
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1135
|
+
- API-key scope: `forms:write`
|
|
1136
|
+
|
|
1137
|
+
Create or replace a saved view. PUT because it is an upsert by id.
|
|
1138
|
+
|
|
1139
|
+
**Input**
|
|
1140
|
+
|
|
1141
|
+
| Field | Type | Required | Description |
|
|
1142
|
+
|---|---|---|---|
|
|
1143
|
+
| `path.view_id` | `string` | yes | The view's id. Created when it does not exist. |
|
|
1144
|
+
| `body` | `FormSavedViewRequest` | yes | Request body; fields below. |
|
|
1145
|
+
|
|
1146
|
+
Body fields (`FormSavedViewRequest`):
|
|
1147
|
+
|
|
1148
|
+
| Field | Type | Required | Description |
|
|
1149
|
+
|---|---|---|---|
|
|
1150
|
+
| `body.filters` | `FormInventoryFilters` | yes | |
|
|
1151
|
+
| `body.name` | `string` | yes | min length 1, max length 100 |
|
|
1152
|
+
|
|
1153
|
+
**Returns** `ApiResponse_FormsAdminPayload_`: the envelope `{ data: FormsAdminPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1154
|
+
|
|
1155
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1156
|
+
|
|
1157
|
+
**Example**
|
|
1158
|
+
|
|
1159
|
+
```ts
|
|
1160
|
+
const result = await g8.api.forms.saveFormView({ path: { view_id: "id" }, body: { filters: {}, name: "Example" } });
|
|
1161
|
+
```
|
|
1162
|
+
|
|
1163
|
+
---
|
|
1164
|
+
|
|
1165
|
+
<a id="op-searchformsubmissions"></a>
|
|
1166
|
+
|
|
1167
|
+
### `g8.api.forms.searchFormSubmissions(input)`
|
|
1168
|
+
|
|
1169
|
+
**Search Form Submissions**
|
|
1170
|
+
|
|
1171
|
+
- HTTP: `POST /api/v1/forms/{form_key}/submissions`
|
|
1172
|
+
- operationId: `search_form_submissions_forms__form_key__submissions_post` (also callable as `g8.api.call("search_form_submissions_forms__form_key__submissions_post", input)`)
|
|
1173
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1174
|
+
- API-key scope: `forms:read`
|
|
1175
|
+
|
|
1176
|
+
What people actually submitted to one form.
|
|
1177
|
+
|
|
1178
|
+
A paginated READ; POST only because the filter set is a body. Identifying
|
|
1179
|
+
fields are REDACTED for a key without the Signals write capability, exactly
|
|
1180
|
+
as in the browser - an empty-looking value is a redaction, not a missing
|
|
1181
|
+
submission.
|
|
1182
|
+
|
|
1183
|
+
**Input**
|
|
1184
|
+
|
|
1185
|
+
| Field | Type | Required | Description |
|
|
1186
|
+
|---|---|---|---|
|
|
1187
|
+
| `path.form_key` | `string` | yes | The form's `form_key` (the `id` from `GET /forms`). |
|
|
1188
|
+
| `body` | `FormSubmissionsSearchRequest` | yes | Request body; fields below. |
|
|
1189
|
+
|
|
1190
|
+
Body fields (`FormSubmissionsSearchRequest`):
|
|
1191
|
+
|
|
1192
|
+
| Field | Type | Required | Description |
|
|
1193
|
+
|---|---|---|---|
|
|
1194
|
+
| `body.conditions` | `Array<FormSubmissionCondition>` | no | |
|
|
1195
|
+
| `body.page` | `integer` | no | default `1`, min 1 |
|
|
1196
|
+
| `body.per_page` | `integer` | no | default `20`, min 1 |
|
|
1197
|
+
| `body.source_id` | `string \| null` | no | One site. Omit for every site the form is on. max length 500 |
|
|
1198
|
+
|
|
1199
|
+
**Returns** `ApiResponse_FormsAdminPayload_`: the envelope `{ data: FormsAdminPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1200
|
+
|
|
1201
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1202
|
+
|
|
1203
|
+
**Example**
|
|
1204
|
+
|
|
1205
|
+
```ts
|
|
1206
|
+
const result = await g8.api.forms.searchFormSubmissions({ path: { form_key: "example" }, body: {} });
|
|
1207
|
+
```
|
|
1208
|
+
|
|
1209
|
+
---
|
|
1210
|
+
|
|
1211
|
+
<a id="op-setunidentifiedgrouping"></a>
|
|
1212
|
+
|
|
1213
|
+
### `g8.api.forms.setUnidentifiedGrouping(input)`
|
|
1214
|
+
|
|
1215
|
+
**Set Unidentified Grouping**
|
|
1216
|
+
|
|
1217
|
+
- HTTP: `PUT /api/v1/forms/unidentified/grouping`
|
|
1218
|
+
- operationId: `set_unidentified_grouping_forms_unidentified_grouping_put` (also callable as `g8.api.call("set_unidentified_grouping_forms_unidentified_grouping_put", input)`)
|
|
1219
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1220
|
+
- API-key scope: `forms:write`
|
|
1221
|
+
|
|
1222
|
+
Choose how one site's id-less submissions are split into forms.
|
|
1223
|
+
|
|
1224
|
+
Applied at read time, so it regroups HISTORY as well as new traffic: the
|
|
1225
|
+
shape of the inventory changes under anything already pointed at it.
|
|
1226
|
+
|
|
1227
|
+
**Input**
|
|
1228
|
+
|
|
1229
|
+
| Field | Type | Required | Description |
|
|
1230
|
+
|---|---|---|---|
|
|
1231
|
+
| `body` | `FormGroupingRuleRequest` | yes | Request body; fields below. |
|
|
1232
|
+
|
|
1233
|
+
Body fields (`FormGroupingRuleRequest`):
|
|
1234
|
+
|
|
1235
|
+
| Field | Type | Required | Description |
|
|
1236
|
+
|---|---|---|---|
|
|
1237
|
+
| `body.source_id` | `string` | yes | max length 500 |
|
|
1238
|
+
| `body.axis` | `"none" \| "fields" \| "component" \| "page" \| "campaign" \| "source_attribute"` | no | default `"none"` |
|
|
1239
|
+
|
|
1240
|
+
**Returns** `ApiResponse_FormsAdminPayload_`: the envelope `{ data: FormsAdminPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1241
|
+
|
|
1242
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1243
|
+
|
|
1244
|
+
**Example**
|
|
1245
|
+
|
|
1246
|
+
```ts
|
|
1247
|
+
const result = await g8.api.forms.setUnidentifiedGrouping({ body: { source_id: "id" } });
|
|
1248
|
+
```
|
|
1249
|
+
|
|
1250
|
+
---
|
|
1251
|
+
|
|
1252
|
+
<a id="op-syncunidentifiedgroup"></a>
|
|
1253
|
+
|
|
1254
|
+
### `g8.api.forms.syncUnidentifiedGroup(input)`
|
|
1255
|
+
|
|
1256
|
+
**Sync Unidentified Group**
|
|
1257
|
+
|
|
1258
|
+
- HTTP: `POST /api/v1/forms/unidentified/groups/sync`
|
|
1259
|
+
- operationId: `sync_unidentified_group_forms_unidentified_groups_sync_post` (also callable as `g8.api.call("sync_unidentified_group_forms_unidentified_groups_sync_post", input)`)
|
|
1260
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1261
|
+
- API-key scope: `forms:write`
|
|
1262
|
+
|
|
1263
|
+
Name one group of id-less submissions and fill a list with its leads.
|
|
1264
|
+
|
|
1265
|
+
Writes EVERY matching submission to `target_list_id` before answering;
|
|
1266
|
+
`submissions_synced` is the number actually written. Gated twice, as the
|
|
1267
|
+
app gates it.
|
|
1268
|
+
|
|
1269
|
+
**Input**
|
|
1270
|
+
|
|
1271
|
+
| Field | Type | Required | Description |
|
|
1272
|
+
|---|---|---|---|
|
|
1273
|
+
| `body` | `FormGroupSyncRequest` | yes | Request body; fields below. |
|
|
1274
|
+
|
|
1275
|
+
Body fields (`FormGroupSyncRequest`):
|
|
1276
|
+
|
|
1277
|
+
| Field | Type | Required | Description |
|
|
1278
|
+
|---|---|---|---|
|
|
1279
|
+
| `body.axis` | `"fields" \| "component" \| "page" \| "campaign" \| "source_attribute"` | yes | |
|
|
1280
|
+
| `body.group_id` | `string` | yes | min length 1, max length 200 |
|
|
1281
|
+
| `body.source_id` | `string` | yes | max length 500 |
|
|
1282
|
+
| `body.matcher` | `string` | no | The axis value this group covers. default `""`, max length 2000 |
|
|
1283
|
+
| `body.name` | `string` | no | default `""`, max length 200 |
|
|
1284
|
+
| `body.target_list_id` | `integer \| null` | no | min 1 |
|
|
1285
|
+
|
|
1286
|
+
**Returns** `ApiResponse_FormsAdminPayload_`: the envelope `{ data: FormsAdminPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1287
|
+
|
|
1288
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1289
|
+
|
|
1290
|
+
**Example**
|
|
1291
|
+
|
|
1292
|
+
```ts
|
|
1293
|
+
const result = await g8.api.forms.syncUnidentifiedGroup({ body: { axis: "fields", group_id: "id", source_id: "id" } });
|
|
1294
|
+
```
|
|
1295
|
+
|
|
1296
|
+
---
|
|
1297
|
+
|
|
1298
|
+
<a id="op-testformroute"></a>
|
|
1299
|
+
|
|
1300
|
+
### `g8.api.forms.testFormRoute(input)`
|
|
1301
|
+
|
|
1302
|
+
**Test Form Route**
|
|
1303
|
+
|
|
1304
|
+
- HTTP: `POST /api/v1/forms/{form_key}/route/test`
|
|
1305
|
+
- operationId: `test_form_route_forms__form_key__route_test_post` (also callable as `g8.api.call("test_form_route_forms__form_key__route_test_post", input)`)
|
|
1306
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1307
|
+
- API-key scope: `forms:write`
|
|
1308
|
+
|
|
1309
|
+
Run a test submission through the route and report where it landed.
|
|
1310
|
+
|
|
1311
|
+
Gated on LISTS WRITE, not read, because it exercises the delivery path.
|
|
1312
|
+
|
|
1313
|
+
**Input**
|
|
1314
|
+
|
|
1315
|
+
| Field | Type | Required | Description |
|
|
1316
|
+
|---|---|---|---|
|
|
1317
|
+
| `path.form_key` | `string` | yes | Form key. |
|
|
1318
|
+
| `body` | `FormSourceScopedRequest` | yes | Request body; fields below. |
|
|
1319
|
+
|
|
1320
|
+
Body fields (`FormSourceScopedRequest`):
|
|
1321
|
+
|
|
1322
|
+
| Field | Type | Required | Description |
|
|
1323
|
+
|---|---|---|---|
|
|
1324
|
+
| `body.source_id` | `string` | yes | min length 1, max length 500 |
|
|
1325
|
+
|
|
1326
|
+
**Returns** `ApiResponse_FormPayload_`: the envelope `{ data: FormPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1327
|
+
|
|
1328
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1329
|
+
|
|
1330
|
+
**Example**
|
|
1331
|
+
|
|
1332
|
+
```ts
|
|
1333
|
+
const result = await g8.api.forms.testFormRoute({ path: { form_key: "example" }, body: { source_id: "id" } });
|
|
1334
|
+
```
|
|
1335
|
+
|
|
1336
|
+
---
|
|
1337
|
+
|
|
1338
|
+
<a id="op-updateformgroup"></a>
|
|
1339
|
+
|
|
1340
|
+
### `g8.api.forms.updateFormGroup(input)`
|
|
1341
|
+
|
|
1342
|
+
**Update Form Group**
|
|
1343
|
+
|
|
1344
|
+
- HTTP: `PATCH /api/v1/forms/groups/{group_id}`
|
|
1345
|
+
- operationId: `update_form_group_forms_groups__group_id__patch` (also callable as `g8.api.call("update_form_group_forms_groups__group_id__patch", input)`)
|
|
1346
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1347
|
+
- API-key scope: `forms:write`
|
|
1348
|
+
|
|
1349
|
+
Rename or re-type a group. Membership changes through the member routes.
|
|
1350
|
+
|
|
1351
|
+
**Input**
|
|
1352
|
+
|
|
1353
|
+
| Field | Type | Required | Description |
|
|
1354
|
+
|---|---|---|---|
|
|
1355
|
+
| `path.group_id` | `string` | yes | The group's id. |
|
|
1356
|
+
| `body` | `FormGroupPatchRequest` | yes | Request body; fields below. |
|
|
1357
|
+
|
|
1358
|
+
Body fields (`FormGroupPatchRequest`):
|
|
1359
|
+
|
|
1360
|
+
| Field | Type | Required | Description |
|
|
1361
|
+
|---|---|---|---|
|
|
1362
|
+
| `body.form_type` | `"lead" \| "newsletter" \| "meeting" \| "contact" \| "download" \| "other" \| null` | no | |
|
|
1363
|
+
| `body.name` | `string \| null` | no | min length 1, max length 200 |
|
|
1364
|
+
|
|
1365
|
+
**Returns** `ApiResponse_FormsAdminPayload_`: the envelope `{ data: FormsAdminPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1366
|
+
|
|
1367
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1368
|
+
|
|
1369
|
+
**Example**
|
|
1370
|
+
|
|
1371
|
+
```ts
|
|
1372
|
+
const result = await g8.api.forms.updateFormGroup({ path: { group_id: "id" }, body: {} });
|
|
1373
|
+
```
|
|
1374
|
+
|
|
1375
|
+
---
|
|
1376
|
+
|
|
1377
|
+
<a id="op-updateformregistry"></a>
|
|
1378
|
+
|
|
1379
|
+
### `g8.api.forms.updateFormRegistry(input)`
|
|
1380
|
+
|
|
1381
|
+
**Update Form Registry**
|
|
1382
|
+
|
|
1383
|
+
- HTTP: `PATCH /api/v1/forms/{form_key}`
|
|
1384
|
+
- operationId: `update_form_registry_forms__form_key__patch` (also callable as `g8.api.call("update_form_registry_forms__form_key__patch", input)`)
|
|
1385
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1386
|
+
- API-key scope: `forms:write`
|
|
1387
|
+
|
|
1388
|
+
Rename a form, reassign its owner, or archive it.
|
|
1389
|
+
|
|
1390
|
+
**Input**
|
|
1391
|
+
|
|
1392
|
+
| Field | Type | Required | Description |
|
|
1393
|
+
|---|---|---|---|
|
|
1394
|
+
| `path.form_key` | `string` | yes | Form key. |
|
|
1395
|
+
| `body` | `FormRegistryPatchRequest` | yes | Request body; fields below. |
|
|
1396
|
+
|
|
1397
|
+
Body fields (`FormRegistryPatchRequest`):
|
|
1398
|
+
|
|
1399
|
+
| Field | Type | Required | Description |
|
|
1400
|
+
|---|---|---|---|
|
|
1401
|
+
| `body.source_id` | `string` | yes | Which INSTALLED SOURCE of this form. A form key can be present on more than one source, and every operation on this surface is scoped to one - omitting it would silently act on whichever the backend picked. min length 1, max length 500 |
|
|
1402
|
+
| `body.archived` | `boolean \| null` | no | Archive or unarchive. Omit to leave unchanged. |
|
|
1403
|
+
| `body.display_name` | `string \| null` | no | min length 1, max length 200 |
|
|
1404
|
+
| `body.owner_id` | `string \| null` | no | max length 200 |
|
|
1405
|
+
|
|
1406
|
+
**Returns** `ApiResponse_FormPayload_`: the envelope `{ data: FormPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1407
|
+
|
|
1408
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1409
|
+
|
|
1410
|
+
**Example**
|
|
1411
|
+
|
|
1412
|
+
```ts
|
|
1413
|
+
const result = await g8.api.forms.updateFormRegistry({ path: { form_key: "example" }, body: { source_id: "id" } });
|
|
1414
|
+
```
|
|
1415
|
+
|
|
1416
|
+
---
|
|
1417
|
+
|
|
1418
|
+
<a id="op-updatesiteauditfinding"></a>
|
|
1419
|
+
|
|
1420
|
+
### `g8.api.forms.updateSiteAuditFinding(input)`
|
|
1421
|
+
|
|
1422
|
+
**Update Site Audit Finding**
|
|
1423
|
+
|
|
1424
|
+
- HTTP: `PATCH /api/v1/forms/site-audit/findings/{finding_id}`
|
|
1425
|
+
- operationId: `update_site_audit_finding_forms_site_audit_findings__finding_id__patch` (also callable as `g8.api.call("update_site_audit_finding_forms_site_audit_findings__finding_id__patch", input)`)
|
|
1426
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1427
|
+
- API-key scope: `forms:write`
|
|
1428
|
+
|
|
1429
|
+
Triage one finding. `ignored` keeps it out of future reports without resolving it.
|
|
1430
|
+
|
|
1431
|
+
**Input**
|
|
1432
|
+
|
|
1433
|
+
| Field | Type | Required | Description |
|
|
1434
|
+
|---|---|---|---|
|
|
1435
|
+
| `path.finding_id` | `string` | yes | The finding's id. |
|
|
1436
|
+
| `body` | `FormSiteAuditStatusRequest` | yes | Request body; fields below. |
|
|
1437
|
+
|
|
1438
|
+
Body fields (`FormSiteAuditStatusRequest`):
|
|
1439
|
+
|
|
1440
|
+
| Field | Type | Required | Description |
|
|
1441
|
+
|---|---|---|---|
|
|
1442
|
+
| `body.status` | `"open" \| "acknowledged" \| "ignored" \| "resolved"` | yes | |
|
|
1443
|
+
|
|
1444
|
+
**Returns** `ApiResponse_FormsAdminPayload_`: the envelope `{ data: FormsAdminPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1445
|
+
|
|
1446
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1447
|
+
|
|
1448
|
+
**Example**
|
|
1449
|
+
|
|
1450
|
+
```ts
|
|
1451
|
+
const result = await g8.api.forms.updateSiteAuditFinding({ path: { finding_id: "id" }, body: { status: "open" } });
|
|
1452
|
+
```
|
|
1453
|
+
|
|
1454
|
+
---
|
|
1455
|
+
|
|
1456
|
+
## Referenced types
|
|
1457
|
+
|
|
1458
|
+
Named types that appear in the tables above. Full TypeScript definitions: `G8Contract.<Name>` (`import type { G8Contract } from "@graph8/sdk"`).
|
|
1459
|
+
|
|
1460
|
+
<a id="type-formfieldmapping"></a>
|
|
1461
|
+
|
|
1462
|
+
### `FormFieldMapping`
|
|
1463
|
+
|
|
1464
|
+
One submitted field and the contact field it lands in. Mirrors `MappedFieldName`.
|
|
1465
|
+
|
|
1466
|
+
| Field | Type | Required | Description |
|
|
1467
|
+
|---|---|---|---|
|
|
1468
|
+
| `source_field` | `string` | yes | Name of the submitted form field. |
|
|
1469
|
+
| `target_field` | `string` | yes | Contact field it is written to. |
|
|
1470
|
+
| `dynamic_column_id` | `integer \| null` | no | Id of that dynamic column. |
|
|
1471
|
+
| `is_new_column` | `boolean` | no | Whether `target_field` is a dynamic column created by this mapping. default `false` |
|
|
1472
|
+
| `new_column_name` | `string \| null` | no | Display name of that dynamic column. |
|
|
1473
|
+
| `static_value` | `string \| null` | no | Constant written to `target_field` instead of reading a submitted field. |
|
|
1474
|
+
|
|
1475
|
+
<a id="type-formgroupmemberref"></a>
|
|
1476
|
+
|
|
1477
|
+
### `FormGroupMemberRef`
|
|
1478
|
+
|
|
1479
|
+
One inventory row in a curated group. Mirrors `GroupMemberRefRequest`.
|
|
1480
|
+
|
|
1481
|
+
| Field | Type | Required | Description |
|
|
1482
|
+
|---|---|---|---|
|
|
1483
|
+
| `form_key` | `string` | yes | min length 1, max length 500 |
|
|
1484
|
+
| `source_id` | `string` | yes | Write key, or its bare key id. min length 1, max length 500 |
|
|
1485
|
+
|
|
1486
|
+
<a id="type-forminventoryfilters"></a>
|
|
1487
|
+
|
|
1488
|
+
### `FormInventoryFilters`
|
|
1489
|
+
|
|
1490
|
+
The inventory filter set a saved view stores. Mirrors `PaginationRequest`.
|
|
1491
|
+
|
|
1492
|
+
| Field | Type | Required | Description |
|
|
1493
|
+
|---|---|---|---|
|
|
1494
|
+
| `activity_end` | `string (date-time) \| null` | no | |
|
|
1495
|
+
| `activity_start` | `string (date-time) \| null` | no | |
|
|
1496
|
+
| `capture_health` | `"healthy" \| "no_data" \| null` | no | |
|
|
1497
|
+
| `delivery_state` | `"active" \| "paused" \| "failed" \| "not_configured" \| null` | no | |
|
|
1498
|
+
| `destination_list_id` | `integer \| null` | no | min 1 |
|
|
1499
|
+
| `has_failures` | `boolean \| null` | no | |
|
|
1500
|
+
| `has_new_fields` | `boolean \| null` | no | |
|
|
1501
|
+
| `identity_quality` | `"verified" \| "variant" \| "collision" \| "historic_uncertain" \| null` | no | |
|
|
1502
|
+
| `mapping_state` | `"mapped" \| "unmapped" \| null` | no | |
|
|
1503
|
+
| `owner_id` | `string \| null` | no | max length 200 |
|
|
1504
|
+
| `page` | `integer` | no | default `1`, min 1 |
|
|
1505
|
+
| `per_page` | `integer` | no | default `20`, min 1 |
|
|
1506
|
+
| `saved_view` | `"live" \| "needs_setup" \| "failing" \| "ignored" \| "healthy" \| "failures" \| "new_fields" \| "no_recent_submissions" \| … \| null` | no | |
|
|
1507
|
+
| `search` | `string \| null` | no | max length 200 |
|
|
1508
|
+
| `sort_field` | `"submissions_30d" \| "total_submissions" \| "latest_submitted_at" \| "form_tag_id" \| null` | no | |
|
|
1509
|
+
| `sort_order` | `"asc" \| "desc" \| null` | no | |
|
|
1510
|
+
| `source_id` | `string \| null` | no | max length 500 |
|
|
1511
|
+
| `write_key` | `string \| null` | no | |
|
|
1512
|
+
|
|
1513
|
+
<a id="type-formsubmissioncondition"></a>
|
|
1514
|
+
|
|
1515
|
+
### `FormSubmissionCondition`
|
|
1516
|
+
|
|
1517
|
+
One filter over a form's submissions. Mirrors the app's `ConditionRequest`.
|
|
1518
|
+
|
|
1519
|
+
| Field | Type | Required | Description |
|
|
1520
|
+
|---|---|---|---|
|
|
1521
|
+
| `field` | `string` | yes | Submitted field name, or a submission attribute. |
|
|
1522
|
+
| `operator` | `string` | yes | Comparison operator, in the app's filter grammar. |
|
|
1523
|
+
| `value` | `unknown` | yes | Value compared against. |
|
|
1524
|
+
| `value_to` | `unknown` | no | Upper bound, for range operators. |
|
|
1525
|
+
|
|
1526
|
+
<a id="type-formsummary"></a>
|
|
1527
|
+
|
|
1528
|
+
### `FormSummary`
|
|
1529
|
+
|
|
1530
|
+
One lead-capture form as returned by the list/search endpoint.
|
|
1531
|
+
|
|
1532
|
+
| Field | Type | Required | Description |
|
|
1533
|
+
|---|---|---|---|
|
|
1534
|
+
| `id` | `string` | yes | The form's HTML tag id (or the id-less group key). |
|
|
1535
|
+
| `display_name` | `string \| null` | no | Human-friendly name for the form. |
|
|
1536
|
+
| `form_key` | `string \| null` | no | Alias for id; the addressable key for detail lookups. |
|
|
1537
|
+
| `latest_submitted_at` | `string (date-time) \| null` | no | Most recent submission timestamp. |
|
|
1538
|
+
| `page_url` | `string \| null` | no | URL of a page where the form was submitted. |
|
|
1539
|
+
| `source_id` | `string \| null` | no | Write key / site the form was submitted from. |
|
|
1540
|
+
| `target_list_id` | `integer \| null` | no | Destination list id, if the form is routed. |
|
|
1541
|
+
| `target_list_name` | `string \| null` | no | Destination list name, if the form is routed. |
|
|
1542
|
+
| `total_submissions` | `integer` | no | Total submissions received for this form. default `0` |
|