@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,4884 @@
|
|
|
1
|
+
<!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
|
|
2
|
+
|
|
3
|
+
# `g8.api.workbench`: Workbench
|
|
4
|
+
|
|
5
|
+
107 operations (41 read, 30 write, 12 destructive, 21 billable, 3 external).
|
|
6
|
+
|
|
7
|
+
No hand-written client covers this area. Call it through `g8.api.workbench.*` 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: [workbench.d.ts](workbench.d.ts).
|
|
20
|
+
|
|
21
|
+
## Operations
|
|
22
|
+
|
|
23
|
+
| Call | HTTP | Tier | Scope | Summary |
|
|
24
|
+
|---|---|---|---|---|
|
|
25
|
+
| [`addWorkbenchColumn`](#op-addworkbenchcolumn) | `POST /api/v1/workbench/tables/{table_id}/columns` | write | `lists:write` | Add Workbench Column |
|
|
26
|
+
| [`addWorkbenchRow`](#op-addworkbenchrow) | `POST /api/v1/workbench/tables/{table_id}/rows` | write | `lists:write` | Add Workbench Row |
|
|
27
|
+
| [`bulkDeleteWorkbenchRows`](#op-bulkdeleteworkbenchrows) | `POST /api/v1/workbench/tables/{table_id}/rows/bulk-delete` | destructive | `lists:delete` | Bulk Delete Workbench Rows |
|
|
28
|
+
| [`bulkExtractWorkbenchColumns`](#op-bulkextractworkbenchcolumns) | `POST /api/v1/workbench/tables/{table_id}/columns/bulk-extract` | write | `lists:write` | Bulk Extract Workbench Columns |
|
|
29
|
+
| [`checkWorkbenchScraperToken`](#op-checkworkbenchscrapertoken) | `GET /api/v1/workbench/scraper/providers/{provider}/check-token` | read | `lists:read` | Check Workbench Scraper Token |
|
|
30
|
+
| [`computeWorkbenchFormula`](#op-computeworkbenchformula) | `POST /api/v1/workbench/tables/{table_id}/columns/{col_id}/compute` | write | `lists:write` | Compute Workbench Formula |
|
|
31
|
+
| [`configureWorkbenchAi`](#op-configureworkbenchai) | `POST /api/v1/workbench/tables/{table_id}/ai/configure` | write | `lists:write` | Configure Workbench Ai |
|
|
32
|
+
| [`configureWorkbenchColumnSource`](#op-configureworkbenchcolumnsource) | `POST /api/v1/workbench/tables/{table_id}/columns/{col_id}/sources` | write | `lists:write` | Configure Workbench Column Source |
|
|
33
|
+
| [`configureWorkbenchFindPeople`](#op-configureworkbenchfindpeople) | `POST /api/v1/workbench/tables/{table_id}/find-people/configure` | billable | `lists:run` | Configure Workbench Find People |
|
|
34
|
+
| [`createWorkbenchAiGroup`](#op-createworkbenchaigroup) | `POST /api/v1/workbench/tables/{table_id}/ai/groups/config` | write | `lists:write` | Create Workbench Ai Group |
|
|
35
|
+
| [`createWorkbenchBindings`](#op-createworkbenchbindings) | `POST /api/v1/workbench-bindings` | write | `lists:write` | Create Workbench Bindings |
|
|
36
|
+
| [`createWorkbenchConnection`](#op-createworkbenchconnection) | `POST /api/v1/workbench/tables/{table_id}/connections` | write | `lists:write` | Create Workbench Connection |
|
|
37
|
+
| [`createWorkbenchFormulaColumns`](#op-createworkbenchformulacolumns) | `POST /api/v1/workbench/tables/{table_id}/formula-columns` | write | `lists:write` | Create Workbench Formula Columns |
|
|
38
|
+
| [`createWorkbenchPipeline`](#op-createworkbenchpipeline) | `POST /api/v1/workbench/tables/{table_id}/pipelines` | billable | `lists:run` | Create Workbench Pipeline |
|
|
39
|
+
| [`createWorkbenchTable`](#op-createworkbenchtable) | `POST /api/v1/workbench/tables` | write | `lists:write` | Create Workbench Table |
|
|
40
|
+
| [`createWorkbenchTrigger`](#op-createworkbenchtrigger) | `POST /api/v1/workbench/tables/{table_id}/triggers` | billable | `lists:run` | Create Workbench Trigger |
|
|
41
|
+
| [`deleteScraperProviderConnection`](#op-deletescraperproviderconnection) | `DELETE /api/v1/workbench/scraper/providers/{provider}/connection` | destructive | `lists:delete` | Delete Scraper Provider Connection |
|
|
42
|
+
| [`deleteWorkbenchAiGroup`](#op-deleteworkbenchaigroup) | `DELETE /api/v1/workbench/tables/{table_id}/ai/groups/{group_id}` | destructive | `lists:delete` | Delete Workbench Ai Group |
|
|
43
|
+
| [`deleteWorkbenchBinding`](#op-deleteworkbenchbinding) | `DELETE /api/v1/workbench-bindings/{binding_id}` | destructive | `lists:delete` | Delete Workbench Binding |
|
|
44
|
+
| [`deleteWorkbenchColumn`](#op-deleteworkbenchcolumn) | `DELETE /api/v1/workbench/tables/{table_id}/columns/{column_id}` | destructive | `lists:delete` | Delete Workbench Column |
|
|
45
|
+
| [`deleteWorkbenchConnection`](#op-deleteworkbenchconnection) | `DELETE /api/v1/workbench/tables/{table_id}/connections/{connection_id}` | destructive | `lists:delete` | Delete Workbench Connection |
|
|
46
|
+
| [`deleteWorkbenchFindPeopleConfig`](#op-deleteworkbenchfindpeopleconfig) | `DELETE /api/v1/workbench/tables/{table_id}/find-people/{config_id}` | destructive | `lists:delete` | Delete Workbench Find People Config |
|
|
47
|
+
| [`deleteWorkbenchPipeline`](#op-deleteworkbenchpipeline) | `DELETE /api/v1/workbench/tables/{table_id}/pipelines/{pipeline_id}` | destructive | `lists:delete` | Delete Workbench Pipeline |
|
|
48
|
+
| [`deleteWorkbenchSchedule`](#op-deleteworkbenchschedule) | `DELETE /api/v1/workbench/tables/{table_id}/schedule` | destructive | `lists:delete` | Delete Workbench Schedule |
|
|
49
|
+
| [`deleteWorkbenchTable`](#op-deleteworkbenchtable) | `DELETE /api/v1/workbench/tables/{table_id}` | destructive | `lists:delete` | Delete Workbench Table |
|
|
50
|
+
| [`deleteWorkbenchTrigger`](#op-deleteworkbenchtrigger) | `DELETE /api/v1/workbench/tables/{table_id}/triggers/{trigger_id}` | destructive | `lists:delete` | Delete Workbench Trigger |
|
|
51
|
+
| [`discoverWorkbenchFields`](#op-discoverworkbenchfields) | `POST /api/v1/workbench/tables/{table_id}/discover-fields` | write | `lists:write` | Discover Workbench Fields |
|
|
52
|
+
| [`estimateWorkbenchProviderScraperCredits`](#op-estimateworkbenchproviderscrapercredits) | `GET /api/v1/workbench/scraper/providers/{provider}/credit-estimate` | read | `lists:read` | Estimate Workbench Provider Scraper Credits |
|
|
53
|
+
| [`estimateWorkbenchScraperCredits`](#op-estimateworkbenchscrapercredits) | `GET /api/v1/workbench/scraper/credit-estimate` | read | `lists:read` | Estimate Workbench Scraper Credits |
|
|
54
|
+
| [`expandWorkbenchArray`](#op-expandworkbencharray) | `POST /api/v1/workbench/tables/{table_id}/expand-array` | write | `lists:write` | Expand Workbench Array |
|
|
55
|
+
| [`exportWorkbenchAiFindPeople`](#op-exportworkbenchaifindpeople) | `POST /api/v1/workbench/tables/{table_id}/ai/groups/{group_id}/find-people/export` | write | `lists:write` | Export Workbench Ai Find People |
|
|
56
|
+
| [`exportWorkbenchTable`](#op-exportworkbenchtable) | `POST /api/v1/workbench/tables/{table_id}/export` | write | `lists:write` | Export Workbench Table |
|
|
57
|
+
| [`extractWorkbenchColumn`](#op-extractworkbenchcolumn) | `POST /api/v1/workbench/tables/{table_id}/columns/extract` | write | `lists:write` | Extract Workbench Column |
|
|
58
|
+
| [`generateWorkbenchPrompt`](#op-generateworkbenchprompt) | `POST /api/v1/workbench/tables/{table_id}/ai/generate-prompt` | billable | `lists:run` | Generate Workbench Prompt |
|
|
59
|
+
| [`getScraperProviderConnection`](#op-getscraperproviderconnection) | `GET /api/v1/workbench/scraper/providers/{provider}/connection` | read | `lists:read` | Get Scraper Provider Connection |
|
|
60
|
+
| [`getWorkbenchAiFindPeopleRow`](#op-getworkbenchaifindpeoplerow) | `GET /api/v1/workbench/tables/{table_id}/ai/groups/{group_id}/find-people/rows/{source_row_id}` | read | `lists:read` | Get Workbench Ai Find People Row |
|
|
61
|
+
| [`getWorkbenchAiGroup`](#op-getworkbenchaigroup) | `GET /api/v1/workbench/tables/{table_id}/ai/groups/{group_id}` | read | `lists:read` | Get Workbench Ai Group |
|
|
62
|
+
| [`getWorkbenchAnalytics`](#op-getworkbenchanalytics) | `GET /api/v1/workbench/tables/{table_id}/analytics` | read | `lists:read` | Get Workbench Analytics |
|
|
63
|
+
| [`getWorkbenchColumnAiConfig`](#op-getworkbenchcolumnaiconfig) | `GET /api/v1/workbench/tables/{table_id}/columns/{col_id}/ai-config` | read | `lists:read` | Get Workbench Column Ai Config |
|
|
64
|
+
| [`getWorkbenchHistory`](#op-getworkbenchhistory) | `GET /api/v1/workbench/tables/{table_id}/history` | read | `lists:read` | Get Workbench History |
|
|
65
|
+
| [`getWorkbenchLockedRowCount`](#op-getworkbenchlockedrowcount) | `GET /api/v1/workbench/tables/{table_id}/locked-row-count` | read | `lists:read` | Get Workbench Locked Row Count |
|
|
66
|
+
| [`getWorkbenchMappingSuggestion`](#op-getworkbenchmappingsuggestion) | `GET /api/v1/workbench/tables/{table_id}/suggest-mappings/{job_id}` | read | `lists:read` | Get Workbench Mapping Suggestion |
|
|
67
|
+
| [`getWorkbenchPipeline`](#op-getworkbenchpipeline) | `GET /api/v1/workbench/tables/{table_id}/pipelines/{pipeline_id}` | read | `lists:read` | Get Workbench Pipeline |
|
|
68
|
+
| [`getWorkbenchRow`](#op-getworkbenchrow) | `GET /api/v1/workbench/tables/{table_id}/rows/{row_id}` | read | `lists:read` | Get Workbench Row |
|
|
69
|
+
| [`getWorkbenchSchedule`](#op-getworkbenchschedule) | `GET /api/v1/workbench/tables/{table_id}/schedule` | read | `lists:read` | Get Workbench Schedule |
|
|
70
|
+
| [`getWorkbenchScraperRun`](#op-getworkbenchscraperrun) | `GET /api/v1/workbench/tables/{table_id}/scraper/runs/{run_id}` | read | `lists:read` | Get Workbench Scraper Run |
|
|
71
|
+
| [`getWorkbenchTable`](#op-getworkbenchtable) | `GET /api/v1/workbench/tables/{table_id}` | read | `lists:read` | Get Workbench Table |
|
|
72
|
+
| [`getWorkbenchWaterfall`](#op-getworkbenchwaterfall) | `GET /api/v1/workbench/tables/{table_id}/waterfall/configs/{column_id}` | read | `lists:read` | Get Workbench Waterfall |
|
|
73
|
+
| [`importWorkbenchDatafile`](#op-importworkbenchdatafile) | `POST /api/v1/workbench/tables/{table_id}/import/datafile` | write | `lists:write` | Import Workbench Datafile |
|
|
74
|
+
| [`importWorkbenchFromCrm`](#op-importworkbenchfromcrm) | `POST /api/v1/workbench/tables/{table_id}/import/crm` | external | `lists:run` | Import Workbench From Crm |
|
|
75
|
+
| [`importWorkbenchFromSearch`](#op-importworkbenchfromsearch) | `POST /api/v1/workbench/tables/{table_id}/import/search` | billable | `lists:run` | Import Workbench From Search |
|
|
76
|
+
| [`listWorkbenchAiPresets`](#op-listworkbenchaipresets) | `GET /api/v1/workbench/ai-presets` | read | `lists:read` | List Workbench Ai Presets |
|
|
77
|
+
| [`listWorkbenchBindings`](#op-listworkbenchbindings) | `GET /api/v1/workbench-bindings` | read | `lists:read` | List Workbench Bindings |
|
|
78
|
+
| [`listWorkbenchColumnSources`](#op-listworkbenchcolumnsources) | `GET /api/v1/workbench/tables/{table_id}/columns/{col_id}/sources` | read | `lists:read` | List Workbench Column Sources |
|
|
79
|
+
| [`listWorkbenchColumns`](#op-listworkbenchcolumns) | `GET /api/v1/workbench/tables/{table_id}/columns` | read | `lists:read` | List Workbench Columns |
|
|
80
|
+
| [`listWorkbenchConnections`](#op-listworkbenchconnections) | `GET /api/v1/workbench/tables/{table_id}/connections` | read | `lists:read` | List Workbench Connections |
|
|
81
|
+
| [`listWorkbenchEnrichmentConfigs`](#op-listworkbenchenrichmentconfigs) | `GET /api/v1/workbench/tables/{table_id}/enrichment-configs` | read | `lists:read` | List Workbench Enrichment Configs |
|
|
82
|
+
| [`listWorkbenchFindPeopleConfigs`](#op-listworkbenchfindpeopleconfigs) | `GET /api/v1/workbench/tables/{table_id}/find-people/configs` | read | `lists:read` | List Workbench Find People Configs |
|
|
83
|
+
| [`listWorkbenchFindPeopleContacts`](#op-listworkbenchfindpeoplecontacts) | `GET /api/v1/workbench/tables/{table_id}/find-people/{config_id}/contacts` | read | `lists:read` | List Workbench Find People Contacts |
|
|
84
|
+
| [`listWorkbenchPipelines`](#op-listworkbenchpipelines) | `GET /api/v1/workbench/tables/{table_id}/pipelines` | read | `lists:read` | List Workbench Pipelines |
|
|
85
|
+
| [`listWorkbenchRows`](#op-listworkbenchrows) | `GET /api/v1/workbench/tables/{table_id}/rows` | read | `lists:read` | List Workbench Rows |
|
|
86
|
+
| [`listWorkbenchScraperPresets`](#op-listworkbenchscraperpresets) | `GET /api/v1/workbench/scraper/presets` | read | `lists:read` | List Workbench Scraper Presets |
|
|
87
|
+
| [`listWorkbenchScraperRuns`](#op-listworkbenchscraperruns) | `GET /api/v1/workbench/tables/{table_id}/scraper/runs` | read | `lists:read` | List Workbench Scraper Runs |
|
|
88
|
+
| [`listWorkbenchSourceCredentials`](#op-listworkbenchsourcecredentials) | `GET /api/v1/workbench/source-credentials` | read | `lists:read` | List Workbench Source Credentials |
|
|
89
|
+
| [`listWorkbenchTableAiPresets`](#op-listworkbenchtableaipresets) | `GET /api/v1/workbench/tables/{table_id}/ai-presets` | read | `lists:read` | List Workbench Table Ai Presets |
|
|
90
|
+
| [`listWorkbenchTables`](#op-listworkbenchtables) | `GET /api/v1/workbench/tables` | read | `lists:read` | List Workbench Tables |
|
|
91
|
+
| [`listWorkbenchTargetFields`](#op-listworkbenchtargetfields) | `GET /api/v1/workbench/target-fields` | read | `lists:read` | List Workbench Target Fields |
|
|
92
|
+
| [`listWorkbenchTriggers`](#op-listworkbenchtriggers) | `GET /api/v1/workbench/tables/{table_id}/triggers` | read | `lists:read` | List Workbench Triggers |
|
|
93
|
+
| [`mapWorkbenchColumn`](#op-mapworkbenchcolumn) | `PUT /api/v1/workbench/tables/{table_id}/columns/{column_id}/mapping` | write | `lists:write` | Map Workbench Column |
|
|
94
|
+
| [`migrateWorkbenchLegacyAiConfig`](#op-migrateworkbenchlegacyaiconfig) | `POST /api/v1/workbench/tables/{table_id}/ai/migrate-legacy` | write | `lists:write` | Migrate Workbench Legacy Ai Config |
|
|
95
|
+
| [`pasteImportWorkbenchRows`](#op-pasteimportworkbenchrows) | `POST /api/v1/workbench/tables/{table_id}/import/paste` | write | `lists:write` | Paste Import Workbench Rows |
|
|
96
|
+
| [`previewWorkbenchAi`](#op-previewworkbenchai) | `POST /api/v1/workbench/tables/{table_id}/ai/preview` | billable | `lists:run` | Preview Workbench Ai |
|
|
97
|
+
| [`previewWorkbenchResearchImport`](#op-previewworkbenchresearchimport) | `POST /api/v1/workbench/tables/{table_id}/import/search/research/preview` | billable | `lists:run` | Preview Workbench Research Import |
|
|
98
|
+
| [`previewWorkbenchSearchImport`](#op-previewworkbenchsearchimport) | `POST /api/v1/workbench/tables/{table_id}/import/search/preview` | read | `lists:read` | Preview Workbench Search Import |
|
|
99
|
+
| [`queryWorkbenchRows`](#op-queryworkbenchrows) | `POST /api/v1/workbench/tables/{table_id}/rows/query` | read | `lists:read` | Query Workbench Rows |
|
|
100
|
+
| [`quoteWorkbenchAiRun`](#op-quoteworkbenchairun) | `POST /api/v1/workbench/tables/{table_id}/ai/validate-credits` | read | `lists:read` | Quote Workbench Ai Run |
|
|
101
|
+
| [`quoteWorkbenchFormulaGeneration`](#op-quoteworkbenchformulageneration) | `GET /api/v1/workbench/tables/{table_id}/formula-columns/generate-quote` | read | `lists:read` | Quote Workbench Formula Generation |
|
|
102
|
+
| [`quoteWorkbenchUnlock`](#op-quoteworkbenchunlock) | `POST /api/v1/workbench/tables/{table_id}/unlock-quote` | read | `lists:read` | Quote Workbench Unlock |
|
|
103
|
+
| [`quoteWorkbenchWaterfallRun`](#op-quoteworkbenchwaterfallrun) | `POST /api/v1/workbench/tables/{table_id}/waterfall/configs/{column_id}/validate-credits` | read | `lists:read` | Quote Workbench Waterfall Run |
|
|
104
|
+
| [`regenerateWorkbenchKey`](#op-regenerateworkbenchkey) | `POST /api/v1/workbench/tables/{table_id}/regenerate-key` | write | `lists:write` | Regenerate Workbench Key |
|
|
105
|
+
| [`reviewWorkbenchFindPeopleCandidates`](#op-reviewworkbenchfindpeoplecandidates) | `GET /api/v1/workbench/tables/{table_id}/ai/groups/{group_id}/find-people/review` | read | `lists:read` | Review Workbench Find People Candidates |
|
|
106
|
+
| [`revokeWorkbenchColumnSource`](#op-revokeworkbenchcolumnsource) | `DELETE /api/v1/workbench/tables/{table_id}/columns/{col_id}/sources/{source_type}` | destructive | `lists:delete` | Revoke Workbench Column Source |
|
|
107
|
+
| [`runWorkbenchAi`](#op-runworkbenchai) | `POST /api/v1/workbench/tables/{table_id}/ai/run-all` | billable | `lists:run` | Run Workbench Ai |
|
|
108
|
+
| [`runWorkbenchAiGroup`](#op-runworkbenchaigroup) | `POST /api/v1/workbench/tables/{table_id}/ai/groups/{group_id}/run` | billable | `lists:run` | Run Workbench Ai Group |
|
|
109
|
+
| [`runWorkbenchColumnAi`](#op-runworkbenchcolumnai) | `POST /api/v1/workbench/tables/{table_id}/columns/{col_id}/ai/run` | billable | `lists:run` | Run Workbench Column Ai |
|
|
110
|
+
| [`runWorkbenchDefaultAi`](#op-runworkbenchdefaultai) | `POST /api/v1/workbench/tables/{table_id}/ai/run` | billable | `lists:run` | Run Workbench Default Ai |
|
|
111
|
+
| [`runWorkbenchFindPeople`](#op-runworkbenchfindpeople) | `POST /api/v1/workbench/tables/{table_id}/find-people/{config_id}/run` | billable | `lists:run` | Run Workbench Find People |
|
|
112
|
+
| [`runWorkbenchProviderScraper`](#op-runworkbenchproviderscraper) | `POST /api/v1/workbench/tables/{table_id}/scraper/providers/{provider}/runs` | billable | `lists:run` | Run Workbench Provider Scraper |
|
|
113
|
+
| [`runWorkbenchScraper`](#op-runworkbenchscraper) | `POST /api/v1/workbench/tables/{table_id}/scraper/runs` | billable | `lists:run` | Run Workbench Scraper |
|
|
114
|
+
| [`runWorkbenchWaterfall`](#op-runworkbenchwaterfall) | `POST /api/v1/workbench/tables/{table_id}/waterfall/configs/{column_id}/run` | billable | `lists:run` | Run Workbench Waterfall |
|
|
115
|
+
| [`saveScraperProviderConnection`](#op-savescraperproviderconnection) | `PUT /api/v1/workbench/scraper/providers/{provider}/connection` | write | `lists:write` | Save Scraper Provider Connection |
|
|
116
|
+
| [`saveWorkbenchColumnAiConfig`](#op-saveworkbenchcolumnaiconfig) | `PUT /api/v1/workbench/tables/{table_id}/columns/{col_id}/ai-config` | write | `lists:write` | Save Workbench Column Ai Config |
|
|
117
|
+
| [`saveWorkbenchWaterfall`](#op-saveworkbenchwaterfall) | `POST /api/v1/workbench/tables/{table_id}/waterfall/configs` | write | `lists:write` | Save Workbench Waterfall |
|
|
118
|
+
| [`sendWorkbenchRowsToSequence`](#op-sendworkbenchrowstosequence) | `POST /api/v1/workbench/tables/{table_id}/send-to-sequence` | external | `lists:run` | Send Workbench Rows To Sequence |
|
|
119
|
+
| [`setWorkbenchAutoEnrich`](#op-setworkbenchautoenrich) | `PUT /api/v1/workbench/tables/{table_id}/auto-enrich` | billable | `lists:run` | Set Workbench Auto Enrich |
|
|
120
|
+
| [`setWorkbenchSchedule`](#op-setworkbenchschedule) | `PUT /api/v1/workbench/tables/{table_id}/schedule` | billable | `lists:run` | Set Workbench Schedule |
|
|
121
|
+
| [`skipWorkbenchFindPeopleCandidates`](#op-skipworkbenchfindpeoplecandidates) | `POST /api/v1/workbench/tables/{table_id}/ai/groups/{group_id}/find-people/skip` | write | `lists:write` | Skip Workbench Find People Candidates |
|
|
122
|
+
| [`suggestWorkbenchMappings`](#op-suggestworkbenchmappings) | `POST /api/v1/workbench/tables/{table_id}/suggest-mappings` | billable | `lists:run` | Suggest Workbench Mappings |
|
|
123
|
+
| [`syncWorkbenchConnection`](#op-syncworkbenchconnection) | `POST /api/v1/workbench/tables/{table_id}/connections/{connection_id}/sync` | write | `lists:write` | Sync Workbench Connection |
|
|
124
|
+
| [`testScraperProviderConnection`](#op-testscraperproviderconnection) | `POST /api/v1/workbench/scraper/providers/{provider}/connection/test` | external | `lists:run` | Test Scraper Provider Connection |
|
|
125
|
+
| [`unlockWorkbenchRows`](#op-unlockworkbenchrows) | `POST /api/v1/workbench/tables/{table_id}/unlock-rows` | billable | `lists:run` | Unlock Workbench Rows |
|
|
126
|
+
| [`updateWorkbenchAiGroup`](#op-updateworkbenchaigroup) | `PUT /api/v1/workbench/tables/{table_id}/ai/groups/{group_id}` | write | `lists:write` | Update Workbench Ai Group |
|
|
127
|
+
| [`updateWorkbenchPipeline`](#op-updateworkbenchpipeline) | `PUT /api/v1/workbench/tables/{table_id}/pipelines/{pipeline_id}` | billable | `lists:run` | Update Workbench Pipeline |
|
|
128
|
+
| [`updateWorkbenchRow`](#op-updateworkbenchrow) | `PATCH /api/v1/workbench/tables/{table_id}/rows/{row_id}` | write | `lists:write` | Update Workbench Row |
|
|
129
|
+
| [`updateWorkbenchTable`](#op-updateworkbenchtable) | `PUT /api/v1/workbench/tables/{table_id}` | write | `lists:write` | Update Workbench Table |
|
|
130
|
+
| [`updateWorkbenchTrigger`](#op-updateworkbenchtrigger) | `PUT /api/v1/workbench/tables/{table_id}/triggers/{trigger_id}` | billable | `lists:run` | Update Workbench Trigger |
|
|
131
|
+
| [`updateWorkbenchWaterfall`](#op-updateworkbenchwaterfall) | `PUT /api/v1/workbench/tables/{table_id}/waterfall/configs/{column_id}` | write | `lists:write` | Update Workbench Waterfall |
|
|
132
|
+
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
<a id="op-addworkbenchcolumn"></a>
|
|
136
|
+
|
|
137
|
+
### `g8.api.workbench.addWorkbenchColumn(input)`
|
|
138
|
+
|
|
139
|
+
**Add Workbench Column**
|
|
140
|
+
|
|
141
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/columns`
|
|
142
|
+
- operationId: `add_workbench_column_workbench_tables__table_id__columns_post` (also callable as `g8.api.call("add_workbench_column_workbench_tables__table_id__columns_post", input)`)
|
|
143
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
144
|
+
- API-key scope: `lists:write`
|
|
145
|
+
|
|
146
|
+
Add a column.
|
|
147
|
+
|
|
148
|
+
`name` is the machine name rows are keyed by and is constrained to
|
|
149
|
+
`^[a-z][a-z0-9_]*$`; `display_name` is free text. Getting those the wrong
|
|
150
|
+
way round produces a column nothing can address.
|
|
151
|
+
|
|
152
|
+
**Input**
|
|
153
|
+
|
|
154
|
+
| Field | Type | Required | Description |
|
|
155
|
+
|---|---|---|---|
|
|
156
|
+
| `path.table_id` | `string` | yes | Table id (UUID). |
|
|
157
|
+
| `body` | `WorkbenchColumnCreateRequest` | yes | Request body; fields below. |
|
|
158
|
+
|
|
159
|
+
Body fields (`WorkbenchColumnCreateRequest`):
|
|
160
|
+
|
|
161
|
+
| Field | Type | Required | Description |
|
|
162
|
+
|---|---|---|---|
|
|
163
|
+
| `body.display_name` | `string` | yes | min length 1, max length 255 |
|
|
164
|
+
| `body.name` | `string` | yes | Machine name: lowercase, starting with a letter. This is the key row data is addressed by, which is why it is constrained while `display_name` is not. min length 1, max length 255, pattern `^[a-z][a-z0-9_]*$` |
|
|
165
|
+
| `body.column_type` | `"data" \| "formula" \| "raw_json"` | no | default `"data"` |
|
|
166
|
+
| `body.data_type` | `"text" \| "number" \| "boolean" \| "json"` | no | default `"text"` |
|
|
167
|
+
| `body.field_path` | `string \| null` | no | Path into a raw_json source column. |
|
|
168
|
+
| `body.formula` | `string \| null` | no | Required for a formula column. |
|
|
169
|
+
| `body.source` | `string` | no | default `"manual"` |
|
|
170
|
+
| `body.source_column_id` | `integer \| null` | no | |
|
|
171
|
+
|
|
172
|
+
**Returns** `ApiResponse_dict_`: the envelope `{ data: Record<string, unknown>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
173
|
+
|
|
174
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
175
|
+
|
|
176
|
+
**Example**
|
|
177
|
+
|
|
178
|
+
```ts
|
|
179
|
+
const result = await g8.api.workbench.addWorkbenchColumn({
|
|
180
|
+
path: { table_id: "id" },
|
|
181
|
+
body: { display_name: "Example", name: "Example" },
|
|
182
|
+
});
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
<a id="op-addworkbenchrow"></a>
|
|
188
|
+
|
|
189
|
+
### `g8.api.workbench.addWorkbenchRow(input)`
|
|
190
|
+
|
|
191
|
+
**Add Workbench Row**
|
|
192
|
+
|
|
193
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/rows`
|
|
194
|
+
- operationId: `add_workbench_row_workbench_tables__table_id__rows_post` (also callable as `g8.api.call("add_workbench_row_workbench_tables__table_id__rows_post", input)`)
|
|
195
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
196
|
+
- API-key scope: `lists:write`
|
|
197
|
+
|
|
198
|
+
Add one row. `data` is keyed by column MACHINE name, not display name.
|
|
199
|
+
|
|
200
|
+
**Input**
|
|
201
|
+
|
|
202
|
+
| Field | Type | Required | Description |
|
|
203
|
+
|---|---|---|---|
|
|
204
|
+
| `path.table_id` | `string` | yes | Table id (UUID). |
|
|
205
|
+
| `body` | `WorkbenchRowCreateRequest` | yes | Request body; fields below. |
|
|
206
|
+
|
|
207
|
+
Body fields (`WorkbenchRowCreateRequest`):
|
|
208
|
+
|
|
209
|
+
| Field | Type | Required | Description |
|
|
210
|
+
|---|---|---|---|
|
|
211
|
+
| `body.data` | `Record<string, unknown>` | no | Column machine name -> value. |
|
|
212
|
+
| `body.raw_source_column_id` | `integer \| null` | no | |
|
|
213
|
+
|
|
214
|
+
**Returns** `ApiResponse_dict_`: the envelope `{ data: Record<string, unknown>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
215
|
+
|
|
216
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
217
|
+
|
|
218
|
+
**Example**
|
|
219
|
+
|
|
220
|
+
```ts
|
|
221
|
+
const result = await g8.api.workbench.addWorkbenchRow({ path: { table_id: "id" }, body: {} });
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
<a id="op-bulkdeleteworkbenchrows"></a>
|
|
227
|
+
|
|
228
|
+
### `g8.api.workbench.bulkDeleteWorkbenchRows(input)`
|
|
229
|
+
|
|
230
|
+
**Bulk Delete Workbench Rows**
|
|
231
|
+
|
|
232
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/rows/bulk-delete`
|
|
233
|
+
- operationId: `bulk_delete_workbench_rows_workbench_tables__table_id__rows_bulk_delete_post` (also callable as `g8.api.call("bulk_delete_workbench_rows_workbench_tables__table_id__rows_bulk_delete_post", input)`)
|
|
234
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
235
|
+
- API-key scope: `lists:delete`
|
|
236
|
+
|
|
237
|
+
Delete rows by id, or everything EXCEPT a set.
|
|
238
|
+
|
|
239
|
+
`select_all` must be sent explicitly to delete everything. An empty
|
|
240
|
+
selection is rejected rather than treated as a delete-all - the app's own
|
|
241
|
+
comment records why: "a client bug can never turn 'nothing selected' into
|
|
242
|
+
'delete the whole table'".
|
|
243
|
+
|
|
244
|
+
**Input**
|
|
245
|
+
|
|
246
|
+
| Field | Type | Required | Description |
|
|
247
|
+
|---|---|---|---|
|
|
248
|
+
| `path.table_id` | `string` | yes | Table id (UUID). |
|
|
249
|
+
| `body` | `WorkbenchRowsDeleteRequest` | yes | Request body; fields below. |
|
|
250
|
+
|
|
251
|
+
Body fields (`WorkbenchRowsDeleteRequest`):
|
|
252
|
+
|
|
253
|
+
| Field | Type | Required | Description |
|
|
254
|
+
|---|---|---|---|
|
|
255
|
+
| `body.exclude_row_ids` | `Array<integer> \| null` | no | max items 100000 |
|
|
256
|
+
| `body.row_ids` | `Array<integer> \| null` | no | max items 100000 |
|
|
257
|
+
| `body.select_all` | `boolean` | no | default `false` |
|
|
258
|
+
|
|
259
|
+
**Returns** `ApiResponse_dict_`: the envelope `{ data: Record<string, unknown>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
260
|
+
|
|
261
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
262
|
+
|
|
263
|
+
**Example**
|
|
264
|
+
|
|
265
|
+
```ts
|
|
266
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
267
|
+
const result = await g8.api.workbench.bulkDeleteWorkbenchRows({ path: { table_id: "id" }, body: {} });
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
<a id="op-bulkextractworkbenchcolumns"></a>
|
|
273
|
+
|
|
274
|
+
### `g8.api.workbench.bulkExtractWorkbenchColumns(input)`
|
|
275
|
+
|
|
276
|
+
**Bulk Extract Workbench Columns**
|
|
277
|
+
|
|
278
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/columns/bulk-extract`
|
|
279
|
+
- operationId: `bulk_extract_workbench_columns_workbench_tables__table_id__columns_bulk_extract_post` (also callable as `g8.api.call("bulk_extract_workbench_columns_workbench_tables__table_id__columns_bulk_extract_post", input)`)
|
|
280
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
281
|
+
- API-key scope: `lists:write`
|
|
282
|
+
|
|
283
|
+
Up to 50 extractions in one pass. FREE.
|
|
284
|
+
|
|
285
|
+
Read the per-extraction result rather than the HTTP status: one bad
|
|
286
|
+
`field_path` is reported, not fatal to the other 49.
|
|
287
|
+
|
|
288
|
+
**Input**
|
|
289
|
+
|
|
290
|
+
| Field | Type | Required | Description |
|
|
291
|
+
|---|---|---|---|
|
|
292
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
293
|
+
| `body` | `BulkExtractRequest` | yes | Request body; fields below. |
|
|
294
|
+
|
|
295
|
+
Body fields (`BulkExtractRequest`):
|
|
296
|
+
|
|
297
|
+
| Field | Type | Required | Description |
|
|
298
|
+
|---|---|---|---|
|
|
299
|
+
| `body.extractions` | `Array<ExtractColumnRequest>` | yes | min items 1, max items 50 |
|
|
300
|
+
|
|
301
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
302
|
+
|
|
303
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
304
|
+
|
|
305
|
+
**Example**
|
|
306
|
+
|
|
307
|
+
```ts
|
|
308
|
+
const result = await g8.api.workbench.bulkExtractWorkbenchColumns({
|
|
309
|
+
path: { table_id: "id" },
|
|
310
|
+
body: {
|
|
311
|
+
extractions: [
|
|
312
|
+
{
|
|
313
|
+
column_name: "Example",
|
|
314
|
+
display_name: "Example",
|
|
315
|
+
field_path: "example",
|
|
316
|
+
source_column_id: 123,
|
|
317
|
+
},
|
|
318
|
+
],
|
|
319
|
+
},
|
|
320
|
+
});
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
<a id="op-checkworkbenchscrapertoken"></a>
|
|
326
|
+
|
|
327
|
+
### `g8.api.workbench.checkWorkbenchScraperToken(input)`
|
|
328
|
+
|
|
329
|
+
**Check Workbench Scraper Token**
|
|
330
|
+
|
|
331
|
+
- HTTP: `GET /api/v1/workbench/scraper/providers/{provider}/check-token`
|
|
332
|
+
- operationId: `check_workbench_scraper_token_workbench_scraper_providers__provider__check_token_get` (also callable as `g8.api.call("check_workbench_scraper_token_workbench_scraper_providers__provider__check_token_get", input)`)
|
|
333
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
334
|
+
- API-key scope: `lists:read`
|
|
335
|
+
|
|
336
|
+
Is the organisation's scraper credential present and working? FREE.
|
|
337
|
+
|
|
338
|
+
A connectivity check against the provider, not a scrape. Call it before a
|
|
339
|
+
run so a missing credential fails here rather than halfway through.
|
|
340
|
+
|
|
341
|
+
`provider` is a path parameter rather than a literal segment, matching
|
|
342
|
+
`/crm-syncs/{provider}/status`. Today it resolves to the one connected
|
|
343
|
+
provider the app supports; the handler takes no provider argument, so the
|
|
344
|
+
value selects the route rather than being forwarded.
|
|
345
|
+
|
|
346
|
+
**Input**
|
|
347
|
+
|
|
348
|
+
| Field | Type | Required | Description |
|
|
349
|
+
|---|---|---|---|
|
|
350
|
+
| `path.provider` | `"apify"` | yes | Which connected scraper provider. |
|
|
351
|
+
|
|
352
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
353
|
+
|
|
354
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
355
|
+
|
|
356
|
+
**Example**
|
|
357
|
+
|
|
358
|
+
```ts
|
|
359
|
+
const result = await g8.api.workbench.checkWorkbenchScraperToken({ path: { provider: "apify" } });
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
---
|
|
363
|
+
|
|
364
|
+
<a id="op-computeworkbenchformula"></a>
|
|
365
|
+
|
|
366
|
+
### `g8.api.workbench.computeWorkbenchFormula(input)`
|
|
367
|
+
|
|
368
|
+
**Compute Workbench Formula**
|
|
369
|
+
|
|
370
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/columns/{col_id}/compute`
|
|
371
|
+
- operationId: `compute_workbench_formula_workbench_tables__table_id__columns__col_id__compute_post` (also callable as `g8.api.call("compute_workbench_formula_workbench_tables__table_id__columns__col_id__compute_post", input)`)
|
|
372
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
373
|
+
- API-key scope: `lists:write`
|
|
374
|
+
|
|
375
|
+
Evaluate a formula column across every row. FREE.
|
|
376
|
+
|
|
377
|
+
The formula runs locally - no model, no provider, no credit - so this is
|
|
378
|
+
safe to re-run as often as the inputs change. Per-row failures come back in
|
|
379
|
+
`errors` rather than failing the call.
|
|
380
|
+
|
|
381
|
+
**Input**
|
|
382
|
+
|
|
383
|
+
| Field | Type | Required | Description |
|
|
384
|
+
|---|---|---|---|
|
|
385
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
386
|
+
| `path.col_id` | `integer` | yes | The formula column to evaluate. |
|
|
387
|
+
|
|
388
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
389
|
+
|
|
390
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
391
|
+
|
|
392
|
+
**Example**
|
|
393
|
+
|
|
394
|
+
```ts
|
|
395
|
+
const result = await g8.api.workbench.computeWorkbenchFormula({ path: { table_id: "id", col_id: 123 } });
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
<a id="op-configureworkbenchai"></a>
|
|
401
|
+
|
|
402
|
+
### `g8.api.workbench.configureWorkbenchAi(input)`
|
|
403
|
+
|
|
404
|
+
**Configure Workbench Ai**
|
|
405
|
+
|
|
406
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/ai/configure`
|
|
407
|
+
- operationId: `configure_workbench_ai_workbench_tables__table_id__ai_configure_post` (also callable as `g8.api.call("configure_workbench_ai_workbench_tables__table_id__ai_configure_post", input)`)
|
|
408
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
409
|
+
- API-key scope: `lists:write`
|
|
410
|
+
|
|
411
|
+
Set the table-level AI pass. FREE - saving runs nothing.
|
|
412
|
+
|
|
413
|
+
`output_columns` decides which columns the pass writes into; they are
|
|
414
|
+
created if missing. `multi_row_output` lets one source row produce up to
|
|
415
|
+
`max_rows_per_source` rows, which multiplies what a later run costs.
|
|
416
|
+
|
|
417
|
+
**Input**
|
|
418
|
+
|
|
419
|
+
| Field | Type | Required | Description |
|
|
420
|
+
|---|---|---|---|
|
|
421
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
422
|
+
| `body` | `SaveStagingAIConfigRequest` | yes | Request body; fields below. |
|
|
423
|
+
|
|
424
|
+
Body fields (`SaveStagingAIConfigRequest`):
|
|
425
|
+
|
|
426
|
+
| Field | Type | Required | Description |
|
|
427
|
+
|---|---|---|---|
|
|
428
|
+
| `body.prompt` | `string` | yes | min length 1 |
|
|
429
|
+
| `body.entity_type` | `"contact" \| "company" \| null` | no | |
|
|
430
|
+
| `body.max_rows_per_source` | `integer` | no | default `50`, min 1, max 50 |
|
|
431
|
+
| `body.model` | `string` | no | default `"openai/gpt-4o"` |
|
|
432
|
+
| `body.multi_row_output` | `boolean` | no | default `false` |
|
|
433
|
+
| `body.output_columns` | `Array<OutputColumnDef>` | no | |
|
|
434
|
+
| `body.usecase` | `string` | no | default `"content_generation"` |
|
|
435
|
+
|
|
436
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
437
|
+
|
|
438
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
439
|
+
|
|
440
|
+
**Example**
|
|
441
|
+
|
|
442
|
+
```ts
|
|
443
|
+
const result = await g8.api.workbench.configureWorkbenchAi({ path: { table_id: "id" }, body: { prompt: "example" } });
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
---
|
|
447
|
+
|
|
448
|
+
<a id="op-configureworkbenchcolumnsource"></a>
|
|
449
|
+
|
|
450
|
+
### `g8.api.workbench.configureWorkbenchColumnSource(input)`
|
|
451
|
+
|
|
452
|
+
**Configure Workbench Column Source**
|
|
453
|
+
|
|
454
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/columns/{col_id}/sources`
|
|
455
|
+
- operationId: `configure_workbench_column_source_workbench_tables__table_id__columns__col_id__sources_post` (also callable as `g8.api.call("configure_workbench_column_source_workbench_tables__table_id__columns__col_id__sources_post", input)`)
|
|
456
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
457
|
+
- API-key scope: `lists:write`
|
|
458
|
+
|
|
459
|
+
Point an ingest source at a column. Free.
|
|
460
|
+
|
|
461
|
+
The credential this mints is shown ONCE, in this response. There is no
|
|
462
|
+
second read - `GET /workbench/source-credentials` lists metadata only.
|
|
463
|
+
|
|
464
|
+
`rotate_existing` is an explicit acknowledgement rather than a default:
|
|
465
|
+
rotating invalidates the current credential IMMEDIATELY, so anything
|
|
466
|
+
already posting with it stops at that instant.
|
|
467
|
+
|
|
468
|
+
**Input**
|
|
469
|
+
|
|
470
|
+
| Field | Type | Required | Description |
|
|
471
|
+
|---|---|---|---|
|
|
472
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
473
|
+
| `path.col_id` | `integer` | yes | Column id. |
|
|
474
|
+
| `body` | `ConfigureRawSourceRequest` | yes | Request body; fields below. |
|
|
475
|
+
|
|
476
|
+
Body fields (`ConfigureRawSourceRequest`):
|
|
477
|
+
|
|
478
|
+
| Field | Type | Required | Description |
|
|
479
|
+
|---|---|---|---|
|
|
480
|
+
| `body.config` | `Record<string, unknown> \| null` | no | Source-specific settings. |
|
|
481
|
+
| `body.expires_in_days` | `integer` | no | Credential lifetime, applied when one is first generated. default `90`, min 1, max 365 |
|
|
482
|
+
| `body.label` | `string \| null` | no | max length 255 |
|
|
483
|
+
| `body.rotate_existing` | `boolean` | no | Explicitly acknowledge that an existing credential is invalidated IMMEDIATELY. Anything already posting with the old key stops. default `false` |
|
|
484
|
+
| `body.source_type` | `"webhook" \| "legacy_webhook" \| "scraper_bot"` | no | Which kind of source feeds this column. default `"webhook"` |
|
|
485
|
+
|
|
486
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
487
|
+
|
|
488
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
489
|
+
|
|
490
|
+
**Example**
|
|
491
|
+
|
|
492
|
+
```ts
|
|
493
|
+
const result = await g8.api.workbench.configureWorkbenchColumnSource({ path: { table_id: "id", col_id: 123 }, body: {} });
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
---
|
|
497
|
+
|
|
498
|
+
<a id="op-configureworkbenchfindpeople"></a>
|
|
499
|
+
|
|
500
|
+
### `g8.api.workbench.configureWorkbenchFindPeople(input)`
|
|
501
|
+
|
|
502
|
+
**Configure Workbench Find People**
|
|
503
|
+
|
|
504
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/find-people/configure`
|
|
505
|
+
- operationId: `configure_workbench_find_people_workbench_tables__table_id__find_people_configure_post` (also callable as `g8.api.call("configure_workbench_find_people_workbench_tables__table_id__find_people_configure_post", input)`)
|
|
506
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
507
|
+
- API-key scope: `lists:run`
|
|
508
|
+
|
|
509
|
+
Search for contacts at each company row. SPENDS CREDITS.
|
|
510
|
+
|
|
511
|
+
This queries the licensed people corpus and writes the matches into a
|
|
512
|
+
contact table. The rows land LOCKED: the search is what this costs, and
|
|
513
|
+
revealing each contact's details then costs a further credit per row
|
|
514
|
+
through `unlock-rows`.
|
|
515
|
+
|
|
516
|
+
`max_total_people` is the real cost control - it is a hard ceiling across
|
|
517
|
+
every company row, not a per-company hint. `broad_search_acknowledged` must
|
|
518
|
+
be set to run with NO filters, because an unfiltered search returns the
|
|
519
|
+
widest and most expensive possible result.
|
|
520
|
+
|
|
521
|
+
**Input**
|
|
522
|
+
|
|
523
|
+
| Field | Type | Required | Description |
|
|
524
|
+
|---|---|---|---|
|
|
525
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
526
|
+
| `body` | `ConfigureStagingFindPeopleRequest` | yes | Request body; fields below. |
|
|
527
|
+
|
|
528
|
+
Body fields (`ConfigureStagingFindPeopleRequest`):
|
|
529
|
+
|
|
530
|
+
| Field | Type | Required | Description |
|
|
531
|
+
|---|---|---|---|
|
|
532
|
+
| `body.domain_column` | `string` | yes | Column holding company domains or LinkedIn URLs. min length 1 |
|
|
533
|
+
| `body.auto_create_columns` | `boolean` | no | default `true` |
|
|
534
|
+
| `body.broad_search_acknowledged` | `boolean` | no | Confirm an EMPTY filter set is intentional. An unfiltered search returns the widest - and most expensive - possible result. default `false` |
|
|
535
|
+
| `body.company_name_column` | `string \| null` | no | |
|
|
536
|
+
| `body.create_destination_table` | `boolean` | no | default `false` |
|
|
537
|
+
| `body.destination_table_id` | `string \| null` | no | |
|
|
538
|
+
| `body.destination_table_name` | `string \| null` | no | max length 255 |
|
|
539
|
+
| `body.lookup_field` | `"COMPANY_DOMAIN" \| "COMPANY_LINKEDIN_URL"` | no | default `"COMPANY_DOMAIN"` |
|
|
540
|
+
| `body.max_people_per_company` | `integer` | no | default `5`, min 1, max 100 |
|
|
541
|
+
| `body.max_total_people` | `integer` | no | Hard ceiling across every company row. default `250`, min 1, max 10000 |
|
|
542
|
+
| `body.name` | `string` | no | default `"Find People"`, min length 1, max length 255 |
|
|
543
|
+
| `body.search_filters` | `Array<FindPeopleSearchFilter>` | no | |
|
|
544
|
+
| `body.skip_existing` | `boolean` | no | default `true` |
|
|
545
|
+
|
|
546
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `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
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
554
|
+
const result = await g8.api.workbench.configureWorkbenchFindPeople({ path: { table_id: "id" }, body: { domain_column: "acme.com" } });
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
---
|
|
558
|
+
|
|
559
|
+
<a id="op-createworkbenchaigroup"></a>
|
|
560
|
+
|
|
561
|
+
### `g8.api.workbench.createWorkbenchAiGroup(input)`
|
|
562
|
+
|
|
563
|
+
**Create Workbench Ai Group**
|
|
564
|
+
|
|
565
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/ai/groups/config`
|
|
566
|
+
- operationId: `create_workbench_ai_group_workbench_tables__table_id__ai_groups_config_post` (also callable as `g8.api.call("create_workbench_ai_group_workbench_tables__table_id__ai_groups_config_post", input)`)
|
|
567
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
568
|
+
- API-key scope: `lists:write`
|
|
569
|
+
|
|
570
|
+
Create an AI group on this table. FREE - saving never runs.
|
|
571
|
+
|
|
572
|
+
`config.run_immediately` is pinned to false by the app, so this cannot
|
|
573
|
+
become a spend by accident. Run the group explicitly afterwards.
|
|
574
|
+
|
|
575
|
+
Two settings decide most of what a later run costs:
|
|
576
|
+
`config.skip_existing_values` (skip rows that already have a value) and
|
|
577
|
+
`config.skip_recently_enriched` (skip rows touched in the last 30 days).
|
|
578
|
+
Both default to true; turning either off re-buys data you already have.
|
|
579
|
+
|
|
580
|
+
The path is `/ai/groups/config` rather than a POST to `/ai/groups`, matching
|
|
581
|
+
the app exactly - a different spelling here would be a second way to say the
|
|
582
|
+
same thing.
|
|
583
|
+
|
|
584
|
+
**Input**
|
|
585
|
+
|
|
586
|
+
| Field | Type | Required | Description |
|
|
587
|
+
|---|---|---|---|
|
|
588
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
589
|
+
| `body` | `SaveAIConfigRequest` | yes | Request body; fields below. |
|
|
590
|
+
|
|
591
|
+
Body fields (`SaveAIConfigRequest`):
|
|
592
|
+
|
|
593
|
+
| Field | Type | Required | Description |
|
|
594
|
+
|---|---|---|---|
|
|
595
|
+
| `body.config` | `AIEnrichmentConfigDto` | yes | |
|
|
596
|
+
| `body.run_immediately` | `false` | no | Always false. Saving never runs - the app refuses immediate execution so a save can never become an unpriced spend. default `false` |
|
|
597
|
+
| `body.target_records` | `Array<string (uuid)> \| null` | no | |
|
|
598
|
+
|
|
599
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
600
|
+
|
|
601
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
602
|
+
|
|
603
|
+
**Example**
|
|
604
|
+
|
|
605
|
+
```ts
|
|
606
|
+
const result = await g8.api.workbench.createWorkbenchAiGroup({
|
|
607
|
+
path: { table_id: "id" },
|
|
608
|
+
body: {
|
|
609
|
+
config: {
|
|
610
|
+
config: {},
|
|
611
|
+
input_mapping: ["example"],
|
|
612
|
+
model: "example",
|
|
613
|
+
outputs: [{ name: "Example", type: "example" }],
|
|
614
|
+
prompt: "example",
|
|
615
|
+
usecase: "example",
|
|
616
|
+
},
|
|
617
|
+
},
|
|
618
|
+
});
|
|
619
|
+
```
|
|
620
|
+
|
|
621
|
+
---
|
|
622
|
+
|
|
623
|
+
<a id="op-createworkbenchbindings"></a>
|
|
624
|
+
|
|
625
|
+
### `g8.api.workbench.createWorkbenchBindings(input)`
|
|
626
|
+
|
|
627
|
+
**Create Workbench Bindings**
|
|
628
|
+
|
|
629
|
+
- HTTP: `POST /api/v1/workbench-bindings`
|
|
630
|
+
- operationId: `create_workbench_bindings_workbench_bindings_post` (also callable as `g8.api.call("create_workbench_bindings_workbench_bindings_post", input)`)
|
|
631
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
632
|
+
- API-key scope: `lists:write`
|
|
633
|
+
|
|
634
|
+
Show a workflow's outputs as columns on a list. FREE.
|
|
635
|
+
|
|
636
|
+
Requires WRITE access to the list. The columns appear on the list's next
|
|
637
|
+
column fetch; their values fill in when the workflow runs.
|
|
638
|
+
|
|
639
|
+
**Input**
|
|
640
|
+
|
|
641
|
+
| Field | Type | Required | Description |
|
|
642
|
+
|---|---|---|---|
|
|
643
|
+
| `body` | `CreateWorkbenchBindingsRequest` | yes | Request body; fields below. |
|
|
644
|
+
|
|
645
|
+
Body fields (`CreateWorkbenchBindingsRequest`):
|
|
646
|
+
|
|
647
|
+
| Field | Type | Required | Description |
|
|
648
|
+
|---|---|---|---|
|
|
649
|
+
| `body.bindings` | `Array<WorkbenchBindingItem>` | yes | At least one. The app refuses an empty set; so does this. min items 1 |
|
|
650
|
+
| `body.list_id` | `integer` | yes | The list whose grid gains the columns. |
|
|
651
|
+
| `body.workflow_id` | `string` | yes | The workflow producing the values. |
|
|
652
|
+
|
|
653
|
+
**Returns** `ApiResponse_EnrichmentListPayload_`: the envelope `{ data: EnrichmentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
654
|
+
|
|
655
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
656
|
+
|
|
657
|
+
`EnrichmentListPayload` fields:
|
|
658
|
+
|
|
659
|
+
| Field | Type | Required | Description |
|
|
660
|
+
|---|---|---|---|
|
|
661
|
+
| `items` | `Array<unknown>` | no | The collection, always present. |
|
|
662
|
+
|
|
663
|
+
**Example**
|
|
664
|
+
|
|
665
|
+
```ts
|
|
666
|
+
const result = await g8.api.workbench.createWorkbenchBindings({
|
|
667
|
+
body: {
|
|
668
|
+
bindings: [
|
|
669
|
+
{
|
|
670
|
+
column_name: "Example",
|
|
671
|
+
column_type: "computed",
|
|
672
|
+
node_id: "id",
|
|
673
|
+
output_path: "example",
|
|
674
|
+
},
|
|
675
|
+
],
|
|
676
|
+
list_id: 123,
|
|
677
|
+
workflow_id: "id",
|
|
678
|
+
},
|
|
679
|
+
});
|
|
680
|
+
```
|
|
681
|
+
|
|
682
|
+
---
|
|
683
|
+
|
|
684
|
+
<a id="op-createworkbenchconnection"></a>
|
|
685
|
+
|
|
686
|
+
### `g8.api.workbench.createWorkbenchConnection(input)`
|
|
687
|
+
|
|
688
|
+
**Create Workbench Connection**
|
|
689
|
+
|
|
690
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/connections`
|
|
691
|
+
- operationId: `create_workbench_connection_workbench_tables__table_id__connections_post` (also callable as `g8.api.call("create_workbench_connection_workbench_tables__table_id__connections_post", input)`)
|
|
692
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
693
|
+
- API-key scope: `lists:write`
|
|
694
|
+
|
|
695
|
+
Connect this table to another table in your organisation, so rows are
|
|
696
|
+
copied across. Free.
|
|
697
|
+
|
|
698
|
+
**Input**
|
|
699
|
+
|
|
700
|
+
| Field | Type | Required | Description |
|
|
701
|
+
|---|---|---|---|
|
|
702
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
703
|
+
| `body` | `TableConnectionRequest` | yes | Request body; fields below. |
|
|
704
|
+
|
|
705
|
+
Body fields (`TableConnectionRequest`):
|
|
706
|
+
|
|
707
|
+
| Field | Type | Required | Description |
|
|
708
|
+
|---|---|---|---|
|
|
709
|
+
| `body.destination_table_id` | `string (uuid)` | yes | |
|
|
710
|
+
| `body.field_mapping` | `Record<string, string> \| null` | no | Source column -> destination. |
|
|
711
|
+
| `body.filter_conditions` | `Record<string, unknown> \| null` | no | |
|
|
712
|
+
| `body.sync_mode` | `"append"` | no | default `"append"` |
|
|
713
|
+
|
|
714
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
715
|
+
|
|
716
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
717
|
+
|
|
718
|
+
**Example**
|
|
719
|
+
|
|
720
|
+
```ts
|
|
721
|
+
const result = await g8.api.workbench.createWorkbenchConnection({
|
|
722
|
+
path: { table_id: "id" },
|
|
723
|
+
body: { destination_table_id: "00000000-0000-0000-0000-000000000000" },
|
|
724
|
+
});
|
|
725
|
+
```
|
|
726
|
+
|
|
727
|
+
---
|
|
728
|
+
|
|
729
|
+
<a id="op-createworkbenchformulacolumns"></a>
|
|
730
|
+
|
|
731
|
+
### `g8.api.workbench.createWorkbenchFormulaColumns(input)`
|
|
732
|
+
|
|
733
|
+
**Create Workbench Formula Columns**
|
|
734
|
+
|
|
735
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/formula-columns`
|
|
736
|
+
- operationId: `create_workbench_formula_columns_workbench_tables__table_id__formula_columns_post` (also callable as `g8.api.call("create_workbench_formula_columns_workbench_tables__table_id__formula_columns_post", input)`)
|
|
737
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
738
|
+
- API-key scope: `lists:write`
|
|
739
|
+
|
|
740
|
+
Create a formula column with one child column per output. FREE.
|
|
741
|
+
|
|
742
|
+
You supply the formula, so nothing authors it and nothing is charged. The
|
|
743
|
+
AI-authoring path is the one that costs, and
|
|
744
|
+
`formula-columns/generate-quote` prices it.
|
|
745
|
+
|
|
746
|
+
**Input**
|
|
747
|
+
|
|
748
|
+
| Field | Type | Required | Description |
|
|
749
|
+
|---|---|---|---|
|
|
750
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
751
|
+
| `body` | `CreateFormulaColumnsRequest` | yes | Request body; fields below. |
|
|
752
|
+
|
|
753
|
+
Body fields (`CreateFormulaColumnsRequest`):
|
|
754
|
+
|
|
755
|
+
| Field | Type | Required | Description |
|
|
756
|
+
|---|---|---|---|
|
|
757
|
+
| `body.formula` | `string` | yes | The G8X formula expression. min length 1 |
|
|
758
|
+
| `body.output_columns` | `Array<FormulaOutputColumnDef>` | yes | min items 1, max items 20 |
|
|
759
|
+
| `body.description` | `string \| null` | no | max length 4000 |
|
|
760
|
+
|
|
761
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
762
|
+
|
|
763
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
764
|
+
|
|
765
|
+
**Example**
|
|
766
|
+
|
|
767
|
+
```ts
|
|
768
|
+
const result = await g8.api.workbench.createWorkbenchFormulaColumns({
|
|
769
|
+
path: { table_id: "id" },
|
|
770
|
+
body: {
|
|
771
|
+
formula: "example",
|
|
772
|
+
output_columns: [{ display_name: "Example", name: "Example" }],
|
|
773
|
+
},
|
|
774
|
+
});
|
|
775
|
+
```
|
|
776
|
+
|
|
777
|
+
---
|
|
778
|
+
|
|
779
|
+
<a id="op-createworkbenchpipeline"></a>
|
|
780
|
+
|
|
781
|
+
### `g8.api.workbench.createWorkbenchPipeline(input)`
|
|
782
|
+
|
|
783
|
+
**Create Workbench Pipeline**
|
|
784
|
+
|
|
785
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/pipelines`
|
|
786
|
+
- operationId: `create_workbench_pipeline_workbench_tables__table_id__pipelines_post` (also callable as `g8.api.call("create_workbench_pipeline_workbench_tables__table_id__pipelines_post", input)`)
|
|
787
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
788
|
+
- API-key scope: `lists:run`
|
|
789
|
+
|
|
790
|
+
Create a pipeline that processes new rows step by step. CAN ARM SPEND.
|
|
791
|
+
|
|
792
|
+
`enabled` defaults to false. Enabled, it runs its AI and waterfall steps -
|
|
793
|
+
each charged per row - on every row that arrives.
|
|
794
|
+
|
|
795
|
+
**Input**
|
|
796
|
+
|
|
797
|
+
| Field | Type | Required | Description |
|
|
798
|
+
|---|---|---|---|
|
|
799
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
800
|
+
| `body` | `CreateWorkbenchPipelineRequest` | yes | Request body; fields below. |
|
|
801
|
+
|
|
802
|
+
Body fields (`CreateWorkbenchPipelineRequest`):
|
|
803
|
+
|
|
804
|
+
| Field | Type | Required | Description |
|
|
805
|
+
|---|---|---|---|
|
|
806
|
+
| `body.name` | `string` | yes | |
|
|
807
|
+
| `body.start` | `PipelineStartConfig` | yes | |
|
|
808
|
+
| `body.enabled` | `boolean` | no | default `false` |
|
|
809
|
+
| `body.steps` | `Array<WorkbenchPipelineStep>` | no | |
|
|
810
|
+
|
|
811
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
812
|
+
|
|
813
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
814
|
+
|
|
815
|
+
**Example**
|
|
816
|
+
|
|
817
|
+
```ts
|
|
818
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
819
|
+
const result = await g8.api.workbench.createWorkbenchPipeline({
|
|
820
|
+
path: { table_id: "id" },
|
|
821
|
+
body: { name: "Example", start: { type: "email_pdf" } },
|
|
822
|
+
});
|
|
823
|
+
```
|
|
824
|
+
|
|
825
|
+
---
|
|
826
|
+
|
|
827
|
+
<a id="op-createworkbenchtable"></a>
|
|
828
|
+
|
|
829
|
+
### `g8.api.workbench.createWorkbenchTable(input)`
|
|
830
|
+
|
|
831
|
+
**Create Workbench Table**
|
|
832
|
+
|
|
833
|
+
- HTTP: `POST /api/v1/workbench/tables`
|
|
834
|
+
- operationId: `create_workbench_table_workbench_tables_post` (also callable as `g8.api.call("create_workbench_table_workbench_tables_post", input)`)
|
|
835
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
836
|
+
- API-key scope: `lists:write`
|
|
837
|
+
|
|
838
|
+
Create an empty table.
|
|
839
|
+
|
|
840
|
+
`entity_type` decides what the rows become on export and is settable here,
|
|
841
|
+
at creation - which is why the update model does not offer it.
|
|
842
|
+
|
|
843
|
+
**Input**
|
|
844
|
+
|
|
845
|
+
| Field | Type | Required | Description |
|
|
846
|
+
|---|---|---|---|
|
|
847
|
+
| `body` | `WorkbenchTableCreateRequest` | yes | Request body; fields below. |
|
|
848
|
+
|
|
849
|
+
Body fields (`WorkbenchTableCreateRequest`):
|
|
850
|
+
|
|
851
|
+
| Field | Type | Required | Description |
|
|
852
|
+
|---|---|---|---|
|
|
853
|
+
| `body.name` | `string` | yes | Table name. min length 1 |
|
|
854
|
+
| `body.description` | `string \| null` | no | |
|
|
855
|
+
| `body.entity_type` | `"contact" \| "company" \| null` | no | What the rows will become on export. Settable once, at creation. |
|
|
856
|
+
|
|
857
|
+
**Returns** `ApiResponse_WorkbenchTable_`: the envelope `{ data: WorkbenchTable, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
858
|
+
|
|
859
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
860
|
+
|
|
861
|
+
`WorkbenchTable` fields:
|
|
862
|
+
|
|
863
|
+
| Field | Type | Required | Description |
|
|
864
|
+
|---|---|---|---|
|
|
865
|
+
| `created_at` | `string (date-time) \| null` | no | |
|
|
866
|
+
| `description` | `string \| null` | no | |
|
|
867
|
+
| `entity_type` | `string \| null` | no | contact or company. |
|
|
868
|
+
| `id` | `string \| null` | no | |
|
|
869
|
+
| `name` | `string \| null` | no | |
|
|
870
|
+
| `row_count` | `integer \| null` | no | |
|
|
871
|
+
| `updated_at` | `string (date-time) \| null` | no | |
|
|
872
|
+
|
|
873
|
+
**Example**
|
|
874
|
+
|
|
875
|
+
```ts
|
|
876
|
+
const result = await g8.api.workbench.createWorkbenchTable({ body: { name: "Example" } });
|
|
877
|
+
```
|
|
878
|
+
|
|
879
|
+
---
|
|
880
|
+
|
|
881
|
+
<a id="op-createworkbenchtrigger"></a>
|
|
882
|
+
|
|
883
|
+
### `g8.api.workbench.createWorkbenchTrigger(input)`
|
|
884
|
+
|
|
885
|
+
**Create Workbench Trigger**
|
|
886
|
+
|
|
887
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/triggers`
|
|
888
|
+
- operationId: `create_workbench_trigger_workbench_tables__table_id__triggers_post` (also callable as `g8.api.call("create_workbench_trigger_workbench_tables__table_id__triggers_post", input)`)
|
|
889
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
890
|
+
- API-key scope: `lists:run`
|
|
891
|
+
|
|
892
|
+
React to rows as they arrive or change. CAN ARM ONGOING SPEND.
|
|
893
|
+
|
|
894
|
+
`enabled` DEFAULTS TO TRUE. With `action_type: run_ai`, every matching row
|
|
895
|
+
is enriched, and charged, as it arrives. `webhook_notify` URLs are checked
|
|
896
|
+
and unsafe targets refused.
|
|
897
|
+
|
|
898
|
+
**Input**
|
|
899
|
+
|
|
900
|
+
| Field | Type | Required | Description |
|
|
901
|
+
|---|---|---|---|
|
|
902
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
903
|
+
| `body` | `CreateTriggerRequest` | yes | Request body; fields below. |
|
|
904
|
+
|
|
905
|
+
Body fields (`CreateTriggerRequest`):
|
|
906
|
+
|
|
907
|
+
| Field | Type | Required | Description |
|
|
908
|
+
|---|---|---|---|
|
|
909
|
+
| `body.action_type` | `"run_ai" \| "run_formula" \| "export" \| "webhook_notify"` | yes | |
|
|
910
|
+
| `body.event_type` | `"ingest" \| "ai_complete" \| "status_change"` | yes | |
|
|
911
|
+
| `body.name` | `string` | yes | min length 1, max length 255 |
|
|
912
|
+
| `body.action_config` | `Record<string, unknown>` | no | |
|
|
913
|
+
| `body.conditions` | `Record<string, unknown> \| null` | no | |
|
|
914
|
+
| `body.enabled` | `boolean` | no | default `true` |
|
|
915
|
+
|
|
916
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
917
|
+
|
|
918
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
919
|
+
|
|
920
|
+
**Example**
|
|
921
|
+
|
|
922
|
+
```ts
|
|
923
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
924
|
+
const result = await g8.api.workbench.createWorkbenchTrigger({
|
|
925
|
+
path: { table_id: "id" },
|
|
926
|
+
body: { action_type: "run_ai", event_type: "ingest", name: "Example" },
|
|
927
|
+
});
|
|
928
|
+
```
|
|
929
|
+
|
|
930
|
+
---
|
|
931
|
+
|
|
932
|
+
<a id="op-deletescraperproviderconnection"></a>
|
|
933
|
+
|
|
934
|
+
### `g8.api.workbench.deleteScraperProviderConnection(input)`
|
|
935
|
+
|
|
936
|
+
**Delete Scraper Provider Connection**
|
|
937
|
+
|
|
938
|
+
- HTTP: `DELETE /api/v1/workbench/scraper/providers/{provider}/connection`
|
|
939
|
+
- operationId: `delete_scraper_provider_connection_workbench_scraper_providers__provider__connection_delete` (also callable as `g8.api.call("delete_scraper_provider_connection_workbench_scraper_providers__provider__connection_delete", input)`)
|
|
940
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
941
|
+
- API-key scope: `lists:delete`
|
|
942
|
+
|
|
943
|
+
Disconnect your provider account. Provider scraper runs stop working.
|
|
944
|
+
|
|
945
|
+
**Input**
|
|
946
|
+
|
|
947
|
+
| Field | Type | Required | Description |
|
|
948
|
+
|---|---|---|---|
|
|
949
|
+
| `path.provider` | `"apify"` | yes | Which scraper provider. |
|
|
950
|
+
|
|
951
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
952
|
+
|
|
953
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
954
|
+
|
|
955
|
+
**Example**
|
|
956
|
+
|
|
957
|
+
```ts
|
|
958
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
959
|
+
const result = await g8.api.workbench.deleteScraperProviderConnection({ path: { provider: "apify" } });
|
|
960
|
+
```
|
|
961
|
+
|
|
962
|
+
---
|
|
963
|
+
|
|
964
|
+
<a id="op-deleteworkbenchaigroup"></a>
|
|
965
|
+
|
|
966
|
+
### `g8.api.workbench.deleteWorkbenchAiGroup(input)`
|
|
967
|
+
|
|
968
|
+
**Delete Workbench Ai Group**
|
|
969
|
+
|
|
970
|
+
- HTTP: `DELETE /api/v1/workbench/tables/{table_id}/ai/groups/{group_id}`
|
|
971
|
+
- operationId: `delete_workbench_ai_group_workbench_tables__table_id__ai_groups__group_id__delete` (also callable as `g8.api.call("delete_workbench_ai_group_workbench_tables__table_id__ai_groups__group_id__delete", input)`)
|
|
972
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
973
|
+
- API-key scope: `lists:delete`
|
|
974
|
+
|
|
975
|
+
Remove an AI group. Free.
|
|
976
|
+
|
|
977
|
+
Values the group already wrote into columns stay - you are deleting the
|
|
978
|
+
instruction, not the data you paid for.
|
|
979
|
+
|
|
980
|
+
**Input**
|
|
981
|
+
|
|
982
|
+
| Field | Type | Required | Description |
|
|
983
|
+
|---|---|---|---|
|
|
984
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
985
|
+
| `path.group_id` | `string` | yes | AI group id (starts with `ai_enrich`). |
|
|
986
|
+
|
|
987
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
988
|
+
|
|
989
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
990
|
+
|
|
991
|
+
**Example**
|
|
992
|
+
|
|
993
|
+
```ts
|
|
994
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
995
|
+
const result = await g8.api.workbench.deleteWorkbenchAiGroup({ path: { table_id: "id", group_id: "id" } });
|
|
996
|
+
```
|
|
997
|
+
|
|
998
|
+
---
|
|
999
|
+
|
|
1000
|
+
<a id="op-deleteworkbenchbinding"></a>
|
|
1001
|
+
|
|
1002
|
+
### `g8.api.workbench.deleteWorkbenchBinding(input)`
|
|
1003
|
+
|
|
1004
|
+
**Delete Workbench Binding**
|
|
1005
|
+
|
|
1006
|
+
- HTTP: `DELETE /api/v1/workbench-bindings/{binding_id}`
|
|
1007
|
+
- operationId: `delete_workbench_binding_workbench_bindings__binding_id__delete` (also callable as `g8.api.call("delete_workbench_binding_workbench_bindings__binding_id__delete", input)`)
|
|
1008
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
1009
|
+
- API-key scope: `lists:delete`
|
|
1010
|
+
|
|
1011
|
+
Remove one binding. FREE.
|
|
1012
|
+
|
|
1013
|
+
The column leaves the grid on the next column fetch. Requires WRITE access
|
|
1014
|
+
to the list the binding sits on; the app resolves that list from the
|
|
1015
|
+
binding itself, so a binding on a list the key cannot write is refused.
|
|
1016
|
+
|
|
1017
|
+
**Input**
|
|
1018
|
+
|
|
1019
|
+
| Field | Type | Required | Description |
|
|
1020
|
+
|---|---|---|---|
|
|
1021
|
+
| `path.binding_id` | `string` | yes | The binding to remove. |
|
|
1022
|
+
|
|
1023
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1024
|
+
|
|
1025
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1026
|
+
|
|
1027
|
+
**Example**
|
|
1028
|
+
|
|
1029
|
+
```ts
|
|
1030
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
1031
|
+
const result = await g8.api.workbench.deleteWorkbenchBinding({ path: { binding_id: "id" } });
|
|
1032
|
+
```
|
|
1033
|
+
|
|
1034
|
+
---
|
|
1035
|
+
|
|
1036
|
+
<a id="op-deleteworkbenchcolumn"></a>
|
|
1037
|
+
|
|
1038
|
+
### `g8.api.workbench.deleteWorkbenchColumn(input)`
|
|
1039
|
+
|
|
1040
|
+
**Delete Workbench Column**
|
|
1041
|
+
|
|
1042
|
+
- HTTP: `DELETE /api/v1/workbench/tables/{table_id}/columns/{column_id}`
|
|
1043
|
+
- operationId: `delete_workbench_column_workbench_tables__table_id__columns__column_id__delete` (also callable as `g8.api.call("delete_workbench_column_workbench_tables__table_id__columns__column_id__delete", input)`)
|
|
1044
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
1045
|
+
- API-key scope: `lists:delete`
|
|
1046
|
+
|
|
1047
|
+
Delete a column and the values in it, on every row.
|
|
1048
|
+
|
|
1049
|
+
**Input**
|
|
1050
|
+
|
|
1051
|
+
| Field | Type | Required | Description |
|
|
1052
|
+
|---|---|---|---|
|
|
1053
|
+
| `path.table_id` | `string` | yes | Table id (UUID). |
|
|
1054
|
+
| `path.column_id` | `integer` | yes | Column id. |
|
|
1055
|
+
|
|
1056
|
+
**Returns** `ApiResponse_dict_`: the envelope `{ data: Record<string, unknown>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1057
|
+
|
|
1058
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1059
|
+
|
|
1060
|
+
**Example**
|
|
1061
|
+
|
|
1062
|
+
```ts
|
|
1063
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
1064
|
+
const result = await g8.api.workbench.deleteWorkbenchColumn({ path: { table_id: "id", column_id: 123 } });
|
|
1065
|
+
```
|
|
1066
|
+
|
|
1067
|
+
---
|
|
1068
|
+
|
|
1069
|
+
<a id="op-deleteworkbenchconnection"></a>
|
|
1070
|
+
|
|
1071
|
+
### `g8.api.workbench.deleteWorkbenchConnection(input)`
|
|
1072
|
+
|
|
1073
|
+
**Delete Workbench Connection**
|
|
1074
|
+
|
|
1075
|
+
- HTTP: `DELETE /api/v1/workbench/tables/{table_id}/connections/{connection_id}`
|
|
1076
|
+
- operationId: `delete_workbench_connection_workbench_tables__table_id__connections__connection_id__delete` (also callable as `g8.api.call("delete_workbench_connection_workbench_tables__table_id__connections__connection_id__delete", input)`)
|
|
1077
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
1078
|
+
- API-key scope: `lists:delete`
|
|
1079
|
+
|
|
1080
|
+
Remove a connection. Rows already copied stay where they are.
|
|
1081
|
+
|
|
1082
|
+
**Input**
|
|
1083
|
+
|
|
1084
|
+
| Field | Type | Required | Description |
|
|
1085
|
+
|---|---|---|---|
|
|
1086
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
1087
|
+
| `path.connection_id` | `integer` | yes | Connection id. |
|
|
1088
|
+
|
|
1089
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1090
|
+
|
|
1091
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1092
|
+
|
|
1093
|
+
**Example**
|
|
1094
|
+
|
|
1095
|
+
```ts
|
|
1096
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
1097
|
+
const result = await g8.api.workbench.deleteWorkbenchConnection({ path: { table_id: "id", connection_id: 123 } });
|
|
1098
|
+
```
|
|
1099
|
+
|
|
1100
|
+
---
|
|
1101
|
+
|
|
1102
|
+
<a id="op-deleteworkbenchfindpeopleconfig"></a>
|
|
1103
|
+
|
|
1104
|
+
### `g8.api.workbench.deleteWorkbenchFindPeopleConfig(input)`
|
|
1105
|
+
|
|
1106
|
+
**Delete Workbench Find People Config**
|
|
1107
|
+
|
|
1108
|
+
- HTTP: `DELETE /api/v1/workbench/tables/{table_id}/find-people/{config_id}`
|
|
1109
|
+
- operationId: `delete_workbench_find_people_config_workbench_tables__table_id__find_people__config_id__delete` (also callable as `g8.api.call("delete_workbench_find_people_config_workbench_tables__table_id__find_people__config_id__delete", input)`)
|
|
1110
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
1111
|
+
- API-key scope: `lists:delete`
|
|
1112
|
+
|
|
1113
|
+
Remove a find-people configuration. Free. Contacts already found stay.
|
|
1114
|
+
|
|
1115
|
+
**Input**
|
|
1116
|
+
|
|
1117
|
+
| Field | Type | Required | Description |
|
|
1118
|
+
|---|---|---|---|
|
|
1119
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
1120
|
+
| `path.config_id` | `string` | yes | Find-people configuration id (UUID). |
|
|
1121
|
+
|
|
1122
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1123
|
+
|
|
1124
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1125
|
+
|
|
1126
|
+
**Example**
|
|
1127
|
+
|
|
1128
|
+
```ts
|
|
1129
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
1130
|
+
const result = await g8.api.workbench.deleteWorkbenchFindPeopleConfig({ path: { table_id: "id", config_id: "id" } });
|
|
1131
|
+
```
|
|
1132
|
+
|
|
1133
|
+
---
|
|
1134
|
+
|
|
1135
|
+
<a id="op-deleteworkbenchpipeline"></a>
|
|
1136
|
+
|
|
1137
|
+
### `g8.api.workbench.deleteWorkbenchPipeline(input)`
|
|
1138
|
+
|
|
1139
|
+
**Delete Workbench Pipeline**
|
|
1140
|
+
|
|
1141
|
+
- HTTP: `DELETE /api/v1/workbench/tables/{table_id}/pipelines/{pipeline_id}`
|
|
1142
|
+
- operationId: `delete_workbench_pipeline_workbench_tables__table_id__pipelines__pipeline_id__delete` (also callable as `g8.api.call("delete_workbench_pipeline_workbench_tables__table_id__pipelines__pipeline_id__delete", input)`)
|
|
1143
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
1144
|
+
- API-key scope: `lists:delete`
|
|
1145
|
+
|
|
1146
|
+
Delete a pipeline.
|
|
1147
|
+
|
|
1148
|
+
**Input**
|
|
1149
|
+
|
|
1150
|
+
| Field | Type | Required | Description |
|
|
1151
|
+
|---|---|---|---|
|
|
1152
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
1153
|
+
| `path.pipeline_id` | `string` | yes | Pipeline id (UUID). |
|
|
1154
|
+
|
|
1155
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1156
|
+
|
|
1157
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1158
|
+
|
|
1159
|
+
**Example**
|
|
1160
|
+
|
|
1161
|
+
```ts
|
|
1162
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
1163
|
+
const result = await g8.api.workbench.deleteWorkbenchPipeline({ path: { table_id: "id", pipeline_id: "id" } });
|
|
1164
|
+
```
|
|
1165
|
+
|
|
1166
|
+
---
|
|
1167
|
+
|
|
1168
|
+
<a id="op-deleteworkbenchschedule"></a>
|
|
1169
|
+
|
|
1170
|
+
### `g8.api.workbench.deleteWorkbenchSchedule(input)`
|
|
1171
|
+
|
|
1172
|
+
**Delete Workbench Schedule**
|
|
1173
|
+
|
|
1174
|
+
- HTTP: `DELETE /api/v1/workbench/tables/{table_id}/schedule`
|
|
1175
|
+
- operationId: `delete_workbench_schedule_workbench_tables__table_id__schedule_delete` (also callable as `g8.api.call("delete_workbench_schedule_workbench_tables__table_id__schedule_delete", input)`)
|
|
1176
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
1177
|
+
- API-key scope: `lists:delete`
|
|
1178
|
+
|
|
1179
|
+
Remove the schedule. Free, and the fastest way to stop recurring spend.
|
|
1180
|
+
|
|
1181
|
+
**Input**
|
|
1182
|
+
|
|
1183
|
+
| Field | Type | Required | Description |
|
|
1184
|
+
|---|---|---|---|
|
|
1185
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
1186
|
+
|
|
1187
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1188
|
+
|
|
1189
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1190
|
+
|
|
1191
|
+
**Example**
|
|
1192
|
+
|
|
1193
|
+
```ts
|
|
1194
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
1195
|
+
const result = await g8.api.workbench.deleteWorkbenchSchedule({ path: { table_id: "id" } });
|
|
1196
|
+
```
|
|
1197
|
+
|
|
1198
|
+
---
|
|
1199
|
+
|
|
1200
|
+
<a id="op-deleteworkbenchtable"></a>
|
|
1201
|
+
|
|
1202
|
+
### `g8.api.workbench.deleteWorkbenchTable(input)`
|
|
1203
|
+
|
|
1204
|
+
**Delete Workbench Table**
|
|
1205
|
+
|
|
1206
|
+
- HTTP: `DELETE /api/v1/workbench/tables/{table_id}`
|
|
1207
|
+
- operationId: `delete_workbench_table_workbench_tables__table_id__delete` (also callable as `g8.api.call("delete_workbench_table_workbench_tables__table_id__delete", input)`)
|
|
1208
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
1209
|
+
- API-key scope: `lists:delete`
|
|
1210
|
+
|
|
1211
|
+
Delete the table AND every row in it. Not recoverable through this API.
|
|
1212
|
+
|
|
1213
|
+
**Input**
|
|
1214
|
+
|
|
1215
|
+
| Field | Type | Required | Description |
|
|
1216
|
+
|---|---|---|---|
|
|
1217
|
+
| `path.table_id` | `string` | yes | Table id (UUID). |
|
|
1218
|
+
|
|
1219
|
+
**Returns** `ApiResponse_dict_`: the envelope `{ data: Record<string, unknown>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1220
|
+
|
|
1221
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1222
|
+
|
|
1223
|
+
**Example**
|
|
1224
|
+
|
|
1225
|
+
```ts
|
|
1226
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
1227
|
+
const result = await g8.api.workbench.deleteWorkbenchTable({ path: { table_id: "id" } });
|
|
1228
|
+
```
|
|
1229
|
+
|
|
1230
|
+
---
|
|
1231
|
+
|
|
1232
|
+
<a id="op-deleteworkbenchtrigger"></a>
|
|
1233
|
+
|
|
1234
|
+
### `g8.api.workbench.deleteWorkbenchTrigger(input)`
|
|
1235
|
+
|
|
1236
|
+
**Delete Workbench Trigger**
|
|
1237
|
+
|
|
1238
|
+
- HTTP: `DELETE /api/v1/workbench/tables/{table_id}/triggers/{trigger_id}`
|
|
1239
|
+
- operationId: `delete_workbench_trigger_workbench_tables__table_id__triggers__trigger_id__delete` (also callable as `g8.api.call("delete_workbench_trigger_workbench_tables__table_id__triggers__trigger_id__delete", input)`)
|
|
1240
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
1241
|
+
- API-key scope: `lists:delete`
|
|
1242
|
+
|
|
1243
|
+
Delete a trigger. Stops whatever spend it armed.
|
|
1244
|
+
|
|
1245
|
+
**Input**
|
|
1246
|
+
|
|
1247
|
+
| Field | Type | Required | Description |
|
|
1248
|
+
|---|---|---|---|
|
|
1249
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
1250
|
+
| `path.trigger_id` | `integer` | yes | Trigger id. |
|
|
1251
|
+
|
|
1252
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1253
|
+
|
|
1254
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1255
|
+
|
|
1256
|
+
**Example**
|
|
1257
|
+
|
|
1258
|
+
```ts
|
|
1259
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
1260
|
+
const result = await g8.api.workbench.deleteWorkbenchTrigger({ path: { table_id: "id", trigger_id: 123 } });
|
|
1261
|
+
```
|
|
1262
|
+
|
|
1263
|
+
---
|
|
1264
|
+
|
|
1265
|
+
<a id="op-discoverworkbenchfields"></a>
|
|
1266
|
+
|
|
1267
|
+
### `g8.api.workbench.discoverWorkbenchFields(input)`
|
|
1268
|
+
|
|
1269
|
+
**Discover Workbench Fields**
|
|
1270
|
+
|
|
1271
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/discover-fields`
|
|
1272
|
+
- operationId: `discover_workbench_fields_workbench_tables__table_id__discover_fields_post` (also callable as `g8.api.call("discover_workbench_fields_workbench_tables__table_id__discover_fields_post", input)`)
|
|
1273
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1274
|
+
- API-key scope: `lists:write`
|
|
1275
|
+
|
|
1276
|
+
List the JSON paths present inside a raw column. FREE.
|
|
1277
|
+
|
|
1278
|
+
Despite the name this calls no provider and spends nothing - it samples
|
|
1279
|
+
rows the customer already imported and reports the shapes it found. Call it
|
|
1280
|
+
before `columns/extract` to learn what `field_path` values exist.
|
|
1281
|
+
|
|
1282
|
+
**Input**
|
|
1283
|
+
|
|
1284
|
+
| Field | Type | Required | Description |
|
|
1285
|
+
|---|---|---|---|
|
|
1286
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
1287
|
+
| `body` | `DiscoverFieldsRequest` | yes | Request body; fields below. |
|
|
1288
|
+
|
|
1289
|
+
Body fields (`DiscoverFieldsRequest`):
|
|
1290
|
+
|
|
1291
|
+
| Field | Type | Required | Description |
|
|
1292
|
+
|---|---|---|---|
|
|
1293
|
+
| `body.source_column_id` | `integer` | yes | The raw JSON column to scan. |
|
|
1294
|
+
| `body.sample_size` | `integer` | no | Rows to sample. default `100`, min 1, max 1000 |
|
|
1295
|
+
|
|
1296
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1297
|
+
|
|
1298
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1299
|
+
|
|
1300
|
+
**Example**
|
|
1301
|
+
|
|
1302
|
+
```ts
|
|
1303
|
+
const result = await g8.api.workbench.discoverWorkbenchFields({ path: { table_id: "id" }, body: { source_column_id: 123 } });
|
|
1304
|
+
```
|
|
1305
|
+
|
|
1306
|
+
---
|
|
1307
|
+
|
|
1308
|
+
<a id="op-estimateworkbenchproviderscrapercredits"></a>
|
|
1309
|
+
|
|
1310
|
+
### `g8.api.workbench.estimateWorkbenchProviderScraperCredits(input)`
|
|
1311
|
+
|
|
1312
|
+
**Estimate Workbench Provider Scraper Credits**
|
|
1313
|
+
|
|
1314
|
+
- HTTP: `GET /api/v1/workbench/scraper/providers/{provider}/credit-estimate`
|
|
1315
|
+
- operationId: `estimate_workbench_provider_scraper_credits_workbench_scraper_providers__provider__credit_estimate_get` (also callable as `g8.api.call("estimate_workbench_provider_scraper_credits_workbench_scraper_providers__provider__credit_estimate_get", input)`)
|
|
1316
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1317
|
+
- API-key scope: `lists:read`
|
|
1318
|
+
|
|
1319
|
+
Price a run on a connected scraper provider. CHARGES NOTHING.
|
|
1320
|
+
|
|
1321
|
+
Every component broken out: the scraper credits, the per-result rate, the
|
|
1322
|
+
post-scrape enrichment, the live balance and what would be left. Nothing is
|
|
1323
|
+
scraped.
|
|
1324
|
+
|
|
1325
|
+
**Input**
|
|
1326
|
+
|
|
1327
|
+
| Field | Type | Required | Description |
|
|
1328
|
+
|---|---|---|---|
|
|
1329
|
+
| `path.provider` | `"apify"` | yes | Which connected scraper provider. |
|
|
1330
|
+
| `query.table_id` | `string` | yes | The table the results would land in. |
|
|
1331
|
+
| `query.max_results` | `integer` | yes | Ceiling on results the run would return. |
|
|
1332
|
+
| `query.preset_id` | `string \| null` | no | Preset to price against. Omit for the provider's default rate. |
|
|
1333
|
+
| `query.auto_enrich` | `boolean` | no | Price the post-scrape enrichment too. default `false` |
|
|
1334
|
+
|
|
1335
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1336
|
+
|
|
1337
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1338
|
+
|
|
1339
|
+
**Example**
|
|
1340
|
+
|
|
1341
|
+
```ts
|
|
1342
|
+
const result = await g8.api.workbench.estimateWorkbenchProviderScraperCredits({
|
|
1343
|
+
path: { provider: "apify" },
|
|
1344
|
+
query: { table_id: "id", max_results: 1 },
|
|
1345
|
+
});
|
|
1346
|
+
```
|
|
1347
|
+
|
|
1348
|
+
---
|
|
1349
|
+
|
|
1350
|
+
<a id="op-estimateworkbenchscrapercredits"></a>
|
|
1351
|
+
|
|
1352
|
+
### `g8.api.workbench.estimateWorkbenchScraperCredits(input)`
|
|
1353
|
+
|
|
1354
|
+
**Estimate Workbench Scraper Credits**
|
|
1355
|
+
|
|
1356
|
+
- HTTP: `GET /api/v1/workbench/scraper/credit-estimate`
|
|
1357
|
+
- operationId: `estimate_workbench_scraper_credits_workbench_scraper_credit_estimate_get` (also callable as `g8.api.call("estimate_workbench_scraper_credits_workbench_scraper_credit_estimate_get", input)`)
|
|
1358
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1359
|
+
- API-key scope: `lists:read`
|
|
1360
|
+
|
|
1361
|
+
Price a built-in scraper run. CHARGES NOTHING.
|
|
1362
|
+
|
|
1363
|
+
A worst-case quote: what `max_results` rows would cost, plus the
|
|
1364
|
+
post-scrape enrichment when `auto_enrich` is set, against the live balance.
|
|
1365
|
+
Nothing is scraped and no credit moves.
|
|
1366
|
+
|
|
1367
|
+
The estimate and the run share one costing function on purpose, so the
|
|
1368
|
+
number quoted here is the number the run's own credit gate enforces.
|
|
1369
|
+
|
|
1370
|
+
**Input**
|
|
1371
|
+
|
|
1372
|
+
| Field | Type | Required | Description |
|
|
1373
|
+
|---|---|---|---|
|
|
1374
|
+
| `query.table_id` | `string` | yes | The table the results would land in. |
|
|
1375
|
+
| `query.max_results` | `integer` | yes | Ceiling on results the run would return. |
|
|
1376
|
+
| `query.auto_enrich` | `boolean` | no | Price the post-scrape enrichment too. Leave false and the quote covers the scrape ALONE - which is the number people misread. default `false` |
|
|
1377
|
+
|
|
1378
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1379
|
+
|
|
1380
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1381
|
+
|
|
1382
|
+
**Example**
|
|
1383
|
+
|
|
1384
|
+
```ts
|
|
1385
|
+
const result = await g8.api.workbench.estimateWorkbenchScraperCredits({ query: { table_id: "id", max_results: 1 } });
|
|
1386
|
+
```
|
|
1387
|
+
|
|
1388
|
+
---
|
|
1389
|
+
|
|
1390
|
+
<a id="op-expandworkbencharray"></a>
|
|
1391
|
+
|
|
1392
|
+
### `g8.api.workbench.expandWorkbenchArray(input)`
|
|
1393
|
+
|
|
1394
|
+
**Expand Workbench Array**
|
|
1395
|
+
|
|
1396
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/expand-array`
|
|
1397
|
+
- operationId: `expand_workbench_array_workbench_tables__table_id__expand_array_post` (also callable as `g8.api.call("expand_workbench_array_workbench_tables__table_id__expand_array_post", input)`)
|
|
1398
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1399
|
+
- API-key scope: `lists:write`
|
|
1400
|
+
|
|
1401
|
+
Fan an array field out into one row per element. FREE.
|
|
1402
|
+
|
|
1403
|
+
This MULTIPLIES the row count: a table of 1,000 rows whose array averages
|
|
1404
|
+
ten elements becomes 10,000 rows. Nothing is charged for the expansion
|
|
1405
|
+
itself, but every later per-row operation is then ten times the size.
|
|
1406
|
+
|
|
1407
|
+
**Input**
|
|
1408
|
+
|
|
1409
|
+
| Field | Type | Required | Description |
|
|
1410
|
+
|---|---|---|---|
|
|
1411
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
1412
|
+
| `body` | `ExpandArrayRequest` | yes | Request body; fields below. |
|
|
1413
|
+
|
|
1414
|
+
Body fields (`ExpandArrayRequest`):
|
|
1415
|
+
|
|
1416
|
+
| Field | Type | Required | Description |
|
|
1417
|
+
|---|---|---|---|
|
|
1418
|
+
| `body.array_field_path` | `string` | yes | min length 1 |
|
|
1419
|
+
| `body.keep_parent_fields` | `boolean` | no | Copy the parent row's other fields onto each new row. default `true` |
|
|
1420
|
+
| `body.source_column_id` | `integer \| null` | no | |
|
|
1421
|
+
|
|
1422
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1423
|
+
|
|
1424
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1425
|
+
|
|
1426
|
+
**Example**
|
|
1427
|
+
|
|
1428
|
+
```ts
|
|
1429
|
+
const result = await g8.api.workbench.expandWorkbenchArray({ path: { table_id: "id" }, body: { array_field_path: "example" } });
|
|
1430
|
+
```
|
|
1431
|
+
|
|
1432
|
+
---
|
|
1433
|
+
|
|
1434
|
+
<a id="op-exportworkbenchaifindpeople"></a>
|
|
1435
|
+
|
|
1436
|
+
### `g8.api.workbench.exportWorkbenchAiFindPeople(input)`
|
|
1437
|
+
|
|
1438
|
+
**Export Workbench Ai Find People**
|
|
1439
|
+
|
|
1440
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/ai/groups/{group_id}/find-people/export`
|
|
1441
|
+
- operationId: `export_workbench_ai_find_people_workbench_tables__table_id__ai_groups__group_id__find_people_export_post` (also callable as `g8.api.call("export_workbench_ai_find_people_workbench_tables__table_id__ai_groups__group_id__find_people_export_post", input)`)
|
|
1442
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1443
|
+
- API-key scope: `lists:write`
|
|
1444
|
+
|
|
1445
|
+
Copy chosen candidates into the group's people table. Free.
|
|
1446
|
+
|
|
1447
|
+
**Input**
|
|
1448
|
+
|
|
1449
|
+
| Field | Type | Required | Description |
|
|
1450
|
+
|---|---|---|---|
|
|
1451
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
1452
|
+
| `path.group_id` | `string` | yes | The AI group id. |
|
|
1453
|
+
| `body` | `UpdateStagingAIFindPeopleCandidatesRequest` | yes | Request body; fields below. |
|
|
1454
|
+
|
|
1455
|
+
Body fields (`UpdateStagingAIFindPeopleCandidatesRequest`):
|
|
1456
|
+
|
|
1457
|
+
| Field | Type | Required | Description |
|
|
1458
|
+
|---|---|---|---|
|
|
1459
|
+
| `body.candidate_ids` | `Array<string>` | no | min items 1 |
|
|
1460
|
+
|
|
1461
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1462
|
+
|
|
1463
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1464
|
+
|
|
1465
|
+
**Example**
|
|
1466
|
+
|
|
1467
|
+
```ts
|
|
1468
|
+
const result = await g8.api.workbench.exportWorkbenchAiFindPeople({ path: { table_id: "id", group_id: "id" }, body: {} });
|
|
1469
|
+
```
|
|
1470
|
+
|
|
1471
|
+
---
|
|
1472
|
+
|
|
1473
|
+
<a id="op-exportworkbenchtable"></a>
|
|
1474
|
+
|
|
1475
|
+
### `g8.api.workbench.exportWorkbenchTable(input)`
|
|
1476
|
+
|
|
1477
|
+
**Export Workbench Table**
|
|
1478
|
+
|
|
1479
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/export`
|
|
1480
|
+
- operationId: `export_workbench_table_workbench_tables__table_id__export_post` (also callable as `g8.api.call("export_workbench_table_workbench_tables__table_id__export_post", input)`)
|
|
1481
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1482
|
+
- API-key scope: `lists:write`
|
|
1483
|
+
|
|
1484
|
+
Export rows into an audience list. THIS CREATES REAL CRM RECORDS.
|
|
1485
|
+
|
|
1486
|
+
A destination is REQUIRED - either `list_id`, or `create_new_list` with a
|
|
1487
|
+
`new_list_name`. The app would otherwise accept a body naming neither and
|
|
1488
|
+
decide for itself where a customer's data lands.
|
|
1489
|
+
|
|
1490
|
+
`enrich_after_export` and its enrichment configs are deliberately not
|
|
1491
|
+
accepted here: they spend credits, and a spend should not be a side effect
|
|
1492
|
+
of an export call.
|
|
1493
|
+
|
|
1494
|
+
**Input**
|
|
1495
|
+
|
|
1496
|
+
| Field | Type | Required | Description |
|
|
1497
|
+
|---|---|---|---|
|
|
1498
|
+
| `path.table_id` | `string` | yes | Table id (UUID). |
|
|
1499
|
+
| `body` | `WorkbenchExportRequest` | yes | Request body; fields below. |
|
|
1500
|
+
|
|
1501
|
+
Body fields (`WorkbenchExportRequest`):
|
|
1502
|
+
|
|
1503
|
+
| Field | Type | Required | Description |
|
|
1504
|
+
|---|---|---|---|
|
|
1505
|
+
| `body.create_new_list` | `boolean` | no | default `false` |
|
|
1506
|
+
| `body.entity_type` | `"contact" \| "company"` | no | default `"contact"` |
|
|
1507
|
+
| `body.exclude_row_ids` | `Array<integer> \| null` | no | max items 100000 |
|
|
1508
|
+
| `body.export_filter` | `Record<string, unknown> \| null` | no | |
|
|
1509
|
+
| `body.export_verified_only` | `boolean` | no | Only rows whose email passed verification. default `false` |
|
|
1510
|
+
| `body.list_id` | `integer \| null` | no | Existing list to export into. |
|
|
1511
|
+
| `body.new_list_name` | `string \| null` | no | |
|
|
1512
|
+
| `body.row_ids` | `Array<integer> \| null` | no | max items 100000 |
|
|
1513
|
+
|
|
1514
|
+
**Returns** `ApiResponse_dict_`: the envelope `{ data: Record<string, unknown>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1515
|
+
|
|
1516
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1517
|
+
|
|
1518
|
+
**Example**
|
|
1519
|
+
|
|
1520
|
+
```ts
|
|
1521
|
+
const result = await g8.api.workbench.exportWorkbenchTable({ path: { table_id: "id" }, body: {} });
|
|
1522
|
+
```
|
|
1523
|
+
|
|
1524
|
+
---
|
|
1525
|
+
|
|
1526
|
+
<a id="op-extractworkbenchcolumn"></a>
|
|
1527
|
+
|
|
1528
|
+
### `g8.api.workbench.extractWorkbenchColumn(input)`
|
|
1529
|
+
|
|
1530
|
+
**Extract Workbench Column**
|
|
1531
|
+
|
|
1532
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/columns/extract`
|
|
1533
|
+
- operationId: `extract_workbench_column_workbench_tables__table_id__columns_extract_post` (also callable as `g8.api.call("extract_workbench_column_workbench_tables__table_id__columns_extract_post", input)`)
|
|
1534
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1535
|
+
- API-key scope: `lists:write`
|
|
1536
|
+
|
|
1537
|
+
Create a column from one JSON path, filled across every row. FREE.
|
|
1538
|
+
|
|
1539
|
+
`field_path` comes from `discover-fields`. Pure local extraction: no
|
|
1540
|
+
provider, no model, no credit.
|
|
1541
|
+
|
|
1542
|
+
**Input**
|
|
1543
|
+
|
|
1544
|
+
| Field | Type | Required | Description |
|
|
1545
|
+
|---|---|---|---|
|
|
1546
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
1547
|
+
| `body` | `ExtractColumnRequest` | yes | Request body; fields below. |
|
|
1548
|
+
|
|
1549
|
+
Body fields (`ExtractColumnRequest`):
|
|
1550
|
+
|
|
1551
|
+
| Field | Type | Required | Description |
|
|
1552
|
+
|---|---|---|---|
|
|
1553
|
+
| `body.column_name` | `string` | yes | min length 1, max length 255, pattern `^[a-z][a-z0-9_]*$` |
|
|
1554
|
+
| `body.display_name` | `string` | yes | min length 1, max length 255 |
|
|
1555
|
+
| `body.field_path` | `string` | yes | Dot path inside the raw JSON. min length 1 |
|
|
1556
|
+
| `body.source_column_id` | `integer` | yes | |
|
|
1557
|
+
| `body.data_type` | `"text" \| "number" \| "boolean" \| "json"` | no | default `"text"` |
|
|
1558
|
+
|
|
1559
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1560
|
+
|
|
1561
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1562
|
+
|
|
1563
|
+
**Example**
|
|
1564
|
+
|
|
1565
|
+
```ts
|
|
1566
|
+
const result = await g8.api.workbench.extractWorkbenchColumn({
|
|
1567
|
+
path: { table_id: "id" },
|
|
1568
|
+
body: {
|
|
1569
|
+
column_name: "Example",
|
|
1570
|
+
display_name: "Example",
|
|
1571
|
+
field_path: "example",
|
|
1572
|
+
source_column_id: 123,
|
|
1573
|
+
},
|
|
1574
|
+
});
|
|
1575
|
+
```
|
|
1576
|
+
|
|
1577
|
+
---
|
|
1578
|
+
|
|
1579
|
+
<a id="op-generateworkbenchprompt"></a>
|
|
1580
|
+
|
|
1581
|
+
### `g8.api.workbench.generateWorkbenchPrompt(input)`
|
|
1582
|
+
|
|
1583
|
+
**Generate Workbench Prompt**
|
|
1584
|
+
|
|
1585
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/ai/generate-prompt`
|
|
1586
|
+
- operationId: `generate_workbench_prompt_workbench_tables__table_id__ai_generate_prompt_post` (also callable as `g8.api.call("generate_workbench_prompt_workbench_tables__table_id__ai_generate_prompt_post", input)`)
|
|
1587
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
1588
|
+
- API-key scope: `lists:run`
|
|
1589
|
+
|
|
1590
|
+
Draft an AI prompt from this table's columns. COSTS AN AI CALL.
|
|
1591
|
+
|
|
1592
|
+
A model reads the column names and five sample rows and writes a prompt for
|
|
1593
|
+
you. It does not debit the credit balance, but it is a real model call, so
|
|
1594
|
+
it is not free to run in a loop.
|
|
1595
|
+
|
|
1596
|
+
The returned prompt is a draft: nothing is configured and nothing is
|
|
1597
|
+
enriched until you save it.
|
|
1598
|
+
|
|
1599
|
+
**Input**
|
|
1600
|
+
|
|
1601
|
+
| Field | Type | Required | Description |
|
|
1602
|
+
|---|---|---|---|
|
|
1603
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
1604
|
+
| `body` | `StagingPromptGeneratorRequest` | yes | Request body; fields below. |
|
|
1605
|
+
|
|
1606
|
+
Body fields (`StagingPromptGeneratorRequest`):
|
|
1607
|
+
|
|
1608
|
+
| Field | Type | Required | Description |
|
|
1609
|
+
|---|---|---|---|
|
|
1610
|
+
| `body.task_description` | `string` | yes | What the AI pass should do, in plain words. min length 1 |
|
|
1611
|
+
|
|
1612
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1613
|
+
|
|
1614
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1615
|
+
|
|
1616
|
+
**Example**
|
|
1617
|
+
|
|
1618
|
+
```ts
|
|
1619
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
1620
|
+
const result = await g8.api.workbench.generateWorkbenchPrompt({ path: { table_id: "id" }, body: { task_description: "example" } });
|
|
1621
|
+
```
|
|
1622
|
+
|
|
1623
|
+
---
|
|
1624
|
+
|
|
1625
|
+
<a id="op-getscraperproviderconnection"></a>
|
|
1626
|
+
|
|
1627
|
+
### `g8.api.workbench.getScraperProviderConnection(input)`
|
|
1628
|
+
|
|
1629
|
+
**Get Scraper Provider Connection**
|
|
1630
|
+
|
|
1631
|
+
- HTTP: `GET /api/v1/workbench/scraper/providers/{provider}/connection`
|
|
1632
|
+
- operationId: `get_scraper_provider_connection_workbench_scraper_providers__provider__connection_get` (also callable as `g8.api.call("get_scraper_provider_connection_workbench_scraper_providers__provider__connection_get", input)`)
|
|
1633
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1634
|
+
- API-key scope: `lists:read`
|
|
1635
|
+
|
|
1636
|
+
Whether your provider account is connected. Free. The token is never returned.
|
|
1637
|
+
|
|
1638
|
+
**Input**
|
|
1639
|
+
|
|
1640
|
+
| Field | Type | Required | Description |
|
|
1641
|
+
|---|---|---|---|
|
|
1642
|
+
| `path.provider` | `"apify"` | yes | Which scraper provider. |
|
|
1643
|
+
|
|
1644
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1645
|
+
|
|
1646
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1647
|
+
|
|
1648
|
+
**Example**
|
|
1649
|
+
|
|
1650
|
+
```ts
|
|
1651
|
+
const result = await g8.api.workbench.getScraperProviderConnection({ path: { provider: "apify" } });
|
|
1652
|
+
```
|
|
1653
|
+
|
|
1654
|
+
---
|
|
1655
|
+
|
|
1656
|
+
<a id="op-getworkbenchaifindpeoplerow"></a>
|
|
1657
|
+
|
|
1658
|
+
### `g8.api.workbench.getWorkbenchAiFindPeopleRow(input)`
|
|
1659
|
+
|
|
1660
|
+
**Get Workbench Ai Find People Row**
|
|
1661
|
+
|
|
1662
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/ai/groups/{group_id}/find-people/rows/{source_row_id}`
|
|
1663
|
+
- operationId: `get_workbench_ai_find_people_row_workbench_tables__table_id__ai_groups__group_id__find_people_rows__source_row_id__get` (also callable as `g8.api.call("get_workbench_ai_find_people_row_workbench_tables__table_id__ai_groups__group_id__find_people_rows__source_row_id__get", input)`)
|
|
1664
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1665
|
+
- API-key scope: `lists:read`
|
|
1666
|
+
|
|
1667
|
+
The people an AI find-people group found for one row. Free.
|
|
1668
|
+
|
|
1669
|
+
**Input**
|
|
1670
|
+
|
|
1671
|
+
| Field | Type | Required | Description |
|
|
1672
|
+
|---|---|---|---|
|
|
1673
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
1674
|
+
| `path.group_id` | `string` | yes | The AI group id. |
|
|
1675
|
+
| `path.source_row_id` | `integer` | yes | The company row the candidates were found for. |
|
|
1676
|
+
|
|
1677
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1678
|
+
|
|
1679
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1680
|
+
|
|
1681
|
+
**Example**
|
|
1682
|
+
|
|
1683
|
+
```ts
|
|
1684
|
+
const result = await g8.api.workbench.getWorkbenchAiFindPeopleRow({ path: { table_id: "id", group_id: "id", source_row_id: 123 } });
|
|
1685
|
+
```
|
|
1686
|
+
|
|
1687
|
+
---
|
|
1688
|
+
|
|
1689
|
+
<a id="op-getworkbenchaigroup"></a>
|
|
1690
|
+
|
|
1691
|
+
### `g8.api.workbench.getWorkbenchAiGroup(input)`
|
|
1692
|
+
|
|
1693
|
+
**Get Workbench Ai Group**
|
|
1694
|
+
|
|
1695
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/ai/groups/{group_id}`
|
|
1696
|
+
- operationId: `get_workbench_ai_group_workbench_tables__table_id__ai_groups__group_id__get` (also callable as `g8.api.call("get_workbench_ai_group_workbench_tables__table_id__ai_groups__group_id__get", input)`)
|
|
1697
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1698
|
+
- API-key scope: `lists:read`
|
|
1699
|
+
|
|
1700
|
+
Read one AI group's configuration. Free.
|
|
1701
|
+
|
|
1702
|
+
**Input**
|
|
1703
|
+
|
|
1704
|
+
| Field | Type | Required | Description |
|
|
1705
|
+
|---|---|---|---|
|
|
1706
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
1707
|
+
| `path.group_id` | `string` | yes | The AI group id. |
|
|
1708
|
+
|
|
1709
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1710
|
+
|
|
1711
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1712
|
+
|
|
1713
|
+
**Example**
|
|
1714
|
+
|
|
1715
|
+
```ts
|
|
1716
|
+
const result = await g8.api.workbench.getWorkbenchAiGroup({ path: { table_id: "id", group_id: "id" } });
|
|
1717
|
+
```
|
|
1718
|
+
|
|
1719
|
+
---
|
|
1720
|
+
|
|
1721
|
+
<a id="op-getworkbenchanalytics"></a>
|
|
1722
|
+
|
|
1723
|
+
### `g8.api.workbench.getWorkbenchAnalytics(input)`
|
|
1724
|
+
|
|
1725
|
+
**Get Workbench Analytics**
|
|
1726
|
+
|
|
1727
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/analytics`
|
|
1728
|
+
- operationId: `get_workbench_analytics_workbench_tables__table_id__analytics_get` (also callable as `g8.api.call("get_workbench_analytics_workbench_tables__table_id__analytics_get", input)`)
|
|
1729
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1730
|
+
- API-key scope: `lists:read`
|
|
1731
|
+
|
|
1732
|
+
Row status distribution, row counts and column fill rates. Free.
|
|
1733
|
+
|
|
1734
|
+
**Input**
|
|
1735
|
+
|
|
1736
|
+
| Field | Type | Required | Description |
|
|
1737
|
+
|---|---|---|---|
|
|
1738
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
1739
|
+
|
|
1740
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1741
|
+
|
|
1742
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1743
|
+
|
|
1744
|
+
**Example**
|
|
1745
|
+
|
|
1746
|
+
```ts
|
|
1747
|
+
const result = await g8.api.workbench.getWorkbenchAnalytics({ path: { table_id: "id" } });
|
|
1748
|
+
```
|
|
1749
|
+
|
|
1750
|
+
---
|
|
1751
|
+
|
|
1752
|
+
<a id="op-getworkbenchcolumnaiconfig"></a>
|
|
1753
|
+
|
|
1754
|
+
### `g8.api.workbench.getWorkbenchColumnAiConfig(input)`
|
|
1755
|
+
|
|
1756
|
+
**Get Workbench Column Ai Config**
|
|
1757
|
+
|
|
1758
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/columns/{col_id}/ai-config`
|
|
1759
|
+
- operationId: `get_workbench_column_ai_config_workbench_tables__table_id__columns__col_id__ai_config_get` (also callable as `g8.api.call("get_workbench_column_ai_config_workbench_tables__table_id__columns__col_id__ai_config_get", input)`)
|
|
1760
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1761
|
+
- API-key scope: `lists:read`
|
|
1762
|
+
|
|
1763
|
+
Read one column's AI pass. FREE.
|
|
1764
|
+
|
|
1765
|
+
**Input**
|
|
1766
|
+
|
|
1767
|
+
| Field | Type | Required | Description |
|
|
1768
|
+
|---|---|---|---|
|
|
1769
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
1770
|
+
| `path.col_id` | `integer` | yes | Column id. |
|
|
1771
|
+
|
|
1772
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1773
|
+
|
|
1774
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1775
|
+
|
|
1776
|
+
**Example**
|
|
1777
|
+
|
|
1778
|
+
```ts
|
|
1779
|
+
const result = await g8.api.workbench.getWorkbenchColumnAiConfig({ path: { table_id: "id", col_id: 123 } });
|
|
1780
|
+
```
|
|
1781
|
+
|
|
1782
|
+
---
|
|
1783
|
+
|
|
1784
|
+
<a id="op-getworkbenchhistory"></a>
|
|
1785
|
+
|
|
1786
|
+
### `g8.api.workbench.getWorkbenchHistory(input)`
|
|
1787
|
+
|
|
1788
|
+
**Get Workbench History**
|
|
1789
|
+
|
|
1790
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/history`
|
|
1791
|
+
- operationId: `get_workbench_history_workbench_tables__table_id__history_get` (also callable as `g8.api.call("get_workbench_history_workbench_tables__table_id__history_get", input)`)
|
|
1792
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1793
|
+
- API-key scope: `lists:read`
|
|
1794
|
+
|
|
1795
|
+
What has run on this table - imports, AI passes, exports - newest first.
|
|
1796
|
+
Free. Redacted: no credentials and no row data.
|
|
1797
|
+
|
|
1798
|
+
**Input**
|
|
1799
|
+
|
|
1800
|
+
| Field | Type | Required | Description |
|
|
1801
|
+
|---|---|---|---|
|
|
1802
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
1803
|
+
| `query.limit` | `integer` | no | default `25` |
|
|
1804
|
+
| `query.offset` | `integer` | no | default `0` |
|
|
1805
|
+
|
|
1806
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1807
|
+
|
|
1808
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1809
|
+
|
|
1810
|
+
**Example**
|
|
1811
|
+
|
|
1812
|
+
```ts
|
|
1813
|
+
const result = await g8.api.workbench.getWorkbenchHistory({ path: { table_id: "id" } });
|
|
1814
|
+
```
|
|
1815
|
+
|
|
1816
|
+
---
|
|
1817
|
+
|
|
1818
|
+
<a id="op-getworkbenchlockedrowcount"></a>
|
|
1819
|
+
|
|
1820
|
+
### `g8.api.workbench.getWorkbenchLockedRowCount(input)`
|
|
1821
|
+
|
|
1822
|
+
**Get Workbench Locked Row Count**
|
|
1823
|
+
|
|
1824
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/locked-row-count`
|
|
1825
|
+
- operationId: `get_workbench_locked_row_count_workbench_tables__table_id__locked_row_count_get` (also callable as `g8.api.call("get_workbench_locked_row_count_workbench_tables__table_id__locked_row_count_get", input)`)
|
|
1826
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1827
|
+
- API-key scope: `lists:read`
|
|
1828
|
+
|
|
1829
|
+
How many rows are still locked. FREE.
|
|
1830
|
+
|
|
1831
|
+
At one credit per row this number IS the price of unlocking everything.
|
|
1832
|
+
|
|
1833
|
+
**Input**
|
|
1834
|
+
|
|
1835
|
+
| Field | Type | Required | Description |
|
|
1836
|
+
|---|---|---|---|
|
|
1837
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
1838
|
+
|
|
1839
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1840
|
+
|
|
1841
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1842
|
+
|
|
1843
|
+
**Example**
|
|
1844
|
+
|
|
1845
|
+
```ts
|
|
1846
|
+
const result = await g8.api.workbench.getWorkbenchLockedRowCount({ path: { table_id: "id" } });
|
|
1847
|
+
```
|
|
1848
|
+
|
|
1849
|
+
---
|
|
1850
|
+
|
|
1851
|
+
<a id="op-getworkbenchmappingsuggestion"></a>
|
|
1852
|
+
|
|
1853
|
+
### `g8.api.workbench.getWorkbenchMappingSuggestion(input)`
|
|
1854
|
+
|
|
1855
|
+
**Get Workbench Mapping Suggestion**
|
|
1856
|
+
|
|
1857
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/suggest-mappings/{job_id}`
|
|
1858
|
+
- operationId: `get_workbench_mapping_suggestion_workbench_tables__table_id__suggest_mappings__job_id__get` (also callable as `g8.api.call("get_workbench_mapping_suggestion_workbench_tables__table_id__suggest_mappings__job_id__get", input)`)
|
|
1859
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1860
|
+
- API-key scope: `lists:read`
|
|
1861
|
+
|
|
1862
|
+
Collect a mapping suggestion. FREE - polling costs nothing.
|
|
1863
|
+
|
|
1864
|
+
**Input**
|
|
1865
|
+
|
|
1866
|
+
| Field | Type | Required | Description |
|
|
1867
|
+
|---|---|---|---|
|
|
1868
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
1869
|
+
| `path.job_id` | `string` | yes | Job id returned by `suggest-mappings`. |
|
|
1870
|
+
|
|
1871
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1872
|
+
|
|
1873
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1874
|
+
|
|
1875
|
+
**Example**
|
|
1876
|
+
|
|
1877
|
+
```ts
|
|
1878
|
+
const result = await g8.api.workbench.getWorkbenchMappingSuggestion({ path: { table_id: "id", job_id: "id" } });
|
|
1879
|
+
```
|
|
1880
|
+
|
|
1881
|
+
---
|
|
1882
|
+
|
|
1883
|
+
<a id="op-getworkbenchpipeline"></a>
|
|
1884
|
+
|
|
1885
|
+
### `g8.api.workbench.getWorkbenchPipeline(input)`
|
|
1886
|
+
|
|
1887
|
+
**Get Workbench Pipeline**
|
|
1888
|
+
|
|
1889
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/pipelines/{pipeline_id}`
|
|
1890
|
+
- operationId: `get_workbench_pipeline_workbench_tables__table_id__pipelines__pipeline_id__get` (also callable as `g8.api.call("get_workbench_pipeline_workbench_tables__table_id__pipelines__pipeline_id__get", input)`)
|
|
1891
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1892
|
+
- API-key scope: `lists:read`
|
|
1893
|
+
|
|
1894
|
+
Read one pipeline. Free.
|
|
1895
|
+
|
|
1896
|
+
**Input**
|
|
1897
|
+
|
|
1898
|
+
| Field | Type | Required | Description |
|
|
1899
|
+
|---|---|---|---|
|
|
1900
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
1901
|
+
| `path.pipeline_id` | `string` | yes | Pipeline id (UUID). |
|
|
1902
|
+
|
|
1903
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1904
|
+
|
|
1905
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1906
|
+
|
|
1907
|
+
**Example**
|
|
1908
|
+
|
|
1909
|
+
```ts
|
|
1910
|
+
const result = await g8.api.workbench.getWorkbenchPipeline({ path: { table_id: "id", pipeline_id: "id" } });
|
|
1911
|
+
```
|
|
1912
|
+
|
|
1913
|
+
---
|
|
1914
|
+
|
|
1915
|
+
<a id="op-getworkbenchrow"></a>
|
|
1916
|
+
|
|
1917
|
+
### `g8.api.workbench.getWorkbenchRow(input)`
|
|
1918
|
+
|
|
1919
|
+
**Get Workbench Row**
|
|
1920
|
+
|
|
1921
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/rows/{row_id}`
|
|
1922
|
+
- operationId: `get_workbench_row_workbench_tables__table_id__rows__row_id__get` (also callable as `g8.api.call("get_workbench_row_workbench_tables__table_id__rows__row_id__get", input)`)
|
|
1923
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1924
|
+
- API-key scope: `lists:read`
|
|
1925
|
+
|
|
1926
|
+
Read one row. Free.
|
|
1927
|
+
|
|
1928
|
+
**Input**
|
|
1929
|
+
|
|
1930
|
+
| Field | Type | Required | Description |
|
|
1931
|
+
|---|---|---|---|
|
|
1932
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
1933
|
+
| `path.row_id` | `integer` | yes | Row id. |
|
|
1934
|
+
|
|
1935
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1936
|
+
|
|
1937
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1938
|
+
|
|
1939
|
+
**Example**
|
|
1940
|
+
|
|
1941
|
+
```ts
|
|
1942
|
+
const result = await g8.api.workbench.getWorkbenchRow({ path: { table_id: "id", row_id: 123 } });
|
|
1943
|
+
```
|
|
1944
|
+
|
|
1945
|
+
---
|
|
1946
|
+
|
|
1947
|
+
<a id="op-getworkbenchschedule"></a>
|
|
1948
|
+
|
|
1949
|
+
### `g8.api.workbench.getWorkbenchSchedule(input)`
|
|
1950
|
+
|
|
1951
|
+
**Get Workbench Schedule**
|
|
1952
|
+
|
|
1953
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/schedule`
|
|
1954
|
+
- operationId: `get_workbench_schedule_workbench_tables__table_id__schedule_get` (also callable as `g8.api.call("get_workbench_schedule_workbench_tables__table_id__schedule_get", input)`)
|
|
1955
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1956
|
+
- API-key scope: `lists:read`
|
|
1957
|
+
|
|
1958
|
+
Read the table's schedule. FREE.
|
|
1959
|
+
|
|
1960
|
+
Worth reading before an audit of where credit is going: a schedule is the
|
|
1961
|
+
one spend on this surface that nobody triggers by hand.
|
|
1962
|
+
|
|
1963
|
+
**Input**
|
|
1964
|
+
|
|
1965
|
+
| Field | Type | Required | Description |
|
|
1966
|
+
|---|---|---|---|
|
|
1967
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
1968
|
+
|
|
1969
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1970
|
+
|
|
1971
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1972
|
+
|
|
1973
|
+
**Example**
|
|
1974
|
+
|
|
1975
|
+
```ts
|
|
1976
|
+
const result = await g8.api.workbench.getWorkbenchSchedule({ path: { table_id: "id" } });
|
|
1977
|
+
```
|
|
1978
|
+
|
|
1979
|
+
---
|
|
1980
|
+
|
|
1981
|
+
<a id="op-getworkbenchscraperrun"></a>
|
|
1982
|
+
|
|
1983
|
+
### `g8.api.workbench.getWorkbenchScraperRun(input)`
|
|
1984
|
+
|
|
1985
|
+
**Get Workbench Scraper Run**
|
|
1986
|
+
|
|
1987
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/scraper/runs/{run_id}`
|
|
1988
|
+
- operationId: `get_workbench_scraper_run_workbench_tables__table_id__scraper_runs__run_id__get` (also callable as `g8.api.call("get_workbench_scraper_run_workbench_tables__table_id__scraper_runs__run_id__get", input)`)
|
|
1989
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1990
|
+
- API-key scope: `lists:read`
|
|
1991
|
+
|
|
1992
|
+
One scraper run, with live progress while it is running. Free.
|
|
1993
|
+
|
|
1994
|
+
**Input**
|
|
1995
|
+
|
|
1996
|
+
| Field | Type | Required | Description |
|
|
1997
|
+
|---|---|---|---|
|
|
1998
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
1999
|
+
| `path.run_id` | `string` | yes | Scraper run id (UUID). |
|
|
2000
|
+
|
|
2001
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2002
|
+
|
|
2003
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2004
|
+
|
|
2005
|
+
**Example**
|
|
2006
|
+
|
|
2007
|
+
```ts
|
|
2008
|
+
const result = await g8.api.workbench.getWorkbenchScraperRun({ path: { table_id: "id", run_id: "id" } });
|
|
2009
|
+
```
|
|
2010
|
+
|
|
2011
|
+
---
|
|
2012
|
+
|
|
2013
|
+
<a id="op-getworkbenchtable"></a>
|
|
2014
|
+
|
|
2015
|
+
### `g8.api.workbench.getWorkbenchTable(input)`
|
|
2016
|
+
|
|
2017
|
+
**Get Workbench Table**
|
|
2018
|
+
|
|
2019
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}`
|
|
2020
|
+
- operationId: `get_workbench_table_workbench_tables__table_id__get` (also callable as `g8.api.call("get_workbench_table_workbench_tables__table_id__get", input)`)
|
|
2021
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
2022
|
+
- API-key scope: `lists:read`
|
|
2023
|
+
|
|
2024
|
+
One table's definition. Ungated, matching the app.
|
|
2025
|
+
|
|
2026
|
+
**Input**
|
|
2027
|
+
|
|
2028
|
+
| Field | Type | Required | Description |
|
|
2029
|
+
|---|---|---|---|
|
|
2030
|
+
| `path.table_id` | `string` | yes | Table id (UUID). |
|
|
2031
|
+
|
|
2032
|
+
**Returns** `ApiResponse_WorkbenchTable_`: the envelope `{ data: WorkbenchTable, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2033
|
+
|
|
2034
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2035
|
+
|
|
2036
|
+
`WorkbenchTable` fields:
|
|
2037
|
+
|
|
2038
|
+
| Field | Type | Required | Description |
|
|
2039
|
+
|---|---|---|---|
|
|
2040
|
+
| `created_at` | `string (date-time) \| null` | no | |
|
|
2041
|
+
| `description` | `string \| null` | no | |
|
|
2042
|
+
| `entity_type` | `string \| null` | no | contact or company. |
|
|
2043
|
+
| `id` | `string \| null` | no | |
|
|
2044
|
+
| `name` | `string \| null` | no | |
|
|
2045
|
+
| `row_count` | `integer \| null` | no | |
|
|
2046
|
+
| `updated_at` | `string (date-time) \| null` | no | |
|
|
2047
|
+
|
|
2048
|
+
**Example**
|
|
2049
|
+
|
|
2050
|
+
```ts
|
|
2051
|
+
const result = await g8.api.workbench.getWorkbenchTable({ path: { table_id: "id" } });
|
|
2052
|
+
```
|
|
2053
|
+
|
|
2054
|
+
---
|
|
2055
|
+
|
|
2056
|
+
<a id="op-getworkbenchwaterfall"></a>
|
|
2057
|
+
|
|
2058
|
+
### `g8.api.workbench.getWorkbenchWaterfall(input)`
|
|
2059
|
+
|
|
2060
|
+
**Get Workbench Waterfall**
|
|
2061
|
+
|
|
2062
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/waterfall/configs/{column_id}`
|
|
2063
|
+
- operationId: `get_workbench_waterfall_workbench_tables__table_id__waterfall_configs__column_id__get` (also callable as `g8.api.call("get_workbench_waterfall_workbench_tables__table_id__waterfall_configs__column_id__get", input)`)
|
|
2064
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
2065
|
+
- API-key scope: `lists:read`
|
|
2066
|
+
|
|
2067
|
+
Read a waterfall column's steps and settings. Free.
|
|
2068
|
+
|
|
2069
|
+
**Input**
|
|
2070
|
+
|
|
2071
|
+
| Field | Type | Required | Description |
|
|
2072
|
+
|---|---|---|---|
|
|
2073
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
2074
|
+
| `path.column_id` | `integer` | yes | The waterfall column id. |
|
|
2075
|
+
|
|
2076
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2077
|
+
|
|
2078
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2079
|
+
|
|
2080
|
+
**Example**
|
|
2081
|
+
|
|
2082
|
+
```ts
|
|
2083
|
+
const result = await g8.api.workbench.getWorkbenchWaterfall({ path: { table_id: "id", column_id: 123 } });
|
|
2084
|
+
```
|
|
2085
|
+
|
|
2086
|
+
---
|
|
2087
|
+
|
|
2088
|
+
<a id="op-importworkbenchdatafile"></a>
|
|
2089
|
+
|
|
2090
|
+
### `g8.api.workbench.importWorkbenchDatafile(input)`
|
|
2091
|
+
|
|
2092
|
+
**Import Workbench Datafile**
|
|
2093
|
+
|
|
2094
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/import/datafile`
|
|
2095
|
+
- operationId: `import_workbench_datafile_workbench_tables__table_id__import_datafile_post` (also callable as `g8.api.call("import_workbench_datafile_workbench_tables__table_id__import_datafile_post", input)`)
|
|
2096
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
2097
|
+
- API-key scope: `lists:write`
|
|
2098
|
+
|
|
2099
|
+
Import rows from an ALREADY-UPLOADED datafile. FREE.
|
|
2100
|
+
|
|
2101
|
+
This takes a `datafile_id`, never file content, which is why it fits a JSON
|
|
2102
|
+
envelope. The upload that produces that id is a multipart operation and is
|
|
2103
|
+
not part of this contract.
|
|
2104
|
+
|
|
2105
|
+
Same auto-enrichment caveat as the paste import: the rows land free, and an
|
|
2106
|
+
auto-enriching table then spends on them.
|
|
2107
|
+
|
|
2108
|
+
**Input**
|
|
2109
|
+
|
|
2110
|
+
| Field | Type | Required | Description |
|
|
2111
|
+
|---|---|---|---|
|
|
2112
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
2113
|
+
| `body` | `DatafileImportRequest` | yes | Request body; fields below. |
|
|
2114
|
+
|
|
2115
|
+
Body fields (`DatafileImportRequest`):
|
|
2116
|
+
|
|
2117
|
+
| Field | Type | Required | Description |
|
|
2118
|
+
|---|---|---|---|
|
|
2119
|
+
| `body.datafile_id` | `string` | yes | Id of a previously uploaded datafile. min length 1 |
|
|
2120
|
+
| `body.column_mapping` | `Record<string, string> \| null` | no | Source header -> column name. |
|
|
2121
|
+
| `body.limit` | `integer \| null` | no | min 1, max 100000 |
|
|
2122
|
+
| `body.raw_source_column_id` | `integer \| null` | no | |
|
|
2123
|
+
| `body.skip_duplicates` | `boolean` | no | default `true` |
|
|
2124
|
+
|
|
2125
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2126
|
+
|
|
2127
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2128
|
+
|
|
2129
|
+
**Example**
|
|
2130
|
+
|
|
2131
|
+
```ts
|
|
2132
|
+
const result = await g8.api.workbench.importWorkbenchDatafile({ path: { table_id: "id" }, body: { datafile_id: "id" } });
|
|
2133
|
+
```
|
|
2134
|
+
|
|
2135
|
+
---
|
|
2136
|
+
|
|
2137
|
+
<a id="op-importworkbenchfromcrm"></a>
|
|
2138
|
+
|
|
2139
|
+
### `g8.api.workbench.importWorkbenchFromCrm(input)`
|
|
2140
|
+
|
|
2141
|
+
**Import Workbench From Crm**
|
|
2142
|
+
|
|
2143
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/import/crm`
|
|
2144
|
+
- operationId: `import_workbench_from_crm_workbench_tables__table_id__import_crm_post` (also callable as `g8.api.call("import_workbench_from_crm_workbench_tables__table_id__import_crm_post", input)`)
|
|
2145
|
+
- 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
|
|
2146
|
+
- API-key scope: `lists:run`
|
|
2147
|
+
|
|
2148
|
+
Pull records out of a connected CRM into this table. READS THEIR SYSTEM.
|
|
2149
|
+
|
|
2150
|
+
No credit is charged for the import itself, but it reaches into the
|
|
2151
|
+
customer's own CRM, which is why it needs the same grant as the other
|
|
2152
|
+
operations that do - a customer can hand out "read my workbench" without
|
|
2153
|
+
handing out "read my Salesforce".
|
|
2154
|
+
|
|
2155
|
+
`limit` caps what lands, and it matters twice: once for the CRM's own API
|
|
2156
|
+
quota, and again if this table auto-enriches, because every imported row is
|
|
2157
|
+
then a row that spends.
|
|
2158
|
+
|
|
2159
|
+
`crm_provider` and `object_type` are the app's legacy aliases for
|
|
2160
|
+
`provider_type` and `entity_type`. They are mirrored because the app still
|
|
2161
|
+
accepts them, not because new code should send them.
|
|
2162
|
+
|
|
2163
|
+
**Input**
|
|
2164
|
+
|
|
2165
|
+
| Field | Type | Required | Description |
|
|
2166
|
+
|---|---|---|---|
|
|
2167
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
2168
|
+
| `body` | `CRMImportRequest` | yes | Request body; fields below. |
|
|
2169
|
+
|
|
2170
|
+
Body fields (`CRMImportRequest`):
|
|
2171
|
+
|
|
2172
|
+
| Field | Type | Required | Description |
|
|
2173
|
+
|---|---|---|---|
|
|
2174
|
+
| `body.connection_id` | `string \| null` | no | Which CRM connection to read. |
|
|
2175
|
+
| `body.crm_provider` | `string \| null` | no | Legacy alias of `provider_type`. |
|
|
2176
|
+
| `body.entity_type` | `"contact" \| "company" \| null` | no | |
|
|
2177
|
+
| `body.filters` | `Record<string, unknown> \| null` | no | |
|
|
2178
|
+
| `body.limit` | `integer` | no | default `1000`, min 1, max 10000 |
|
|
2179
|
+
| `body.object_type` | `string \| null` | no | Legacy alias of `entity_type` (plural form). |
|
|
2180
|
+
| `body.provider_type` | `string \| null` | no | CRM provider key, e.g. 'hubspot'. |
|
|
2181
|
+
| `body.raw_source_column_id` | `integer \| null` | no | |
|
|
2182
|
+
|
|
2183
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2184
|
+
|
|
2185
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2186
|
+
|
|
2187
|
+
**Example**
|
|
2188
|
+
|
|
2189
|
+
```ts
|
|
2190
|
+
// external: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first.
|
|
2191
|
+
const result = await g8.api.workbench.importWorkbenchFromCrm({ path: { table_id: "id" }, body: {} });
|
|
2192
|
+
```
|
|
2193
|
+
|
|
2194
|
+
---
|
|
2195
|
+
|
|
2196
|
+
<a id="op-importworkbenchfromsearch"></a>
|
|
2197
|
+
|
|
2198
|
+
### `g8.api.workbench.importWorkbenchFromSearch(input)`
|
|
2199
|
+
|
|
2200
|
+
**Import Workbench From Search**
|
|
2201
|
+
|
|
2202
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/import/search`
|
|
2203
|
+
- operationId: `import_workbench_from_search_workbench_tables__table_id__import_search_post` (also callable as `g8.api.call("import_workbench_from_search_workbench_tables__table_id__import_search_post", input)`)
|
|
2204
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
2205
|
+
- API-key scope: `lists:run`
|
|
2206
|
+
|
|
2207
|
+
Import people from a search into the table. CHARGES when revealed.
|
|
2208
|
+
|
|
2209
|
+
Up to `limit` rows land LOCKED: each costs a credit to unlock with
|
|
2210
|
+
`POST .../unlock-rows`. Sample it first with `.../import/search/preview`.
|
|
2211
|
+
|
|
2212
|
+
**Input**
|
|
2213
|
+
|
|
2214
|
+
| Field | Type | Required | Description |
|
|
2215
|
+
|---|---|---|---|
|
|
2216
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
2217
|
+
| `body` | `WorkbenchSearchImportRequest` | yes | Request body; fields below. |
|
|
2218
|
+
|
|
2219
|
+
Body fields (`WorkbenchSearchImportRequest`):
|
|
2220
|
+
|
|
2221
|
+
| Field | Type | Required | Description |
|
|
2222
|
+
|---|---|---|---|
|
|
2223
|
+
| `body.filters` | `Array<Record<string, unknown>>` | yes | min items 1 |
|
|
2224
|
+
| `body.limit` | `integer` | no | default `500`, min 1, max 50000 |
|
|
2225
|
+
| `body.max_employees_per_company` | `integer \| null` | no | min 1, max 1000 |
|
|
2226
|
+
| `body.max_result` | `integer \| null` | no | min 1, max 50000 |
|
|
2227
|
+
| `body.raw_source_column_id` | `integer \| null` | no | |
|
|
2228
|
+
| `body.return_inserted_ids` | `boolean` | no | default `false` |
|
|
2229
|
+
| `body.skip_duplicates` | `boolean` | no | default `true` |
|
|
2230
|
+
|
|
2231
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2232
|
+
|
|
2233
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2234
|
+
|
|
2235
|
+
**Example**
|
|
2236
|
+
|
|
2237
|
+
```ts
|
|
2238
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
2239
|
+
const result = await g8.api.workbench.importWorkbenchFromSearch({ path: { table_id: "id" }, body: { filters: [{}] } });
|
|
2240
|
+
```
|
|
2241
|
+
|
|
2242
|
+
---
|
|
2243
|
+
|
|
2244
|
+
<a id="op-listworkbenchaipresets"></a>
|
|
2245
|
+
|
|
2246
|
+
### `g8.api.workbench.listWorkbenchAiPresets(input?)`
|
|
2247
|
+
|
|
2248
|
+
**List Workbench Ai Presets**
|
|
2249
|
+
|
|
2250
|
+
- HTTP: `GET /api/v1/workbench/ai-presets`
|
|
2251
|
+
- operationId: `list_workbench_ai_presets_workbench_ai_presets_get` (also callable as `g8.api.call("list_workbench_ai_presets_workbench_ai_presets_get", input)`)
|
|
2252
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
2253
|
+
- API-key scope: `lists:read`
|
|
2254
|
+
|
|
2255
|
+
Every AI preset available to the organisation. FREE.
|
|
2256
|
+
|
|
2257
|
+
The catalogue of ready-made passes. `GET /workbench/tables/{id}/ai-presets`
|
|
2258
|
+
narrows the same catalogue to the ones that fit a particular table's
|
|
2259
|
+
columns.
|
|
2260
|
+
|
|
2261
|
+
**Input**: none.
|
|
2262
|
+
|
|
2263
|
+
**Returns** `ApiResponse_EnrichmentListPayload_`: the envelope `{ data: EnrichmentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2264
|
+
|
|
2265
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2266
|
+
|
|
2267
|
+
`EnrichmentListPayload` fields:
|
|
2268
|
+
|
|
2269
|
+
| Field | Type | Required | Description |
|
|
2270
|
+
|---|---|---|---|
|
|
2271
|
+
| `items` | `Array<unknown>` | no | The collection, always present. |
|
|
2272
|
+
|
|
2273
|
+
**Example**
|
|
2274
|
+
|
|
2275
|
+
```ts
|
|
2276
|
+
const result = await g8.api.workbench.listWorkbenchAiPresets();
|
|
2277
|
+
```
|
|
2278
|
+
|
|
2279
|
+
---
|
|
2280
|
+
|
|
2281
|
+
<a id="op-listworkbenchbindings"></a>
|
|
2282
|
+
|
|
2283
|
+
### `g8.api.workbench.listWorkbenchBindings(input)`
|
|
2284
|
+
|
|
2285
|
+
**List Workbench Bindings**
|
|
2286
|
+
|
|
2287
|
+
- HTTP: `GET /api/v1/workbench-bindings`
|
|
2288
|
+
- operationId: `list_workbench_bindings_workbench_bindings_get` (also callable as `g8.api.call("list_workbench_bindings_workbench_bindings_get", input)`)
|
|
2289
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
2290
|
+
- API-key scope: `lists:read`
|
|
2291
|
+
|
|
2292
|
+
The workflow bindings on one list. FREE. Requires read access to it.
|
|
2293
|
+
|
|
2294
|
+
**Input**
|
|
2295
|
+
|
|
2296
|
+
| Field | Type | Required | Description |
|
|
2297
|
+
|---|---|---|---|
|
|
2298
|
+
| `query.list_id` | `integer` | yes | The list whose bindings to read. |
|
|
2299
|
+
| `query.workflow_id` | `string \| null` | no | Only this workflow's bindings. |
|
|
2300
|
+
|
|
2301
|
+
**Returns** `ApiResponse_EnrichmentListPayload_`: the envelope `{ data: EnrichmentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2302
|
+
|
|
2303
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2304
|
+
|
|
2305
|
+
`EnrichmentListPayload` fields:
|
|
2306
|
+
|
|
2307
|
+
| Field | Type | Required | Description |
|
|
2308
|
+
|---|---|---|---|
|
|
2309
|
+
| `items` | `Array<unknown>` | no | The collection, always present. |
|
|
2310
|
+
|
|
2311
|
+
**Example**
|
|
2312
|
+
|
|
2313
|
+
```ts
|
|
2314
|
+
const result = await g8.api.workbench.listWorkbenchBindings({ query: { list_id: 123 } });
|
|
2315
|
+
```
|
|
2316
|
+
|
|
2317
|
+
---
|
|
2318
|
+
|
|
2319
|
+
<a id="op-listworkbenchcolumnsources"></a>
|
|
2320
|
+
|
|
2321
|
+
### `g8.api.workbench.listWorkbenchColumnSources(input)`
|
|
2322
|
+
|
|
2323
|
+
**List Workbench Column Sources**
|
|
2324
|
+
|
|
2325
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/columns/{col_id}/sources`
|
|
2326
|
+
- operationId: `list_workbench_column_sources_workbench_tables__table_id__columns__col_id__sources_get` (also callable as `g8.api.call("list_workbench_column_sources_workbench_tables__table_id__columns__col_id__sources_get", input)`)
|
|
2327
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
2328
|
+
- API-key scope: `lists:read`
|
|
2329
|
+
|
|
2330
|
+
The ingest sources bound to a raw JSON column, with their webhook paths.
|
|
2331
|
+
Free. Credentials are never returned.
|
|
2332
|
+
|
|
2333
|
+
**Input**
|
|
2334
|
+
|
|
2335
|
+
| Field | Type | Required | Description |
|
|
2336
|
+
|---|---|---|---|
|
|
2337
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
2338
|
+
| `path.col_id` | `integer` | yes | Column id. |
|
|
2339
|
+
|
|
2340
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2341
|
+
|
|
2342
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2343
|
+
|
|
2344
|
+
**Example**
|
|
2345
|
+
|
|
2346
|
+
```ts
|
|
2347
|
+
const result = await g8.api.workbench.listWorkbenchColumnSources({ path: { table_id: "id", col_id: 123 } });
|
|
2348
|
+
```
|
|
2349
|
+
|
|
2350
|
+
---
|
|
2351
|
+
|
|
2352
|
+
<a id="op-listworkbenchcolumns"></a>
|
|
2353
|
+
|
|
2354
|
+
### `g8.api.workbench.listWorkbenchColumns(input)`
|
|
2355
|
+
|
|
2356
|
+
**List Workbench Columns**
|
|
2357
|
+
|
|
2358
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/columns`
|
|
2359
|
+
- operationId: `list_workbench_columns_workbench_tables__table_id__columns_get` (also callable as `g8.api.call("list_workbench_columns_workbench_tables__table_id__columns_get", input)`)
|
|
2360
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
2361
|
+
- API-key scope: `lists:read`
|
|
2362
|
+
|
|
2363
|
+
The table's columns. Read this before writing rows - `data` keys are
|
|
2364
|
+
column MACHINE names.
|
|
2365
|
+
|
|
2366
|
+
**Input**
|
|
2367
|
+
|
|
2368
|
+
| Field | Type | Required | Description |
|
|
2369
|
+
|---|---|---|---|
|
|
2370
|
+
| `path.table_id` | `string` | yes | Table id (UUID). |
|
|
2371
|
+
|
|
2372
|
+
**Returns** `ApiResponse_WorkbenchPage_`: the envelope `{ data: WorkbenchPage, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2373
|
+
|
|
2374
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2375
|
+
|
|
2376
|
+
`WorkbenchPage` fields:
|
|
2377
|
+
|
|
2378
|
+
| Field | Type | Required | Description |
|
|
2379
|
+
|---|---|---|---|
|
|
2380
|
+
| `items` | `Array<Record<string, unknown>>` | no | |
|
|
2381
|
+
| `total` | `integer` | no | default `0` |
|
|
2382
|
+
|
|
2383
|
+
**Example**
|
|
2384
|
+
|
|
2385
|
+
```ts
|
|
2386
|
+
const result = await g8.api.workbench.listWorkbenchColumns({ path: { table_id: "id" } });
|
|
2387
|
+
```
|
|
2388
|
+
|
|
2389
|
+
---
|
|
2390
|
+
|
|
2391
|
+
<a id="op-listworkbenchconnections"></a>
|
|
2392
|
+
|
|
2393
|
+
### `g8.api.workbench.listWorkbenchConnections(input)`
|
|
2394
|
+
|
|
2395
|
+
**List Workbench Connections**
|
|
2396
|
+
|
|
2397
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/connections`
|
|
2398
|
+
- operationId: `list_workbench_connections_workbench_tables__table_id__connections_get` (also callable as `g8.api.call("list_workbench_connections_workbench_tables__table_id__connections_get", input)`)
|
|
2399
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
2400
|
+
- API-key scope: `lists:read`
|
|
2401
|
+
|
|
2402
|
+
Connections where this table is the source or the destination. Free.
|
|
2403
|
+
|
|
2404
|
+
**Input**
|
|
2405
|
+
|
|
2406
|
+
| Field | Type | Required | Description |
|
|
2407
|
+
|---|---|---|---|
|
|
2408
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
2409
|
+
|
|
2410
|
+
**Returns** `ApiResponse_EnrichmentListPayload_`: the envelope `{ data: EnrichmentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2411
|
+
|
|
2412
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2413
|
+
|
|
2414
|
+
`EnrichmentListPayload` fields:
|
|
2415
|
+
|
|
2416
|
+
| Field | Type | Required | Description |
|
|
2417
|
+
|---|---|---|---|
|
|
2418
|
+
| `items` | `Array<unknown>` | no | The collection, always present. |
|
|
2419
|
+
|
|
2420
|
+
**Example**
|
|
2421
|
+
|
|
2422
|
+
```ts
|
|
2423
|
+
const result = await g8.api.workbench.listWorkbenchConnections({ path: { table_id: "id" } });
|
|
2424
|
+
```
|
|
2425
|
+
|
|
2426
|
+
---
|
|
2427
|
+
|
|
2428
|
+
<a id="op-listworkbenchenrichmentconfigs"></a>
|
|
2429
|
+
|
|
2430
|
+
### `g8.api.workbench.listWorkbenchEnrichmentConfigs(input)`
|
|
2431
|
+
|
|
2432
|
+
**List Workbench Enrichment Configs**
|
|
2433
|
+
|
|
2434
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/enrichment-configs`
|
|
2435
|
+
- operationId: `list_workbench_enrichment_configs_workbench_tables__table_id__enrichment_configs_get` (also callable as `g8.api.call("list_workbench_enrichment_configs_workbench_tables__table_id__enrichment_configs_get", input)`)
|
|
2436
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
2437
|
+
- API-key scope: `lists:read`
|
|
2438
|
+
|
|
2439
|
+
Every enrichment configuration attached to this table. FREE.
|
|
2440
|
+
|
|
2441
|
+
The inventory of what WOULD spend if run - read it before enabling
|
|
2442
|
+
auto-enrichment, which runs all of them.
|
|
2443
|
+
|
|
2444
|
+
**Input**
|
|
2445
|
+
|
|
2446
|
+
| Field | Type | Required | Description |
|
|
2447
|
+
|---|---|---|---|
|
|
2448
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
2449
|
+
| `query.type` | `string \| null` | no | Narrow to one config kind. Omit for all of them. |
|
|
2450
|
+
|
|
2451
|
+
**Returns** `ApiResponse_EnrichmentListPayload_`: the envelope `{ data: EnrichmentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2452
|
+
|
|
2453
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2454
|
+
|
|
2455
|
+
`EnrichmentListPayload` fields:
|
|
2456
|
+
|
|
2457
|
+
| Field | Type | Required | Description |
|
|
2458
|
+
|---|---|---|---|
|
|
2459
|
+
| `items` | `Array<unknown>` | no | The collection, always present. |
|
|
2460
|
+
|
|
2461
|
+
**Example**
|
|
2462
|
+
|
|
2463
|
+
```ts
|
|
2464
|
+
const result = await g8.api.workbench.listWorkbenchEnrichmentConfigs({ path: { table_id: "id" } });
|
|
2465
|
+
```
|
|
2466
|
+
|
|
2467
|
+
---
|
|
2468
|
+
|
|
2469
|
+
<a id="op-listworkbenchfindpeopleconfigs"></a>
|
|
2470
|
+
|
|
2471
|
+
### `g8.api.workbench.listWorkbenchFindPeopleConfigs(input)`
|
|
2472
|
+
|
|
2473
|
+
**List Workbench Find People Configs**
|
|
2474
|
+
|
|
2475
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/find-people/configs`
|
|
2476
|
+
- operationId: `list_workbench_find_people_configs_workbench_tables__table_id__find_people_configs_get` (also callable as `g8.api.call("list_workbench_find_people_configs_workbench_tables__table_id__find_people_configs_get", input)`)
|
|
2477
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
2478
|
+
- API-key scope: `lists:read`
|
|
2479
|
+
|
|
2480
|
+
The table's find-people configurations. Free.
|
|
2481
|
+
|
|
2482
|
+
**Input**
|
|
2483
|
+
|
|
2484
|
+
| Field | Type | Required | Description |
|
|
2485
|
+
|---|---|---|---|
|
|
2486
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
2487
|
+
|
|
2488
|
+
**Returns** `ApiResponse_EnrichmentListPayload_`: the envelope `{ data: EnrichmentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2489
|
+
|
|
2490
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2491
|
+
|
|
2492
|
+
`EnrichmentListPayload` fields:
|
|
2493
|
+
|
|
2494
|
+
| Field | Type | Required | Description |
|
|
2495
|
+
|---|---|---|---|
|
|
2496
|
+
| `items` | `Array<unknown>` | no | The collection, always present. |
|
|
2497
|
+
|
|
2498
|
+
**Example**
|
|
2499
|
+
|
|
2500
|
+
```ts
|
|
2501
|
+
const result = await g8.api.workbench.listWorkbenchFindPeopleConfigs({ path: { table_id: "id" } });
|
|
2502
|
+
```
|
|
2503
|
+
|
|
2504
|
+
---
|
|
2505
|
+
|
|
2506
|
+
<a id="op-listworkbenchfindpeoplecontacts"></a>
|
|
2507
|
+
|
|
2508
|
+
### `g8.api.workbench.listWorkbenchFindPeopleContacts(input)`
|
|
2509
|
+
|
|
2510
|
+
**List Workbench Find People Contacts**
|
|
2511
|
+
|
|
2512
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/find-people/{config_id}/contacts`
|
|
2513
|
+
- operationId: `list_workbench_find_people_contacts_workbench_tables__table_id__find_people__config_id__contacts_get` (also callable as `g8.api.call("list_workbench_find_people_contacts_workbench_tables__table_id__find_people__config_id__contacts_get", input)`)
|
|
2514
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
2515
|
+
- API-key scope: `lists:read`
|
|
2516
|
+
|
|
2517
|
+
The people a find-people run found for one company row. Free.
|
|
2518
|
+
|
|
2519
|
+
**Input**
|
|
2520
|
+
|
|
2521
|
+
| Field | Type | Required | Description |
|
|
2522
|
+
|---|---|---|---|
|
|
2523
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
2524
|
+
| `path.config_id` | `string` | yes | Find-people configuration id (UUID). |
|
|
2525
|
+
| `query.source_row_id` | `integer` | yes | The company row. |
|
|
2526
|
+
| `query.limit` | `integer` | no | default `100` |
|
|
2527
|
+
|
|
2528
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2529
|
+
|
|
2530
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2531
|
+
|
|
2532
|
+
**Example**
|
|
2533
|
+
|
|
2534
|
+
```ts
|
|
2535
|
+
const result = await g8.api.workbench.listWorkbenchFindPeopleContacts({
|
|
2536
|
+
path: { table_id: "id", config_id: "id" },
|
|
2537
|
+
query: { source_row_id: 123 },
|
|
2538
|
+
});
|
|
2539
|
+
```
|
|
2540
|
+
|
|
2541
|
+
---
|
|
2542
|
+
|
|
2543
|
+
<a id="op-listworkbenchpipelines"></a>
|
|
2544
|
+
|
|
2545
|
+
### `g8.api.workbench.listWorkbenchPipelines(input)`
|
|
2546
|
+
|
|
2547
|
+
**List Workbench Pipelines**
|
|
2548
|
+
|
|
2549
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/pipelines`
|
|
2550
|
+
- operationId: `list_workbench_pipelines_workbench_tables__table_id__pipelines_get` (also callable as `g8.api.call("list_workbench_pipelines_workbench_tables__table_id__pipelines_get", input)`)
|
|
2551
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
2552
|
+
- API-key scope: `lists:read`
|
|
2553
|
+
|
|
2554
|
+
The table's pipelines. Free.
|
|
2555
|
+
|
|
2556
|
+
**Input**
|
|
2557
|
+
|
|
2558
|
+
| Field | Type | Required | Description |
|
|
2559
|
+
|---|---|---|---|
|
|
2560
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
2561
|
+
|
|
2562
|
+
**Returns** `ApiResponse_EnrichmentListPayload_`: the envelope `{ data: EnrichmentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2563
|
+
|
|
2564
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2565
|
+
|
|
2566
|
+
`EnrichmentListPayload` fields:
|
|
2567
|
+
|
|
2568
|
+
| Field | Type | Required | Description |
|
|
2569
|
+
|---|---|---|---|
|
|
2570
|
+
| `items` | `Array<unknown>` | no | The collection, always present. |
|
|
2571
|
+
|
|
2572
|
+
**Example**
|
|
2573
|
+
|
|
2574
|
+
```ts
|
|
2575
|
+
const result = await g8.api.workbench.listWorkbenchPipelines({ path: { table_id: "id" } });
|
|
2576
|
+
```
|
|
2577
|
+
|
|
2578
|
+
---
|
|
2579
|
+
|
|
2580
|
+
<a id="op-listworkbenchrows"></a>
|
|
2581
|
+
|
|
2582
|
+
### `g8.api.workbench.listWorkbenchRows(input)`
|
|
2583
|
+
|
|
2584
|
+
**List Workbench Rows**
|
|
2585
|
+
|
|
2586
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/rows`
|
|
2587
|
+
- operationId: `list_workbench_rows_workbench_tables__table_id__rows_get` (also callable as `g8.api.call("list_workbench_rows_workbench_tables__table_id__rows_get", input)`)
|
|
2588
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
2589
|
+
- API-key scope: `lists:read`
|
|
2590
|
+
|
|
2591
|
+
A window of rows.
|
|
2592
|
+
|
|
2593
|
+
Paged by `start_row`/`end_row`, not page/limit - this is a grid viewport,
|
|
2594
|
+
and translating it into pages would lose the ability to fetch an arbitrary
|
|
2595
|
+
window as a user scrolls.
|
|
2596
|
+
|
|
2597
|
+
**Input**
|
|
2598
|
+
|
|
2599
|
+
| Field | Type | Required | Description |
|
|
2600
|
+
|---|---|---|---|
|
|
2601
|
+
| `path.table_id` | `string` | yes | Table id (UUID). |
|
|
2602
|
+
| `query.start_row` | `integer` | no | default `0` |
|
|
2603
|
+
| `query.end_row` | `integer` | no | default `100` |
|
|
2604
|
+
|
|
2605
|
+
**Returns** `ApiResponse_WorkbenchPage_`: the envelope `{ data: WorkbenchPage, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2606
|
+
|
|
2607
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2608
|
+
|
|
2609
|
+
`WorkbenchPage` fields:
|
|
2610
|
+
|
|
2611
|
+
| Field | Type | Required | Description |
|
|
2612
|
+
|---|---|---|---|
|
|
2613
|
+
| `items` | `Array<Record<string, unknown>>` | no | |
|
|
2614
|
+
| `total` | `integer` | no | default `0` |
|
|
2615
|
+
|
|
2616
|
+
**Example**
|
|
2617
|
+
|
|
2618
|
+
```ts
|
|
2619
|
+
const result = await g8.api.workbench.listWorkbenchRows({ path: { table_id: "id" } });
|
|
2620
|
+
```
|
|
2621
|
+
|
|
2622
|
+
---
|
|
2623
|
+
|
|
2624
|
+
<a id="op-listworkbenchscraperpresets"></a>
|
|
2625
|
+
|
|
2626
|
+
### `g8.api.workbench.listWorkbenchScraperPresets(input?)`
|
|
2627
|
+
|
|
2628
|
+
**List Workbench Scraper Presets**
|
|
2629
|
+
|
|
2630
|
+
- HTTP: `GET /api/v1/workbench/scraper/presets`
|
|
2631
|
+
- operationId: `list_workbench_scraper_presets_workbench_scraper_presets_get` (also callable as `g8.api.call("list_workbench_scraper_presets_workbench_scraper_presets_get", input)`)
|
|
2632
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
2633
|
+
- API-key scope: `lists:read`
|
|
2634
|
+
|
|
2635
|
+
The scraper presets available, with their per-result rates. FREE.
|
|
2636
|
+
|
|
2637
|
+
Read the rate here, then price a specific run with `credit-estimate`.
|
|
2638
|
+
|
|
2639
|
+
**Input**: none.
|
|
2640
|
+
|
|
2641
|
+
**Returns** `ApiResponse_EnrichmentListPayload_`: the envelope `{ data: EnrichmentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2642
|
+
|
|
2643
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2644
|
+
|
|
2645
|
+
`EnrichmentListPayload` fields:
|
|
2646
|
+
|
|
2647
|
+
| Field | Type | Required | Description |
|
|
2648
|
+
|---|---|---|---|
|
|
2649
|
+
| `items` | `Array<unknown>` | no | The collection, always present. |
|
|
2650
|
+
|
|
2651
|
+
**Example**
|
|
2652
|
+
|
|
2653
|
+
```ts
|
|
2654
|
+
const result = await g8.api.workbench.listWorkbenchScraperPresets();
|
|
2655
|
+
```
|
|
2656
|
+
|
|
2657
|
+
---
|
|
2658
|
+
|
|
2659
|
+
<a id="op-listworkbenchscraperruns"></a>
|
|
2660
|
+
|
|
2661
|
+
### `g8.api.workbench.listWorkbenchScraperRuns(input)`
|
|
2662
|
+
|
|
2663
|
+
**List Workbench Scraper Runs**
|
|
2664
|
+
|
|
2665
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/scraper/runs`
|
|
2666
|
+
- operationId: `list_workbench_scraper_runs_workbench_tables__table_id__scraper_runs_get` (also callable as `g8.api.call("list_workbench_scraper_runs_workbench_tables__table_id__scraper_runs_get", input)`)
|
|
2667
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
2668
|
+
- API-key scope: `lists:read`
|
|
2669
|
+
|
|
2670
|
+
The table's scraper runs, newest first, with a total. Free.
|
|
2671
|
+
|
|
2672
|
+
**Input**
|
|
2673
|
+
|
|
2674
|
+
| Field | Type | Required | Description |
|
|
2675
|
+
|---|---|---|---|
|
|
2676
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
2677
|
+
| `query.limit` | `integer` | no | default `20` |
|
|
2678
|
+
| `query.offset` | `integer` | no | default `0` |
|
|
2679
|
+
|
|
2680
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2681
|
+
|
|
2682
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2683
|
+
|
|
2684
|
+
**Example**
|
|
2685
|
+
|
|
2686
|
+
```ts
|
|
2687
|
+
const result = await g8.api.workbench.listWorkbenchScraperRuns({ path: { table_id: "id" } });
|
|
2688
|
+
```
|
|
2689
|
+
|
|
2690
|
+
---
|
|
2691
|
+
|
|
2692
|
+
<a id="op-listworkbenchsourcecredentials"></a>
|
|
2693
|
+
|
|
2694
|
+
### `g8.api.workbench.listWorkbenchSourceCredentials(input?)`
|
|
2695
|
+
|
|
2696
|
+
**List Workbench Source Credentials**
|
|
2697
|
+
|
|
2698
|
+
- HTTP: `GET /api/v1/workbench/source-credentials`
|
|
2699
|
+
- operationId: `list_workbench_source_credentials_workbench_source_credentials_get` (also callable as `g8.api.call("list_workbench_source_credentials_workbench_source_credentials_get", input)`)
|
|
2700
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
2701
|
+
- API-key scope: `lists:read`
|
|
2702
|
+
|
|
2703
|
+
Every ingest credential in the organisation - owner, scope, expiry. Free.
|
|
2704
|
+
|
|
2705
|
+
Hashes and full secrets are NEVER returned; a credential's value is
|
|
2706
|
+
readable only once, at the moment it is minted.
|
|
2707
|
+
|
|
2708
|
+
Gated on Workbench WRITE even though it reads, matching the app: the
|
|
2709
|
+
org-wide inventory names which person owns each credential, so it is a
|
|
2710
|
+
governance view rather than ordinary table data.
|
|
2711
|
+
|
|
2712
|
+
**Input**: none.
|
|
2713
|
+
|
|
2714
|
+
**Returns** `ApiResponse_EnrichmentListPayload_`: the envelope `{ data: EnrichmentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2715
|
+
|
|
2716
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2717
|
+
|
|
2718
|
+
`EnrichmentListPayload` fields:
|
|
2719
|
+
|
|
2720
|
+
| Field | Type | Required | Description |
|
|
2721
|
+
|---|---|---|---|
|
|
2722
|
+
| `items` | `Array<unknown>` | no | The collection, always present. |
|
|
2723
|
+
|
|
2724
|
+
**Example**
|
|
2725
|
+
|
|
2726
|
+
```ts
|
|
2727
|
+
const result = await g8.api.workbench.listWorkbenchSourceCredentials();
|
|
2728
|
+
```
|
|
2729
|
+
|
|
2730
|
+
---
|
|
2731
|
+
|
|
2732
|
+
<a id="op-listworkbenchtableaipresets"></a>
|
|
2733
|
+
|
|
2734
|
+
### `g8.api.workbench.listWorkbenchTableAiPresets(input)`
|
|
2735
|
+
|
|
2736
|
+
**List Workbench Table Ai Presets**
|
|
2737
|
+
|
|
2738
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/ai-presets`
|
|
2739
|
+
- operationId: `list_workbench_table_ai_presets_workbench_tables__table_id__ai_presets_get` (also callable as `g8.api.call("list_workbench_table_ai_presets_workbench_tables__table_id__ai_presets_get", input)`)
|
|
2740
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
2741
|
+
- API-key scope: `lists:read`
|
|
2742
|
+
|
|
2743
|
+
The presets that can actually run on THIS table. FREE.
|
|
2744
|
+
|
|
2745
|
+
Filtered by the columns the table has, so a preset listed here has its
|
|
2746
|
+
inputs satisfied. Selecting one still costs nothing until it is run.
|
|
2747
|
+
|
|
2748
|
+
**Input**
|
|
2749
|
+
|
|
2750
|
+
| Field | Type | Required | Description |
|
|
2751
|
+
|---|---|---|---|
|
|
2752
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
2753
|
+
|
|
2754
|
+
**Returns** `ApiResponse_EnrichmentListPayload_`: the envelope `{ data: EnrichmentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2755
|
+
|
|
2756
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2757
|
+
|
|
2758
|
+
`EnrichmentListPayload` fields:
|
|
2759
|
+
|
|
2760
|
+
| Field | Type | Required | Description |
|
|
2761
|
+
|---|---|---|---|
|
|
2762
|
+
| `items` | `Array<unknown>` | no | The collection, always present. |
|
|
2763
|
+
|
|
2764
|
+
**Example**
|
|
2765
|
+
|
|
2766
|
+
```ts
|
|
2767
|
+
const result = await g8.api.workbench.listWorkbenchTableAiPresets({ path: { table_id: "id" } });
|
|
2768
|
+
```
|
|
2769
|
+
|
|
2770
|
+
---
|
|
2771
|
+
|
|
2772
|
+
<a id="op-listworkbenchtables"></a>
|
|
2773
|
+
|
|
2774
|
+
### `g8.api.workbench.listWorkbenchTables(input?)`
|
|
2775
|
+
|
|
2776
|
+
**List Workbench Tables**
|
|
2777
|
+
|
|
2778
|
+
- HTTP: `GET /api/v1/workbench/tables`
|
|
2779
|
+
- operationId: `list_workbench_tables_workbench_tables_get` (also callable as `g8.api.call("list_workbench_tables_workbench_tables_get", input)`)
|
|
2780
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
2781
|
+
- API-key scope: `lists:read`
|
|
2782
|
+
|
|
2783
|
+
This org's tables.
|
|
2784
|
+
|
|
2785
|
+
**Input**
|
|
2786
|
+
|
|
2787
|
+
| Field | Type | Required | Description |
|
|
2788
|
+
|---|---|---|---|
|
|
2789
|
+
| `query.page` | `integer` | no | default `1` |
|
|
2790
|
+
| `query.limit` | `integer` | no | default `20` |
|
|
2791
|
+
| `query.sort_field` | `string` | no | default `"created_at"` |
|
|
2792
|
+
| `query.sort_order` | `string` | no | default `"desc"` |
|
|
2793
|
+
| `query.filter_name` | `string \| null` | no | Substring match on the table name. |
|
|
2794
|
+
|
|
2795
|
+
**Returns** `ApiResponse_WorkbenchTableList_`: the envelope `{ data: WorkbenchTableList, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2796
|
+
|
|
2797
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2798
|
+
|
|
2799
|
+
`WorkbenchTableList` fields:
|
|
2800
|
+
|
|
2801
|
+
| Field | Type | Required | Description |
|
|
2802
|
+
|---|---|---|---|
|
|
2803
|
+
| `tables` | `Array<WorkbenchTable>` | no | |
|
|
2804
|
+
| `total` | `integer` | no | default `0` |
|
|
2805
|
+
|
|
2806
|
+
**Example**
|
|
2807
|
+
|
|
2808
|
+
```ts
|
|
2809
|
+
const result = await g8.api.workbench.listWorkbenchTables();
|
|
2810
|
+
```
|
|
2811
|
+
|
|
2812
|
+
---
|
|
2813
|
+
|
|
2814
|
+
<a id="op-listworkbenchtargetfields"></a>
|
|
2815
|
+
|
|
2816
|
+
### `g8.api.workbench.listWorkbenchTargetFields(input?)`
|
|
2817
|
+
|
|
2818
|
+
**List Workbench Target Fields**
|
|
2819
|
+
|
|
2820
|
+
- HTTP: `GET /api/v1/workbench/target-fields`
|
|
2821
|
+
- operationId: `list_workbench_target_fields_workbench_target_fields_get` (also callable as `g8.api.call("list_workbench_target_fields_workbench_target_fields_get", input)`)
|
|
2822
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
2823
|
+
- API-key scope: `lists:read`
|
|
2824
|
+
|
|
2825
|
+
The canonical fields a workbench column can be mapped onto. Free.
|
|
2826
|
+
|
|
2827
|
+
Closed to `contact` / `company` because the handler indexes a dict with
|
|
2828
|
+
this value directly - a free string would raise a KeyError inside and
|
|
2829
|
+
escape as a 500 instead of a 422 naming the two kinds.
|
|
2830
|
+
|
|
2831
|
+
**Input**
|
|
2832
|
+
|
|
2833
|
+
| Field | Type | Required | Description |
|
|
2834
|
+
|---|---|---|---|
|
|
2835
|
+
| `query.entity_type` | `"contact" \| "company"` | no | Which record kind the fields are for. default `"contact"` |
|
|
2836
|
+
|
|
2837
|
+
**Returns** `ApiResponse_EnrichmentListPayload_`: the envelope `{ data: EnrichmentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2838
|
+
|
|
2839
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2840
|
+
|
|
2841
|
+
`EnrichmentListPayload` fields:
|
|
2842
|
+
|
|
2843
|
+
| Field | Type | Required | Description |
|
|
2844
|
+
|---|---|---|---|
|
|
2845
|
+
| `items` | `Array<unknown>` | no | The collection, always present. |
|
|
2846
|
+
|
|
2847
|
+
**Example**
|
|
2848
|
+
|
|
2849
|
+
```ts
|
|
2850
|
+
const result = await g8.api.workbench.listWorkbenchTargetFields();
|
|
2851
|
+
```
|
|
2852
|
+
|
|
2853
|
+
---
|
|
2854
|
+
|
|
2855
|
+
<a id="op-listworkbenchtriggers"></a>
|
|
2856
|
+
|
|
2857
|
+
### `g8.api.workbench.listWorkbenchTriggers(input)`
|
|
2858
|
+
|
|
2859
|
+
**List Workbench Triggers**
|
|
2860
|
+
|
|
2861
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/triggers`
|
|
2862
|
+
- operationId: `list_workbench_triggers_workbench_tables__table_id__triggers_get` (also callable as `g8.api.call("list_workbench_triggers_workbench_tables__table_id__triggers_get", input)`)
|
|
2863
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
2864
|
+
- API-key scope: `lists:read`
|
|
2865
|
+
|
|
2866
|
+
The table's triggers. Free.
|
|
2867
|
+
|
|
2868
|
+
**Input**
|
|
2869
|
+
|
|
2870
|
+
| Field | Type | Required | Description |
|
|
2871
|
+
|---|---|---|---|
|
|
2872
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
2873
|
+
|
|
2874
|
+
**Returns** `ApiResponse_EnrichmentListPayload_`: the envelope `{ data: EnrichmentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2875
|
+
|
|
2876
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2877
|
+
|
|
2878
|
+
`EnrichmentListPayload` fields:
|
|
2879
|
+
|
|
2880
|
+
| Field | Type | Required | Description |
|
|
2881
|
+
|---|---|---|---|
|
|
2882
|
+
| `items` | `Array<unknown>` | no | The collection, always present. |
|
|
2883
|
+
|
|
2884
|
+
**Example**
|
|
2885
|
+
|
|
2886
|
+
```ts
|
|
2887
|
+
const result = await g8.api.workbench.listWorkbenchTriggers({ path: { table_id: "id" } });
|
|
2888
|
+
```
|
|
2889
|
+
|
|
2890
|
+
---
|
|
2891
|
+
|
|
2892
|
+
<a id="op-mapworkbenchcolumn"></a>
|
|
2893
|
+
|
|
2894
|
+
### `g8.api.workbench.mapWorkbenchColumn(input)`
|
|
2895
|
+
|
|
2896
|
+
**Map Workbench Column**
|
|
2897
|
+
|
|
2898
|
+
- HTTP: `PUT /api/v1/workbench/tables/{table_id}/columns/{column_id}/mapping`
|
|
2899
|
+
- operationId: `map_workbench_column_workbench_tables__table_id__columns__column_id__mapping_put` (also callable as `g8.api.call("map_workbench_column_workbench_tables__table_id__columns__column_id__mapping_put", input)`)
|
|
2900
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
2901
|
+
- API-key scope: `lists:write`
|
|
2902
|
+
|
|
2903
|
+
Point a column at a CRM field so export knows where its values go.
|
|
2904
|
+
|
|
2905
|
+
Send `mapping_target: null` to clear it - an unmapped column is a real
|
|
2906
|
+
state, not a missing argument.
|
|
2907
|
+
|
|
2908
|
+
**Input**
|
|
2909
|
+
|
|
2910
|
+
| Field | Type | Required | Description |
|
|
2911
|
+
|---|---|---|---|
|
|
2912
|
+
| `path.table_id` | `string` | yes | Table id (UUID). |
|
|
2913
|
+
| `path.column_id` | `integer` | yes | Column id. |
|
|
2914
|
+
| `body` | `WorkbenchColumnMappingRequest` | yes | Request body; fields below. |
|
|
2915
|
+
|
|
2916
|
+
Body fields (`WorkbenchColumnMappingRequest`):
|
|
2917
|
+
|
|
2918
|
+
| Field | Type | Required | Description |
|
|
2919
|
+
|---|---|---|---|
|
|
2920
|
+
| `body.mapping_target` | `string \| null` | no | |
|
|
2921
|
+
|
|
2922
|
+
**Returns** `ApiResponse_dict_`: the envelope `{ data: Record<string, unknown>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2923
|
+
|
|
2924
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2925
|
+
|
|
2926
|
+
**Example**
|
|
2927
|
+
|
|
2928
|
+
```ts
|
|
2929
|
+
const result = await g8.api.workbench.mapWorkbenchColumn({ path: { table_id: "id", column_id: 123 }, body: {} });
|
|
2930
|
+
```
|
|
2931
|
+
|
|
2932
|
+
---
|
|
2933
|
+
|
|
2934
|
+
<a id="op-migrateworkbenchlegacyaiconfig"></a>
|
|
2935
|
+
|
|
2936
|
+
### `g8.api.workbench.migrateWorkbenchLegacyAiConfig(input)`
|
|
2937
|
+
|
|
2938
|
+
**Migrate Workbench Legacy Ai Config**
|
|
2939
|
+
|
|
2940
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/ai/migrate-legacy`
|
|
2941
|
+
- operationId: `migrate_workbench_legacy_ai_config_workbench_tables__table_id__ai_migrate_legacy_post` (also callable as `g8.api.call("migrate_workbench_legacy_ai_config_workbench_tables__table_id__ai_migrate_legacy_post", input)`)
|
|
2942
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
2943
|
+
- API-key scope: `lists:write`
|
|
2944
|
+
|
|
2945
|
+
Move an old single-prompt config onto the group model. FREE.
|
|
2946
|
+
|
|
2947
|
+
A one-off data migration for tables configured before AI groups existed.
|
|
2948
|
+
It reshapes stored configuration and runs nothing.
|
|
2949
|
+
|
|
2950
|
+
**Input**
|
|
2951
|
+
|
|
2952
|
+
| Field | Type | Required | Description |
|
|
2953
|
+
|---|---|---|---|
|
|
2954
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
2955
|
+
|
|
2956
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2957
|
+
|
|
2958
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2959
|
+
|
|
2960
|
+
**Example**
|
|
2961
|
+
|
|
2962
|
+
```ts
|
|
2963
|
+
const result = await g8.api.workbench.migrateWorkbenchLegacyAiConfig({ path: { table_id: "id" } });
|
|
2964
|
+
```
|
|
2965
|
+
|
|
2966
|
+
---
|
|
2967
|
+
|
|
2968
|
+
<a id="op-pasteimportworkbenchrows"></a>
|
|
2969
|
+
|
|
2970
|
+
### `g8.api.workbench.pasteImportWorkbenchRows(input)`
|
|
2971
|
+
|
|
2972
|
+
**Paste Import Workbench Rows**
|
|
2973
|
+
|
|
2974
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/import/paste`
|
|
2975
|
+
- operationId: `paste_import_workbench_rows_workbench_tables__table_id__import_paste_post` (also callable as `g8.api.call("paste_import_workbench_rows_workbench_tables__table_id__import_paste_post", input)`)
|
|
2976
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
2977
|
+
- API-key scope: `lists:write`
|
|
2978
|
+
|
|
2979
|
+
Import a rectangle of values directly. FREE.
|
|
2980
|
+
|
|
2981
|
+
Up to 50,000 rows and 100 columns in one call. Missing columns are created
|
|
2982
|
+
from `headers`.
|
|
2983
|
+
|
|
2984
|
+
If the table has auto-enrichment ON, the rows this adds are enriched
|
|
2985
|
+
automatically afterwards, and THAT spends credits. The import itself does
|
|
2986
|
+
not.
|
|
2987
|
+
|
|
2988
|
+
**Input**
|
|
2989
|
+
|
|
2990
|
+
| Field | Type | Required | Description |
|
|
2991
|
+
|---|---|---|---|
|
|
2992
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
2993
|
+
| `body` | `PasteImportRequest` | yes | Request body; fields below. |
|
|
2994
|
+
|
|
2995
|
+
Body fields (`PasteImportRequest`):
|
|
2996
|
+
|
|
2997
|
+
| Field | Type | Required | Description |
|
|
2998
|
+
|---|---|---|---|
|
|
2999
|
+
| `body.headers` | `Array<string>` | yes | min items 1, max items 100 |
|
|
3000
|
+
| `body.rows` | `Array<Array<unknown>>` | yes | min items 1, max items 50000 |
|
|
3001
|
+
| `body.raw_source_column_id` | `integer \| null` | no | |
|
|
3002
|
+
|
|
3003
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
3004
|
+
|
|
3005
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
3006
|
+
|
|
3007
|
+
**Example**
|
|
3008
|
+
|
|
3009
|
+
```ts
|
|
3010
|
+
const result = await g8.api.workbench.pasteImportWorkbenchRows({
|
|
3011
|
+
path: { table_id: "id" },
|
|
3012
|
+
body: { headers: ["example"], rows: [[{}]] },
|
|
3013
|
+
});
|
|
3014
|
+
```
|
|
3015
|
+
|
|
3016
|
+
---
|
|
3017
|
+
|
|
3018
|
+
<a id="op-previewworkbenchai"></a>
|
|
3019
|
+
|
|
3020
|
+
### `g8.api.workbench.previewWorkbenchAi(input)`
|
|
3021
|
+
|
|
3022
|
+
**Preview Workbench Ai**
|
|
3023
|
+
|
|
3024
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/ai/preview`
|
|
3025
|
+
- operationId: `preview_workbench_ai_workbench_tables__table_id__ai_preview_post` (also callable as `g8.api.call("preview_workbench_ai_workbench_tables__table_id__ai_preview_post", input)`)
|
|
3026
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
3027
|
+
- API-key scope: `lists:run`
|
|
3028
|
+
|
|
3029
|
+
Run the default AI pass on the first three pending rows. CHARGES.
|
|
3030
|
+
|
|
3031
|
+
A preview in scope, not in price: it is the real pass and bills those rows.
|
|
3032
|
+
Only `approved_max_credits` and `quote_expires_at` are read from the body.
|
|
3033
|
+
|
|
3034
|
+
**Input**
|
|
3035
|
+
|
|
3036
|
+
| Field | Type | Required | Description |
|
|
3037
|
+
|---|---|---|---|
|
|
3038
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
3039
|
+
| `body` | `RunStagingAIRequest \| null` | no | Request body; fields below. |
|
|
3040
|
+
|
|
3041
|
+
Body fields:
|
|
3042
|
+
|
|
3043
|
+
| Field | Type | Required | Description |
|
|
3044
|
+
|---|---|---|---|
|
|
3045
|
+
| `body.approved_max_credits` | `integer \| null` | no | Ceiling the caller approves. The run refuses to exceed it. min 0 |
|
|
3046
|
+
| `body.conditions` | `Array<Record<string, string>> \| null` | no | |
|
|
3047
|
+
| `body.exclude_row_ids` | `Array<integer> \| null` | no | max items 100000 |
|
|
3048
|
+
| `body.max_rows_per_source` | `integer \| null` | no | min 1, max 50 |
|
|
3049
|
+
| `body.model` | `string \| null` | no | Override the configured model. |
|
|
3050
|
+
| `body.multi_row_output` | `boolean \| null` | no | |
|
|
3051
|
+
| `body.prompt` | `string \| null` | no | Override the configured prompt. |
|
|
3052
|
+
| `body.qualification_mode` | `boolean` | no | default `false` |
|
|
3053
|
+
| `body.quote_expires_at` | `string (date-time) \| null` | no | |
|
|
3054
|
+
| `body.quote_id` | `string (uuid) \| null` | no | |
|
|
3055
|
+
| `body.row_ids` | `Array<integer> \| null` | no | Rows to run. OMIT to run EVERY row in the table. |
|
|
3056
|
+
| `body.status_filter` | `string \| null` | no | |
|
|
3057
|
+
|
|
3058
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
3059
|
+
|
|
3060
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
3061
|
+
|
|
3062
|
+
**Example**
|
|
3063
|
+
|
|
3064
|
+
```ts
|
|
3065
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
3066
|
+
const result = await g8.api.workbench.previewWorkbenchAi({ path: { table_id: "id" } });
|
|
3067
|
+
```
|
|
3068
|
+
|
|
3069
|
+
---
|
|
3070
|
+
|
|
3071
|
+
<a id="op-previewworkbenchresearchimport"></a>
|
|
3072
|
+
|
|
3073
|
+
### `g8.api.workbench.previewWorkbenchResearchImport(input)`
|
|
3074
|
+
|
|
3075
|
+
**Preview Workbench Research Import**
|
|
3076
|
+
|
|
3077
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/import/search/research/preview`
|
|
3078
|
+
- operationId: `preview_workbench_research_import_workbench_tables__table_id__import_search_research_preview_post` (also callable as `g8.api.call("preview_workbench_research_import_workbench_tables__table_id__import_search_research_preview_post", input)`)
|
|
3079
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
3080
|
+
- API-key scope: `lists:run`
|
|
3081
|
+
|
|
3082
|
+
Describe your leads in words; a model writes the search and returns a
|
|
3083
|
+
sample. CHARGES for the model call. Nothing is imported.
|
|
3084
|
+
|
|
3085
|
+
**Input**
|
|
3086
|
+
|
|
3087
|
+
| Field | Type | Required | Description |
|
|
3088
|
+
|---|---|---|---|
|
|
3089
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
3090
|
+
| `body` | `SearchResearchPreviewRequest` | yes | Request body; fields below. |
|
|
3091
|
+
|
|
3092
|
+
Body fields (`SearchResearchPreviewRequest`):
|
|
3093
|
+
|
|
3094
|
+
| Field | Type | Required | Description |
|
|
3095
|
+
|---|---|---|---|
|
|
3096
|
+
| `body.lead_prompt` | `string` | yes | min length 1 |
|
|
3097
|
+
| `body.max_employees_per_company` | `integer \| null` | no | min 1, max 1000 |
|
|
3098
|
+
| `body.max_result` | `integer \| null` | no | min 1, max 50000 |
|
|
3099
|
+
| `body.sample_size` | `integer` | no | default `50`, min 1, max 1000 |
|
|
3100
|
+
|
|
3101
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
3102
|
+
|
|
3103
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
3104
|
+
|
|
3105
|
+
**Example**
|
|
3106
|
+
|
|
3107
|
+
```ts
|
|
3108
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
3109
|
+
const result = await g8.api.workbench.previewWorkbenchResearchImport({ path: { table_id: "id" }, body: { lead_prompt: "example" } });
|
|
3110
|
+
```
|
|
3111
|
+
|
|
3112
|
+
---
|
|
3113
|
+
|
|
3114
|
+
<a id="op-previewworkbenchsearchimport"></a>
|
|
3115
|
+
|
|
3116
|
+
### `g8.api.workbench.previewWorkbenchSearchImport(input)`
|
|
3117
|
+
|
|
3118
|
+
**Preview Workbench Search Import**
|
|
3119
|
+
|
|
3120
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/import/search/preview`
|
|
3121
|
+
- operationId: `preview_workbench_search_import_workbench_tables__table_id__import_search_preview_post` (also callable as `g8.api.call("preview_workbench_search_import_workbench_tables__table_id__import_search_preview_post", input)`)
|
|
3122
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
3123
|
+
- API-key scope: `lists:read`
|
|
3124
|
+
|
|
3125
|
+
Sample what a people search would import, and how many it matches. Free.
|
|
3126
|
+
|
|
3127
|
+
Contact details stay masked; nothing is imported.
|
|
3128
|
+
|
|
3129
|
+
**Input**
|
|
3130
|
+
|
|
3131
|
+
| Field | Type | Required | Description |
|
|
3132
|
+
|---|---|---|---|
|
|
3133
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
3134
|
+
| `body` | `SearchImportPreviewRequest` | yes | Request body; fields below. |
|
|
3135
|
+
|
|
3136
|
+
Body fields (`SearchImportPreviewRequest`):
|
|
3137
|
+
|
|
3138
|
+
| Field | Type | Required | Description |
|
|
3139
|
+
|---|---|---|---|
|
|
3140
|
+
| `body.filters` | `Array<Record<string, unknown>>` | yes | min items 1 |
|
|
3141
|
+
| `body.max_employees_per_company` | `integer \| null` | no | min 1, max 1000 |
|
|
3142
|
+
| `body.max_result` | `integer \| null` | no | min 1, max 50000 |
|
|
3143
|
+
| `body.sample_size` | `integer` | no | default `50`, min 1, max 1000 |
|
|
3144
|
+
|
|
3145
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
3146
|
+
|
|
3147
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
3148
|
+
|
|
3149
|
+
**Example**
|
|
3150
|
+
|
|
3151
|
+
```ts
|
|
3152
|
+
const result = await g8.api.workbench.previewWorkbenchSearchImport({ path: { table_id: "id" }, body: { filters: [{}] } });
|
|
3153
|
+
```
|
|
3154
|
+
|
|
3155
|
+
---
|
|
3156
|
+
|
|
3157
|
+
<a id="op-queryworkbenchrows"></a>
|
|
3158
|
+
|
|
3159
|
+
### `g8.api.workbench.queryWorkbenchRows(input)`
|
|
3160
|
+
|
|
3161
|
+
**Query Workbench Rows**
|
|
3162
|
+
|
|
3163
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/rows/query`
|
|
3164
|
+
- operationId: `query_workbench_rows_workbench_tables__table_id__rows_query_post` (also callable as `g8.api.call("query_workbench_rows_workbench_tables__table_id__rows_query_post", input)`)
|
|
3165
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
3166
|
+
- API-key scope: `lists:read`
|
|
3167
|
+
|
|
3168
|
+
Read a window of rows with a filter and a sort. FREE - a read.
|
|
3169
|
+
|
|
3170
|
+
POST only because the filter is a structured body; nothing is written,
|
|
3171
|
+
enqueued or charged. `GET /workbench/tables/{id}/rows` is the simple form.
|
|
3172
|
+
|
|
3173
|
+
**Input**
|
|
3174
|
+
|
|
3175
|
+
| Field | Type | Required | Description |
|
|
3176
|
+
|---|---|---|---|
|
|
3177
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
3178
|
+
| `body` | `StagingRowsQueryRequest` | no | Request body; fields below. |
|
|
3179
|
+
|
|
3180
|
+
Body fields (`StagingRowsQueryRequest`):
|
|
3181
|
+
|
|
3182
|
+
| Field | Type | Required | Description |
|
|
3183
|
+
|---|---|---|---|
|
|
3184
|
+
| `body.end_row` | `integer` | no | default `100`, min 1, max 100000 |
|
|
3185
|
+
| `body.filter_model` | `Record<string, unknown> \| null` | no | |
|
|
3186
|
+
| `body.sort_model` | `Array<Record<string, unknown>> \| null` | no | |
|
|
3187
|
+
| `body.start_row` | `integer` | no | default `0`, min 0, max 100000 |
|
|
3188
|
+
|
|
3189
|
+
**Returns** `ApiResponse_EnrichmentListPayload_`: the envelope `{ data: EnrichmentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
3190
|
+
|
|
3191
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
3192
|
+
|
|
3193
|
+
`EnrichmentListPayload` fields:
|
|
3194
|
+
|
|
3195
|
+
| Field | Type | Required | Description |
|
|
3196
|
+
|---|---|---|---|
|
|
3197
|
+
| `items` | `Array<unknown>` | no | The collection, always present. |
|
|
3198
|
+
|
|
3199
|
+
**Example**
|
|
3200
|
+
|
|
3201
|
+
```ts
|
|
3202
|
+
const result = await g8.api.workbench.queryWorkbenchRows({ path: { table_id: "id" } });
|
|
3203
|
+
```
|
|
3204
|
+
|
|
3205
|
+
---
|
|
3206
|
+
|
|
3207
|
+
<a id="op-quoteworkbenchairun"></a>
|
|
3208
|
+
|
|
3209
|
+
### `g8.api.workbench.quoteWorkbenchAiRun(input)`
|
|
3210
|
+
|
|
3211
|
+
**Quote Workbench Ai Run**
|
|
3212
|
+
|
|
3213
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/ai/validate-credits`
|
|
3214
|
+
- operationId: `quote_workbench_ai_run_workbench_tables__table_id__ai_validate_credits_post` (also callable as `g8.api.call("quote_workbench_ai_run_workbench_tables__table_id__ai_validate_credits_post", input)`)
|
|
3215
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
3216
|
+
- API-key scope: `lists:read`
|
|
3217
|
+
|
|
3218
|
+
Price an AI run before starting it. FREE.
|
|
3219
|
+
|
|
3220
|
+
Name the run you are about to start: `group_id`, `column_id`, or
|
|
3221
|
+
`all_columns`; none prices the table's default AI pass. Pass the answer's
|
|
3222
|
+
`required_credits` to the run as `approved_max_credits`.
|
|
3223
|
+
|
|
3224
|
+
**Input**
|
|
3225
|
+
|
|
3226
|
+
| Field | Type | Required | Description |
|
|
3227
|
+
|---|---|---|---|
|
|
3228
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
3229
|
+
| `body` | `WorkbenchCreditValidationRequest \| null` | no | Request body; fields below. |
|
|
3230
|
+
|
|
3231
|
+
Body fields:
|
|
3232
|
+
|
|
3233
|
+
| Field | Type | Required | Description |
|
|
3234
|
+
|---|---|---|---|
|
|
3235
|
+
| `body.all_columns` | `boolean` | no | default `false` |
|
|
3236
|
+
| `body.column_id` | `integer \| null` | no | |
|
|
3237
|
+
| `body.exclude_row_ids` | `Array<integer> \| null` | no | |
|
|
3238
|
+
| `body.group_id` | `string \| null` | no | min length 1, max length 255 |
|
|
3239
|
+
| `body.row_ids` | `Array<integer> \| null` | no | OMIT to price EVERY row. |
|
|
3240
|
+
| `body.status_filter` | `string \| null` | no | |
|
|
3241
|
+
|
|
3242
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
3243
|
+
|
|
3244
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
3245
|
+
|
|
3246
|
+
**Example**
|
|
3247
|
+
|
|
3248
|
+
```ts
|
|
3249
|
+
const result = await g8.api.workbench.quoteWorkbenchAiRun({ path: { table_id: "id" } });
|
|
3250
|
+
```
|
|
3251
|
+
|
|
3252
|
+
---
|
|
3253
|
+
|
|
3254
|
+
<a id="op-quoteworkbenchformulageneration"></a>
|
|
3255
|
+
|
|
3256
|
+
### `g8.api.workbench.quoteWorkbenchFormulaGeneration(input)`
|
|
3257
|
+
|
|
3258
|
+
**Quote Workbench Formula Generation**
|
|
3259
|
+
|
|
3260
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/formula-columns/generate-quote`
|
|
3261
|
+
- operationId: `quote_workbench_formula_generation_workbench_tables__table_id__formula_columns_generate_quote_get` (also callable as `g8.api.call("quote_workbench_formula_generation_workbench_tables__table_id__formula_columns_generate_quote_get", input)`)
|
|
3262
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
3263
|
+
- API-key scope: `lists:read`
|
|
3264
|
+
|
|
3265
|
+
Price AI formula authoring against the live balance. CHARGES NOTHING.
|
|
3266
|
+
|
|
3267
|
+
Despite `generate` in the path this generates no formula and spends no
|
|
3268
|
+
credit - it reports the fixed authoring charge, the organisation's balance,
|
|
3269
|
+
and whether the balance covers it.
|
|
3270
|
+
|
|
3271
|
+
**Input**
|
|
3272
|
+
|
|
3273
|
+
| Field | Type | Required | Description |
|
|
3274
|
+
|---|---|---|---|
|
|
3275
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
3276
|
+
|
|
3277
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
3278
|
+
|
|
3279
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
3280
|
+
|
|
3281
|
+
**Example**
|
|
3282
|
+
|
|
3283
|
+
```ts
|
|
3284
|
+
const result = await g8.api.workbench.quoteWorkbenchFormulaGeneration({ path: { table_id: "id" } });
|
|
3285
|
+
```
|
|
3286
|
+
|
|
3287
|
+
---
|
|
3288
|
+
|
|
3289
|
+
<a id="op-quoteworkbenchunlock"></a>
|
|
3290
|
+
|
|
3291
|
+
### `g8.api.workbench.quoteWorkbenchUnlock(input)`
|
|
3292
|
+
|
|
3293
|
+
**Quote Workbench Unlock**
|
|
3294
|
+
|
|
3295
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/unlock-quote`
|
|
3296
|
+
- operationId: `quote_workbench_unlock_workbench_tables__table_id__unlock_quote_post` (also callable as `g8.api.call("quote_workbench_unlock_workbench_tables__table_id__unlock_quote_post", input)`)
|
|
3297
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
3298
|
+
- API-key scope: `lists:read`
|
|
3299
|
+
|
|
3300
|
+
Price an unlock. CHARGES NOTHING, and unlocks nothing.
|
|
3301
|
+
|
|
3302
|
+
Returns the exact locked-row count for the scope, the organisation's live
|
|
3303
|
+
balance, and the shortfall if there is one. It also returns the
|
|
3304
|
+
`operation_id` that `unlock-rows` REQUIRES - so this call is not optional
|
|
3305
|
+
advice, it is step one of the handshake.
|
|
3306
|
+
|
|
3307
|
+
Send this exact body to `unlock-rows` afterwards: the quote prices the
|
|
3308
|
+
scope the unlock will charge for, and a different body is a different
|
|
3309
|
+
price.
|
|
3310
|
+
|
|
3311
|
+
**Input**
|
|
3312
|
+
|
|
3313
|
+
| Field | Type | Required | Description |
|
|
3314
|
+
|---|---|---|---|
|
|
3315
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
3316
|
+
| `body` | `UnlockStagingRowsRequest` | no | Request body; fields below. |
|
|
3317
|
+
|
|
3318
|
+
Body fields (`UnlockStagingRowsRequest`):
|
|
3319
|
+
|
|
3320
|
+
| Field | Type | Required | Description |
|
|
3321
|
+
|---|---|---|---|
|
|
3322
|
+
| `body.approved_max_credits` | `integer \| null` | no | Ceiling the caller approves. The run refuses to exceed it. min 0 |
|
|
3323
|
+
| `body.exclude_row_ids` | `Array<integer> \| null` | no | Rows to leave locked. max items 100000 |
|
|
3324
|
+
| `body.operation_id` | `string (uuid) \| null` | no | The quote's operation id. REQUIRED by the unlock - it is what ties the charge to a price the caller was shown, and it makes a retried unlock idempotent instead of charging twice. |
|
|
3325
|
+
| `body.quote_expires_at` | `string (date-time) \| null` | no | Expiry of the quote being approved. |
|
|
3326
|
+
| `body.row_ids` | `Array<integer> \| null` | no | Rows to act on. OMIT to mean EVERY locked row in the table. max items 100000 |
|
|
3327
|
+
|
|
3328
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
3329
|
+
|
|
3330
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
3331
|
+
|
|
3332
|
+
**Example**
|
|
3333
|
+
|
|
3334
|
+
```ts
|
|
3335
|
+
const result = await g8.api.workbench.quoteWorkbenchUnlock({ path: { table_id: "id" } });
|
|
3336
|
+
```
|
|
3337
|
+
|
|
3338
|
+
---
|
|
3339
|
+
|
|
3340
|
+
<a id="op-quoteworkbenchwaterfallrun"></a>
|
|
3341
|
+
|
|
3342
|
+
### `g8.api.workbench.quoteWorkbenchWaterfallRun(input)`
|
|
3343
|
+
|
|
3344
|
+
**Quote Workbench Waterfall Run**
|
|
3345
|
+
|
|
3346
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/waterfall/configs/{column_id}/validate-credits`
|
|
3347
|
+
- operationId: `quote_workbench_waterfall_run_workbench_tables__table_id__waterfall_configs__column_id__validate_credits_post` (also callable as `g8.api.call("quote_workbench_waterfall_run_workbench_tables__table_id__waterfall_configs__column_id__validate_credits_post", input)`)
|
|
3348
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
3349
|
+
- API-key scope: `lists:read`
|
|
3350
|
+
|
|
3351
|
+
Price a waterfall run. FREE. OMITTING `row_ids` prices EVERY row.
|
|
3352
|
+
|
|
3353
|
+
**Input**
|
|
3354
|
+
|
|
3355
|
+
| Field | Type | Required | Description |
|
|
3356
|
+
|---|---|---|---|
|
|
3357
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
3358
|
+
| `path.column_id` | `integer` | yes | The waterfall column id. |
|
|
3359
|
+
| `body` | `WorkbenchCreditValidationRequest \| null` | no | Request body; fields below. |
|
|
3360
|
+
|
|
3361
|
+
Body fields:
|
|
3362
|
+
|
|
3363
|
+
| Field | Type | Required | Description |
|
|
3364
|
+
|---|---|---|---|
|
|
3365
|
+
| `body.all_columns` | `boolean` | no | default `false` |
|
|
3366
|
+
| `body.column_id` | `integer \| null` | no | |
|
|
3367
|
+
| `body.exclude_row_ids` | `Array<integer> \| null` | no | |
|
|
3368
|
+
| `body.group_id` | `string \| null` | no | min length 1, max length 255 |
|
|
3369
|
+
| `body.row_ids` | `Array<integer> \| null` | no | OMIT to price EVERY row. |
|
|
3370
|
+
| `body.status_filter` | `string \| null` | no | |
|
|
3371
|
+
|
|
3372
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
3373
|
+
|
|
3374
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
3375
|
+
|
|
3376
|
+
**Example**
|
|
3377
|
+
|
|
3378
|
+
```ts
|
|
3379
|
+
const result = await g8.api.workbench.quoteWorkbenchWaterfallRun({ path: { table_id: "id", column_id: 123 } });
|
|
3380
|
+
```
|
|
3381
|
+
|
|
3382
|
+
---
|
|
3383
|
+
|
|
3384
|
+
<a id="op-regenerateworkbenchkey"></a>
|
|
3385
|
+
|
|
3386
|
+
### `g8.api.workbench.regenerateWorkbenchKey(input)`
|
|
3387
|
+
|
|
3388
|
+
**Regenerate Workbench Key**
|
|
3389
|
+
|
|
3390
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/regenerate-key`
|
|
3391
|
+
- operationId: `regenerate_workbench_key_workbench_tables__table_id__regenerate_key_post` (also callable as `g8.api.call("regenerate_workbench_key_workbench_tables__table_id__regenerate_key_post", input)`)
|
|
3392
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
3393
|
+
- API-key scope: `lists:write`
|
|
3394
|
+
|
|
3395
|
+
Mint the table's ingest credential. Free.
|
|
3396
|
+
|
|
3397
|
+
THE ONLY TIME THE KEY IS READABLE. It is returned here and never again -
|
|
3398
|
+
store it on receipt. This is the credential the app's `X-Webhook-Key`
|
|
3399
|
+
ingest path expects, which is why that path is not published here and does
|
|
3400
|
+
not need to be.
|
|
3401
|
+
|
|
3402
|
+
`rotate_existing` false mints only when there is none; true replaces the
|
|
3403
|
+
current one and breaks anything still using it, immediately.
|
|
3404
|
+
|
|
3405
|
+
**Input**
|
|
3406
|
+
|
|
3407
|
+
| Field | Type | Required | Description |
|
|
3408
|
+
|---|---|---|---|
|
|
3409
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
3410
|
+
| `body` | `RegenerateKeyRequest` | no | Request body; fields below. |
|
|
3411
|
+
|
|
3412
|
+
Body fields (`RegenerateKeyRequest`):
|
|
3413
|
+
|
|
3414
|
+
| Field | Type | Required | Description |
|
|
3415
|
+
|---|---|---|---|
|
|
3416
|
+
| `body.rotate_existing` | `boolean` | no | Acknowledge that the existing credential stops working IMMEDIATELY. Leave false to mint only when there is none. default `false` |
|
|
3417
|
+
|
|
3418
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
3419
|
+
|
|
3420
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
3421
|
+
|
|
3422
|
+
**Example**
|
|
3423
|
+
|
|
3424
|
+
```ts
|
|
3425
|
+
const result = await g8.api.workbench.regenerateWorkbenchKey({ path: { table_id: "id" } });
|
|
3426
|
+
```
|
|
3427
|
+
|
|
3428
|
+
---
|
|
3429
|
+
|
|
3430
|
+
<a id="op-reviewworkbenchfindpeoplecandidates"></a>
|
|
3431
|
+
|
|
3432
|
+
### `g8.api.workbench.reviewWorkbenchFindPeopleCandidates(input)`
|
|
3433
|
+
|
|
3434
|
+
**Review Workbench Find People Candidates**
|
|
3435
|
+
|
|
3436
|
+
- HTTP: `GET /api/v1/workbench/tables/{table_id}/ai/groups/{group_id}/find-people/review`
|
|
3437
|
+
- operationId: `review_workbench_find_people_candidates_workbench_tables__table_id__ai_groups__group_id__find_people_review_get` (also callable as `g8.api.call("review_workbench_find_people_candidates_workbench_tables__table_id__ai_groups__group_id__find_people_review_get", input)`)
|
|
3438
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
3439
|
+
- API-key scope: `lists:read`
|
|
3440
|
+
|
|
3441
|
+
Contacts a find-people group turned up and is holding for review. FREE.
|
|
3442
|
+
|
|
3443
|
+
Only populated when the group's `export_mode` is `review`. Under `auto`
|
|
3444
|
+
there is nothing to review because the contacts were already exported.
|
|
3445
|
+
|
|
3446
|
+
**Input**
|
|
3447
|
+
|
|
3448
|
+
| Field | Type | Required | Description |
|
|
3449
|
+
|---|---|---|---|
|
|
3450
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
3451
|
+
| `path.group_id` | `string` | yes | AI group id (starts with `ai_enrich`). |
|
|
3452
|
+
|
|
3453
|
+
**Returns** `ApiResponse_EnrichmentListPayload_`: the envelope `{ data: EnrichmentListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
3454
|
+
|
|
3455
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
3456
|
+
|
|
3457
|
+
`EnrichmentListPayload` fields:
|
|
3458
|
+
|
|
3459
|
+
| Field | Type | Required | Description |
|
|
3460
|
+
|---|---|---|---|
|
|
3461
|
+
| `items` | `Array<unknown>` | no | The collection, always present. |
|
|
3462
|
+
|
|
3463
|
+
**Example**
|
|
3464
|
+
|
|
3465
|
+
```ts
|
|
3466
|
+
const result = await g8.api.workbench.reviewWorkbenchFindPeopleCandidates({ path: { table_id: "id", group_id: "id" } });
|
|
3467
|
+
```
|
|
3468
|
+
|
|
3469
|
+
---
|
|
3470
|
+
|
|
3471
|
+
<a id="op-revokeworkbenchcolumnsource"></a>
|
|
3472
|
+
|
|
3473
|
+
### `g8.api.workbench.revokeWorkbenchColumnSource(input)`
|
|
3474
|
+
|
|
3475
|
+
**Revoke Workbench Column Source**
|
|
3476
|
+
|
|
3477
|
+
- HTTP: `DELETE /api/v1/workbench/tables/{table_id}/columns/{col_id}/sources/{source_type}`
|
|
3478
|
+
- operationId: `revoke_workbench_column_source_workbench_tables__table_id__columns__col_id__sources__source_type__delete` (also callable as `g8.api.call("revoke_workbench_column_source_workbench_tables__table_id__columns__col_id__sources__source_type__delete", input)`)
|
|
3479
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
3480
|
+
- API-key scope: `lists:delete`
|
|
3481
|
+
|
|
3482
|
+
Revoke a column's ingest source. Free.
|
|
3483
|
+
|
|
3484
|
+
Anything still posting with that credential starts failing immediately.
|
|
3485
|
+
Rows already ingested are untouched.
|
|
3486
|
+
|
|
3487
|
+
**Input**
|
|
3488
|
+
|
|
3489
|
+
| Field | Type | Required | Description |
|
|
3490
|
+
|---|---|---|---|
|
|
3491
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
3492
|
+
| `path.col_id` | `integer` | yes | Column id. |
|
|
3493
|
+
| `path.source_type` | `string` | yes | Which source binding to revoke. |
|
|
3494
|
+
|
|
3495
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
3496
|
+
|
|
3497
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
3498
|
+
|
|
3499
|
+
**Example**
|
|
3500
|
+
|
|
3501
|
+
```ts
|
|
3502
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
3503
|
+
const result = await g8.api.workbench.revokeWorkbenchColumnSource({ path: { table_id: "id", col_id: 123, source_type: "example" } });
|
|
3504
|
+
```
|
|
3505
|
+
|
|
3506
|
+
---
|
|
3507
|
+
|
|
3508
|
+
<a id="op-runworkbenchai"></a>
|
|
3509
|
+
|
|
3510
|
+
### `g8.api.workbench.runWorkbenchAi(input)`
|
|
3511
|
+
|
|
3512
|
+
**Run Workbench Ai**
|
|
3513
|
+
|
|
3514
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/ai/run-all`
|
|
3515
|
+
- operationId: `run_workbench_ai_workbench_tables__table_id__ai_run_all_post` (also callable as `g8.api.call("run_workbench_ai_workbench_tables__table_id__ai_run_all_post", input)`)
|
|
3516
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
3517
|
+
- API-key scope: `lists:run`
|
|
3518
|
+
|
|
3519
|
+
Run every configured AI pass over the table. SPENDS CREDITS.
|
|
3520
|
+
|
|
3521
|
+
OMITTING `row_ids` RUNS EVERY ROW, and the body is optional - so a bare
|
|
3522
|
+
`POST` with no body at all is "enrich this entire table". On a 10,000-row
|
|
3523
|
+
table with three configured columns that is 30,000 model calls.
|
|
3524
|
+
|
|
3525
|
+
Set `approved_max_credits`. The run refuses to exceed it, and a credit
|
|
3526
|
+
preflight happens before any work starts, so an over-budget request costs
|
|
3527
|
+
nothing rather than costing until the balance runs out.
|
|
3528
|
+
|
|
3529
|
+
Returns 202 and a handle: the work happens in the background. The group's
|
|
3530
|
+
`skip_existing_values` and `skip_recently_enriched` settings still apply,
|
|
3531
|
+
so re-running is usually far cheaper than the first pass.
|
|
3532
|
+
|
|
3533
|
+
**Input**
|
|
3534
|
+
|
|
3535
|
+
| Field | Type | Required | Description |
|
|
3536
|
+
|---|---|---|---|
|
|
3537
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
3538
|
+
| `body` | `RunStagingAIRequest` | no | Request body; fields below. |
|
|
3539
|
+
|
|
3540
|
+
Body fields (`RunStagingAIRequest`):
|
|
3541
|
+
|
|
3542
|
+
| Field | Type | Required | Description |
|
|
3543
|
+
|---|---|---|---|
|
|
3544
|
+
| `body.approved_max_credits` | `integer \| null` | no | Ceiling the caller approves. The run refuses to exceed it. min 0 |
|
|
3545
|
+
| `body.conditions` | `Array<Record<string, string>> \| null` | no | |
|
|
3546
|
+
| `body.exclude_row_ids` | `Array<integer> \| null` | no | max items 100000 |
|
|
3547
|
+
| `body.max_rows_per_source` | `integer \| null` | no | min 1, max 50 |
|
|
3548
|
+
| `body.model` | `string \| null` | no | Override the configured model. |
|
|
3549
|
+
| `body.multi_row_output` | `boolean \| null` | no | |
|
|
3550
|
+
| `body.prompt` | `string \| null` | no | Override the configured prompt. |
|
|
3551
|
+
| `body.qualification_mode` | `boolean` | no | default `false` |
|
|
3552
|
+
| `body.quote_expires_at` | `string (date-time) \| null` | no | |
|
|
3553
|
+
| `body.quote_id` | `string (uuid) \| null` | no | |
|
|
3554
|
+
| `body.row_ids` | `Array<integer> \| null` | no | Rows to run. OMIT to run EVERY row in the table. |
|
|
3555
|
+
| `body.status_filter` | `string \| null` | no | |
|
|
3556
|
+
|
|
3557
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
3558
|
+
|
|
3559
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
3560
|
+
|
|
3561
|
+
**Example**
|
|
3562
|
+
|
|
3563
|
+
```ts
|
|
3564
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
3565
|
+
const result = await g8.api.workbench.runWorkbenchAi({ path: { table_id: "id" } });
|
|
3566
|
+
```
|
|
3567
|
+
|
|
3568
|
+
---
|
|
3569
|
+
|
|
3570
|
+
<a id="op-runworkbenchaigroup"></a>
|
|
3571
|
+
|
|
3572
|
+
### `g8.api.workbench.runWorkbenchAiGroup(input)`
|
|
3573
|
+
|
|
3574
|
+
**Run Workbench Ai Group**
|
|
3575
|
+
|
|
3576
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/ai/groups/{group_id}/run`
|
|
3577
|
+
- operationId: `run_workbench_ai_group_workbench_tables__table_id__ai_groups__group_id__run_post` (also callable as `g8.api.call("run_workbench_ai_group_workbench_tables__table_id__ai_groups__group_id__run_post", input)`)
|
|
3578
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
3579
|
+
- API-key scope: `lists:run`
|
|
3580
|
+
|
|
3581
|
+
Run one saved AI group. CHARGES per row.
|
|
3582
|
+
|
|
3583
|
+
OMITTING `row_ids` RUNS EVERY PENDING ROW. Quote it with
|
|
3584
|
+
`POST .../ai/validate-credits` and `group_id`.
|
|
3585
|
+
|
|
3586
|
+
**Input**
|
|
3587
|
+
|
|
3588
|
+
| Field | Type | Required | Description |
|
|
3589
|
+
|---|---|---|---|
|
|
3590
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
3591
|
+
| `path.group_id` | `string` | yes | The AI group id. |
|
|
3592
|
+
| `body` | `RunStagingAIRequest \| null` | no | Request body; fields below. |
|
|
3593
|
+
|
|
3594
|
+
Body fields:
|
|
3595
|
+
|
|
3596
|
+
| Field | Type | Required | Description |
|
|
3597
|
+
|---|---|---|---|
|
|
3598
|
+
| `body.approved_max_credits` | `integer \| null` | no | Ceiling the caller approves. The run refuses to exceed it. min 0 |
|
|
3599
|
+
| `body.conditions` | `Array<Record<string, string>> \| null` | no | |
|
|
3600
|
+
| `body.exclude_row_ids` | `Array<integer> \| null` | no | max items 100000 |
|
|
3601
|
+
| `body.max_rows_per_source` | `integer \| null` | no | min 1, max 50 |
|
|
3602
|
+
| `body.model` | `string \| null` | no | Override the configured model. |
|
|
3603
|
+
| `body.multi_row_output` | `boolean \| null` | no | |
|
|
3604
|
+
| `body.prompt` | `string \| null` | no | Override the configured prompt. |
|
|
3605
|
+
| `body.qualification_mode` | `boolean` | no | default `false` |
|
|
3606
|
+
| `body.quote_expires_at` | `string (date-time) \| null` | no | |
|
|
3607
|
+
| `body.quote_id` | `string (uuid) \| null` | no | |
|
|
3608
|
+
| `body.row_ids` | `Array<integer> \| null` | no | Rows to run. OMIT to run EVERY row in the table. |
|
|
3609
|
+
| `body.status_filter` | `string \| null` | no | |
|
|
3610
|
+
|
|
3611
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
3612
|
+
|
|
3613
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
3614
|
+
|
|
3615
|
+
**Example**
|
|
3616
|
+
|
|
3617
|
+
```ts
|
|
3618
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
3619
|
+
const result = await g8.api.workbench.runWorkbenchAiGroup({ path: { table_id: "id", group_id: "id" } });
|
|
3620
|
+
```
|
|
3621
|
+
|
|
3622
|
+
---
|
|
3623
|
+
|
|
3624
|
+
<a id="op-runworkbenchcolumnai"></a>
|
|
3625
|
+
|
|
3626
|
+
### `g8.api.workbench.runWorkbenchColumnAi(input)`
|
|
3627
|
+
|
|
3628
|
+
**Run Workbench Column Ai**
|
|
3629
|
+
|
|
3630
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/columns/{col_id}/ai/run`
|
|
3631
|
+
- operationId: `run_workbench_column_ai_workbench_tables__table_id__columns__col_id__ai_run_post` (also callable as `g8.api.call("run_workbench_column_ai_workbench_tables__table_id__columns__col_id__ai_run_post", input)`)
|
|
3632
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
3633
|
+
- API-key scope: `lists:run`
|
|
3634
|
+
|
|
3635
|
+
Run one column's AI. CHARGES per row.
|
|
3636
|
+
|
|
3637
|
+
OMITTING `row_ids` RUNS EVERY ROW. Quote it with
|
|
3638
|
+
`POST .../ai/validate-credits` and `column_id`.
|
|
3639
|
+
|
|
3640
|
+
**Input**
|
|
3641
|
+
|
|
3642
|
+
| Field | Type | Required | Description |
|
|
3643
|
+
|---|---|---|---|
|
|
3644
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
3645
|
+
| `path.col_id` | `integer` | yes | Column id. |
|
|
3646
|
+
| `body` | `RunStagingAIRequest \| null` | no | Request body; fields below. |
|
|
3647
|
+
|
|
3648
|
+
Body fields:
|
|
3649
|
+
|
|
3650
|
+
| Field | Type | Required | Description |
|
|
3651
|
+
|---|---|---|---|
|
|
3652
|
+
| `body.approved_max_credits` | `integer \| null` | no | Ceiling the caller approves. The run refuses to exceed it. min 0 |
|
|
3653
|
+
| `body.conditions` | `Array<Record<string, string>> \| null` | no | |
|
|
3654
|
+
| `body.exclude_row_ids` | `Array<integer> \| null` | no | max items 100000 |
|
|
3655
|
+
| `body.max_rows_per_source` | `integer \| null` | no | min 1, max 50 |
|
|
3656
|
+
| `body.model` | `string \| null` | no | Override the configured model. |
|
|
3657
|
+
| `body.multi_row_output` | `boolean \| null` | no | |
|
|
3658
|
+
| `body.prompt` | `string \| null` | no | Override the configured prompt. |
|
|
3659
|
+
| `body.qualification_mode` | `boolean` | no | default `false` |
|
|
3660
|
+
| `body.quote_expires_at` | `string (date-time) \| null` | no | |
|
|
3661
|
+
| `body.quote_id` | `string (uuid) \| null` | no | |
|
|
3662
|
+
| `body.row_ids` | `Array<integer> \| null` | no | Rows to run. OMIT to run EVERY row in the table. |
|
|
3663
|
+
| `body.status_filter` | `string \| null` | no | |
|
|
3664
|
+
|
|
3665
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
3666
|
+
|
|
3667
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
3668
|
+
|
|
3669
|
+
**Example**
|
|
3670
|
+
|
|
3671
|
+
```ts
|
|
3672
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
3673
|
+
const result = await g8.api.workbench.runWorkbenchColumnAi({ path: { table_id: "id", col_id: 123 } });
|
|
3674
|
+
```
|
|
3675
|
+
|
|
3676
|
+
---
|
|
3677
|
+
|
|
3678
|
+
<a id="op-runworkbenchdefaultai"></a>
|
|
3679
|
+
|
|
3680
|
+
### `g8.api.workbench.runWorkbenchDefaultAi(input)`
|
|
3681
|
+
|
|
3682
|
+
**Run Workbench Default Ai**
|
|
3683
|
+
|
|
3684
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/ai/run`
|
|
3685
|
+
- operationId: `run_workbench_default_ai_workbench_tables__table_id__ai_run_post` (also callable as `g8.api.call("run_workbench_default_ai_workbench_tables__table_id__ai_run_post", input)`)
|
|
3686
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
3687
|
+
- API-key scope: `lists:run`
|
|
3688
|
+
|
|
3689
|
+
Run the table's default AI pass. CHARGES per row.
|
|
3690
|
+
|
|
3691
|
+
OMITTING `row_ids` RUNS EVERY PENDING ROW. Quote it first with
|
|
3692
|
+
`POST .../ai/validate-credits`.
|
|
3693
|
+
|
|
3694
|
+
**Input**
|
|
3695
|
+
|
|
3696
|
+
| Field | Type | Required | Description |
|
|
3697
|
+
|---|---|---|---|
|
|
3698
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
3699
|
+
| `body` | `RunStagingAIRequest \| null` | no | Request body; fields below. |
|
|
3700
|
+
|
|
3701
|
+
Body fields:
|
|
3702
|
+
|
|
3703
|
+
| Field | Type | Required | Description |
|
|
3704
|
+
|---|---|---|---|
|
|
3705
|
+
| `body.approved_max_credits` | `integer \| null` | no | Ceiling the caller approves. The run refuses to exceed it. min 0 |
|
|
3706
|
+
| `body.conditions` | `Array<Record<string, string>> \| null` | no | |
|
|
3707
|
+
| `body.exclude_row_ids` | `Array<integer> \| null` | no | max items 100000 |
|
|
3708
|
+
| `body.max_rows_per_source` | `integer \| null` | no | min 1, max 50 |
|
|
3709
|
+
| `body.model` | `string \| null` | no | Override the configured model. |
|
|
3710
|
+
| `body.multi_row_output` | `boolean \| null` | no | |
|
|
3711
|
+
| `body.prompt` | `string \| null` | no | Override the configured prompt. |
|
|
3712
|
+
| `body.qualification_mode` | `boolean` | no | default `false` |
|
|
3713
|
+
| `body.quote_expires_at` | `string (date-time) \| null` | no | |
|
|
3714
|
+
| `body.quote_id` | `string (uuid) \| null` | no | |
|
|
3715
|
+
| `body.row_ids` | `Array<integer> \| null` | no | Rows to run. OMIT to run EVERY row in the table. |
|
|
3716
|
+
| `body.status_filter` | `string \| null` | no | |
|
|
3717
|
+
|
|
3718
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
3719
|
+
|
|
3720
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
3721
|
+
|
|
3722
|
+
**Example**
|
|
3723
|
+
|
|
3724
|
+
```ts
|
|
3725
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
3726
|
+
const result = await g8.api.workbench.runWorkbenchDefaultAi({ path: { table_id: "id" } });
|
|
3727
|
+
```
|
|
3728
|
+
|
|
3729
|
+
---
|
|
3730
|
+
|
|
3731
|
+
<a id="op-runworkbenchfindpeople"></a>
|
|
3732
|
+
|
|
3733
|
+
### `g8.api.workbench.runWorkbenchFindPeople(input)`
|
|
3734
|
+
|
|
3735
|
+
**Run Workbench Find People**
|
|
3736
|
+
|
|
3737
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/find-people/{config_id}/run`
|
|
3738
|
+
- operationId: `run_workbench_find_people_workbench_tables__table_id__find_people__config_id__run_post` (also callable as `g8.api.call("run_workbench_find_people_workbench_tables__table_id__find_people__config_id__run_post", input)`)
|
|
3739
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
3740
|
+
- API-key scope: `lists:run`
|
|
3741
|
+
|
|
3742
|
+
Find people at the table's companies. CHARGES per company searched.
|
|
3743
|
+
|
|
3744
|
+
`all_rows` (the default) searches EVERY company row; `first_10` is a cheap
|
|
3745
|
+
trial; `selected` needs `row_ids` or `exclude_row_ids`.
|
|
3746
|
+
|
|
3747
|
+
**Input**
|
|
3748
|
+
|
|
3749
|
+
| Field | Type | Required | Description |
|
|
3750
|
+
|---|---|---|---|
|
|
3751
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
3752
|
+
| `path.config_id` | `string` | yes | Find-people configuration id (UUID). |
|
|
3753
|
+
| `body` | `RunWorkbenchFindPeopleRequest` | yes | Request body; fields below. |
|
|
3754
|
+
|
|
3755
|
+
Body fields (`RunWorkbenchFindPeopleRequest`):
|
|
3756
|
+
|
|
3757
|
+
| Field | Type | Required | Description |
|
|
3758
|
+
|---|---|---|---|
|
|
3759
|
+
| `body.enrichment_mode` | `"first_10" \| "all_rows" \| "selected"` | no | default `"all_rows"` |
|
|
3760
|
+
| `body.exclude_row_ids` | `Array<integer> \| null` | no | max items 100000 |
|
|
3761
|
+
| `body.row_ids` | `Array<integer> \| null` | no | |
|
|
3762
|
+
|
|
3763
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
3764
|
+
|
|
3765
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
3766
|
+
|
|
3767
|
+
**Example**
|
|
3768
|
+
|
|
3769
|
+
```ts
|
|
3770
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
3771
|
+
const result = await g8.api.workbench.runWorkbenchFindPeople({ path: { table_id: "id", config_id: "id" }, body: {} });
|
|
3772
|
+
```
|
|
3773
|
+
|
|
3774
|
+
---
|
|
3775
|
+
|
|
3776
|
+
<a id="op-runworkbenchproviderscraper"></a>
|
|
3777
|
+
|
|
3778
|
+
### `g8.api.workbench.runWorkbenchProviderScraper(input)`
|
|
3779
|
+
|
|
3780
|
+
**Run Workbench Provider Scraper**
|
|
3781
|
+
|
|
3782
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/scraper/providers/{provider}/runs`
|
|
3783
|
+
- operationId: `run_workbench_provider_scraper_workbench_tables__table_id__scraper_providers__provider__runs_post` (also callable as `g8.api.call("run_workbench_provider_scraper_workbench_tables__table_id__scraper_providers__provider__runs_post", input)`)
|
|
3784
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
3785
|
+
- API-key scope: `lists:run`
|
|
3786
|
+
|
|
3787
|
+
Run a scraper on your connected provider account. CHARGES per result.
|
|
3788
|
+
|
|
3789
|
+
`auto_enrich` DEFAULTS TO TRUE: every result is also enriched and charged
|
|
3790
|
+
unless you turn it off. Quote it with
|
|
3791
|
+
`GET /workbench/scraper/providers/{provider}/credit-estimate`.
|
|
3792
|
+
|
|
3793
|
+
**Input**
|
|
3794
|
+
|
|
3795
|
+
| Field | Type | Required | Description |
|
|
3796
|
+
|---|---|---|---|
|
|
3797
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
3798
|
+
| `path.provider` | `"apify"` | yes | Which scraper provider. |
|
|
3799
|
+
| `body` | `RunProviderScraperRequest` | yes | Request body; fields below. |
|
|
3800
|
+
|
|
3801
|
+
Body fields (`RunProviderScraperRequest`):
|
|
3802
|
+
|
|
3803
|
+
| Field | Type | Required | Description |
|
|
3804
|
+
|---|---|---|---|
|
|
3805
|
+
| `body.approved_max_credits` | `integer \| null` | no | min 0 |
|
|
3806
|
+
| `body.auto_enrich` | `boolean` | no | default `true` |
|
|
3807
|
+
| `body.custom_actor_id` | `string \| null` | no | |
|
|
3808
|
+
| `body.input_config` | `Record<string, unknown>` | no | |
|
|
3809
|
+
| `body.max_results` | `integer` | no | default `1000`, min 1, max 50000 |
|
|
3810
|
+
| `body.preset_id` | `string \| null` | no | |
|
|
3811
|
+
| `body.quote_expires_at` | `string (date-time) \| null` | no | |
|
|
3812
|
+
|
|
3813
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
3814
|
+
|
|
3815
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
3816
|
+
|
|
3817
|
+
**Example**
|
|
3818
|
+
|
|
3819
|
+
```ts
|
|
3820
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
3821
|
+
const result = await g8.api.workbench.runWorkbenchProviderScraper({ path: { table_id: "id", provider: "apify" }, body: {} });
|
|
3822
|
+
```
|
|
3823
|
+
|
|
3824
|
+
---
|
|
3825
|
+
|
|
3826
|
+
<a id="op-runworkbenchscraper"></a>
|
|
3827
|
+
|
|
3828
|
+
### `g8.api.workbench.runWorkbenchScraper(input)`
|
|
3829
|
+
|
|
3830
|
+
**Run Workbench Scraper**
|
|
3831
|
+
|
|
3832
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/scraper/runs`
|
|
3833
|
+
- operationId: `run_workbench_scraper_workbench_tables__table_id__scraper_runs_post` (also callable as `g8.api.call("run_workbench_scraper_workbench_tables__table_id__scraper_runs_post", input)`)
|
|
3834
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
3835
|
+
- API-key scope: `lists:run`
|
|
3836
|
+
|
|
3837
|
+
Describe what to collect and the scraper fills the table. CHARGES per
|
|
3838
|
+
result, plus enrichment of each when `auto_enrich` is true.
|
|
3839
|
+
|
|
3840
|
+
Quote it first with `GET /workbench/scraper/credit-estimate` and pass the
|
|
3841
|
+
approved amount as `approved_max_credits` with `quote_expires_at`.
|
|
3842
|
+
|
|
3843
|
+
**Input**
|
|
3844
|
+
|
|
3845
|
+
| Field | Type | Required | Description |
|
|
3846
|
+
|---|---|---|---|
|
|
3847
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
3848
|
+
| `body` | `RunBuiltinScraperRequest` | yes | Request body; fields below. |
|
|
3849
|
+
|
|
3850
|
+
Body fields (`RunBuiltinScraperRequest`):
|
|
3851
|
+
|
|
3852
|
+
| Field | Type | Required | Description |
|
|
3853
|
+
|---|---|---|---|
|
|
3854
|
+
| `body.prompt` | `string` | yes | min length 10, max length 5000 |
|
|
3855
|
+
| `body.approved_max_credits` | `integer \| null` | no | min 0 |
|
|
3856
|
+
| `body.auto_enrich` | `boolean` | no | Also enrich each scraped row. Charged on top. default `false` |
|
|
3857
|
+
| `body.max_results` | `integer` | no | default `200`, min 10, max 2000 |
|
|
3858
|
+
| `body.model` | `string \| null` | no | |
|
|
3859
|
+
| `body.quote_expires_at` | `string (date-time) \| null` | no | |
|
|
3860
|
+
|
|
3861
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
3862
|
+
|
|
3863
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
3864
|
+
|
|
3865
|
+
**Example**
|
|
3866
|
+
|
|
3867
|
+
```ts
|
|
3868
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
3869
|
+
const result = await g8.api.workbench.runWorkbenchScraper({ path: { table_id: "id" }, body: { prompt: "xxxxxxxxxx" } });
|
|
3870
|
+
```
|
|
3871
|
+
|
|
3872
|
+
---
|
|
3873
|
+
|
|
3874
|
+
<a id="op-runworkbenchwaterfall"></a>
|
|
3875
|
+
|
|
3876
|
+
### `g8.api.workbench.runWorkbenchWaterfall(input)`
|
|
3877
|
+
|
|
3878
|
+
**Run Workbench Waterfall**
|
|
3879
|
+
|
|
3880
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/waterfall/configs/{column_id}/run`
|
|
3881
|
+
- operationId: `run_workbench_waterfall_workbench_tables__table_id__waterfall_configs__column_id__run_post` (also callable as `g8.api.call("run_workbench_waterfall_workbench_tables__table_id__waterfall_configs__column_id__run_post", input)`)
|
|
3882
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
3883
|
+
- API-key scope: `lists:run`
|
|
3884
|
+
|
|
3885
|
+
Run a waterfall column. CHARGES per provider call.
|
|
3886
|
+
|
|
3887
|
+
OMITTING `row_ids` RUNS EVERY ELIGIBLE ROW. Refused (402) without enough
|
|
3888
|
+
credit; quote it first with `.../validate-credits`.
|
|
3889
|
+
|
|
3890
|
+
**Input**
|
|
3891
|
+
|
|
3892
|
+
| Field | Type | Required | Description |
|
|
3893
|
+
|---|---|---|---|
|
|
3894
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
3895
|
+
| `path.column_id` | `integer` | yes | The waterfall column id. |
|
|
3896
|
+
| `body` | `RunStagingAIRequest \| null` | no | Request body; fields below. |
|
|
3897
|
+
|
|
3898
|
+
Body fields:
|
|
3899
|
+
|
|
3900
|
+
| Field | Type | Required | Description |
|
|
3901
|
+
|---|---|---|---|
|
|
3902
|
+
| `body.approved_max_credits` | `integer \| null` | no | Ceiling the caller approves. The run refuses to exceed it. min 0 |
|
|
3903
|
+
| `body.conditions` | `Array<Record<string, string>> \| null` | no | |
|
|
3904
|
+
| `body.exclude_row_ids` | `Array<integer> \| null` | no | max items 100000 |
|
|
3905
|
+
| `body.max_rows_per_source` | `integer \| null` | no | min 1, max 50 |
|
|
3906
|
+
| `body.model` | `string \| null` | no | Override the configured model. |
|
|
3907
|
+
| `body.multi_row_output` | `boolean \| null` | no | |
|
|
3908
|
+
| `body.prompt` | `string \| null` | no | Override the configured prompt. |
|
|
3909
|
+
| `body.qualification_mode` | `boolean` | no | default `false` |
|
|
3910
|
+
| `body.quote_expires_at` | `string (date-time) \| null` | no | |
|
|
3911
|
+
| `body.quote_id` | `string (uuid) \| null` | no | |
|
|
3912
|
+
| `body.row_ids` | `Array<integer> \| null` | no | Rows to run. OMIT to run EVERY row in the table. |
|
|
3913
|
+
| `body.status_filter` | `string \| null` | no | |
|
|
3914
|
+
|
|
3915
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
3916
|
+
|
|
3917
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
3918
|
+
|
|
3919
|
+
**Example**
|
|
3920
|
+
|
|
3921
|
+
```ts
|
|
3922
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
3923
|
+
const result = await g8.api.workbench.runWorkbenchWaterfall({ path: { table_id: "id", column_id: 123 } });
|
|
3924
|
+
```
|
|
3925
|
+
|
|
3926
|
+
---
|
|
3927
|
+
|
|
3928
|
+
<a id="op-savescraperproviderconnection"></a>
|
|
3929
|
+
|
|
3930
|
+
### `g8.api.workbench.saveScraperProviderConnection(input)`
|
|
3931
|
+
|
|
3932
|
+
**Save Scraper Provider Connection**
|
|
3933
|
+
|
|
3934
|
+
- HTTP: `PUT /api/v1/workbench/scraper/providers/{provider}/connection`
|
|
3935
|
+
- operationId: `save_scraper_provider_connection_workbench_scraper_providers__provider__connection_put` (also callable as `g8.api.call("save_scraper_provider_connection_workbench_scraper_providers__provider__connection_put", input)`)
|
|
3936
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
3937
|
+
- API-key scope: `lists:write`
|
|
3938
|
+
|
|
3939
|
+
Connect, or replace, your provider account token. Free.
|
|
3940
|
+
|
|
3941
|
+
The token is sealed at rest and never returned. Check it first with
|
|
3942
|
+
`POST .../connection/test`; saving does not.
|
|
3943
|
+
|
|
3944
|
+
**Input**
|
|
3945
|
+
|
|
3946
|
+
| Field | Type | Required | Description |
|
|
3947
|
+
|---|---|---|---|
|
|
3948
|
+
| `path.provider` | `"apify"` | yes | Which scraper provider. |
|
|
3949
|
+
| `body` | `ScraperConnectionRequest` | yes | Request body; fields below. |
|
|
3950
|
+
|
|
3951
|
+
Body fields (`ScraperConnectionRequest`):
|
|
3952
|
+
|
|
3953
|
+
| Field | Type | Required | Description |
|
|
3954
|
+
|---|---|---|---|
|
|
3955
|
+
| `body.api_key` | `string` | yes | Your provider API token. Never returned. min length 1 |
|
|
3956
|
+
| `body.configuration` | `Record<string, unknown>` | no | |
|
|
3957
|
+
|
|
3958
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
3959
|
+
|
|
3960
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
3961
|
+
|
|
3962
|
+
**Example**
|
|
3963
|
+
|
|
3964
|
+
```ts
|
|
3965
|
+
const result = await g8.api.workbench.saveScraperProviderConnection({ path: { provider: "apify" }, body: { api_key: "example" } });
|
|
3966
|
+
```
|
|
3967
|
+
|
|
3968
|
+
---
|
|
3969
|
+
|
|
3970
|
+
<a id="op-saveworkbenchcolumnaiconfig"></a>
|
|
3971
|
+
|
|
3972
|
+
### `g8.api.workbench.saveWorkbenchColumnAiConfig(input)`
|
|
3973
|
+
|
|
3974
|
+
**Save Workbench Column Ai Config**
|
|
3975
|
+
|
|
3976
|
+
- HTTP: `PUT /api/v1/workbench/tables/{table_id}/columns/{col_id}/ai-config`
|
|
3977
|
+
- operationId: `save_workbench_column_ai_config_workbench_tables__table_id__columns__col_id__ai_config_put` (also callable as `g8.api.call("save_workbench_column_ai_config_workbench_tables__table_id__columns__col_id__ai_config_put", input)`)
|
|
3978
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
3979
|
+
- API-key scope: `lists:write`
|
|
3980
|
+
|
|
3981
|
+
Set ONE column's AI pass. FREE - saving runs nothing.
|
|
3982
|
+
|
|
3983
|
+
`conditions` is the per-row gate: rows that do not match are skipped by a
|
|
3984
|
+
later run and cost nothing, which is the cheapest way to narrow a pass.
|
|
3985
|
+
|
|
3986
|
+
`usecase` is closed to the two the app accepts, because the value reaches a
|
|
3987
|
+
pattern check and a pricing table inside - an invented usecase would either
|
|
3988
|
+
422 opaquely or price against the wrong tariff.
|
|
3989
|
+
|
|
3990
|
+
**Input**
|
|
3991
|
+
|
|
3992
|
+
| Field | Type | Required | Description |
|
|
3993
|
+
|---|---|---|---|
|
|
3994
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
3995
|
+
| `path.col_id` | `integer` | yes | Column id. |
|
|
3996
|
+
| `body` | `SaveColumnAIConfigRequest` | yes | Request body; fields below. |
|
|
3997
|
+
|
|
3998
|
+
Body fields (`SaveColumnAIConfigRequest`):
|
|
3999
|
+
|
|
4000
|
+
| Field | Type | Required | Description |
|
|
4001
|
+
|---|---|---|---|
|
|
4002
|
+
| `body.prompt` | `string` | yes | min length 1 |
|
|
4003
|
+
| `body.conditions` | `Record<string, unknown> \| null` | no | Only run the pass on rows matching these conditions. |
|
|
4004
|
+
| `body.model` | `string` | no | default `"openai/gpt-4o"` |
|
|
4005
|
+
| `body.usecase` | `"content_generation" \| "web-research"` | no | default `"content_generation"` |
|
|
4006
|
+
|
|
4007
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
4008
|
+
|
|
4009
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
4010
|
+
|
|
4011
|
+
**Example**
|
|
4012
|
+
|
|
4013
|
+
```ts
|
|
4014
|
+
const result = await g8.api.workbench.saveWorkbenchColumnAiConfig({ path: { table_id: "id", col_id: 123 }, body: { prompt: "example" } });
|
|
4015
|
+
```
|
|
4016
|
+
|
|
4017
|
+
---
|
|
4018
|
+
|
|
4019
|
+
<a id="op-saveworkbenchwaterfall"></a>
|
|
4020
|
+
|
|
4021
|
+
### `g8.api.workbench.saveWorkbenchWaterfall(input)`
|
|
4022
|
+
|
|
4023
|
+
**Save Workbench Waterfall**
|
|
4024
|
+
|
|
4025
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/waterfall/configs`
|
|
4026
|
+
- operationId: `save_workbench_waterfall_workbench_tables__table_id__waterfall_configs_post` (also callable as `g8.api.call("save_workbench_waterfall_workbench_tables__table_id__waterfall_configs_post", input)`)
|
|
4027
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
4028
|
+
- API-key scope: `lists:write`
|
|
4029
|
+
|
|
4030
|
+
Create a waterfall column, or overwrite one when `config.column_id` names
|
|
4031
|
+
an existing column. Free: saving never runs it.
|
|
4032
|
+
|
|
4033
|
+
**Input**
|
|
4034
|
+
|
|
4035
|
+
| Field | Type | Required | Description |
|
|
4036
|
+
|---|---|---|---|
|
|
4037
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
4038
|
+
| `body` | `SaveWaterfallRequest` | yes | Request body; fields below. |
|
|
4039
|
+
|
|
4040
|
+
Body fields (`SaveWaterfallRequest`):
|
|
4041
|
+
|
|
4042
|
+
| Field | Type | Required | Description |
|
|
4043
|
+
|---|---|---|---|
|
|
4044
|
+
| `body.config` | `WaterfallConfig` | yes | |
|
|
4045
|
+
| `body.run_immediately` | `boolean` | no | Ignored on a workbench table. default `false` |
|
|
4046
|
+
| `body.target_records` | `Array<string (uuid)> \| null` | no | Ignored on a workbench table. |
|
|
4047
|
+
|
|
4048
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
4049
|
+
|
|
4050
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
4051
|
+
|
|
4052
|
+
**Example**
|
|
4053
|
+
|
|
4054
|
+
```ts
|
|
4055
|
+
const result = await g8.api.workbench.saveWorkbenchWaterfall({
|
|
4056
|
+
path: { table_id: "id" },
|
|
4057
|
+
body: {
|
|
4058
|
+
config: {
|
|
4059
|
+
column_id: "id",
|
|
4060
|
+
field_to_enrich: "example",
|
|
4061
|
+
name: "Example",
|
|
4062
|
+
steps: [
|
|
4063
|
+
{
|
|
4064
|
+
action: "example",
|
|
4065
|
+
action_display_name: "Example",
|
|
4066
|
+
id: "id",
|
|
4067
|
+
order: 1,
|
|
4068
|
+
provider: "example",
|
|
4069
|
+
},
|
|
4070
|
+
],
|
|
4071
|
+
},
|
|
4072
|
+
},
|
|
4073
|
+
});
|
|
4074
|
+
```
|
|
4075
|
+
|
|
4076
|
+
---
|
|
4077
|
+
|
|
4078
|
+
<a id="op-sendworkbenchrowstosequence"></a>
|
|
4079
|
+
|
|
4080
|
+
### `g8.api.workbench.sendWorkbenchRowsToSequence(input)`
|
|
4081
|
+
|
|
4082
|
+
**Send Workbench Rows To Sequence**
|
|
4083
|
+
|
|
4084
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/send-to-sequence`
|
|
4085
|
+
- operationId: `send_workbench_rows_to_sequence_workbench_tables__table_id__send_to_sequence_post` (also callable as `g8.api.call("send_workbench_rows_to_sequence_workbench_tables__table_id__send_to_sequence_post", input)`)
|
|
4086
|
+
- 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
|
|
4087
|
+
- API-key scope: `lists:run`
|
|
4088
|
+
|
|
4089
|
+
Enrol workbench rows into a sequence. THIS EMAILS REAL PEOPLE.
|
|
4090
|
+
|
|
4091
|
+
The rows stop being scratch data at this point: a sequence sends on its own
|
|
4092
|
+
schedule, to the addresses in these rows, from the organisation's mailboxes.
|
|
4093
|
+
There is no preview step here, and nothing to undo once a message is out.
|
|
4094
|
+
|
|
4095
|
+
OMITTING `row_ids` SENDS EVERY ROW IN THE TABLE, including rows that are
|
|
4096
|
+
still locked or half-enriched. Name the rows.
|
|
4097
|
+
|
|
4098
|
+
**Input**
|
|
4099
|
+
|
|
4100
|
+
| Field | Type | Required | Description |
|
|
4101
|
+
|---|---|---|---|
|
|
4102
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
4103
|
+
| `body` | `SendToSequenceRequest` | yes | Request body; fields below. |
|
|
4104
|
+
|
|
4105
|
+
Body fields (`SendToSequenceRequest`):
|
|
4106
|
+
|
|
4107
|
+
| Field | Type | Required | Description |
|
|
4108
|
+
|---|---|---|---|
|
|
4109
|
+
| `body.sequence_id` | `integer` | yes | |
|
|
4110
|
+
| `body.create_new_list` | `boolean` | no | default `false` |
|
|
4111
|
+
| `body.list_id` | `integer \| null` | no | |
|
|
4112
|
+
| `body.new_list_name` | `string \| null` | no | |
|
|
4113
|
+
| `body.row_ids` | `Array<integer> \| null` | no | Rows to send. OMIT to send EVERY row in the table. |
|
|
4114
|
+
|
|
4115
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
4116
|
+
|
|
4117
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
4118
|
+
|
|
4119
|
+
**Example**
|
|
4120
|
+
|
|
4121
|
+
```ts
|
|
4122
|
+
// external: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first.
|
|
4123
|
+
const result = await g8.api.workbench.sendWorkbenchRowsToSequence({ path: { table_id: "id" }, body: { sequence_id: 123 } });
|
|
4124
|
+
```
|
|
4125
|
+
|
|
4126
|
+
---
|
|
4127
|
+
|
|
4128
|
+
<a id="op-setworkbenchautoenrich"></a>
|
|
4129
|
+
|
|
4130
|
+
### `g8.api.workbench.setWorkbenchAutoEnrich(input)`
|
|
4131
|
+
|
|
4132
|
+
**Set Workbench Auto Enrich**
|
|
4133
|
+
|
|
4134
|
+
- HTTP: `PUT /api/v1/workbench/tables/{table_id}/auto-enrich`
|
|
4135
|
+
- operationId: `set_workbench_auto_enrich_workbench_tables__table_id__auto_enrich_put` (also callable as `g8.api.call("set_workbench_auto_enrich_workbench_tables__table_id__auto_enrich_put", input)`)
|
|
4136
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
4137
|
+
- API-key scope: `lists:run`
|
|
4138
|
+
|
|
4139
|
+
Enrich every row that arrives, automatically. STARTS ONGOING SPEND.
|
|
4140
|
+
|
|
4141
|
+
The PUT itself charges nothing. What it does is remove the human from the
|
|
4142
|
+
loop: from the moment this is on, every row that lands in the table - from
|
|
4143
|
+
an import, a webhook, a scraper or a routing rule - is enriched by the
|
|
4144
|
+
configured AI passes WITHOUT a further API call, and each one costs.
|
|
4145
|
+
|
|
4146
|
+
That is why this is graded as a spend rather than an ordinary setting. It
|
|
4147
|
+
is the single switch on this surface most likely to produce a bill nobody
|
|
4148
|
+
asked for, so `enabled` is explicit rather than a toggle: a retried request
|
|
4149
|
+
cannot silently turn it back on.
|
|
4150
|
+
|
|
4151
|
+
Read `GET /workbench/tables/{id}/enrichment-configs` first - that is the
|
|
4152
|
+
list of passes this will start running.
|
|
4153
|
+
|
|
4154
|
+
**Input**
|
|
4155
|
+
|
|
4156
|
+
| Field | Type | Required | Description |
|
|
4157
|
+
|---|---|---|---|
|
|
4158
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
4159
|
+
| `body` | `ToggleAutoEnrichRequest` | yes | Request body; fields below. |
|
|
4160
|
+
|
|
4161
|
+
Body fields (`ToggleAutoEnrichRequest`):
|
|
4162
|
+
|
|
4163
|
+
| Field | Type | Required | Description |
|
|
4164
|
+
|---|---|---|---|
|
|
4165
|
+
| `body.enabled` | `boolean` | yes | |
|
|
4166
|
+
| `body.batch_size` | `integer` | no | Rows per automatic batch. default `10`, min 1, max 1000 |
|
|
4167
|
+
|
|
4168
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
4169
|
+
|
|
4170
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
4171
|
+
|
|
4172
|
+
**Example**
|
|
4173
|
+
|
|
4174
|
+
```ts
|
|
4175
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
4176
|
+
const result = await g8.api.workbench.setWorkbenchAutoEnrich({ path: { table_id: "id" }, body: { enabled: true } });
|
|
4177
|
+
```
|
|
4178
|
+
|
|
4179
|
+
---
|
|
4180
|
+
|
|
4181
|
+
<a id="op-setworkbenchschedule"></a>
|
|
4182
|
+
|
|
4183
|
+
### `g8.api.workbench.setWorkbenchSchedule(input)`
|
|
4184
|
+
|
|
4185
|
+
**Set Workbench Schedule**
|
|
4186
|
+
|
|
4187
|
+
- HTTP: `PUT /api/v1/workbench/tables/{table_id}/schedule`
|
|
4188
|
+
- operationId: `set_workbench_schedule_workbench_tables__table_id__schedule_put` (also callable as `g8.api.call("set_workbench_schedule_workbench_tables__table_id__schedule_put", input)`)
|
|
4189
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
4190
|
+
- API-key scope: `lists:run`
|
|
4191
|
+
|
|
4192
|
+
Run something on this table on a schedule. CAN ARM ONGOING SPEND.
|
|
4193
|
+
|
|
4194
|
+
`action_type: run_ai` means every firing runs the table's AI passes and
|
|
4195
|
+
charges for them - nightly, forever, with nobody in the loop. `run_formula`
|
|
4196
|
+
is local and free; `crm_import` reaches the customer's CRM.
|
|
4197
|
+
|
|
4198
|
+
`enabled` defaults to FALSE, so writing a schedule and starting it are two
|
|
4199
|
+
separate acts. That is deliberate: it lets a caller define the cadence,
|
|
4200
|
+
read it back, and only then turn it on.
|
|
4201
|
+
|
|
4202
|
+
**Input**
|
|
4203
|
+
|
|
4204
|
+
| Field | Type | Required | Description |
|
|
4205
|
+
|---|---|---|---|
|
|
4206
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
4207
|
+
| `body` | `ScheduleConfigRequest` | yes | Request body; fields below. |
|
|
4208
|
+
|
|
4209
|
+
Body fields (`ScheduleConfigRequest`):
|
|
4210
|
+
|
|
4211
|
+
| Field | Type | Required | Description |
|
|
4212
|
+
|---|---|---|---|
|
|
4213
|
+
| `body.action_type` | `"run_ai" \| "run_formula" \| "crm_import"` | yes | |
|
|
4214
|
+
| `body.action_config` | `Record<string, unknown> \| null` | no | |
|
|
4215
|
+
| `body.cron_expression` | `string \| null` | no | min length 5, max length 100 |
|
|
4216
|
+
| `body.enabled` | `boolean` | no | default `false` |
|
|
4217
|
+
| `body.frequency` | `"hourly" \| "daily" \| "weekly" \| null` | no | |
|
|
4218
|
+
|
|
4219
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
4220
|
+
|
|
4221
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
4222
|
+
|
|
4223
|
+
**Example**
|
|
4224
|
+
|
|
4225
|
+
```ts
|
|
4226
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
4227
|
+
const result = await g8.api.workbench.setWorkbenchSchedule({ path: { table_id: "id" }, body: { action_type: "run_ai" } });
|
|
4228
|
+
```
|
|
4229
|
+
|
|
4230
|
+
---
|
|
4231
|
+
|
|
4232
|
+
<a id="op-skipworkbenchfindpeoplecandidates"></a>
|
|
4233
|
+
|
|
4234
|
+
### `g8.api.workbench.skipWorkbenchFindPeopleCandidates(input)`
|
|
4235
|
+
|
|
4236
|
+
**Skip Workbench Find People Candidates**
|
|
4237
|
+
|
|
4238
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/ai/groups/{group_id}/find-people/skip`
|
|
4239
|
+
- operationId: `skip_workbench_find_people_candidates_workbench_tables__table_id__ai_groups__group_id__find_people_skip_post` (also callable as `g8.api.call("skip_workbench_find_people_candidates_workbench_tables__table_id__ai_groups__group_id__find_people_skip_post", input)`)
|
|
4240
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
4241
|
+
- API-key scope: `lists:write`
|
|
4242
|
+
|
|
4243
|
+
Reject candidates from the review queue. FREE.
|
|
4244
|
+
|
|
4245
|
+
Marks them skipped so they are not exported. The search that found them has
|
|
4246
|
+
already been paid for; skipping does not refund it, it just stops them
|
|
4247
|
+
reaching a list.
|
|
4248
|
+
|
|
4249
|
+
**Input**
|
|
4250
|
+
|
|
4251
|
+
| Field | Type | Required | Description |
|
|
4252
|
+
|---|---|---|---|
|
|
4253
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
4254
|
+
| `path.group_id` | `string` | yes | AI group id (starts with `ai_enrich`). |
|
|
4255
|
+
| `body` | `UpdateStagingAIFindPeopleCandidatesRequest` | yes | Request body; fields below. |
|
|
4256
|
+
|
|
4257
|
+
Body fields (`UpdateStagingAIFindPeopleCandidatesRequest`):
|
|
4258
|
+
|
|
4259
|
+
| Field | Type | Required | Description |
|
|
4260
|
+
|---|---|---|---|
|
|
4261
|
+
| `body.candidate_ids` | `Array<string>` | no | min items 1 |
|
|
4262
|
+
|
|
4263
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
4264
|
+
|
|
4265
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
4266
|
+
|
|
4267
|
+
**Example**
|
|
4268
|
+
|
|
4269
|
+
```ts
|
|
4270
|
+
const result = await g8.api.workbench.skipWorkbenchFindPeopleCandidates({ path: { table_id: "id", group_id: "id" }, body: {} });
|
|
4271
|
+
```
|
|
4272
|
+
|
|
4273
|
+
---
|
|
4274
|
+
|
|
4275
|
+
<a id="op-suggestworkbenchmappings"></a>
|
|
4276
|
+
|
|
4277
|
+
### `g8.api.workbench.suggestWorkbenchMappings(input)`
|
|
4278
|
+
|
|
4279
|
+
**Suggest Workbench Mappings**
|
|
4280
|
+
|
|
4281
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/suggest-mappings`
|
|
4282
|
+
- operationId: `suggest_workbench_mappings_workbench_tables__table_id__suggest_mappings_post` (also callable as `g8.api.call("suggest_workbench_mappings_workbench_tables__table_id__suggest_mappings_post", input)`)
|
|
4283
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
4284
|
+
- API-key scope: `lists:run`
|
|
4285
|
+
|
|
4286
|
+
Ask the model which source column maps to which target field. COSTS AN AI CALL.
|
|
4287
|
+
|
|
4288
|
+
Returns a `job_id` immediately - the model call happens in the background.
|
|
4289
|
+
Poll `GET /workbench/tables/{id}/suggest-mappings/{job_id}` for the answer.
|
|
4290
|
+
|
|
4291
|
+
The suggestion is advisory: nothing is mapped until you write the mapping
|
|
4292
|
+
yourself.
|
|
4293
|
+
|
|
4294
|
+
**Input**
|
|
4295
|
+
|
|
4296
|
+
| Field | Type | Required | Description |
|
|
4297
|
+
|---|---|---|---|
|
|
4298
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
4299
|
+
| `body` | `SuggestMappingsRequest` | yes | Request body; fields below. |
|
|
4300
|
+
|
|
4301
|
+
Body fields (`SuggestMappingsRequest`):
|
|
4302
|
+
|
|
4303
|
+
| Field | Type | Required | Description |
|
|
4304
|
+
|---|---|---|---|
|
|
4305
|
+
| `body.source_columns` | `Array<string>` | yes | min items 1, max items 100 |
|
|
4306
|
+
| `body.target_fields` | `Array<string>` | yes | min items 1, max items 100 |
|
|
4307
|
+
|
|
4308
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
4309
|
+
|
|
4310
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
4311
|
+
|
|
4312
|
+
**Example**
|
|
4313
|
+
|
|
4314
|
+
```ts
|
|
4315
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
4316
|
+
const result = await g8.api.workbench.suggestWorkbenchMappings({
|
|
4317
|
+
path: { table_id: "id" },
|
|
4318
|
+
body: { source_columns: ["example"], target_fields: ["example"] },
|
|
4319
|
+
});
|
|
4320
|
+
```
|
|
4321
|
+
|
|
4322
|
+
---
|
|
4323
|
+
|
|
4324
|
+
<a id="op-syncworkbenchconnection"></a>
|
|
4325
|
+
|
|
4326
|
+
### `g8.api.workbench.syncWorkbenchConnection(input)`
|
|
4327
|
+
|
|
4328
|
+
**Sync Workbench Connection**
|
|
4329
|
+
|
|
4330
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/connections/{connection_id}/sync`
|
|
4331
|
+
- operationId: `sync_workbench_connection_workbench_tables__table_id__connections__connection_id__sync_post` (also callable as `g8.api.call("sync_workbench_connection_workbench_tables__table_id__connections__connection_id__sync_post", input)`)
|
|
4332
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
4333
|
+
- API-key scope: `lists:write`
|
|
4334
|
+
|
|
4335
|
+
Copy rows across a connection now. Free; stays inside your organisation.
|
|
4336
|
+
|
|
4337
|
+
**Input**
|
|
4338
|
+
|
|
4339
|
+
| Field | Type | Required | Description |
|
|
4340
|
+
|---|---|---|---|
|
|
4341
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
4342
|
+
| `path.connection_id` | `integer` | yes | Connection id. |
|
|
4343
|
+
|
|
4344
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
4345
|
+
|
|
4346
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
4347
|
+
|
|
4348
|
+
**Example**
|
|
4349
|
+
|
|
4350
|
+
```ts
|
|
4351
|
+
const result = await g8.api.workbench.syncWorkbenchConnection({ path: { table_id: "id", connection_id: 123 } });
|
|
4352
|
+
```
|
|
4353
|
+
|
|
4354
|
+
---
|
|
4355
|
+
|
|
4356
|
+
<a id="op-testscraperproviderconnection"></a>
|
|
4357
|
+
|
|
4358
|
+
### `g8.api.workbench.testScraperProviderConnection(input)`
|
|
4359
|
+
|
|
4360
|
+
**Test Scraper Provider Connection**
|
|
4361
|
+
|
|
4362
|
+
- HTTP: `POST /api/v1/workbench/scraper/providers/{provider}/connection/test`
|
|
4363
|
+
- operationId: `test_scraper_provider_connection_workbench_scraper_providers__provider__connection_test_post` (also callable as `g8.api.call("test_scraper_provider_connection_workbench_scraper_providers__provider__connection_test_post", input)`)
|
|
4364
|
+
- 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
|
|
4365
|
+
- API-key scope: `lists:run`
|
|
4366
|
+
|
|
4367
|
+
Check a token against the provider without saving it. Contacts the
|
|
4368
|
+
provider; free. Answers `success: false` with a reason rather than an error.
|
|
4369
|
+
|
|
4370
|
+
**Input**
|
|
4371
|
+
|
|
4372
|
+
| Field | Type | Required | Description |
|
|
4373
|
+
|---|---|---|---|
|
|
4374
|
+
| `path.provider` | `"apify"` | yes | Which scraper provider. |
|
|
4375
|
+
| `body` | `ScraperConnectionTestRequest` | yes | Request body; fields below. |
|
|
4376
|
+
|
|
4377
|
+
Body fields (`ScraperConnectionTestRequest`):
|
|
4378
|
+
|
|
4379
|
+
| Field | Type | Required | Description |
|
|
4380
|
+
|---|---|---|---|
|
|
4381
|
+
| `body.api_key` | `string` | yes | min length 1 |
|
|
4382
|
+
|
|
4383
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
4384
|
+
|
|
4385
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
4386
|
+
|
|
4387
|
+
**Example**
|
|
4388
|
+
|
|
4389
|
+
```ts
|
|
4390
|
+
// external: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first.
|
|
4391
|
+
const result = await g8.api.workbench.testScraperProviderConnection({ path: { provider: "apify" }, body: { api_key: "example" } });
|
|
4392
|
+
```
|
|
4393
|
+
|
|
4394
|
+
---
|
|
4395
|
+
|
|
4396
|
+
<a id="op-unlockworkbenchrows"></a>
|
|
4397
|
+
|
|
4398
|
+
### `g8.api.workbench.unlockWorkbenchRows(input)`
|
|
4399
|
+
|
|
4400
|
+
**Unlock Workbench Rows**
|
|
4401
|
+
|
|
4402
|
+
- HTTP: `POST /api/v1/workbench/tables/{table_id}/unlock-rows`
|
|
4403
|
+
- operationId: `unlock_workbench_rows_workbench_tables__table_id__unlock_rows_post` (also callable as `g8.api.call("unlock_workbench_rows_workbench_tables__table_id__unlock_rows_post", input)`)
|
|
4404
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
4405
|
+
- API-key scope: `lists:run`
|
|
4406
|
+
|
|
4407
|
+
Reveal masked contact details. SPENDS ONE CREDIT PER ROW.
|
|
4408
|
+
|
|
4409
|
+
This is the most expensive operation on the Workbench and the one a script
|
|
4410
|
+
is most likely to run by accident, because OMITTING `row_ids` UNLOCKS EVERY
|
|
4411
|
+
LOCKED ROW IN THE TABLE. A 10,000-row table costs 10,000 credits.
|
|
4412
|
+
|
|
4413
|
+
`operation_id` is REQUIRED and comes from `unlock-quote`. It is what binds
|
|
4414
|
+
the charge to a price the caller was shown, and it makes a retried unlock
|
|
4415
|
+
idempotent rather than charging twice for the same rows. Without it the
|
|
4416
|
+
request is refused.
|
|
4417
|
+
|
|
4418
|
+
Set `approved_max_credits` as well: the run refuses to exceed it, which is
|
|
4419
|
+
the difference between a bug costing you one request and costing you a
|
|
4420
|
+
balance.
|
|
4421
|
+
|
|
4422
|
+
**Input**
|
|
4423
|
+
|
|
4424
|
+
| Field | Type | Required | Description |
|
|
4425
|
+
|---|---|---|---|
|
|
4426
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
4427
|
+
| `body` | `UnlockStagingRowsRequest` | yes | Request body; fields below. |
|
|
4428
|
+
|
|
4429
|
+
Body fields (`UnlockStagingRowsRequest`):
|
|
4430
|
+
|
|
4431
|
+
| Field | Type | Required | Description |
|
|
4432
|
+
|---|---|---|---|
|
|
4433
|
+
| `body.approved_max_credits` | `integer \| null` | no | Ceiling the caller approves. The run refuses to exceed it. min 0 |
|
|
4434
|
+
| `body.exclude_row_ids` | `Array<integer> \| null` | no | Rows to leave locked. max items 100000 |
|
|
4435
|
+
| `body.operation_id` | `string (uuid) \| null` | no | The quote's operation id. REQUIRED by the unlock - it is what ties the charge to a price the caller was shown, and it makes a retried unlock idempotent instead of charging twice. |
|
|
4436
|
+
| `body.quote_expires_at` | `string (date-time) \| null` | no | Expiry of the quote being approved. |
|
|
4437
|
+
| `body.row_ids` | `Array<integer> \| null` | no | Rows to act on. OMIT to mean EVERY locked row in the table. max items 100000 |
|
|
4438
|
+
|
|
4439
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
4440
|
+
|
|
4441
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
4442
|
+
|
|
4443
|
+
**Example**
|
|
4444
|
+
|
|
4445
|
+
```ts
|
|
4446
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
4447
|
+
const result = await g8.api.workbench.unlockWorkbenchRows({ path: { table_id: "id" }, body: {} });
|
|
4448
|
+
```
|
|
4449
|
+
|
|
4450
|
+
---
|
|
4451
|
+
|
|
4452
|
+
<a id="op-updateworkbenchaigroup"></a>
|
|
4453
|
+
|
|
4454
|
+
### `g8.api.workbench.updateWorkbenchAiGroup(input)`
|
|
4455
|
+
|
|
4456
|
+
**Update Workbench Ai Group**
|
|
4457
|
+
|
|
4458
|
+
- HTTP: `PUT /api/v1/workbench/tables/{table_id}/ai/groups/{group_id}`
|
|
4459
|
+
- operationId: `update_workbench_ai_group_workbench_tables__table_id__ai_groups__group_id__put` (also callable as `g8.api.call("update_workbench_ai_group_workbench_tables__table_id__ai_groups__group_id__put", input)`)
|
|
4460
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
4461
|
+
- API-key scope: `lists:write`
|
|
4462
|
+
|
|
4463
|
+
Replace a group's definition. FREE - editing runs nothing.
|
|
4464
|
+
|
|
4465
|
+
A full replacement, not a patch: `config` is written as given, so read the
|
|
4466
|
+
group first and send it back changed rather than sending only the field you
|
|
4467
|
+
meant to move.
|
|
4468
|
+
|
|
4469
|
+
**Input**
|
|
4470
|
+
|
|
4471
|
+
| Field | Type | Required | Description |
|
|
4472
|
+
|---|---|---|---|
|
|
4473
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
4474
|
+
| `path.group_id` | `string` | yes | AI group id (starts with `ai_enrich`). |
|
|
4475
|
+
| `body` | `UpdateAIConfigRequest` | yes | Request body; fields below. |
|
|
4476
|
+
|
|
4477
|
+
Body fields (`UpdateAIConfigRequest`):
|
|
4478
|
+
|
|
4479
|
+
| Field | Type | Required | Description |
|
|
4480
|
+
|---|---|---|---|
|
|
4481
|
+
| `body.config` | `AIEnrichmentConfigDto` | yes | |
|
|
4482
|
+
|
|
4483
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
4484
|
+
|
|
4485
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
4486
|
+
|
|
4487
|
+
**Example**
|
|
4488
|
+
|
|
4489
|
+
```ts
|
|
4490
|
+
const result = await g8.api.workbench.updateWorkbenchAiGroup({
|
|
4491
|
+
path: { table_id: "id", group_id: "id" },
|
|
4492
|
+
body: {
|
|
4493
|
+
config: {
|
|
4494
|
+
config: {},
|
|
4495
|
+
input_mapping: ["example"],
|
|
4496
|
+
model: "example",
|
|
4497
|
+
outputs: [{ name: "Example", type: "example" }],
|
|
4498
|
+
prompt: "example",
|
|
4499
|
+
usecase: "example",
|
|
4500
|
+
},
|
|
4501
|
+
},
|
|
4502
|
+
});
|
|
4503
|
+
```
|
|
4504
|
+
|
|
4505
|
+
---
|
|
4506
|
+
|
|
4507
|
+
<a id="op-updateworkbenchpipeline"></a>
|
|
4508
|
+
|
|
4509
|
+
### `g8.api.workbench.updateWorkbenchPipeline(input)`
|
|
4510
|
+
|
|
4511
|
+
**Update Workbench Pipeline**
|
|
4512
|
+
|
|
4513
|
+
- HTTP: `PUT /api/v1/workbench/tables/{table_id}/pipelines/{pipeline_id}`
|
|
4514
|
+
- operationId: `update_workbench_pipeline_workbench_tables__table_id__pipelines__pipeline_id__put` (also callable as `g8.api.call("update_workbench_pipeline_workbench_tables__table_id__pipelines__pipeline_id__put", input)`)
|
|
4515
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
4516
|
+
- API-key scope: `lists:run`
|
|
4517
|
+
|
|
4518
|
+
Edit a pipeline; omitted fields are left alone. CAN ARM SPEND when
|
|
4519
|
+
`enabled` is true.
|
|
4520
|
+
|
|
4521
|
+
**Input**
|
|
4522
|
+
|
|
4523
|
+
| Field | Type | Required | Description |
|
|
4524
|
+
|---|---|---|---|
|
|
4525
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
4526
|
+
| `path.pipeline_id` | `string` | yes | Pipeline id (UUID). |
|
|
4527
|
+
| `body` | `UpdateWorkbenchPipelineRequest` | yes | Request body; fields below. |
|
|
4528
|
+
|
|
4529
|
+
Body fields (`UpdateWorkbenchPipelineRequest`):
|
|
4530
|
+
|
|
4531
|
+
| Field | Type | Required | Description |
|
|
4532
|
+
|---|---|---|---|
|
|
4533
|
+
| `body.enabled` | `boolean \| null` | no | |
|
|
4534
|
+
| `body.name` | `string \| null` | no | |
|
|
4535
|
+
| `body.start` | `PipelineStartConfig \| null` | no | |
|
|
4536
|
+
| `body.steps` | `Array<WorkbenchPipelineStep> \| null` | no | |
|
|
4537
|
+
|
|
4538
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
4539
|
+
|
|
4540
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
4541
|
+
|
|
4542
|
+
**Example**
|
|
4543
|
+
|
|
4544
|
+
```ts
|
|
4545
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
4546
|
+
const result = await g8.api.workbench.updateWorkbenchPipeline({ path: { table_id: "id", pipeline_id: "id" }, body: {} });
|
|
4547
|
+
```
|
|
4548
|
+
|
|
4549
|
+
---
|
|
4550
|
+
|
|
4551
|
+
<a id="op-updateworkbenchrow"></a>
|
|
4552
|
+
|
|
4553
|
+
### `g8.api.workbench.updateWorkbenchRow(input)`
|
|
4554
|
+
|
|
4555
|
+
**Update Workbench Row**
|
|
4556
|
+
|
|
4557
|
+
- HTTP: `PATCH /api/v1/workbench/tables/{table_id}/rows/{row_id}`
|
|
4558
|
+
- operationId: `update_workbench_row_workbench_tables__table_id__rows__row_id__patch` (also callable as `g8.api.call("update_workbench_row_workbench_tables__table_id__rows__row_id__patch", input)`)
|
|
4559
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
4560
|
+
- API-key scope: `lists:write`
|
|
4561
|
+
|
|
4562
|
+
Set ONE field on one row - the grid's cell edit.
|
|
4563
|
+
|
|
4564
|
+
One field per call, matching the app. A whole-row PUT would make a
|
|
4565
|
+
concurrent edit to a different cell silently lose.
|
|
4566
|
+
|
|
4567
|
+
**Input**
|
|
4568
|
+
|
|
4569
|
+
| Field | Type | Required | Description |
|
|
4570
|
+
|---|---|---|---|
|
|
4571
|
+
| `path.table_id` | `string` | yes | Table id (UUID). |
|
|
4572
|
+
| `path.row_id` | `integer` | yes | Row id. |
|
|
4573
|
+
| `body` | `WorkbenchRowUpdateRequest` | yes | Request body; fields below. |
|
|
4574
|
+
|
|
4575
|
+
Body fields (`WorkbenchRowUpdateRequest`):
|
|
4576
|
+
|
|
4577
|
+
| Field | Type | Required | Description |
|
|
4578
|
+
|---|---|---|---|
|
|
4579
|
+
| `body.field` | `string` | yes | min length 1, max length 255 |
|
|
4580
|
+
| `body.value` | `unknown` | yes | |
|
|
4581
|
+
|
|
4582
|
+
**Returns** `ApiResponse_dict_`: the envelope `{ data: Record<string, unknown>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
4583
|
+
|
|
4584
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
4585
|
+
|
|
4586
|
+
**Example**
|
|
4587
|
+
|
|
4588
|
+
```ts
|
|
4589
|
+
const result = await g8.api.workbench.updateWorkbenchRow({
|
|
4590
|
+
path: { table_id: "id", row_id: 123 },
|
|
4591
|
+
body: { field: "example", value: {} },
|
|
4592
|
+
});
|
|
4593
|
+
```
|
|
4594
|
+
|
|
4595
|
+
---
|
|
4596
|
+
|
|
4597
|
+
<a id="op-updateworkbenchtable"></a>
|
|
4598
|
+
|
|
4599
|
+
### `g8.api.workbench.updateWorkbenchTable(input)`
|
|
4600
|
+
|
|
4601
|
+
**Update Workbench Table**
|
|
4602
|
+
|
|
4603
|
+
- HTTP: `PUT /api/v1/workbench/tables/{table_id}`
|
|
4604
|
+
- operationId: `update_workbench_table_workbench_tables__table_id__put` (also callable as `g8.api.call("update_workbench_table_workbench_tables__table_id__put", input)`)
|
|
4605
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
4606
|
+
- API-key scope: `lists:write`
|
|
4607
|
+
|
|
4608
|
+
Rename or re-describe. `entity_type` is fixed at creation.
|
|
4609
|
+
|
|
4610
|
+
**Input**
|
|
4611
|
+
|
|
4612
|
+
| Field | Type | Required | Description |
|
|
4613
|
+
|---|---|---|---|
|
|
4614
|
+
| `path.table_id` | `string` | yes | Table id (UUID). |
|
|
4615
|
+
| `body` | `WorkbenchTableUpdateRequest` | yes | Request body; fields below. |
|
|
4616
|
+
|
|
4617
|
+
Body fields (`WorkbenchTableUpdateRequest`):
|
|
4618
|
+
|
|
4619
|
+
| Field | Type | Required | Description |
|
|
4620
|
+
|---|---|---|---|
|
|
4621
|
+
| `body.description` | `string \| null` | no | |
|
|
4622
|
+
| `body.name` | `string \| null` | no | |
|
|
4623
|
+
|
|
4624
|
+
**Returns** `ApiResponse_dict_`: the envelope `{ data: Record<string, unknown>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
4625
|
+
|
|
4626
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
4627
|
+
|
|
4628
|
+
**Example**
|
|
4629
|
+
|
|
4630
|
+
```ts
|
|
4631
|
+
const result = await g8.api.workbench.updateWorkbenchTable({ path: { table_id: "id" }, body: {} });
|
|
4632
|
+
```
|
|
4633
|
+
|
|
4634
|
+
---
|
|
4635
|
+
|
|
4636
|
+
<a id="op-updateworkbenchtrigger"></a>
|
|
4637
|
+
|
|
4638
|
+
### `g8.api.workbench.updateWorkbenchTrigger(input)`
|
|
4639
|
+
|
|
4640
|
+
**Update Workbench Trigger**
|
|
4641
|
+
|
|
4642
|
+
- HTTP: `PUT /api/v1/workbench/tables/{table_id}/triggers/{trigger_id}`
|
|
4643
|
+
- operationId: `update_workbench_trigger_workbench_tables__table_id__triggers__trigger_id__put` (also callable as `g8.api.call("update_workbench_trigger_workbench_tables__table_id__triggers__trigger_id__put", input)`)
|
|
4644
|
+
- Tier: `billable`: spends credits; the SDK never blindly retries it; confirm cost before bulk use
|
|
4645
|
+
- API-key scope: `lists:run`
|
|
4646
|
+
|
|
4647
|
+
Edit an automation trigger. CAN ARM ONGOING SPEND.
|
|
4648
|
+
|
|
4649
|
+
A PATCH in spirit: omitted fields are left alone. `enabled` true on a
|
|
4650
|
+
trigger whose action is an AI pass means each matching row is enriched -
|
|
4651
|
+
and charged - as it arrives.
|
|
4652
|
+
|
|
4653
|
+
**Input**
|
|
4654
|
+
|
|
4655
|
+
| Field | Type | Required | Description |
|
|
4656
|
+
|---|---|---|---|
|
|
4657
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
4658
|
+
| `path.trigger_id` | `integer` | yes | Trigger id. |
|
|
4659
|
+
| `body` | `UpdateTriggerRequest` | yes | Request body; fields below. |
|
|
4660
|
+
|
|
4661
|
+
Body fields (`UpdateTriggerRequest`):
|
|
4662
|
+
|
|
4663
|
+
| Field | Type | Required | Description |
|
|
4664
|
+
|---|---|---|---|
|
|
4665
|
+
| `body.action_config` | `Record<string, unknown> \| null` | no | |
|
|
4666
|
+
| `body.conditions` | `Record<string, unknown> \| null` | no | |
|
|
4667
|
+
| `body.enabled` | `boolean \| null` | no | |
|
|
4668
|
+
| `body.name` | `string \| null` | no | |
|
|
4669
|
+
|
|
4670
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
4671
|
+
|
|
4672
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
4673
|
+
|
|
4674
|
+
**Example**
|
|
4675
|
+
|
|
4676
|
+
```ts
|
|
4677
|
+
// billable: spends credits; the SDK never blindly retries it; confirm cost before bulk use.
|
|
4678
|
+
const result = await g8.api.workbench.updateWorkbenchTrigger({ path: { table_id: "id", trigger_id: 123 }, body: {} });
|
|
4679
|
+
```
|
|
4680
|
+
|
|
4681
|
+
---
|
|
4682
|
+
|
|
4683
|
+
<a id="op-updateworkbenchwaterfall"></a>
|
|
4684
|
+
|
|
4685
|
+
### `g8.api.workbench.updateWorkbenchWaterfall(input)`
|
|
4686
|
+
|
|
4687
|
+
**Update Workbench Waterfall**
|
|
4688
|
+
|
|
4689
|
+
- HTTP: `PUT /api/v1/workbench/tables/{table_id}/waterfall/configs/{column_id}`
|
|
4690
|
+
- operationId: `update_workbench_waterfall_workbench_tables__table_id__waterfall_configs__column_id__put` (also callable as `g8.api.call("update_workbench_waterfall_workbench_tables__table_id__waterfall_configs__column_id__put", input)`)
|
|
4691
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
4692
|
+
- API-key scope: `lists:write`
|
|
4693
|
+
|
|
4694
|
+
Replace a waterfall column's steps and settings. Free: editing runs nothing.
|
|
4695
|
+
|
|
4696
|
+
**Input**
|
|
4697
|
+
|
|
4698
|
+
| Field | Type | Required | Description |
|
|
4699
|
+
|---|---|---|---|
|
|
4700
|
+
| `path.table_id` | `string` | yes | Workbench table id (UUID). |
|
|
4701
|
+
| `path.column_id` | `integer` | yes | The waterfall column id. |
|
|
4702
|
+
| `body` | `UpdateWaterfallConfigRequest` | yes | Request body; fields below. |
|
|
4703
|
+
|
|
4704
|
+
Body fields (`UpdateWaterfallConfigRequest`):
|
|
4705
|
+
|
|
4706
|
+
| Field | Type | Required | Description |
|
|
4707
|
+
|---|---|---|---|
|
|
4708
|
+
| `body.config` | `WaterfallConfig` | yes | |
|
|
4709
|
+
|
|
4710
|
+
**Returns** `ApiResponse_EnrichmentPayload_`: the envelope `{ data: EnrichmentPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
4711
|
+
|
|
4712
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
4713
|
+
|
|
4714
|
+
**Example**
|
|
4715
|
+
|
|
4716
|
+
```ts
|
|
4717
|
+
const result = await g8.api.workbench.updateWorkbenchWaterfall({
|
|
4718
|
+
path: { table_id: "id", column_id: 123 },
|
|
4719
|
+
body: {
|
|
4720
|
+
config: {
|
|
4721
|
+
column_id: "id",
|
|
4722
|
+
field_to_enrich: "example",
|
|
4723
|
+
name: "Example",
|
|
4724
|
+
steps: [
|
|
4725
|
+
{
|
|
4726
|
+
action: "example",
|
|
4727
|
+
action_display_name: "Example",
|
|
4728
|
+
id: "id",
|
|
4729
|
+
order: 1,
|
|
4730
|
+
provider: "example",
|
|
4731
|
+
},
|
|
4732
|
+
],
|
|
4733
|
+
},
|
|
4734
|
+
},
|
|
4735
|
+
});
|
|
4736
|
+
```
|
|
4737
|
+
|
|
4738
|
+
---
|
|
4739
|
+
|
|
4740
|
+
## Referenced types
|
|
4741
|
+
|
|
4742
|
+
Named types that appear in the tables above. Full TypeScript definitions: `G8Contract.<Name>` (`import type { G8Contract } from "@graph8/sdk"`).
|
|
4743
|
+
|
|
4744
|
+
<a id="type-aienrichmentconfigdto"></a>
|
|
4745
|
+
|
|
4746
|
+
### `AIEnrichmentConfigDto`
|
|
4747
|
+
|
|
4748
|
+
A full AI enrichment group definition.
|
|
4749
|
+
|
|
4750
|
+
| Field | Type | Required | Description |
|
|
4751
|
+
|---|---|---|---|
|
|
4752
|
+
| `config` | `AIConfigDto` | yes | |
|
|
4753
|
+
| `input_mapping` | `Array<string>` | yes | min items 1, max items 100 |
|
|
4754
|
+
| `model` | `string` | yes | |
|
|
4755
|
+
| `outputs` | `Array<AIOutputFieldDto>` | yes | min items 1, max items 50 |
|
|
4756
|
+
| `prompt` | `string` | yes | min length 1, max length 20000 |
|
|
4757
|
+
| `usecase` | `string` | yes | |
|
|
4758
|
+
| `column_mappings` | `Array<AIColumnMappingDto>` | no | |
|
|
4759
|
+
| `created_at` | `string \| null` | no | |
|
|
4760
|
+
| `created_by` | `string \| null` | no | |
|
|
4761
|
+
| `description` | `string \| null` | no | |
|
|
4762
|
+
| `group_id` | `string \| null` | no | |
|
|
4763
|
+
| `id` | `string (uuid) \| null` | no | |
|
|
4764
|
+
| `is_global` | `boolean` | no | default `true` |
|
|
4765
|
+
| `json_schema` | `Record<string, "string" \| "number" \| "boolean"> \| null` | no | |
|
|
4766
|
+
| `list_id` | `integer \| null` | no | |
|
|
4767
|
+
| `name` | `string \| null` | no | |
|
|
4768
|
+
| `org_id` | `string \| null` | no | |
|
|
4769
|
+
| `output_format` | `string` | no | default `"fields"` |
|
|
4770
|
+
| `updated_at` | `string \| null` | no | |
|
|
4771
|
+
|
|
4772
|
+
<a id="type-findpeoplesearchfilter"></a>
|
|
4773
|
+
|
|
4774
|
+
### `FindPeopleSearchFilter`
|
|
4775
|
+
|
|
4776
|
+
One condition narrowing the people search.
|
|
4777
|
+
|
|
4778
|
+
| Field | Type | Required | Description |
|
|
4779
|
+
|---|---|---|---|
|
|
4780
|
+
| `field` | `string` | yes | min length 1, max length 255 |
|
|
4781
|
+
| `operator` | `"any_of" \| "any_of_with_simular" \| "any_off" \| "any_off_with_simular" \| "all_of" \| "none_of" \| "empty" \| "not_empty" \| …` | yes | |
|
|
4782
|
+
| `value` | `Array<string>` | no | |
|
|
4783
|
+
|
|
4784
|
+
<a id="type-formulaoutputcolumndef"></a>
|
|
4785
|
+
|
|
4786
|
+
### `FormulaOutputColumnDef`
|
|
4787
|
+
|
|
4788
|
+
One output of a multi-output formula.
|
|
4789
|
+
|
|
4790
|
+
| Field | Type | Required | Description |
|
|
4791
|
+
|---|---|---|---|
|
|
4792
|
+
| `display_name` | `string` | yes | min length 1, max length 255 |
|
|
4793
|
+
| `name` | `string` | yes | min length 1, max length 255, pattern `^[a-z][a-z0-9_]*$` |
|
|
4794
|
+
|
|
4795
|
+
<a id="type-outputcolumndef"></a>
|
|
4796
|
+
|
|
4797
|
+
### `OutputColumnDef`
|
|
4798
|
+
|
|
4799
|
+
One column an AI pass writes into.
|
|
4800
|
+
|
|
4801
|
+
| Field | Type | Required | Description |
|
|
4802
|
+
|---|---|---|---|
|
|
4803
|
+
| `name` | `string` | yes | min length 1, max length 255 |
|
|
4804
|
+
| `display_name` | `string \| null` | no | |
|
|
4805
|
+
| `mapping_target` | `string \| null` | no | |
|
|
4806
|
+
| `type` | `string` | no | default `"text"` |
|
|
4807
|
+
|
|
4808
|
+
<a id="type-pipelinestartconfig"></a>
|
|
4809
|
+
|
|
4810
|
+
### `PipelineStartConfig`
|
|
4811
|
+
|
|
4812
|
+
What starts the pipeline.
|
|
4813
|
+
|
|
4814
|
+
| Field | Type | Required | Description |
|
|
4815
|
+
|---|---|---|---|
|
|
4816
|
+
| `type` | `"email_pdf" \| "webhook" \| "scraper_bot" \| "ingest"` | yes | |
|
|
4817
|
+
| `expected_fields` | `Array<PipelineExpectedField>` | no | |
|
|
4818
|
+
| `source_types` | `Array<string>` | no | |
|
|
4819
|
+
|
|
4820
|
+
<a id="type-waterfallconfig"></a>
|
|
4821
|
+
|
|
4822
|
+
### `WaterfallConfig`
|
|
4823
|
+
|
|
4824
|
+
A complete waterfall definition. `org_id` and `created_by` are accepted for shape parity with the app and IGNORED: the organisation always comes from the API key.
|
|
4825
|
+
|
|
4826
|
+
| Field | Type | Required | Description |
|
|
4827
|
+
|---|---|---|---|
|
|
4828
|
+
| `column_id` | `string` | yes | |
|
|
4829
|
+
| `field_to_enrich` | `string` | yes | |
|
|
4830
|
+
| `name` | `string` | yes | |
|
|
4831
|
+
| `steps` | `Array<WaterfallStep>` | yes | |
|
|
4832
|
+
| `auto_update` | `boolean` | no | default `true` |
|
|
4833
|
+
| `created_by` | `string \| null` | no | Ignored. |
|
|
4834
|
+
| `data_type` | `string` | no | default `"text"` |
|
|
4835
|
+
| `email_verification` | `EmailVerificationConfig \| null` | no | |
|
|
4836
|
+
| `hide_provider_columns` | `boolean` | no | default `true` |
|
|
4837
|
+
| `id` | `string (uuid) \| null` | no | |
|
|
4838
|
+
| `is_existing_column` | `boolean` | no | default `false` |
|
|
4839
|
+
| `is_global` | `boolean` | no | default `true` |
|
|
4840
|
+
| `list_id` | `integer \| null` | no | |
|
|
4841
|
+
| `list_routing` | `WaterfallListRouting \| null` | no | |
|
|
4842
|
+
| `only_run_if` | `string \| null` | no | Run condition formula. |
|
|
4843
|
+
| `org_id` | `string \| null` | no | Ignored: the key's organisation is used. |
|
|
4844
|
+
| `output_successful_provider` | `boolean` | no | default `false` |
|
|
4845
|
+
| `skip_existing_values` | `boolean` | no | default `true` |
|
|
4846
|
+
| `skip_recently_enriched` | `boolean` | no | default `true` |
|
|
4847
|
+
| `target_column_name` | `string \| null` | no | |
|
|
4848
|
+
| `validate_emails` | `boolean` | no | Deprecated: use `email_verification`. default `false` |
|
|
4849
|
+
|
|
4850
|
+
<a id="type-workbenchbindingitem"></a>
|
|
4851
|
+
|
|
4852
|
+
### `WorkbenchBindingItem`
|
|
4853
|
+
|
|
4854
|
+
One workflow output rendered as one grid column.
|
|
4855
|
+
|
|
4856
|
+
| Field | Type | Required | Description |
|
|
4857
|
+
|---|---|---|---|
|
|
4858
|
+
| `column_name` | `string` | yes | Display name of the column. |
|
|
4859
|
+
| `column_type` | `"computed" \| "ai" \| "enrichment" \| "state" \| "action" \| "review"` | yes | How the grid treats the column. |
|
|
4860
|
+
| `node_id` | `string` | yes | The workflow node whose output feeds the column. |
|
|
4861
|
+
| `output_path` | `string` | yes | Dot path into that node's output. |
|
|
4862
|
+
| `config` | `Record<string, unknown> \| null` | no | Column-type settings. |
|
|
4863
|
+
| `display_mode` | `string` | no | How the cell renders. default `"text"` |
|
|
4864
|
+
| `sort_order` | `integer` | no | Position among the bound columns. default `0` |
|
|
4865
|
+
|
|
4866
|
+
<a id="type-workbenchpipelinestep"></a>
|
|
4867
|
+
|
|
4868
|
+
### `WorkbenchPipelineStep`
|
|
4869
|
+
|
|
4870
|
+
One step. A `branch` step runs `if_steps` or `else_steps`.
|
|
4871
|
+
|
|
4872
|
+
| Field | Type | Required | Description |
|
|
4873
|
+
|---|---|---|---|
|
|
4874
|
+
| `id` | `string` | yes | min length 1, max length 255 |
|
|
4875
|
+
| `name` | `string` | yes | min length 1, max length 255 |
|
|
4876
|
+
| `type` | `"ai_group" \| "waterfall" \| "formula" \| "branch" \| "export_to_list"` | yes | |
|
|
4877
|
+
| `column_id` | `integer \| null` | no | |
|
|
4878
|
+
| `conditions` | `Array<Record<string, unknown>> \| null` | no | |
|
|
4879
|
+
| `else_steps` | `Array<WorkbenchPipelineBranchStep>` | no | |
|
|
4880
|
+
| `enabled` | `boolean` | no | default `true` |
|
|
4881
|
+
| `group_id` | `string \| null` | no | |
|
|
4882
|
+
| `if_steps` | `Array<WorkbenchPipelineBranchStep>` | no | |
|
|
4883
|
+
| `inline_config` | `Record<string, unknown> \| null` | no | |
|
|
4884
|
+
| `template` | `string \| null` | no | |
|