@graph8/sdk 0.302.0 → 0.308.1

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.
@@ -5,6 +5,6 @@
5
5
  * both together (the version-parity gate already pins package.json, the
6
6
  * lockfile and the CHANGELOG to each other).
7
7
  */
8
- export declare const SDK_VERSION = "0.302.0";
8
+ export declare const SDK_VERSION = "0.308.1";
9
9
  /** Value of the `X-G8-Client` header every SDK request carries (I-13). */
10
- export declare const SDK_CLIENT_ID = "js-sdk/0.302.0";
10
+ export declare const SDK_CLIENT_ID = "js-sdk/0.308.1";
package/docs/agents.md CHANGED
@@ -9,8 +9,8 @@ grows every week and your training data is older than this file.
9
9
 
10
10
  graph8 is a B2B go-to-market platform: CRM (contacts, companies, deals, custom objects), a 700M-person
11
11
  data index with enrichment, intent signals, sequences and campaigns across email/SMS/LinkedIn/voice, a unified
12
- inbox, meetings, workflows and more. This SDK reaches all of it: **3258 Developer API
13
- operations** in 141 areas.
12
+ inbox, meetings, workflows and more. This SDK reaches all of it: **3286 Developer API
13
+ operations** in 142 areas.
14
14
 
15
15
  ## 1. The short version
16
16
 
@@ -92,7 +92,7 @@ g8.init({ apiKey: process.env.G8_API_KEY! });
92
92
  | | Hand-written clients | `g8.api` (generated) |
93
93
  |---|---|---|
94
94
  | Example | `g8.contacts.upsert({ list_id, work_email })` | `g8.api.assertUpsert.assertContact({ body: { list_id, work_email } })` |
95
- | Coverage | 289 methods, reaching 258 operations | all 3258 operations |
95
+ | Coverage | 289 methods, reaching 258 operations | all 3286 operations |
96
96
  | Returns | the unwrapped value (usually `data`) | the full envelope; read `result.data` |
97
97
  | Arguments | positional / friendly names | `{ path?, query?, headers?, body? }`, exactly as the contract names them |
98
98
  | Reference | [sdk-clients.md](sdk-clients.md) | [api/README.md](api/README.md) |
@@ -141,7 +141,7 @@ Hand-written modules:
141
141
  | [`g8.webhooks`](sdk-clients.md#g8-webhooks) | 1 | API key |
142
142
  | [`g8.workflows`](sdk-clients.md#g8-workflows) | 21 | API key |
143
143
 
144
- `g8.api` namespaces (operation counts): `accounts` (16), `adCampaigns` (19), `adCreatives` (40), `agency` (24), `agent` (8), `agents` (65), `aiInbox` (79), `analytics` (51), `apiKeys` (6), `appDeployments` (7), `appDomains` (5), `appLogs` (2), `appObjects` (10), `appPages` (16), `appPlatformTokens` (3), `appointments` (92), `apps` (22), `assertUpsert` (6), `audienceSyncs` (8), `brandKit` (30), `bugReports` (7), `calendarInvites` (3), `campaignWorkflows` (5), `campaigns` (29), `channels` (5), `cliCampaigns` (6), `cliPipelines` (12), `clickHouse` (2), `companies` (50), `companyIntelligence` (14), `contacts` (70), `content` (41), `contentGridSkills` (6), `copilot` (39), `crmSyncs` (6), `customerSuccess` (19), `deals` (48), `deliverability` (17), `desk` (71), `dialer` (46), `dialerAnalytics` (6), `documents` (35), `duplicates` (7), `eSign` (1), `eSignature` (7), `enrichment` (115), `events` (1), `fields` (8), `forms` (35), `gtmCampaigns` (22), `gtmContext` (51), `gtmDeliverability` (1), `gtmKnowledgeBase` (2), `gtmLaunchHelpers` (2), `gtmLibrary` (20), `health` (1), `imageLibrary` (14), `imports` (3), `inbox` (22), `install` (6), `installedApps` (4), `integrationStatus` (6), `integrations` (83), `intent` (16), `knowledge` (21), `knowledgeBase` (2), `landingPages` (59), `leads` (4), `library` (9), `linkedIn` (5), `linkedInOutreach` (20), `lists` (36), `logs` (1), `mailboxes` (38), `marketingIntelligence` (10), `marketplace` (142), `mcp` (1), `me` (1), `meetings` (17), `newsletter` (61), `notes` (19), `notifications` (2), `objects` (18), `openSearch` (4), `ops` (5), `orgGovernance` (17), `orgVideos` (6), `organizationSettings` (22), `phoneNumbers` (16), `profile` (14), `programmaticPages` (15), `providerDomains` (34), `providerUsage` (5), `public` (1), `publicCopilot` (1), `publicSignals` (1), `publicVisitors` (2), `quotes` (56), `radar` (42), `radarReports` (8), `recordRoles` (4), `repos` (4), `research` (13), `revenue` (14), `revenueAnalytics` (6), `revenueLifecycle` (5), `revenueRecords` (15), `roles` (21), `salesCoach` (37), `sandbox` (9), `scans` (2), `scheduleBuy` (9), `scraping` (10), `sdrAnalytics` (5), `search` (19), `seo` (14), `sequenceLifecycle` (8), `sequences` (71), `settings` (18), `signals` (56), `signatures` (24), `skills` (12), `snippet` (3), `socialPublishing` (22), `studioDocuments` (9), `support` (1), `suppressions` (6), `surveys` (21), `tasks` (25), `teamMembers` (21), `teams` (35), `usage` (9), `visitors` (26), `voice` (187), `webAnalytics` (38), `webChat` (46), `webhooks` (8), `websiteEditor` (12), `work` (59), `workbench` (107), `workflows` (59).
144
+ `g8.api` namespaces (operation counts): `accounts` (16), `adCampaigns` (19), `adCreatives` (40), `agency` (24), `agent` (8), `agents` (65), `aiInbox` (79), `analytics` (51), `apiKeys` (6), `appDeployments` (7), `appDomains` (5), `appLogs` (2), `appObjects` (10), `appPages` (16), `appPlatformTokens` (3), `appointments` (92), `apps` (22), `assertUpsert` (6), `audienceSyncs` (8), `brandKit` (30), `bugReports` (7), `calendarInvites` (3), `campaignWorkflows` (5), `campaigns` (29), `channels` (5), `cliCampaigns` (6), `cliPipelines` (12), `clickHouse` (2), `companies` (50), `companyIntelligence` (14), `contacts` (70), `content` (41), `contentGridSkills` (6), `copilot` (39), `crmSyncs` (6), `customerSuccess` (19), `dataPipelines` (5), `deals` (48), `deliverability` (17), `desk` (71), `dialer` (46), `dialerAnalytics` (6), `documents` (35), `duplicates` (7), `eSign` (1), `eSignature` (7), `enrichment` (115), `events` (1), `fields` (8), `forms` (35), `gtmCampaigns` (22), `gtmContext` (51), `gtmDeliverability` (1), `gtmKnowledgeBase` (2), `gtmLaunchHelpers` (2), `gtmLibrary` (20), `health` (1), `imageLibrary` (14), `imports` (3), `inbox` (22), `install` (6), `installedApps` (4), `integrationStatus` (6), `integrations` (83), `intent` (16), `knowledge` (21), `knowledgeBase` (2), `landingPages` (59), `leads` (4), `library` (9), `linkedIn` (5), `linkedInOutreach` (20), `lists` (36), `logs` (1), `mailboxes` (38), `marketingIntelligence` (10), `marketplace` (142), `mcp` (1), `me` (1), `meetings` (17), `newsletter` (61), `notes` (19), `notifications` (2), `objects` (41), `openSearch` (4), `ops` (5), `orgGovernance` (17), `orgVideos` (6), `organizationSettings` (22), `phoneNumbers` (16), `profile` (14), `programmaticPages` (15), `providerDomains` (34), `providerUsage` (5), `public` (1), `publicCopilot` (1), `publicSignals` (1), `publicVisitors` (2), `quotes` (56), `radar` (42), `radarReports` (8), `recordRoles` (4), `repos` (4), `research` (13), `revenue` (14), `revenueAnalytics` (6), `revenueLifecycle` (5), `revenueRecords` (15), `roles` (21), `salesCoach` (37), `sandbox` (9), `scans` (2), `scheduleBuy` (9), `scraping` (10), `sdrAnalytics` (5), `search` (19), `seo` (14), `sequenceLifecycle` (8), `sequences` (71), `settings` (18), `signals` (56), `signatures` (24), `skills` (12), `snippet` (3), `socialPublishing` (22), `studioDocuments` (9), `support` (1), `suppressions` (6), `surveys` (21), `tasks` (25), `teamMembers` (21), `teams` (35), `usage` (9), `visitors` (26), `voice` (187), `webAnalytics` (38), `webChat` (46), `webhooks` (8), `websiteEditor` (12), `work` (59), `workbench` (107), `workflows` (59).
145
145
 
146
146
  ## 5. How to find the right call
147
147
 
@@ -196,9 +196,9 @@ Every operation carries a tier:
196
196
 
197
197
  | Tier | What it means | Count |
198
198
  |---|---|---|
199
- | `read` | reads data; safe to call and to retry | 1513 |
200
- | `write` | creates or changes records; the SDK sends an Idempotency-Key and retries transient failures | 811 |
201
- | `destructive` | deletes or archives data; confirm with a human before calling | 300 |
199
+ | `read` | reads data; safe to call and to retry | 1524 |
200
+ | `write` | creates or changes records; the SDK sends an Idempotency-Key and retries transient failures | 825 |
201
+ | `destructive` | deletes or archives data; confirm with a human before calling | 303 |
202
202
  | `billable` | spends credits; the SDK never blindly retries it; confirm cost before bulk use | 383 |
203
203
  | `external` | reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first | 251 |
204
204
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # `g8.api`: every Developer API operation
4
4
 
5
- `g8.api` is generated from the published OpenAPI contract, so it covers all 3258 operations across 141 namespaces (1513 read, 811 write, 300 destructive, 383 billable, 251 external).
5
+ `g8.api` is generated from the published OpenAPI contract, so it covers all 3286 operations across 142 namespaces (1524 read, 825 write, 303 destructive, 383 billable, 251 external).
6
6
 
7
7
  - Found a REST path in a curl example or the web docs? Look it up in [by-path.md](by-path.md).
8
8
  - Prefer a hand-written method where one exists: [../sdk-clients.md](../sdk-clients.md).
@@ -58,6 +58,7 @@
58
58
  | `g8.api.copilot` | Copilot | 39 | none | [copilot.md](copilot.md) | [copilot.d.ts](copilot.d.ts) |
59
59
  | `g8.api.crmSyncs` | CRM Syncs | 6 | none | [crmSyncs.md](crmSyncs.md) | [crmSyncs.d.ts](crmSyncs.d.ts) |
60
60
  | `g8.api.customerSuccess` | Customer success | 19 | none | [customerSuccess.md](customerSuccess.md) | [customerSuccess.d.ts](customerSuccess.d.ts) |
61
+ | `g8.api.dataPipelines` | Data pipelines | 5 | none | [dataPipelines.md](dataPipelines.md) | [dataPipelines.d.ts](dataPipelines.d.ts) |
61
62
  | `g8.api.deals` | Deals | 48 | 8 | [deals.md](deals.md) | [deals.d.ts](deals.d.ts) |
62
63
  | `g8.api.deliverability` | Deliverability | 17 | none | [deliverability.md](deliverability.md) | [deliverability.d.ts](deliverability.d.ts) |
63
64
  | `g8.api.desk` | Desk | 71 | none | [desk.md](desk.md) | [desk.d.ts](desk.d.ts) |
@@ -104,7 +105,7 @@
104
105
  | `g8.api.newsletter` | Newsletter | 61 | 15 | [newsletter.md](newsletter.md) | [newsletter.d.ts](newsletter.d.ts) |
105
106
  | `g8.api.notes` | Notes | 19 | 8 | [notes.md](notes.md) | [notes.d.ts](notes.d.ts) |
106
107
  | `g8.api.notifications` | Notifications | 2 | none | [notifications.md](notifications.md) | [notifications.d.ts](notifications.d.ts) |
107
- | `g8.api.objects` | Objects | 18 | 18 | [objects.md](objects.md) | [objects.d.ts](objects.d.ts) |
108
+ | `g8.api.objects` | Objects | 41 | 18 | [objects.md](objects.md) | [objects.d.ts](objects.d.ts) |
108
109
  | `g8.api.openSearch` | OpenSearch | 4 | none | [openSearch.md](openSearch.md) | [openSearch.d.ts](openSearch.d.ts) |
109
110
  | `g8.api.ops` | Ops (internal, cross-tenant, read-only) | 5 | none | [ops.md](ops.md) | [ops.d.ts](ops.d.ts) |
110
111
  | `g8.api.orgGovernance` | Org Governance | 17 | none | [orgGovernance.md](orgGovernance.md) | [orgGovernance.d.ts](orgGovernance.d.ts) |
@@ -284,6 +284,8 @@ export interface AttributeDefinitionResponse {
284
284
  sort_order?: number;
285
285
  /** Customer-facing field label, distinct from its stable API slug. */
286
286
  title: string;
287
+ /** Role ids that may see this field; null means every role. Owners and admins always see every field. A field hidden from the caller is absent from every response. Set it with PATCH on this attribute. */
288
+ visible_to_role_ids?: Array<string> | null;
287
289
  }
288
290
 
289
291
  /** One custom object type in the caller's workspace. */
@@ -319,6 +319,7 @@ Other envelope fields: `pagination` (PaginationMeta).
319
319
  | `is_system` | `boolean` | no | Whether this field is protected as a system attribute. default `false` |
320
320
  | `is_unique` | `boolean` | no | No two active records may hold the same value for this attribute. A collision is rejected with `409 duplicate_active_value`. default `false` |
321
321
  | `sort_order` | `integer` | no | Configured display order; equal values are ordered by API slug. default `0` |
322
+ | `visible_to_role_ids` | `Array<string> \| null` | no | Role ids that may see this field; null means every role. Owners and admins always see every field. A field hidden from the caller is absent from every response. Set it with PATCH on this attribute. |
322
323
 
323
324
  **Example**
324
325
 
@@ -876,6 +876,11 @@ Every Developer API route, sorted by path, with the SDK call that reaches it. Th
876
876
  | PATCH | `/api/v1/customer-success/transcripts/{transcript_id}/archive` | [`g8.api.customerSuccess.archiveTranscript`](customerSuccess.md#op-archivetranscript) | destructive |
877
877
  | PATCH | `/api/v1/customer-success/transcripts/{transcript_id}/link` | [`g8.api.customerSuccess.linkTranscriptToAccount`](customerSuccess.md#op-linktranscripttoaccount) | write |
878
878
  | PATCH | `/api/v1/customer-success/transcripts/{transcript_id}/unarchive` | [`g8.api.customerSuccess.unarchiveTranscript`](customerSuccess.md#op-unarchivetranscript) | write |
879
+ | GET | `/api/v1/data-pipelines/destinations` | [`g8.api.dataPipelines.listDestinations`](dataPipelines.md#op-listdestinations) | read |
880
+ | GET | `/api/v1/data-pipelines/functions` | [`g8.api.dataPipelines.listFunctions`](dataPipelines.md#op-listfunctions) | read |
881
+ | GET | `/api/v1/data-pipelines/streams/{stream_id}/events` | [`g8.api.dataPipelines.listStreamEvents`](dataPipelines.md#op-liststreamevents) | read |
882
+ | GET | `/api/v1/data-pipelines/syncs` | [`g8.api.dataPipelines.listSyncs`](dataPipelines.md#op-listsyncs) | read |
883
+ | GET | `/api/v1/data-pipelines/syncs/{sync_id}/tasks` | [`g8.api.dataPipelines.listSyncTasks`](dataPipelines.md#op-listsynctasks) | read |
879
884
  | GET | `/api/v1/deals` | [`g8.api.deals.listDeals`](deals.md#op-listdeals) or `g8.deals.list()` | read |
880
885
  | POST | `/api/v1/deals` | [`g8.api.deals.createDeal`](deals.md#op-createdeal) or `g8.deals.create()` | write |
881
886
  | GET | `/api/v1/deals/analytics` | [`g8.api.deals.getDealAnalytics`](deals.md#op-getdealanalytics) | read |
@@ -2022,15 +2027,38 @@ Every Developer API route, sorted by path, with the SDK call that reaches it. Th
2022
2027
  | POST | `/api/v1/objects/{object_slug}/attributes` | [`g8.api.objects.createAttribute`](objects.md#op-createattribute) or `g8.objects.createAttribute()` | write |
2023
2028
  | DELETE | `/api/v1/objects/{object_slug}/attributes/{attr_slug}` | [`g8.api.objects.archiveAttribute`](objects.md#op-archiveattribute) or `g8.objects.archiveAttribute()` | destructive |
2024
2029
  | PATCH | `/api/v1/objects/{object_slug}/attributes/{attr_slug}` | [`g8.api.objects.updateAttribute`](objects.md#op-updateattribute) or `g8.objects.updateAttribute()` | write |
2030
+ | POST | `/api/v1/objects/{object_slug}/exports` | [`g8.api.objects.exportObjectRecords`](objects.md#op-exportobjectrecords) | write |
2031
+ | GET | `/api/v1/objects/{object_slug}/imports/csv/drafts` | [`g8.api.objects.listObjectCsvImports`](objects.md#op-listobjectcsvimports) | read |
2032
+ | POST | `/api/v1/objects/{object_slug}/imports/csv/drafts` | [`g8.api.objects.createObjectCsvImport`](objects.md#op-createobjectcsvimport) | write |
2033
+ | DELETE | `/api/v1/objects/{object_slug}/imports/csv/drafts/{draft_id}` | [`g8.api.objects.deleteObjectCsvImport`](objects.md#op-deleteobjectcsvimport) | destructive |
2034
+ | GET | `/api/v1/objects/{object_slug}/imports/csv/drafts/{draft_id}` | [`g8.api.objects.getObjectCsvImport`](objects.md#op-getobjectcsvimport) | read |
2035
+ | PUT | `/api/v1/objects/{object_slug}/imports/csv/drafts/{draft_id}` | [`g8.api.objects.updateObjectCsvImport`](objects.md#op-updateobjectcsvimport) | write |
2036
+ | POST | `/api/v1/objects/{object_slug}/imports/csv/drafts/{draft_id}/commit` | [`g8.api.objects.commitObjectCsvImport`](objects.md#op-commitobjectcsvimport) | write |
2037
+ | GET | `/api/v1/objects/{object_slug}/imports/csv/drafts/{draft_id}/errors` | [`g8.api.objects.downloadObjectCsvImportErrors`](objects.md#op-downloadobjectcsvimporterrors) | read |
2038
+ | POST | `/api/v1/objects/{object_slug}/imports/csv/drafts/{draft_id}/preview` | [`g8.api.objects.previewObjectCsvImport`](objects.md#op-previewobjectcsvimport) | write |
2039
+ | POST | `/api/v1/objects/{object_slug}/imports/csv/inspect` | [`g8.api.objects.inspectObjectCsvImport`](objects.md#op-inspectobjectcsvimport) | write |
2025
2040
  | GET | `/api/v1/objects/{object_slug}/records` | [`g8.api.objects.listObjectRecords`](objects.md#op-listobjectrecords) or `g8.objects.listRecords()` | read |
2026
2041
  | POST | `/api/v1/objects/{object_slug}/records` | [`g8.api.objects.createObjectRecord`](objects.md#op-createobjectrecord) or `g8.objects.createRecord()` | write |
2042
+ | PATCH | `/api/v1/objects/{object_slug}/records/bulk` | [`g8.api.objects.bulkUpdateObjectRecords`](objects.md#op-bulkupdateobjectrecords) | write |
2043
+ | POST | `/api/v1/objects/{object_slug}/records/merge` | [`g8.api.objects.mergeObjectRecords`](objects.md#op-mergeobjectrecords) | write |
2027
2044
  | POST | `/api/v1/objects/{object_slug}/records/upsert` | [`g8.api.objects.upsertObjectRecord`](objects.md#op-upsertobjectrecord) or `g8.objects.upsertRecord()` | write |
2028
2045
  | DELETE | `/api/v1/objects/{object_slug}/records/{record_id}` | [`g8.api.objects.archiveObjectRecord`](objects.md#op-archiveobjectrecord) or `g8.objects.archiveRecord()` | destructive |
2029
2046
  | GET | `/api/v1/objects/{object_slug}/records/{record_id}` | [`g8.api.objects.getObjectRecord`](objects.md#op-getobjectrecord) or `g8.objects.getRecord()` | read |
2030
2047
  | PATCH | `/api/v1/objects/{object_slug}/records/{record_id}` | [`g8.api.objects.updateObjectRecord`](objects.md#op-updateobjectrecord) or `g8.objects.updateRecord()` | write |
2031
2048
  | GET | `/api/v1/objects/{object_slug}/records/{record_id}/changes` | [`g8.api.objects.getObjectRecordChanges`](objects.md#op-getobjectrecordchanges) or `g8.objects.changes()` | read |
2032
2049
  | GET | `/api/v1/objects/{object_slug}/records/{record_id}/history` | [`g8.api.objects.getObjectRecordHistory`](objects.md#op-getobjectrecordhistory) or `g8.objects.history()` | read |
2050
+ | GET | `/api/v1/objects/{object_slug}/records/{record_id}/relationships` | [`g8.api.objects.getObjectRelationships`](objects.md#op-getobjectrelationships) | read |
2051
+ | POST | `/api/v1/objects/{object_slug}/records/{record_id}/relationships` | [`g8.api.objects.createObjectRelationship`](objects.md#op-createobjectrelationship) | write |
2052
+ | DELETE | `/api/v1/objects/{object_slug}/records/{record_id}/relationships/{relationship_id}` | [`g8.api.objects.deleteObjectRelationship`](objects.md#op-deleteobjectrelationship) | destructive |
2033
2053
  | POST | `/api/v1/objects/{object_slug}/records/{record_id}/restore` | [`g8.api.objects.restoreObjectRecord`](objects.md#op-restoreobjectrecord) or `g8.objects.restoreRecord()` | write |
2054
+ | GET | `/api/v1/objects/{object_slug}/relationships` | [`g8.api.objects.getObjectRelationshipDefinitions`](objects.md#op-getobjectrelationshipdefinitions) | read |
2055
+ | GET | `/api/v1/objects/{object_slug}/views` | [`g8.api.objects.listObjectViews`](objects.md#op-listobjectviews) | read |
2056
+ | POST | `/api/v1/objects/{object_slug}/views` | [`g8.api.objects.createObjectView`](objects.md#op-createobjectview) | write |
2057
+ | POST | `/api/v1/objects/{object_slug}/views/board/groups` | [`g8.api.objects.queryObjectBoardGroups`](objects.md#op-queryobjectboardgroups) | write |
2058
+ | POST | `/api/v1/objects/{object_slug}/views/board/records` | [`g8.api.objects.queryObjectBoardRecords`](objects.md#op-queryobjectboardrecords) | write |
2059
+ | PUT | `/api/v1/objects/{object_slug}/views/default` | [`g8.api.objects.setDefaultObjectView`](objects.md#op-setdefaultobjectview) | write |
2060
+ | DELETE | `/api/v1/objects/{object_slug}/views/{view_id}` | [`g8.api.objects.deleteObjectView`](objects.md#op-deleteobjectview) | destructive |
2061
+ | PUT | `/api/v1/objects/{object_slug}/views/{view_id}` | [`g8.api.objects.updateObjectView`](objects.md#op-updateobjectview) | write |
2034
2062
  | POST | `/api/v1/opensearch/aggregate` | [`g8.api.openSearch.opensearchAggregate`](openSearch.md#op-opensearchaggregate) | write |
2035
2063
  | POST | `/api/v1/opensearch/count` | [`g8.api.openSearch.opensearchCount`](openSearch.md#op-opensearchcount) | write |
2036
2064
  | POST | `/api/v1/opensearch/resolve` | [`g8.api.openSearch.opensearchResolve`](openSearch.md#op-opensearchresolve) | write |
@@ -0,0 +1,149 @@
1
+ /* Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. */
2
+
3
+ /**
4
+ * Types for `g8.api.dataPipelines` (Data pipelines): 5 operations.
5
+ *
6
+ * For reading. In code, import from the package instead:
7
+ * import type { ApiInput, ApiOutput, G8Contract } from "@graph8/sdk";
8
+ * type In = ApiInput<"list_destinations_data_pipelines_destinations_get">;
9
+ *
10
+ * Reference with examples: dataPipelines.md
11
+ */
12
+ /* eslint-disable */
13
+
14
+ /** `g8.api.dataPipelines.<member>` -> the operationId it calls. */
15
+ export interface DataPipelinesMembers {
16
+ listDestinations: "list_destinations_data_pipelines_destinations_get";
17
+ listFunctions: "list_functions_data_pipelines_functions_get";
18
+ listStreamEvents: "list_stream_events_data_pipelines_streams__stream_id__events_get";
19
+ listSyncTasks: "list_sync_tasks_data_pipelines_syncs__sync_id__tasks_get";
20
+ listSyncs: "list_syncs_data_pipelines_syncs_get";
21
+ }
22
+
23
+ /** Input and output of every `g8.api.dataPipelines` operation, keyed by operationId. */
24
+ export interface DataPipelinesOperations {
25
+ /**
26
+ * GET /data-pipelines/destinations
27
+ * List Destinations
28
+ * tier: read · scope: integrations:read
29
+ */
30
+ list_destinations_data_pipelines_destinations_get: {
31
+ input: {
32
+ headers?: {
33
+ "X-Target-Org-Id"?: string | null;
34
+ };
35
+ };
36
+ output: ApiResponse_DataPipelineItems_;
37
+ };
38
+ /**
39
+ * GET /data-pipelines/functions
40
+ * List Functions
41
+ * tier: read · scope: integrations:read
42
+ */
43
+ list_functions_data_pipelines_functions_get: {
44
+ input: {
45
+ headers?: {
46
+ "X-Target-Org-Id"?: string | null;
47
+ };
48
+ };
49
+ output: ApiResponse_DataPipelineItems_;
50
+ };
51
+ /**
52
+ * GET /data-pipelines/streams/{stream_id}/events
53
+ * List Stream Events
54
+ * tier: read · scope: integrations:read
55
+ */
56
+ list_stream_events_data_pipelines_streams__stream_id__events_get: {
57
+ input: {
58
+ path: {
59
+ /** Stream id (from GET /streams). */
60
+ stream_id: string;
61
+ };
62
+ query?: {
63
+ /** Newest events to return, 1-200. */
64
+ limit?: number;
65
+ /** Only events at or after (ISO 8601). */
66
+ start?: string | null;
67
+ /** Only events before (ISO 8601). */
68
+ end?: string | null;
69
+ /** Only entries at this log level (e.g. error = rejected events). */
70
+ levels?: ("error" | "warn" | "info" | "debug") | null;
71
+ };
72
+ headers?: {
73
+ "X-Target-Org-Id"?: string | null;
74
+ };
75
+ };
76
+ output: ApiResponse_DataPipelineItems_;
77
+ };
78
+ /**
79
+ * GET /data-pipelines/syncs/{sync_id}/tasks
80
+ * List Sync Tasks
81
+ * tier: read · scope: integrations:read
82
+ */
83
+ list_sync_tasks_data_pipelines_syncs__sync_id__tasks_get: {
84
+ input: {
85
+ path: {
86
+ /** Sync id (from GET /data-pipelines/syncs). */
87
+ sync_id: string;
88
+ };
89
+ query?: {
90
+ /** Only runs in this status (e.g. SUCCESS, FAILED, RUNNING). */
91
+ status?: string | null;
92
+ /** Only runs started at or after (ISO 8601). */
93
+ started_after?: string | null;
94
+ /** Only runs started before (ISO 8601). */
95
+ started_before?: string | null;
96
+ };
97
+ headers?: {
98
+ "X-Target-Org-Id"?: string | null;
99
+ };
100
+ };
101
+ output: ApiResponse_DataPipelineItems_;
102
+ };
103
+ /**
104
+ * GET /data-pipelines/syncs
105
+ * List Syncs
106
+ * tier: read · scope: integrations:read
107
+ */
108
+ list_syncs_data_pipelines_syncs_get: {
109
+ input: {
110
+ headers?: {
111
+ "X-Target-Org-Id"?: string | null;
112
+ };
113
+ };
114
+ output: ApiResponse_DataPipelineItems_;
115
+ };
116
+ }
117
+
118
+ // 3 schemas referenced above (the same as G8Contract.<Name>).
119
+
120
+ export interface ApiResponse_DataPipelineItems_ {
121
+ data: DataPipelineItems;
122
+ pagination?: PaginationMeta | null;
123
+ }
124
+
125
+ /** A list of data-pipeline objects or log entries. */
126
+ export interface DataPipelineItems {
127
+ items?: Array<Record<string, unknown>>;
128
+ total?: number;
129
+ [key: string]: unknown;
130
+ }
131
+
132
+ export interface PaginationMeta {
133
+ /** Whether there are more pages */
134
+ has_next: boolean;
135
+ /** Items per page */
136
+ limit: number;
137
+ /** Opaque cursor for the next page; null when there are no more items. Pass it back as the `cursor` query param to fetch the following page without computing page numbers. */
138
+ next_cursor?: string | null;
139
+ /** Search endpoints only: plain-language notes about the result, e.g. that more records match than can be paged, or that a reversed `between` range was put in order. */
140
+ notes?: Array<string> | null;
141
+ /** Current page number (1-indexed) */
142
+ page: number;
143
+ /** Total number of items */
144
+ total: number;
145
+ /** Search endpoints only: how many records really match, when known. Can be larger than `total`, which is capped at the 10,000 results that can be paged. For company search this is a distinct-company estimate. Null when unknown; absent outside search. */
146
+ total_available?: number | null;
147
+ /** Search endpoints only: true when more records match than `total` shows (the result set is larger than the 10,000 results that can be paged). Absent outside search. */
148
+ total_is_lower_bound?: boolean | null;
149
+ }
@@ -0,0 +1,232 @@
1
+ <!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
2
+
3
+ # `g8.api.dataPipelines`: Data pipelines
4
+
5
+ 5 operations (5 read).
6
+
7
+ No hand-written client covers this area. Call it through `g8.api.dataPipelines.*` 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: [dataPipelines.d.ts](dataPipelines.d.ts).
20
+
21
+ ## Operations
22
+
23
+ | Call | HTTP | Tier | Scope | Summary |
24
+ |---|---|---|---|---|
25
+ | [`listDestinations`](#op-listdestinations) | `GET /api/v1/data-pipelines/destinations` | read | `integrations:read` | List Destinations |
26
+ | [`listFunctions`](#op-listfunctions) | `GET /api/v1/data-pipelines/functions` | read | `integrations:read` | List Functions |
27
+ | [`listStreamEvents`](#op-liststreamevents) | `GET /api/v1/data-pipelines/streams/{stream_id}/events` | read | `integrations:read` | List Stream Events |
28
+ | [`listSyncTasks`](#op-listsynctasks) | `GET /api/v1/data-pipelines/syncs/{sync_id}/tasks` | read | `integrations:read` | List Sync Tasks |
29
+ | [`listSyncs`](#op-listsyncs) | `GET /api/v1/data-pipelines/syncs` | read | `integrations:read` | List Syncs |
30
+
31
+ ---
32
+
33
+ <a id="op-listdestinations"></a>
34
+
35
+ ### `g8.api.dataPipelines.listDestinations(input?)`
36
+
37
+ **List Destinations**
38
+
39
+ - HTTP: `GET /api/v1/data-pipelines/destinations`
40
+ - operationId: `list_destinations_data_pipelines_destinations_get` (also callable as `g8.api.call("list_destinations_data_pipelines_destinations_get", input)`)
41
+ - Tier: `read`: reads data; safe to call and to retry
42
+ - API-key scope: `integrations:read`
43
+
44
+ List the organization's data destinations (warehouses, webhooks, ad/CRM targets).
45
+
46
+ Same list as Data > Connections > Destinations. Secrets (passwords, keys,
47
+ service-account JSON, tokens) are never returned: each one reads `__SET__`.
48
+
49
+ **Input**: none.
50
+
51
+ **Returns** `ApiResponse_DataPipelineItems_`: the envelope `{ data: DataPipelineItems, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
52
+
53
+ Other envelope fields: `pagination` (PaginationMeta).
54
+
55
+ `DataPipelineItems` fields:
56
+
57
+ | Field | Type | Required | Description |
58
+ |---|---|---|---|
59
+ | `items` | `Array<Record<string, unknown>>` | no | |
60
+ | `total` | `integer` | no | default `0` |
61
+
62
+ **Example**
63
+
64
+ ```ts
65
+ const result = await g8.api.dataPipelines.listDestinations();
66
+ ```
67
+
68
+ ---
69
+
70
+ <a id="op-listfunctions"></a>
71
+
72
+ ### `g8.api.dataPipelines.listFunctions(input?)`
73
+
74
+ **List Functions**
75
+
76
+ - HTTP: `GET /api/v1/data-pipelines/functions`
77
+ - operationId: `list_functions_data_pipelines_functions_get` (also callable as `g8.api.call("list_functions_data_pipelines_functions_get", input)`)
78
+ - Tier: `read`: reads data; safe to call and to retry
79
+ - API-key scope: `integrations:read`
80
+
81
+ List the organization's event functions (transformations run on a sync).
82
+
83
+ Same list as Data > Connections > Functions. Function environment secrets
84
+ read `__SET__`.
85
+
86
+ **Input**: none.
87
+
88
+ **Returns** `ApiResponse_DataPipelineItems_`: the envelope `{ data: DataPipelineItems, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
89
+
90
+ Other envelope fields: `pagination` (PaginationMeta).
91
+
92
+ `DataPipelineItems` fields:
93
+
94
+ | Field | Type | Required | Description |
95
+ |---|---|---|---|
96
+ | `items` | `Array<Record<string, unknown>>` | no | |
97
+ | `total` | `integer` | no | default `0` |
98
+
99
+ **Example**
100
+
101
+ ```ts
102
+ const result = await g8.api.dataPipelines.listFunctions();
103
+ ```
104
+
105
+ ---
106
+
107
+ <a id="op-liststreamevents"></a>
108
+
109
+ ### `g8.api.dataPipelines.listStreamEvents(input)`
110
+
111
+ **List Stream Events**
112
+
113
+ - HTTP: `GET /api/v1/data-pipelines/streams/{stream_id}/events`
114
+ - operationId: `list_stream_events_data_pipelines_streams__stream_id__events_get` (also callable as `g8.api.call("list_stream_events_data_pipelines_streams__stream_id__events_get", input)`)
115
+ - Tier: `read`: reads data; safe to call and to retry
116
+ - API-key scope: `integrations:read`
117
+
118
+ Live events: the latest events a tracking stream received, newest first.
119
+
120
+ Same feed as Data > Connections > Live events. Use it to check a snippet
121
+ install (are page views arriving from the right site?) or to see rejected
122
+ events (`levels=error`). The sender's IP address and HTTP headers are
123
+ dropped from every entry. 404 when the stream is not in this organization.
124
+
125
+ **Input**
126
+
127
+ | Field | Type | Required | Description |
128
+ |---|---|---|---|
129
+ | `path.stream_id` | `string` | yes | Stream id (from GET /streams). |
130
+ | `query.limit` | `integer` | no | Newest events to return, 1-200. default `50` |
131
+ | `query.start` | `string \| null` | no | Only events at or after (ISO 8601). |
132
+ | `query.end` | `string \| null` | no | Only events before (ISO 8601). |
133
+ | `query.levels` | `"error" \| "warn" \| "info" \| "debug" \| null` | no | Only entries at this log level (e.g. error = rejected events). |
134
+
135
+ **Returns** `ApiResponse_DataPipelineItems_`: the envelope `{ data: DataPipelineItems, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
136
+
137
+ Other envelope fields: `pagination` (PaginationMeta).
138
+
139
+ `DataPipelineItems` fields:
140
+
141
+ | Field | Type | Required | Description |
142
+ |---|---|---|---|
143
+ | `items` | `Array<Record<string, unknown>>` | no | |
144
+ | `total` | `integer` | no | default `0` |
145
+
146
+ **Example**
147
+
148
+ ```ts
149
+ const result = await g8.api.dataPipelines.listStreamEvents({ path: { stream_id: "id" } });
150
+ ```
151
+
152
+ ---
153
+
154
+ <a id="op-listsynctasks"></a>
155
+
156
+ ### `g8.api.dataPipelines.listSyncTasks(input)`
157
+
158
+ **List Sync Tasks**
159
+
160
+ - HTTP: `GET /api/v1/data-pipelines/syncs/{sync_id}/tasks`
161
+ - operationId: `list_sync_tasks_data_pipelines_syncs__sync_id__tasks_get` (also callable as `g8.api.call("list_sync_tasks_data_pipelines_syncs__sync_id__tasks_get", input)`)
162
+ - Tier: `read`: reads data; safe to call and to retry
163
+ - API-key scope: `integrations:read`
164
+
165
+ A sync's run history: when each run started, its status and any error.
166
+
167
+ Connector (service) syncs only; a stream-to-destination sync streams events
168
+ continuously and has no runs. 404 when the sync is not in this organization.
169
+
170
+ **Input**
171
+
172
+ | Field | Type | Required | Description |
173
+ |---|---|---|---|
174
+ | `path.sync_id` | `string` | yes | Sync id (from GET /data-pipelines/syncs). |
175
+ | `query.status` | `string \| null` | no | Only runs in this status (e.g. SUCCESS, FAILED, RUNNING). |
176
+ | `query.started_after` | `string \| null` | no | Only runs started at or after (ISO 8601). |
177
+ | `query.started_before` | `string \| null` | no | Only runs started before (ISO 8601). |
178
+
179
+ **Returns** `ApiResponse_DataPipelineItems_`: the envelope `{ data: DataPipelineItems, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
180
+
181
+ Other envelope fields: `pagination` (PaginationMeta).
182
+
183
+ `DataPipelineItems` fields:
184
+
185
+ | Field | Type | Required | Description |
186
+ |---|---|---|---|
187
+ | `items` | `Array<Record<string, unknown>>` | no | |
188
+ | `total` | `integer` | no | default `0` |
189
+
190
+ **Example**
191
+
192
+ ```ts
193
+ const result = await g8.api.dataPipelines.listSyncTasks({ path: { sync_id: "id" } });
194
+ ```
195
+
196
+ ---
197
+
198
+ <a id="op-listsyncs"></a>
199
+
200
+ ### `g8.api.dataPipelines.listSyncs(input?)`
201
+
202
+ **List Syncs**
203
+
204
+ - HTTP: `GET /api/v1/data-pipelines/syncs`
205
+ - operationId: `list_syncs_data_pipelines_syncs_get` (also callable as `g8.api.call("list_syncs_data_pipelines_syncs_get", input)`)
206
+ - Tier: `read`: reads data; safe to call and to retry
207
+ - API-key scope: `integrations:read`
208
+
209
+ List the organization's syncs: each one connects a stream or connector to a destination.
210
+
211
+ Same list as Data > Connections > Syncs. Each item carries `fromId`
212
+ (stream or connector id), `toId` (destination id) and its settings. Per-sync
213
+ function secrets read `__SET__`. Run history: GET /data-pipelines/syncs/{sync_id}/tasks.
214
+
215
+ **Input**: none.
216
+
217
+ **Returns** `ApiResponse_DataPipelineItems_`: the envelope `{ data: DataPipelineItems, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
218
+
219
+ Other envelope fields: `pagination` (PaginationMeta).
220
+
221
+ `DataPipelineItems` fields:
222
+
223
+ | Field | Type | Required | Description |
224
+ |---|---|---|---|
225
+ | `items` | `Array<Record<string, unknown>>` | no | |
226
+ | `total` | `integer` | no | default `0` |
227
+
228
+ **Example**
229
+
230
+ ```ts
231
+ const result = await g8.api.dataPipelines.listSyncs();
232
+ ```
@@ -837,14 +837,24 @@ export interface FormOverview {
837
837
  activation_health?: string | null;
838
838
  capture_health?: string | null;
839
839
  delivery_health?: string | null;
840
+ /** Where leads go: 'route' (tracked delivery route), 'legacy_mapping' (older list mapping; delivered, but processed/failed stay 0 because it writes no receipts) or null (nowhere). */
841
+ delivery_source?: string | null;
842
+ /** Plain-language delivery problem, e.g. captured leads with no destination. */
843
+ delivery_warning?: string | null;
844
+ /** The destination list: {list_id, route_version, source, list_name?}; null when none. */
845
+ destination?: Record<string, unknown> | null;
840
846
  display_name?: string | null;
841
847
  form_key: string;
842
848
  identity_state?: string | null;
843
849
  last_destination_verified_at?: string | null;
850
+ /** When a submission of this form was last processed for delivery. */
851
+ last_processed_at?: string | null;
844
852
  metrics?: Record<string, unknown>;
845
853
  owner_id?: string | null;
846
854
  placement_count?: number;
847
855
  recommended_action?: string | null;
856
+ /** What is missing for someone to own this form's leads: [{code, message}], e.g. owner_missing. */
857
+ setup_hints?: Array<Record<string, unknown>>;
848
858
  source_id: string;
849
859
  technical_form_id?: string | null;
850
860
  }
@@ -961,8 +971,14 @@ export interface FormSubmissionsSearchRequest {
961
971
 
962
972
  /** One lead-capture form as returned by the list/search endpoint. */
963
973
  export interface FormSummary {
974
+ /** 'failing' when at least one submission failed delivery; null otherwise. */
975
+ delivery_health?: string | null;
976
+ /** Where this form's leads are delivered: 'route' (a tracked delivery route), 'legacy_mapping' (an older list mapping, delivered but not tracked per submission) or 'none' (nowhere). Same value the overview reports. */
977
+ delivery_source?: string | null;
964
978
  /** Human-friendly name for the form. */
965
979
  display_name?: string | null;
980
+ /** Submissions whose delivery failed or was only partly delivered (same count as the overview). */
981
+ failed_submissions?: number | null;
966
982
  /** Alias for id; the addressable key for detail lookups. */
967
983
  form_key?: string | null;
968
984
  /** The form's HTML tag id (or the id-less group key). */
package/docs/api/forms.md CHANGED
@@ -400,13 +400,18 @@ Other envelope fields: `pagination` (PaginationMeta).
400
400
  | `activation_health` | `string \| null` | no | |
401
401
  | `capture_health` | `string \| null` | no | |
402
402
  | `delivery_health` | `string \| null` | no | |
403
+ | `delivery_source` | `string \| null` | no | Where leads go: 'route' (tracked delivery route), 'legacy_mapping' (older list mapping; delivered, but processed/failed stay 0 because it writes no receipts) or null (nowhere). |
404
+ | `delivery_warning` | `string \| null` | no | Plain-language delivery problem, e.g. captured leads with no destination. |
405
+ | `destination` | `Record<string, unknown> \| null` | no | The destination list: {list_id, route_version, source, list_name?}; null when none. |
403
406
  | `display_name` | `string \| null` | no | |
404
407
  | `identity_state` | `string \| null` | no | |
405
408
  | `last_destination_verified_at` | `string (date-time) \| null` | no | |
409
+ | `last_processed_at` | `string (date-time) \| null` | no | When a submission of this form was last processed for delivery. |
406
410
  | `metrics` | `Record<string, unknown>` | no | |
407
411
  | `owner_id` | `string \| null` | no | |
408
412
  | `placement_count` | `integer` | no | default `0` |
409
413
  | `recommended_action` | `string \| null` | no | |
414
+ | `setup_hints` | `Array<Record<string, unknown>>` | no | What is missing for someone to own this form's leads: [{code, message}], e.g. owner_missing. |
410
415
  | `technical_form_id` | `string \| null` | no | |
411
416
 
412
417
  **Example**
@@ -1532,7 +1537,10 @@ One lead-capture form as returned by the list/search endpoint.
1532
1537
  | Field | Type | Required | Description |
1533
1538
  |---|---|---|---|
1534
1539
  | `id` | `string` | yes | The form's HTML tag id (or the id-less group key). |
1540
+ | `delivery_health` | `string \| null` | no | 'failing' when at least one submission failed delivery; null otherwise. |
1541
+ | `delivery_source` | `string \| null` | no | Where this form's leads are delivered: 'route' (a tracked delivery route), 'legacy_mapping' (an older list mapping, delivered but not tracked per submission) or 'none' (nowhere). Same value the overview reports. |
1535
1542
  | `display_name` | `string \| null` | no | Human-friendly name for the form. |
1543
+ | `failed_submissions` | `integer \| null` | no | Submissions whose delivery failed or was only partly delivered (same count as the overview). |
1536
1544
  | `form_key` | `string \| null` | no | Alias for id; the addressable key for detail lookups. |
1537
1545
  | `latest_submitted_at` | `string (date-time) \| null` | no | Most recent submission timestamp. |
1538
1546
  | `page_url` | `string \| null` | no | URL of a page where the form was submitted. |