@graph8/sdk 0.295.2 → 0.302.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/dist/index.d.mts +213 -5
- package/dist/index.d.ts +213 -5
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -2
- package/dist/index.mjs.map +1 -1
- package/dist/react.d.mts +199 -2
- package/dist/react.d.ts +199 -2
- package/dist/react.js +4 -1
- package/dist/react.js.map +1 -1
- package/dist/react.mjs +4 -1
- package/dist/react.mjs.map +1 -1
- package/dist/types/version.d.ts +2 -2
- package/docs/agents.md +4 -4
- package/docs/api/README.md +2 -2
- package/docs/api/by-path.md +3 -0
- package/docs/api/companies.d.ts +7 -0
- package/docs/api/companies.md +1 -0
- package/docs/api/contacts.d.ts +7 -0
- package/docs/api/contacts.md +1 -0
- package/docs/api/enrichment.d.ts +8 -0
- package/docs/api/enrichment.md +4 -0
- package/docs/api/lists.d.ts +6 -0
- package/docs/api/lists.md +6 -1
- package/docs/api/seo.d.ts +169 -2
- package/docs/api/seo.md +211 -1
- package/docs/api/work.d.ts +18 -1
- package/docs/api/work.md +15 -0
- package/package.json +1 -1
package/dist/types/version.d.ts
CHANGED
|
@@ -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.
|
|
8
|
+
export declare const SDK_VERSION = "0.302.0";
|
|
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.
|
|
10
|
+
export declare const SDK_CLIENT_ID = "js-sdk/0.302.0";
|
package/docs/agents.md
CHANGED
|
@@ -9,7 +9,7 @@ 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: **
|
|
12
|
+
inbox, meetings, workflows and more. This SDK reaches all of it: **3258 Developer API
|
|
13
13
|
operations** in 141 areas.
|
|
14
14
|
|
|
15
15
|
## 1. The short version
|
|
@@ -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
|
|
95
|
+
| Coverage | 289 methods, reaching 258 operations | all 3258 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` (
|
|
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).
|
|
145
145
|
|
|
146
146
|
## 5. How to find the right call
|
|
147
147
|
|
|
@@ -196,7 +196,7 @@ 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 |
|
|
199
|
+
| `read` | reads data; safe to call and to retry | 1513 |
|
|
200
200
|
| `write` | creates or changes records; the SDK sends an Idempotency-Key and retries transient failures | 811 |
|
|
201
201
|
| `destructive` | deletes or archives data; confirm with a human before calling | 300 |
|
|
202
202
|
| `billable` | spends credits; the SDK never blindly retries it; confirm cost before bulk use | 383 |
|
package/docs/api/README.md
CHANGED
|
@@ -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
|
|
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).
|
|
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).
|
|
@@ -137,7 +137,7 @@
|
|
|
137
137
|
| `g8.api.scraping` | Scraping | 10 | none | [scraping.md](scraping.md) | [scraping.d.ts](scraping.d.ts) |
|
|
138
138
|
| `g8.api.sdrAnalytics` | SDR Analytics | 5 | none | [sdrAnalytics.md](sdrAnalytics.md) | [sdrAnalytics.d.ts](sdrAnalytics.d.ts) |
|
|
139
139
|
| `g8.api.search` | Search | 19 | 4 | [search.md](search.md) | [search.d.ts](search.d.ts) |
|
|
140
|
-
| `g8.api.seo` | SEO |
|
|
140
|
+
| `g8.api.seo` | SEO | 14 | none | [seo.md](seo.md) | [seo.d.ts](seo.d.ts) |
|
|
141
141
|
| `g8.api.sequenceLifecycle` | Sequence Lifecycle | 8 | 6 | [sequenceLifecycle.md](sequenceLifecycle.md) | [sequenceLifecycle.d.ts](sequenceLifecycle.d.ts) |
|
|
142
142
|
| `g8.api.sequences` | Sequences | 71 | 6 | [sequences.md](sequences.md) | [sequences.d.ts](sequences.d.ts) |
|
|
143
143
|
| `g8.api.settings` | Settings | 18 | none | [settings.md](settings.md) | [settings.d.ts](settings.d.ts) |
|
package/docs/api/by-path.md
CHANGED
|
@@ -2466,6 +2466,9 @@ Every Developer API route, sorted by path, with the SDK call that reaches it. Th
|
|
|
2466
2466
|
| POST | `/api/v1/seo/audits` | [`g8.api.seo.startSeoAudit`](seo.md#op-startseoaudit) | billable |
|
|
2467
2467
|
| GET | `/api/v1/seo/audits/{audit_id}` | [`g8.api.seo.getSeoAudit`](seo.md#op-getseoaudit) | read |
|
|
2468
2468
|
| GET | `/api/v1/seo/audits/{audit_id}/issues` | [`g8.api.seo.getSeoAuditIssues`](seo.md#op-getseoauditissues) | read |
|
|
2469
|
+
| GET | `/api/v1/seo/domains/tracked` | [`g8.api.seo.listSeoTrackedDomains`](seo.md#op-listseotrackeddomains) | read |
|
|
2470
|
+
| GET | `/api/v1/seo/domains/tracked/{domain}` | [`g8.api.seo.getSeoTrackedDomain`](seo.md#op-getseotrackeddomain) | read |
|
|
2471
|
+
| GET | `/api/v1/seo/domains/tracked/{domain}/pages` | [`g8.api.seo.listSeoDomainPages`](seo.md#op-listseodomainpages) | read |
|
|
2469
2472
|
| GET | `/api/v1/seo/domains/{domain}/backlinks` | [`g8.api.seo.getSeoDomainBacklinks`](seo.md#op-getseodomainbacklinks) | billable |
|
|
2470
2473
|
| GET | `/api/v1/seo/domains/{domain}/overview` | [`g8.api.seo.getSeoDomainOverview`](seo.md#op-getseodomainoverview) | billable |
|
|
2471
2474
|
| POST | `/api/v1/seo/keywords/research` | [`g8.api.seo.researchSeoKeywords`](seo.md#op-researchseokeywords) | billable |
|
package/docs/api/companies.d.ts
CHANGED
|
@@ -1074,6 +1074,13 @@ export interface Column {
|
|
|
1074
1074
|
id?: number | null;
|
|
1075
1075
|
/** Automatically computed: True if object_id is None/empty, False otherwise. */
|
|
1076
1076
|
is_global: boolean;
|
|
1077
|
+
/**
|
|
1078
|
+
* Human-readable display name (CF-09), e.g. ``CONTACT_FIRST_NAME`` ->
|
|
1079
|
+
* "First name", ``COMPANY_NAICS`` -> "Company NAICS". Custom columns keep
|
|
1080
|
+
* their own title. Additive and read-only: ``name`` / ``title`` stay the
|
|
1081
|
+
* storage key, because callers send them back as identifiers.
|
|
1082
|
+
*/
|
|
1083
|
+
label: string | null;
|
|
1077
1084
|
name?: string | null;
|
|
1078
1085
|
object_id?: string | null;
|
|
1079
1086
|
source?: ColumnSource;
|
package/docs/api/companies.md
CHANGED
|
@@ -1479,6 +1479,7 @@ Other envelope fields: `pagination` (PaginationMeta).
|
|
|
1479
1479
|
| Field | Type | Required | Description |
|
|
1480
1480
|
|---|---|---|---|
|
|
1481
1481
|
| `is_global` | `boolean` | yes | Automatically computed: True if object_id is None/empty, False otherwise. |
|
|
1482
|
+
| `label` | `string \| null` | yes | Human-readable display name (CF-09), e.g. ``CONTACT_FIRST_NAME`` -> "First name", ``COMPANY_NAICS`` -> "Company NAICS". Custom columns keep their own title. Additive and read-only: ``name`` / ``title`` stay the storage key, because callers send them back as identifiers. |
|
|
1482
1483
|
| `title` | `string` | yes | |
|
|
1483
1484
|
| `data_type` | `ColumnType` | no | default `"text"` |
|
|
1484
1485
|
| `id` | `integer \| null` | no | |
|
package/docs/api/contacts.d.ts
CHANGED
|
@@ -1422,6 +1422,13 @@ export interface Column {
|
|
|
1422
1422
|
id?: number | null;
|
|
1423
1423
|
/** Automatically computed: True if object_id is None/empty, False otherwise. */
|
|
1424
1424
|
is_global: boolean;
|
|
1425
|
+
/**
|
|
1426
|
+
* Human-readable display name (CF-09), e.g. ``CONTACT_FIRST_NAME`` ->
|
|
1427
|
+
* "First name", ``COMPANY_NAICS`` -> "Company NAICS". Custom columns keep
|
|
1428
|
+
* their own title. Additive and read-only: ``name`` / ``title`` stay the
|
|
1429
|
+
* storage key, because callers send them back as identifiers.
|
|
1430
|
+
*/
|
|
1431
|
+
label: string | null;
|
|
1425
1432
|
name?: string | null;
|
|
1426
1433
|
object_id?: string | null;
|
|
1427
1434
|
source?: ColumnSource;
|
package/docs/api/contacts.md
CHANGED
|
@@ -1772,6 +1772,7 @@ Other envelope fields: `pagination` (PaginationMeta).
|
|
|
1772
1772
|
| Field | Type | Required | Description |
|
|
1773
1773
|
|---|---|---|---|
|
|
1774
1774
|
| `is_global` | `boolean` | yes | Automatically computed: True if object_id is None/empty, False otherwise. |
|
|
1775
|
+
| `label` | `string \| null` | yes | Human-readable display name (CF-09), e.g. ``CONTACT_FIRST_NAME`` -> "First name", ``COMPANY_NAICS`` -> "Company NAICS". Custom columns keep their own title. Additive and read-only: ``name`` / ``title`` stay the storage key, because callers send them back as identifiers. |
|
|
1775
1776
|
| `title` | `string` | yes | |
|
|
1776
1777
|
| `data_type` | `ColumnType` | no | default `"text"` |
|
|
1777
1778
|
| `id` | `integer \| null` | no | |
|
package/docs/api/enrichment.d.ts
CHANGED
|
@@ -2618,16 +2618,24 @@ export interface EnrichmentPreflightResponse {
|
|
|
2618
2618
|
contact_count: number;
|
|
2619
2619
|
/** Contact IDs that will be enriched: duplicates removed, order kept */
|
|
2620
2620
|
contact_ids: Array<number>;
|
|
2621
|
+
/** Waterfall only: the most one contact can cost, in graph8 credits. A record is charged its dearest graph8-funded step that finds a value (steps are not added together); steps on your own key cost 0. Null when the pipeline could not be priced. */
|
|
2622
|
+
credits_per_record?: number | null;
|
|
2621
2623
|
/** How many repeated contact IDs were dropped */
|
|
2622
2624
|
duplicates_removed?: number;
|
|
2623
2625
|
list_id: number;
|
|
2624
2626
|
list_name?: string | null;
|
|
2627
|
+
/** Waterfall only: priced_records x credits_per_record, the most this run can charge. Records the pipeline skips (values already present, run conditions) cost less. Null when not priced. */
|
|
2628
|
+
max_total_credits?: number | null;
|
|
2625
2629
|
/** Providers whose step would be skipped because the org has no key for them */
|
|
2626
2630
|
missing_credentials?: Array<string>;
|
|
2627
2631
|
/** Resolved mode: 'waterfall' or 'ai-research' */
|
|
2628
2632
|
mode: string;
|
|
2629
2633
|
/** Contact IDs that are not on the list; the run skips them and does not charge for them */
|
|
2630
2634
|
not_in_list?: Array<number>;
|
|
2635
|
+
/** column_id of the saved waterfall pipeline the run would reuse. Null when the run would create a new pipeline (it is created on confirm) or in 'ai-research' mode. Pass it to POST /enrichment/waterfall/validate-credits for the record-exact quote. */
|
|
2636
|
+
pipeline_column_id?: string | null;
|
|
2637
|
+
/** Waterfall only: contacts the price covers (unique contacts that are on the list). */
|
|
2638
|
+
priced_records?: number | null;
|
|
2631
2639
|
/** Providers that would run, in order (empty = the saved pipeline) */
|
|
2632
2640
|
providers?: Array<string>;
|
|
2633
2641
|
providers_detail?: Array<ProviderStepDetail>;
|
package/docs/api/enrichment.md
CHANGED
|
@@ -3312,10 +3312,14 @@ Other envelope fields: `pagination` (PaginationMeta).
|
|
|
3312
3312
|
| `contact_ids` | `Array<integer>` | yes | Contact IDs that will be enriched: duplicates removed, order kept |
|
|
3313
3313
|
| `list_id` | `integer` | yes | |
|
|
3314
3314
|
| `mode` | `string` | yes | Resolved mode: 'waterfall' or 'ai-research' |
|
|
3315
|
+
| `credits_per_record` | `integer \| null` | no | Waterfall only: the most one contact can cost, in graph8 credits. A record is charged its dearest graph8-funded step that finds a value (steps are not added together); steps on your own key cost 0. Null when the pipeline could not be priced. |
|
|
3315
3316
|
| `duplicates_removed` | `integer` | no | How many repeated contact IDs were dropped default `0` |
|
|
3316
3317
|
| `list_name` | `string \| null` | no | |
|
|
3318
|
+
| `max_total_credits` | `integer \| null` | no | Waterfall only: priced_records x credits_per_record, the most this run can charge. Records the pipeline skips (values already present, run conditions) cost less. Null when not priced. |
|
|
3317
3319
|
| `missing_credentials` | `Array<string>` | no | Providers whose step would be skipped because the org has no key for them |
|
|
3318
3320
|
| `not_in_list` | `Array<integer>` | no | Contact IDs that are not on the list; the run skips them and does not charge for them |
|
|
3321
|
+
| `pipeline_column_id` | `string \| null` | no | column_id of the saved waterfall pipeline the run would reuse. Null when the run would create a new pipeline (it is created on confirm) or in 'ai-research' mode. Pass it to POST /enrichment/waterfall/validate-credits for the record-exact quote. |
|
|
3322
|
+
| `priced_records` | `integer \| null` | no | Waterfall only: contacts the price covers (unique contacts that are on the list). |
|
|
3319
3323
|
| `providers` | `Array<string>` | no | Providers that would run, in order (empty = the saved pipeline) |
|
|
3320
3324
|
| `providers_detail` | `Array<ProviderStepDetail>` | no | |
|
|
3321
3325
|
| `target_field` | `string \| null` | no | Canonical column for target_field, when given |
|
package/docs/api/lists.d.ts
CHANGED
|
@@ -469,6 +469,8 @@ export interface ListsOperations {
|
|
|
469
469
|
page?: number;
|
|
470
470
|
/** Items per page (max 200) */
|
|
471
471
|
limit?: number;
|
|
472
|
+
/** Case-insensitive substring match on the list title. Omit for every list. */
|
|
473
|
+
search?: string | null;
|
|
472
474
|
};
|
|
473
475
|
headers?: {
|
|
474
476
|
"X-Target-Org-Id"?: string | null;
|
|
@@ -1016,6 +1018,10 @@ export interface ListResponse {
|
|
|
1016
1018
|
/** Source of the list */
|
|
1017
1019
|
source?: string | null;
|
|
1018
1020
|
status?: string | null;
|
|
1021
|
+
/** Human-readable explanation of status_reason. */
|
|
1022
|
+
status_detail?: string | null;
|
|
1023
|
+
/** Why the list is not usable, or null when it is fine: 'import_failed' (a file import raised; status_detail carries the reason when known), 'import_not_finished' (an uploaded list still processing with no records an hour after it was created: the import never ran) or 'build_failed' (a list built another way, e.g. from Search, failed; re-run it from its source). */
|
|
1024
|
+
status_reason?: string | null;
|
|
1019
1025
|
tags?: Array<string>;
|
|
1020
1026
|
title: string;
|
|
1021
1027
|
total?: number;
|
package/docs/api/lists.md
CHANGED
|
@@ -1063,7 +1063,7 @@ const result = await g8.api.lists.listListFolders();
|
|
|
1063
1063
|
- API-key scope: `lists:read`
|
|
1064
1064
|
- ★ Hand-written: [`g8.lists.list()`](../sdk-clients.md#g8-lists-list)
|
|
1065
1065
|
|
|
1066
|
-
List all lists (audiences) in the organization.
|
|
1066
|
+
List all lists (audiences) in the organization, optionally filtered by title.
|
|
1067
1067
|
|
|
1068
1068
|
**Input**
|
|
1069
1069
|
|
|
@@ -1071,6 +1071,7 @@ List all lists (audiences) in the organization.
|
|
|
1071
1071
|
|---|---|---|---|
|
|
1072
1072
|
| `query.page` | `integer` | no | Page number (1-indexed) default `1` |
|
|
1073
1073
|
| `query.limit` | `integer` | no | Items per page (max 200) default `50` |
|
|
1074
|
+
| `query.search` | `string \| null` | no | Case-insensitive substring match on the list title. Omit for every list. |
|
|
1074
1075
|
|
|
1075
1076
|
**Returns** `ApiResponse_list_ListResponse__`: the envelope `{ data: Array<ListResponse>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1076
1077
|
|
|
@@ -1090,6 +1091,8 @@ Other envelope fields: `pagination` (PaginationMeta).
|
|
|
1090
1091
|
| `is_dynamic` | `boolean` | no | default `false` |
|
|
1091
1092
|
| `source` | `string \| null` | no | Source of the list |
|
|
1092
1093
|
| `status` | `string \| null` | no | |
|
|
1094
|
+
| `status_detail` | `string \| null` | no | Human-readable explanation of status_reason. |
|
|
1095
|
+
| `status_reason` | `string \| null` | no | Why the list is not usable, or null when it is fine: 'import_failed' (a file import raised; status_detail carries the reason when known), 'import_not_finished' (an uploaded list still processing with no records an hour after it was created: the import never ran) or 'build_failed' (a list built another way, e.g. from Search, failed; re-run it from its source). |
|
|
1093
1096
|
| `tags` | `Array<string>` | no | |
|
|
1094
1097
|
| `total` | `integer` | no | default `0` |
|
|
1095
1098
|
| `type` | `string \| null` | no | List type (contacts, companies, suppressions, deals, leads) |
|
|
@@ -1504,6 +1507,8 @@ Other envelope fields: `pagination` (PaginationMeta).
|
|
|
1504
1507
|
| `is_dynamic` | `boolean` | no | default `false` |
|
|
1505
1508
|
| `source` | `string \| null` | no | Source of the list |
|
|
1506
1509
|
| `status` | `string \| null` | no | |
|
|
1510
|
+
| `status_detail` | `string \| null` | no | Human-readable explanation of status_reason. |
|
|
1511
|
+
| `status_reason` | `string \| null` | no | Why the list is not usable, or null when it is fine: 'import_failed' (a file import raised; status_detail carries the reason when known), 'import_not_finished' (an uploaded list still processing with no records an hour after it was created: the import never ran) or 'build_failed' (a list built another way, e.g. from Search, failed; re-run it from its source). |
|
|
1507
1512
|
| `tags` | `Array<string>` | no | |
|
|
1508
1513
|
| `total` | `integer` | no | default `0` |
|
|
1509
1514
|
| `type` | `string \| null` | no | List type (contacts, companies, suppressions, deals, leads) |
|
package/docs/api/seo.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. */
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Types for `g8.api.seo` (SEO):
|
|
4
|
+
* Types for `g8.api.seo` (SEO): 14 operations.
|
|
5
5
|
*
|
|
6
6
|
* For reading. In code, import from the package instead:
|
|
7
7
|
* import type { ApiInput, ApiOutput, G8Contract } from "@graph8/sdk";
|
|
@@ -18,7 +18,10 @@ export interface SeoMembers {
|
|
|
18
18
|
getSeoDomainBacklinks: "get_seo_domain_backlinks_seo_domains__domain__backlinks_get";
|
|
19
19
|
getSeoDomainOverview: "get_seo_domain_overview_seo_domains__domain__overview_get";
|
|
20
20
|
getSeoRankHistory: "get_seo_rank_history_seo_rank_tracking__keyword_id__history_get";
|
|
21
|
+
getSeoTrackedDomain: "get_seo_tracked_domain_seo_domains_tracked__domain__get";
|
|
21
22
|
listSeoAudits: "list_seo_audits_seo_audits_get";
|
|
23
|
+
listSeoDomainPages: "list_seo_domain_pages_seo_domains_tracked__domain__pages_get";
|
|
24
|
+
listSeoTrackedDomains: "list_seo_tracked_domains_seo_domains_tracked_get";
|
|
22
25
|
listSeoTrackedKeywords: "list_seo_tracked_keywords_seo_rank_tracking_get";
|
|
23
26
|
removeSeoTrackedKeywords: "remove_seo_tracked_keywords_seo_rank_tracking_keywords_remove_post";
|
|
24
27
|
researchSeoKeywords: "research_seo_keywords_seo_keywords_research_post";
|
|
@@ -115,6 +118,23 @@ export interface SeoOperations {
|
|
|
115
118
|
};
|
|
116
119
|
output: ApiResponse_SeoRankHistory_;
|
|
117
120
|
};
|
|
121
|
+
/**
|
|
122
|
+
* GET /seo/domains/tracked/{domain}
|
|
123
|
+
* Get Seo Tracked Domain
|
|
124
|
+
* tier: read · scope: intent:read
|
|
125
|
+
*/
|
|
126
|
+
get_seo_tracked_domain_seo_domains_tracked__domain__get: {
|
|
127
|
+
input: {
|
|
128
|
+
path: {
|
|
129
|
+
/** A saved domain from `GET /seo/domains/tracked`. */
|
|
130
|
+
domain: string;
|
|
131
|
+
};
|
|
132
|
+
headers?: {
|
|
133
|
+
"X-Target-Org-Id"?: string | null;
|
|
134
|
+
};
|
|
135
|
+
};
|
|
136
|
+
output: ApiResponse_SeoTrackedDomainDetail_;
|
|
137
|
+
};
|
|
118
138
|
/**
|
|
119
139
|
* GET /seo/audits
|
|
120
140
|
* List Seo Audits
|
|
@@ -131,6 +151,47 @@ export interface SeoOperations {
|
|
|
131
151
|
};
|
|
132
152
|
output: ApiResponse_List_SeoAudit__;
|
|
133
153
|
};
|
|
154
|
+
/**
|
|
155
|
+
* GET /seo/domains/tracked/{domain}/pages
|
|
156
|
+
* List Seo Domain Pages
|
|
157
|
+
* tier: read · scope: intent:read
|
|
158
|
+
*/
|
|
159
|
+
list_seo_domain_pages_seo_domains_tracked__domain__pages_get: {
|
|
160
|
+
input: {
|
|
161
|
+
path: {
|
|
162
|
+
/** A saved domain from `GET /seo/domains/tracked`. */
|
|
163
|
+
domain: string;
|
|
164
|
+
};
|
|
165
|
+
query?: {
|
|
166
|
+
/** Rows to skip (the saved pages are capped at 1,000). */
|
|
167
|
+
offset?: number;
|
|
168
|
+
/** Rows to return. */
|
|
169
|
+
limit?: number;
|
|
170
|
+
/** Sort column: estimated_traffic, ranking_keywords_count, best_position, url, traffic_change_30d or audit_issues. */
|
|
171
|
+
sort?: string;
|
|
172
|
+
order?: "asc" | "desc";
|
|
173
|
+
/** Only pages whose URL contains this text. */
|
|
174
|
+
q?: string | null;
|
|
175
|
+
};
|
|
176
|
+
headers?: {
|
|
177
|
+
"X-Target-Org-Id"?: string | null;
|
|
178
|
+
};
|
|
179
|
+
};
|
|
180
|
+
output: ApiResponse_SeoDomainPages_;
|
|
181
|
+
};
|
|
182
|
+
/**
|
|
183
|
+
* GET /seo/domains/tracked
|
|
184
|
+
* List Seo Tracked Domains
|
|
185
|
+
* tier: read · scope: intent:read
|
|
186
|
+
*/
|
|
187
|
+
list_seo_tracked_domains_seo_domains_tracked_get: {
|
|
188
|
+
input: {
|
|
189
|
+
headers?: {
|
|
190
|
+
"X-Target-Org-Id"?: string | null;
|
|
191
|
+
};
|
|
192
|
+
};
|
|
193
|
+
output: ApiResponse_SeoTrackedDomains_;
|
|
194
|
+
};
|
|
134
195
|
/**
|
|
135
196
|
* GET /seo/rank-tracking
|
|
136
197
|
* List Seo Tracked Keywords
|
|
@@ -206,7 +267,7 @@ export interface SeoOperations {
|
|
|
206
267
|
};
|
|
207
268
|
}
|
|
208
269
|
|
|
209
|
-
//
|
|
270
|
+
// 37 schemas referenced above (the same as G8Contract.<Name>).
|
|
210
271
|
|
|
211
272
|
export interface ApiResponse_List_SeoAudit__ {
|
|
212
273
|
data: Array<SeoAudit>;
|
|
@@ -238,6 +299,11 @@ export interface ApiResponse_SeoDomainOverviewResponse_ {
|
|
|
238
299
|
pagination?: PaginationMeta | null;
|
|
239
300
|
}
|
|
240
301
|
|
|
302
|
+
export interface ApiResponse_SeoDomainPages_ {
|
|
303
|
+
data: SeoDomainPages;
|
|
304
|
+
pagination?: PaginationMeta | null;
|
|
305
|
+
}
|
|
306
|
+
|
|
241
307
|
export interface ApiResponse_SeoRankHistory_ {
|
|
242
308
|
data: SeoRankHistory;
|
|
243
309
|
pagination?: PaginationMeta | null;
|
|
@@ -253,6 +319,16 @@ export interface ApiResponse_SeoResearchKeywordsResponse_ {
|
|
|
253
319
|
pagination?: PaginationMeta | null;
|
|
254
320
|
}
|
|
255
321
|
|
|
322
|
+
export interface ApiResponse_SeoTrackedDomainDetail_ {
|
|
323
|
+
data: SeoTrackedDomainDetail;
|
|
324
|
+
pagination?: PaginationMeta | null;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
export interface ApiResponse_SeoTrackedDomains_ {
|
|
328
|
+
data: SeoTrackedDomains;
|
|
329
|
+
pagination?: PaginationMeta | null;
|
|
330
|
+
}
|
|
331
|
+
|
|
256
332
|
export interface PaginationMeta {
|
|
257
333
|
/** Whether there are more pages */
|
|
258
334
|
has_next: boolean;
|
|
@@ -335,6 +411,16 @@ export interface SeoBacklinksOverview {
|
|
|
335
411
|
total_backlinks?: number | null;
|
|
336
412
|
}
|
|
337
413
|
|
|
414
|
+
/**
|
|
415
|
+
* Mirrors `DomainChangeDTO`: the current snapshot against the one nearest
|
|
416
|
+
* 30 days back. `traffic_pct` is null when the baseline traffic was zero.
|
|
417
|
+
*/
|
|
418
|
+
export interface SeoDomainChange {
|
|
419
|
+
keywords_delta?: number | null;
|
|
420
|
+
since?: string | null;
|
|
421
|
+
traffic_pct?: number | null;
|
|
422
|
+
}
|
|
423
|
+
|
|
338
424
|
/**
|
|
339
425
|
* Mirrors `DomainOverviewResponse`. `data_freshness` labels how old the
|
|
340
426
|
* provider's view of the domain is - research surfaces must say.
|
|
@@ -346,6 +432,29 @@ export interface SeoDomainOverviewResponse {
|
|
|
346
432
|
top_pages: Array<Record<string, unknown>>;
|
|
347
433
|
}
|
|
348
434
|
|
|
435
|
+
/** Mirrors `DomainPageDTO`. */
|
|
436
|
+
export interface SeoDomainPage {
|
|
437
|
+
audit_issues?: number | null;
|
|
438
|
+
best_position?: number | null;
|
|
439
|
+
estimated_traffic: number;
|
|
440
|
+
ranking_keywords_count: number;
|
|
441
|
+
top_keyword?: string | null;
|
|
442
|
+
traffic_change_30d?: number | null;
|
|
443
|
+
url: string;
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
/**
|
|
447
|
+
* Mirrors `DomainPagesResponse`. `refreshed_at` is null when the pages
|
|
448
|
+
* were never fetched; `total` counts every saved page, `rows` is one page.
|
|
449
|
+
*/
|
|
450
|
+
export interface SeoDomainPages {
|
|
451
|
+
audit_completed_at?: string | null;
|
|
452
|
+
cap: number;
|
|
453
|
+
refreshed_at?: string | null;
|
|
454
|
+
rows: Array<SeoDomainPage>;
|
|
455
|
+
total: number;
|
|
456
|
+
}
|
|
457
|
+
|
|
349
458
|
/** Mirrors `KeywordRow`. */
|
|
350
459
|
export interface SeoKeywordRow {
|
|
351
460
|
competition?: number;
|
|
@@ -437,6 +546,64 @@ export interface SeoTrackKeywordItem {
|
|
|
437
546
|
search_volume?: number | null;
|
|
438
547
|
}
|
|
439
548
|
|
|
549
|
+
/**
|
|
550
|
+
* Mirrors `TrackedDomainDTO`. `kind` is `own` for the organisation's own
|
|
551
|
+
* sites and `competitor` for the Radar competitors shown beside them.
|
|
552
|
+
*/
|
|
553
|
+
export interface SeoTrackedDomain {
|
|
554
|
+
change_30d?: SeoDomainChange | null;
|
|
555
|
+
domain: string;
|
|
556
|
+
is_primary?: boolean;
|
|
557
|
+
kind: "own" | "competitor";
|
|
558
|
+
metrics?: SeoTrackedDomainMetrics | null;
|
|
559
|
+
name?: string | null;
|
|
560
|
+
snapshot_at?: string | null;
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
/**
|
|
564
|
+
* Mirrors `TrackedDomainDetailResponse`: one domain's saved snapshot,
|
|
565
|
+
* rendered without any paid call. Empty until the first refresh in the app.
|
|
566
|
+
*/
|
|
567
|
+
export interface SeoTrackedDomainDetail {
|
|
568
|
+
backlinks?: SeoBacklinksOverview | null;
|
|
569
|
+
change_30d?: SeoDomainChange | null;
|
|
570
|
+
data_freshness?: string;
|
|
571
|
+
domain: string;
|
|
572
|
+
is_primary?: boolean;
|
|
573
|
+
kind: "own" | "competitor";
|
|
574
|
+
metrics?: SeoTrackedDomainMetrics | null;
|
|
575
|
+
name?: string | null;
|
|
576
|
+
overview?: Record<string, unknown> | null;
|
|
577
|
+
refreshed?: boolean;
|
|
578
|
+
snapshot_at?: string | null;
|
|
579
|
+
top_keywords?: Array<Record<string, unknown>>;
|
|
580
|
+
top_pages?: Array<Record<string, unknown>>;
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
/** Mirrors `TrackedDomainMetricsDTO`. */
|
|
584
|
+
export interface SeoTrackedDomainMetrics {
|
|
585
|
+
authority_score?: number | null;
|
|
586
|
+
estimated_traffic?: number | null;
|
|
587
|
+
organic_keywords?: number | null;
|
|
588
|
+
referring_domains?: number | null;
|
|
589
|
+
top3_positions?: number | null;
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
/**
|
|
593
|
+
* Mirrors `TrackedDomainsResponse`: the saved domains (own first, primary
|
|
594
|
+
* first, then competitors) plus the credit price of each paid refresh, so a
|
|
595
|
+
* caller can quote the cost before anyone asks for one.
|
|
596
|
+
*/
|
|
597
|
+
export interface SeoTrackedDomains {
|
|
598
|
+
domains: Array<SeoTrackedDomain>;
|
|
599
|
+
max_own_domains: number;
|
|
600
|
+
page_keywords_credits: number;
|
|
601
|
+
page_keywords_limit: number;
|
|
602
|
+
pages_cap: number;
|
|
603
|
+
pages_max_credits: number;
|
|
604
|
+
refresh_credits: number;
|
|
605
|
+
}
|
|
606
|
+
|
|
440
607
|
/** Mirrors `TrackedKeywordDTO`. */
|
|
441
608
|
export interface SeoTrackedKeyword {
|
|
442
609
|
cadence: string;
|