@graph8/sdk 0.265.0 → 0.293.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.
Files changed (178) hide show
  1. package/README.md +3 -3
  2. package/dist/index.d.mts +734 -28
  3. package/dist/index.d.ts +734 -28
  4. package/dist/index.js +15 -5
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +15 -5
  7. package/dist/index.mjs.map +1 -1
  8. package/dist/react.d.mts +728 -26
  9. package/dist/react.d.ts +728 -26
  10. package/dist/react.js +14 -4
  11. package/dist/react.js.map +1 -1
  12. package/dist/react.mjs +14 -4
  13. package/dist/react.mjs.map +1 -1
  14. package/dist/types/core.d.ts +2 -0
  15. package/dist/types/enrich.d.ts +11 -4
  16. package/dist/types/index.d.ts +1 -1
  17. package/dist/types/react.d.ts +6 -2
  18. package/dist/types/search.d.ts +25 -1
  19. package/dist/types/version.d.ts +2 -2
  20. package/docs/agents.md +8 -7
  21. package/docs/api/README.md +4 -4
  22. package/docs/api/accounts.d.ts +6 -0
  23. package/docs/api/adCampaigns.d.ts +6 -0
  24. package/docs/api/adCreatives.d.ts +6 -0
  25. package/docs/api/agency.d.ts +6 -0
  26. package/docs/api/agent.d.ts +6 -0
  27. package/docs/api/agents.d.ts +6 -0
  28. package/docs/api/aiInbox.d.ts +6 -0
  29. package/docs/api/analytics.d.ts +32 -1
  30. package/docs/api/analytics.md +2 -0
  31. package/docs/api/apiKeys.d.ts +6 -0
  32. package/docs/api/appDeployments.d.ts +6 -0
  33. package/docs/api/appDomains.d.ts +6 -0
  34. package/docs/api/appLogs.d.ts +6 -0
  35. package/docs/api/appObjects.d.ts +6 -0
  36. package/docs/api/appPages.d.ts +6 -0
  37. package/docs/api/appPlatformTokens.d.ts +6 -0
  38. package/docs/api/appointments.d.ts +20 -2
  39. package/docs/api/appointments.md +27 -11
  40. package/docs/api/apps.d.ts +6 -0
  41. package/docs/api/apps.md +7 -5
  42. package/docs/api/assertUpsert.d.ts +14 -0
  43. package/docs/api/assertUpsert.md +5 -0
  44. package/docs/api/audienceSyncs.d.ts +14 -0
  45. package/docs/api/audienceSyncs.md +16 -0
  46. package/docs/api/brandKit.d.ts +6 -0
  47. package/docs/api/bugReports.d.ts +6 -0
  48. package/docs/api/by-path.md +3 -0
  49. package/docs/api/calendarInvites.d.ts +6 -0
  50. package/docs/api/campaignWorkflows.d.ts +6 -0
  51. package/docs/api/campaigns.d.ts +6 -0
  52. package/docs/api/channels.d.ts +6 -0
  53. package/docs/api/cliCampaigns.d.ts +6 -0
  54. package/docs/api/cliPipelines.d.ts +6 -0
  55. package/docs/api/clickHouse.d.ts +6 -0
  56. package/docs/api/companies.d.ts +17 -3
  57. package/docs/api/companies.md +13 -3
  58. package/docs/api/companyIntelligence.d.ts +6 -0
  59. package/docs/api/contacts.d.ts +26 -5
  60. package/docs/api/contacts.md +17 -6
  61. package/docs/api/content.d.ts +6 -0
  62. package/docs/api/contentGridSkills.d.ts +6 -0
  63. package/docs/api/copilot.d.ts +6 -0
  64. package/docs/api/crmSyncs.d.ts +6 -0
  65. package/docs/api/customerSuccess.d.ts +6 -0
  66. package/docs/api/deals.d.ts +6 -0
  67. package/docs/api/deliverability.d.ts +6 -0
  68. package/docs/api/desk.d.ts +6 -0
  69. package/docs/api/dialer.d.ts +6 -0
  70. package/docs/api/documents.d.ts +6 -0
  71. package/docs/api/duplicates.d.ts +6 -0
  72. package/docs/api/eSignature.d.ts +6 -0
  73. package/docs/api/enrichment.d.ts +82 -2
  74. package/docs/api/enrichment.md +76 -1
  75. package/docs/api/events.d.ts +6 -0
  76. package/docs/api/fields.d.ts +30 -3
  77. package/docs/api/fields.md +15 -4
  78. package/docs/api/forms.d.ts +6 -0
  79. package/docs/api/gtmCampaigns.d.ts +6 -0
  80. package/docs/api/gtmContext.d.ts +6 -0
  81. package/docs/api/gtmDeliverability.d.ts +6 -0
  82. package/docs/api/gtmKnowledgeBase.d.ts +6 -0
  83. package/docs/api/gtmLibrary.d.ts +6 -0
  84. package/docs/api/imageLibrary.d.ts +6 -0
  85. package/docs/api/imports.d.ts +6 -0
  86. package/docs/api/inbox.d.ts +6 -0
  87. package/docs/api/install.d.ts +32 -0
  88. package/docs/api/install.md +18 -0
  89. package/docs/api/installedApps.d.ts +6 -0
  90. package/docs/api/integrationStatus.d.ts +6 -0
  91. package/docs/api/integrations.d.ts +6 -0
  92. package/docs/api/intent.d.ts +32 -1
  93. package/docs/api/intent.md +23 -0
  94. package/docs/api/knowledge.d.ts +6 -0
  95. package/docs/api/knowledgeBase.d.ts +6 -0
  96. package/docs/api/landingPages.d.ts +6 -0
  97. package/docs/api/leads.d.ts +6 -0
  98. package/docs/api/library.d.ts +6 -0
  99. package/docs/api/linkedIn.d.ts +6 -0
  100. package/docs/api/linkedInOutreach.d.ts +6 -0
  101. package/docs/api/lists.d.ts +22 -0
  102. package/docs/api/lists.md +24 -2
  103. package/docs/api/logs.d.ts +6 -0
  104. package/docs/api/mailboxes.d.ts +6 -0
  105. package/docs/api/marketingIntelligence.d.ts +40 -0
  106. package/docs/api/marketingIntelligence.md +20 -0
  107. package/docs/api/marketplace.d.ts +6 -0
  108. package/docs/api/mcp.d.ts +6 -0
  109. package/docs/api/me.d.ts +6 -0
  110. package/docs/api/meetings.d.ts +6 -0
  111. package/docs/api/newsletter.d.ts +6 -0
  112. package/docs/api/notes.d.ts +6 -0
  113. package/docs/api/notifications.d.ts +6 -0
  114. package/docs/api/objects.d.ts +6 -0
  115. package/docs/api/openSearch.d.ts +6 -0
  116. package/docs/api/ops.d.ts +6 -0
  117. package/docs/api/orgGovernance.d.ts +6 -0
  118. package/docs/api/orgVideos.d.ts +6 -0
  119. package/docs/api/organizationSettings.d.ts +6 -0
  120. package/docs/api/phoneNumbers.d.ts +6 -0
  121. package/docs/api/profile.d.ts +6 -0
  122. package/docs/api/programmaticPages.d.ts +6 -0
  123. package/docs/api/providerDomains.d.ts +6 -0
  124. package/docs/api/providerUsage.d.ts +6 -0
  125. package/docs/api/public.d.ts +6 -0
  126. package/docs/api/publicCopilot.d.ts +6 -0
  127. package/docs/api/publicSignals.d.ts +6 -0
  128. package/docs/api/publicVisitors.d.ts +6 -0
  129. package/docs/api/quotes.d.ts +6 -0
  130. package/docs/api/radarReports.d.ts +6 -0
  131. package/docs/api/recordRoles.d.ts +6 -0
  132. package/docs/api/repos.d.ts +6 -0
  133. package/docs/api/research.d.ts +6 -0
  134. package/docs/api/revenue.d.ts +6 -0
  135. package/docs/api/revenueAnalytics.d.ts +6 -0
  136. package/docs/api/revenueLifecycle.d.ts +11 -1
  137. package/docs/api/revenueLifecycle.md +11 -2
  138. package/docs/api/revenueRecords.d.ts +6 -0
  139. package/docs/api/roles.d.ts +49 -2
  140. package/docs/api/roles.md +65 -1
  141. package/docs/api/salesCoach.d.ts +6 -0
  142. package/docs/api/scans.d.ts +6 -0
  143. package/docs/api/scheduleBuy.d.ts +6 -0
  144. package/docs/api/scraping.d.ts +6 -0
  145. package/docs/api/search.d.ts +9 -1
  146. package/docs/api/search.md +3 -2
  147. package/docs/api/seo.d.ts +6 -0
  148. package/docs/api/sequenceLifecycle.d.ts +6 -0
  149. package/docs/api/sequences.d.ts +6 -0
  150. package/docs/api/settings.d.ts +6 -0
  151. package/docs/api/signals.d.ts +6 -0
  152. package/docs/api/signatures.d.ts +6 -0
  153. package/docs/api/snippet.d.ts +72 -2
  154. package/docs/api/snippet.md +73 -4
  155. package/docs/api/socialPublishing.d.ts +6 -0
  156. package/docs/api/studioDocuments.d.ts +6 -0
  157. package/docs/api/support.d.ts +6 -0
  158. package/docs/api/suppressions.d.ts +10 -0
  159. package/docs/api/suppressions.md +2 -0
  160. package/docs/api/surveys.d.ts +6 -0
  161. package/docs/api/tasks.d.ts +6 -0
  162. package/docs/api/teamMembers.d.ts +6 -0
  163. package/docs/api/teams.d.ts +6 -0
  164. package/docs/api/usage.d.ts +6 -0
  165. package/docs/api/visitors.d.ts +32 -0
  166. package/docs/api/visitors.md +12 -0
  167. package/docs/api/voice.d.ts +6 -0
  168. package/docs/api/webAnalytics.d.ts +288 -0
  169. package/docs/api/webAnalytics.md +144 -0
  170. package/docs/api/webChat.d.ts +6 -0
  171. package/docs/api/webhooks.d.ts +6 -0
  172. package/docs/api/websiteEditor.d.ts +6 -0
  173. package/docs/api/work.d.ts +6 -0
  174. package/docs/api/workbench.d.ts +6 -0
  175. package/docs/api/workflows.d.ts +6 -0
  176. package/docs/api/workflows.md +6 -0
  177. package/docs/sdk-clients.md +5 -5
  178. package/package.json +1 -1
@@ -297,6 +297,7 @@ Other envelope fields: `pagination` (PaginationMeta).
297
297
  | `status` | `string` | yes | |
298
298
  | `company_id` | `integer \| null` | no | |
299
299
  | `merged` | `boolean` | no | default `false` |
300
+ | `warnings` | `Array<string>` | no | Advisory notes about values that look wrong (e.g. an employee_count with no number, an unrecognised country, or a linkedin_url that is not a web address and was not saved). Empty when the input is clean. |
300
301
 
301
302
  **Example**
302
303
 
@@ -338,7 +339,7 @@ Body fields (`CreateCompanyColumnRequest`):
338
339
  |---|---|---|---|
339
340
  | `body.created_by` | `string (email)` | yes | Email of the user creating the column (for audit). |
340
341
  | `body.title` | `string` | yes | Column title shown in the UI (e.g. 'Tier') |
341
- | `body.data_type` | `ColumnType` | no | Column data type. Currently only 'text' is supported. default `"text"` |
342
+ | `body.data_type` | `ColumnType` | no | Column data type: 'text', 'int' (whole number), 'numeric' (decimal) or 'boolean' (yes/no). Other values 422. default `"text"` |
342
343
  | `body.enrichment` | `CreateFieldEnrichmentInput \| null` | no | STRONGLY RECOMMENDED. Optional waterfall enrichment block. When supplied, a companion `enrichment_configs` row is created alongside the column so the UI 'Enrich' button works immediately. Without it the column exists but isn't enrichable until a pipeline is configured via POST /enrichment/waterfall/configs. |
343
344
  | `body.list_id` | `integer \| null` | no | If set, the column is list-scoped (only visible on that list). Required when `enrichment` is supplied — waterfall pipelines are list-scoped. |
344
345
 
@@ -351,12 +352,15 @@ Other envelope fields: `pagination` (PaginationMeta).
351
352
  | Field | Type | Required | Description |
352
353
  |---|---|---|---|
353
354
  | `title` | `string` | yes | |
355
+ | `already_existed` | `boolean` | no | True when a column with this name already existed in this scope, so the existing column was returned. A different `data_type` is rejected with 409. default `false` |
354
356
  | `data_type` | `ColumnType` | no | default `"text"` |
355
357
  | `enrichment` | `CreateFieldEnrichmentResponse \| null` | no | Populated when the request included an `enrichment` block. Use `enrichment.column_id` for subsequent POST /enrichment/waterfall/enrich calls. |
358
+ | `existing_data_type` | `string \| null` | no | When `already_existed` is true: the existing column's data type. |
356
359
  | `id` | `integer \| null` | no | |
357
360
  | `is_global` | `boolean` | no | Computed: True when object_id is null/empty (global column). default `false` |
358
361
  | `name` | `string \| null` | no | |
359
362
  | `object_id` | `string \| null` | no | |
363
+ | `warnings` | `Array<string>` | no | Non-blocking notices (e.g. a same-named org-wide column also shows on this list). |
360
364
 
361
365
  **Example**
362
366
 
@@ -1354,8 +1358,8 @@ List companies with optional filtering and pagination.
1354
1358
  | `query.name` | `string \| null` | no | Filter by company name (partial match) |
1355
1359
  | `query.employee_count_min` | `integer \| null` | no | Minimum employee count |
1356
1360
  | `query.employee_count_max` | `integer \| null` | no | Maximum employee count |
1357
- | `query.country` | `string \| null` | no | Filter by country (exact match) |
1358
- | `query.state` | `string \| null` | no | Filter by state (exact match) |
1361
+ | `query.country` | `string \| null` | no | Filter by country (exact match, case-insensitive; surrounding spaces ignored). Common aliases match each other: United States = US = USA; United Kingdom = UK. |
1362
+ | `query.state` | `string \| null` | no | Filter by state (exact match, case-insensitive; surrounding spaces ignored) |
1359
1363
  | `query.city` | `string \| null` | no | Filter by city (partial match) |
1360
1364
  | `query.description` | `string \| null` | no | Filter by company description (partial match) |
1361
1365
  | `query.revenue_min` | `integer \| null` | no | Minimum annual revenue |
@@ -2068,6 +2072,12 @@ const result = await g8.api.companies.startCompanyWorkflow({ path: { company_id:
2068
2072
 
2069
2073
  Update a company's fields (partial update).
2070
2074
 
2075
+ A ``name`` over 512 characters or a ``linkedin_url`` that is not a web
2076
+ address is refused with a 400 and nothing is written. An employee_count
2077
+ with no number, an unrecognised country, or a linkedin_url that is not on
2078
+ linkedin.com is saved as sent and flagged in ``warnings`` (present only
2079
+ when there is something to flag).
2080
+
2071
2081
  **Input**
2072
2082
 
2073
2083
  | Field | Type | Required | Description |
@@ -292,8 +292,14 @@ export interface PaginationMeta {
292
292
  limit: number;
293
293
  /** 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. */
294
294
  next_cursor?: string | null;
295
+ /** 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. */
296
+ notes?: Array<string> | null;
295
297
  /** Current page number (1-indexed) */
296
298
  page: number;
297
299
  /** Total number of items */
298
300
  total: number;
301
+ /** 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. */
302
+ total_available?: number | null;
303
+ /** 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. */
304
+ total_is_lower_bound?: boolean | null;
299
305
  }
@@ -844,7 +844,7 @@ export interface ContactsOperations {
844
844
  page?: number;
845
845
  /** Items per page (max 200) */
846
846
  limit?: number;
847
- /** Filter by work email (exact match) */
847
+ /** Filter by work email (exact match, case-insensitive; surrounding spaces ignored) */
848
848
  email?: string | null;
849
849
  /** Filter by list ID */
850
850
  list_id?: number | null;
@@ -852,15 +852,15 @@ export interface ContactsOperations {
852
852
  name?: string | null;
853
853
  /** Filter by job title (partial match) */
854
854
  job_title?: string | null;
855
- /** Filter by seniority level (exact match) */
855
+ /** Filter by seniority level (exact match, case-insensitive). Spellings of the same level match each other: VP = Vice President; SVP/EVP = SVP = EVP = Senior/Executive Vice President; C-Suite = C-Level = CXO. Pass several levels comma-separated to match any of them, e.g. `VP,SVP/EVP`. */
856
856
  seniority_level?: string | null;
857
857
  /** Filter by company name (partial match) */
858
858
  company_name?: string | null;
859
859
  /** Filter by company ID */
860
860
  company_id?: number | null;
861
- /** Filter by country (exact match) */
861
+ /** Filter by country (exact match, case-insensitive; surrounding spaces ignored). Common aliases match each other: United States = US = USA; United Kingdom = UK. */
862
862
  country?: string | null;
863
- /** Filter by state (exact match) */
863
+ /** Filter by state (exact match, case-insensitive; surrounding spaces ignored) */
864
864
  state?: string | null;
865
865
  /** Filter by city (partial match) */
866
866
  city?: string | null;
@@ -1540,6 +1540,8 @@ export interface ContactCreateResponse {
1540
1540
  merged?: boolean;
1541
1541
  status: string;
1542
1542
  validation_errors?: Array<string>;
1543
+ /** Advisory notes about values saved as sent that look wrong (e.g. an unrecognised seniority or country). Empty when the input is clean. */
1544
+ warnings?: Array<string>;
1543
1545
  }
1544
1546
 
1545
1547
  /** Mirrors `campaign_builder.models.contact_documents.UpdateContactDocumentRequest`. */
@@ -1553,8 +1555,14 @@ export interface ContactDocumentUpdateRequest {
1553
1555
  /** Lighter contact representation for list endpoints. */
1554
1556
  export interface ContactListItem {
1555
1557
  city?: string | null;
1558
+ company_domain?: string | null;
1559
+ company_employee_count?: string | null;
1556
1560
  company_id?: number | null;
1561
+ company_industry?: string | null;
1562
+ company_name?: string | null;
1563
+ company_website?: string | null;
1557
1564
  country?: string | null;
1565
+ created_at?: string | null;
1558
1566
  custom_fields?: (Record<string, string | null>) | null;
1559
1567
  direct_phone?: string | null;
1560
1568
  first_name?: string | null;
@@ -1568,6 +1576,7 @@ export interface ContactListItem {
1568
1576
  owner_name?: string | null;
1569
1577
  seniority_level?: string | null;
1570
1578
  state?: string | null;
1579
+ updated_at?: string | null;
1571
1580
  work_email?: string | null;
1572
1581
  }
1573
1582
 
@@ -1707,7 +1716,7 @@ export interface ContactUpdateRequest {
1707
1716
  export interface CreateContactColumnRequest {
1708
1717
  /** Email of the user creating the column (for audit). */
1709
1718
  created_by: string;
1710
- /** Column data type. Currently only 'text' is supported. */
1719
+ /** Column data type: 'text', 'int' (whole number), 'numeric' (decimal) or 'boolean' (yes/no). Other values 422. */
1711
1720
  data_type?: ColumnType;
1712
1721
  /** STRONGLY RECOMMENDED. Optional waterfall enrichment block. When supplied, a companion `enrichment_configs` row is created alongside the column so the UI 'Enrich' button works immediately. Without it the column exists but isn't enrichable until a pipeline is configured via POST /enrichment/waterfall/configs. */
1713
1722
  enrichment?: CreateFieldEnrichmentInput | null;
@@ -1726,15 +1735,21 @@ export interface CreateContactColumnRequest {
1726
1735
  * that is populated when the request included an `enrichment` block.
1727
1736
  */
1728
1737
  export interface CreateContactColumnResponse {
1738
+ /** True when a column with this name already existed in this scope, so the existing column was returned. A different `data_type` is rejected with 409. */
1739
+ already_existed?: boolean;
1729
1740
  data_type?: ColumnType;
1730
1741
  /** Populated when the request included an `enrichment` block. Use `enrichment.column_id` for subsequent POST /enrichment/waterfall/enrich calls. */
1731
1742
  enrichment?: CreateFieldEnrichmentResponse | null;
1743
+ /** When `already_existed` is true: the existing column's data type. */
1744
+ existing_data_type?: string | null;
1732
1745
  id?: number | null;
1733
1746
  /** Computed: True when object_id is null/empty (global column). */
1734
1747
  is_global?: boolean;
1735
1748
  name?: string | null;
1736
1749
  object_id?: string | null;
1737
1750
  title: string;
1751
+ /** Non-blocking notices (e.g. a same-named org-wide column also shows on this list). */
1752
+ warnings?: Array<string>;
1738
1753
  }
1739
1754
 
1740
1755
  /**
@@ -1930,10 +1945,16 @@ export interface PaginationMeta {
1930
1945
  limit: number;
1931
1946
  /** 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. */
1932
1947
  next_cursor?: string | null;
1948
+ /** 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. */
1949
+ notes?: Array<string> | null;
1933
1950
  /** Current page number (1-indexed) */
1934
1951
  page: number;
1935
1952
  /** Total number of items */
1936
1953
  total: number;
1954
+ /** 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. */
1955
+ total_available?: number | null;
1956
+ /** 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. */
1957
+ total_is_lower_bound?: boolean | null;
1937
1958
  }
1938
1959
 
1939
1960
  /**
@@ -245,7 +245,7 @@ const result = await g8.api.contacts.batchContactRelated({ body: { contact_ids:
245
245
  Full records for up to 100 contacts in ONE request. Writes nothing.
246
246
 
247
247
  Use this instead of looping `GET /contacts/{contact_id}`: `GET /contacts`
248
- returns 17 fields per contact, and the loop spends one rate-limit slot per
248
+ returns a lean summary per contact, and the loop spends one rate-limit slot per
249
249
  contact to get the other fields. Each item is exactly what the per-contact
250
250
  route returns, through the same access check. A contact that does not exist
251
251
  or is outside the key's scope comes back `found: false`, rather than failing
@@ -385,7 +385,7 @@ Body fields (`CreateContactColumnRequest`):
385
385
  |---|---|---|---|
386
386
  | `body.created_by` | `string (email)` | yes | Email of the user creating the column (for audit). |
387
387
  | `body.title` | `string` | yes | Column title shown in the UI (e.g. 'Lead Score') |
388
- | `body.data_type` | `ColumnType` | no | Column data type. Currently only 'text' is supported. default `"text"` |
388
+ | `body.data_type` | `ColumnType` | no | Column data type: 'text', 'int' (whole number), 'numeric' (decimal) or 'boolean' (yes/no). Other values 422. default `"text"` |
389
389
  | `body.enrichment` | `CreateFieldEnrichmentInput \| null` | no | STRONGLY RECOMMENDED. Optional waterfall enrichment block. When supplied, a companion `enrichment_configs` row is created alongside the column so the UI 'Enrich' button works immediately. Without it the column exists but isn't enrichable until a pipeline is configured via POST /enrichment/waterfall/configs. |
390
390
  | `body.list_id` | `integer \| null` | no | If set, the column is list-scoped (only visible on that list). Required when `enrichment` is supplied — waterfall pipelines are list-scoped. |
391
391
 
@@ -398,12 +398,15 @@ Other envelope fields: `pagination` (PaginationMeta).
398
398
  | Field | Type | Required | Description |
399
399
  |---|---|---|---|
400
400
  | `title` | `string` | yes | |
401
+ | `already_existed` | `boolean` | no | True when a column with this name already existed in this scope, so the existing column was returned. A different `data_type` is rejected with 409. default `false` |
401
402
  | `data_type` | `ColumnType` | no | default `"text"` |
402
403
  | `enrichment` | `CreateFieldEnrichmentResponse \| null` | no | Populated when the request included an `enrichment` block. Use `enrichment.column_id` for subsequent POST /enrichment/waterfall/enrich calls. |
404
+ | `existing_data_type` | `string \| null` | no | When `already_existed` is true: the existing column's data type. |
403
405
  | `id` | `integer \| null` | no | |
404
406
  | `is_global` | `boolean` | no | Computed: True when object_id is null/empty (global column). default `false` |
405
407
  | `name` | `string \| null` | no | |
406
408
  | `object_id` | `string \| null` | no | |
409
+ | `warnings` | `Array<string>` | no | Non-blocking notices (e.g. a same-named org-wide column also shows on this list). |
407
410
 
408
411
  **Example**
409
412
 
@@ -544,6 +547,7 @@ Other envelope fields: `pagination` (PaginationMeta).
544
547
  | `custom_fields` | `CustomFieldWriteReport` | no | |
545
548
  | `merged` | `boolean` | no | default `false` |
546
549
  | `validation_errors` | `Array<string>` | no | |
550
+ | `warnings` | `Array<string>` | no | Advisory notes about values saved as sent that look wrong (e.g. an unrecognised seniority or country). Empty when the input is clean. |
547
551
 
548
552
  **Example**
549
553
 
@@ -1879,15 +1883,15 @@ List contacts with optional filtering and pagination.
1879
1883
  |---|---|---|---|
1880
1884
  | `query.page` | `integer` | no | Page number (1-indexed) default `1` |
1881
1885
  | `query.limit` | `integer` | no | Items per page (max 200) default `50` |
1882
- | `query.email` | `string \| null` | no | Filter by work email (exact match) |
1886
+ | `query.email` | `string \| null` | no | Filter by work email (exact match, case-insensitive; surrounding spaces ignored) |
1883
1887
  | `query.list_id` | `integer \| null` | no | Filter by list ID |
1884
1888
  | `query.name` | `string \| null` | no | Filter by first or last name (partial match) |
1885
1889
  | `query.job_title` | `string \| null` | no | Filter by job title (partial match) |
1886
- | `query.seniority_level` | `string \| null` | no | Filter by seniority level (exact match) |
1890
+ | `query.seniority_level` | `string \| null` | no | Filter by seniority level (exact match, case-insensitive). Spellings of the same level match each other: VP = Vice President; SVP/EVP = SVP = EVP = Senior/Executive Vice President; C-Suite = C-Level = CXO. Pass several levels comma-separated to match any of them, e.g. `VP,SVP/EVP`. |
1887
1891
  | `query.company_name` | `string \| null` | no | Filter by company name (partial match) |
1888
1892
  | `query.company_id` | `integer \| null` | no | Filter by company ID |
1889
- | `query.country` | `string \| null` | no | Filter by country (exact match) |
1890
- | `query.state` | `string \| null` | no | Filter by state (exact match) |
1893
+ | `query.country` | `string \| null` | no | Filter by country (exact match, case-insensitive; surrounding spaces ignored). Common aliases match each other: United States = US = USA; United Kingdom = UK. |
1894
+ | `query.state` | `string \| null` | no | Filter by state (exact match, case-insensitive; surrounding spaces ignored) |
1891
1895
  | `query.city` | `string \| null` | no | Filter by city (partial match) |
1892
1896
  | `query.job_department` | `string \| null` | no | Filter by job department (partial match) |
1893
1897
  | `query.industry` | `string \| null` | no | Filter by company industry (partial match) |
@@ -1902,8 +1906,14 @@ Other envelope fields: `pagination` (PaginationMeta).
1902
1906
  | Field | Type | Required | Description |
1903
1907
  |---|---|---|---|
1904
1908
  | `city` | `string \| null` | no | |
1909
+ | `company_domain` | `string \| null` | no | |
1910
+ | `company_employee_count` | `string \| null` | no | |
1905
1911
  | `company_id` | `integer \| null` | no | |
1912
+ | `company_industry` | `string \| null` | no | |
1913
+ | `company_name` | `string \| null` | no | |
1914
+ | `company_website` | `string \| null` | no | |
1906
1915
  | `country` | `string \| null` | no | |
1916
+ | `created_at` | `string \| null` | no | |
1907
1917
  | `custom_fields` | `Record<string, string \| null> \| null` | no | |
1908
1918
  | `direct_phone` | `string \| null` | no | |
1909
1919
  | `first_name` | `string \| null` | no | |
@@ -1917,6 +1927,7 @@ Other envelope fields: `pagination` (PaginationMeta).
1917
1927
  | `owner_name` | `string \| null` | no | |
1918
1928
  | `seniority_level` | `string \| null` | no | |
1919
1929
  | `state` | `string \| null` | no | |
1930
+ | `updated_at` | `string \| null` | no | |
1920
1931
  | `work_email` | `string \| null` | no | |
1921
1932
 
1922
1933
  **Example**
@@ -893,10 +893,16 @@ export interface PaginationMeta {
893
893
  limit: number;
894
894
  /** 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. */
895
895
  next_cursor?: string | null;
896
+ /** 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. */
897
+ notes?: Array<string> | null;
896
898
  /** Current page number (1-indexed) */
897
899
  page: number;
898
900
  /** Total number of items */
899
901
  total: number;
902
+ /** 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. */
903
+ total_available?: number | null;
904
+ /** 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. */
905
+ total_is_lower_bound?: boolean | null;
900
906
  }
901
907
 
902
908
  /**
@@ -170,8 +170,14 @@ export interface PaginationMeta {
170
170
  limit: number;
171
171
  /** 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. */
172
172
  next_cursor?: string | null;
173
+ /** 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. */
174
+ notes?: Array<string> | null;
173
175
  /** Current page number (1-indexed) */
174
176
  page: number;
175
177
  /** Total number of items */
176
178
  total: number;
179
+ /** 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. */
180
+ total_available?: number | null;
181
+ /** 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. */
182
+ total_is_lower_bound?: boolean | null;
177
183
  }
@@ -819,10 +819,16 @@ export interface PaginationMeta {
819
819
  limit: number;
820
820
  /** 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. */
821
821
  next_cursor?: string | null;
822
+ /** 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. */
823
+ notes?: Array<string> | null;
822
824
  /** Current page number (1-indexed) */
823
825
  page: number;
824
826
  /** Total number of items */
825
827
  total: number;
828
+ /** 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. */
829
+ total_available?: number | null;
830
+ /** 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. */
831
+ total_is_lower_bound?: boolean | null;
826
832
  }
827
833
 
828
834
  /** Mirror of `PersonalContactChoiceRequest`. */
@@ -208,8 +208,14 @@ export interface PaginationMeta {
208
208
  limit: number;
209
209
  /** 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. */
210
210
  next_cursor?: string | null;
211
+ /** 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. */
212
+ notes?: Array<string> | null;
211
213
  /** Current page number (1-indexed) */
212
214
  page: number;
213
215
  /** Total number of items */
214
216
  total: number;
217
+ /** 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. */
218
+ total_available?: number | null;
219
+ /** 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. */
220
+ total_is_lower_bound?: boolean | null;
215
221
  }
@@ -484,8 +484,14 @@ export interface PaginationMeta {
484
484
  limit: number;
485
485
  /** 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. */
486
486
  next_cursor?: string | null;
487
+ /** 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. */
488
+ notes?: Array<string> | null;
487
489
  /** Current page number (1-indexed) */
488
490
  page: number;
489
491
  /** Total number of items */
490
492
  total: number;
493
+ /** 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. */
494
+ total_available?: number | null;
495
+ /** 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. */
496
+ total_is_lower_bound?: boolean | null;
491
497
  }
@@ -1652,10 +1652,16 @@ export interface PaginationMeta {
1652
1652
  limit: number;
1653
1653
  /** 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. */
1654
1654
  next_cursor?: string | null;
1655
+ /** 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. */
1656
+ notes?: Array<string> | null;
1655
1657
  /** Current page number (1-indexed) */
1656
1658
  page: number;
1657
1659
  /** Total number of items */
1658
1660
  total: number;
1661
+ /** 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. */
1662
+ total_available?: number | null;
1663
+ /** 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. */
1664
+ total_is_lower_bound?: boolean | null;
1659
1665
  }
1660
1666
 
1661
1667
  export interface PipelineResponse {
@@ -400,10 +400,16 @@ export interface PaginationMeta {
400
400
  limit: number;
401
401
  /** 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. */
402
402
  next_cursor?: string | null;
403
+ /** 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. */
404
+ notes?: Array<string> | null;
403
405
  /** Current page number (1-indexed) */
404
406
  page: number;
405
407
  /** Total number of items */
406
408
  total: number;
409
+ /** 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. */
410
+ total_available?: number | null;
411
+ /** 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. */
412
+ total_is_lower_bound?: boolean | null;
407
413
  }
408
414
 
409
415
  export interface RetirementDecisionRequest {
@@ -1758,8 +1758,14 @@ export interface PaginationMeta {
1758
1758
  limit: number;
1759
1759
  /** 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. */
1760
1760
  next_cursor?: string | null;
1761
+ /** 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. */
1762
+ notes?: Array<string> | null;
1761
1763
  /** Current page number (1-indexed) */
1762
1764
  page: number;
1763
1765
  /** Total number of items */
1764
1766
  total: number;
1767
+ /** 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. */
1768
+ total_available?: number | null;
1769
+ /** 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. */
1770
+ total_is_lower_bound?: boolean | null;
1765
1771
  }
@@ -1072,10 +1072,16 @@ export interface PaginationMeta {
1072
1072
  limit: number;
1073
1073
  /** 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. */
1074
1074
  next_cursor?: string | null;
1075
+ /** 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. */
1076
+ notes?: Array<string> | null;
1075
1077
  /** Current page number (1-indexed) */
1076
1078
  page: number;
1077
1079
  /** Total number of items */
1078
1080
  total: number;
1081
+ /** 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. */
1082
+ total_available?: number | null;
1083
+ /** 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. */
1084
+ total_is_lower_bound?: boolean | null;
1079
1085
  }
1080
1086
 
1081
1087
  /**
@@ -854,10 +854,16 @@ export interface PaginationMeta {
854
854
  limit: number;
855
855
  /** 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. */
856
856
  next_cursor?: string | null;
857
+ /** 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. */
858
+ notes?: Array<string> | null;
857
859
  /** Current page number (1-indexed) */
858
860
  page: number;
859
861
  /** Total number of items */
860
862
  total: number;
863
+ /** 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. */
864
+ total_available?: number | null;
865
+ /** 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. */
866
+ total_is_lower_bound?: boolean | null;
861
867
  }
862
868
 
863
869
  /**
@@ -184,10 +184,16 @@ export interface PaginationMeta {
184
184
  limit: number;
185
185
  /** 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. */
186
186
  next_cursor?: string | null;
187
+ /** 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. */
188
+ notes?: Array<string> | null;
187
189
  /** Current page number (1-indexed) */
188
190
  page: number;
189
191
  /** Total number of items */
190
192
  total: number;
193
+ /** 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. */
194
+ total_available?: number | null;
195
+ /** 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. */
196
+ total_is_lower_bound?: boolean | null;
191
197
  }
192
198
 
193
199
  export interface RejectDuplicateRequest {
@@ -229,10 +229,16 @@ export interface PaginationMeta {
229
229
  limit: number;
230
230
  /** 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. */
231
231
  next_cursor?: string | null;
232
+ /** 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. */
233
+ notes?: Array<string> | null;
232
234
  /** Current page number (1-indexed) */
233
235
  page: number;
234
236
  /** Total number of items */
235
237
  total: number;
238
+ /** 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. */
239
+ total_available?: number | null;
240
+ /** 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. */
241
+ total_is_lower_bound?: boolean | null;
236
242
  }
237
243
 
238
244
  /** Send a draft for signature. This EMAILS A REAL PERSON. */
@@ -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.enrichment` (Enrichment): 114 operations.
4
+ * Types for `g8.api.enrichment` (Enrichment): 115 operations.
5
5
  *
6
6
  * For reading. In code, import from the package instead:
7
7
  * import type { ApiInput, ApiOutput, G8Contract } from "@graph8/sdk";
@@ -92,6 +92,7 @@ export interface EnrichmentMembers {
92
92
  lookupPerson: "lookup_person_enrichment_lookup_person_post";
93
93
  lookupPersonAlias: "lookup_person_alias_enrichment_person_post";
94
94
  pauseEnrichmentJob: "pause_enrichment_job_enrichment_jobs__job_id__pause_post";
95
+ preflightEnrichment: "preflight_enrichment_enrichment_preflight_post";
95
96
  previewFindPeople: "preview_find_people_enrichment_find_people__config_id__preview_post";
96
97
  previewFormula: "preview_formula_enrichment_ai_formula_preview_post";
97
98
  previewRecordSync: "preview_record_sync_enrichment_record_sync__entity_type__preview_post";
@@ -1473,6 +1474,20 @@ export interface EnrichmentOperations {
1473
1474
  };
1474
1475
  output: ApiResponse_EnrichmentPayload_;
1475
1476
  };
1477
+ /**
1478
+ * POST /enrichment/preflight
1479
+ * Preflight Enrichment
1480
+ * tier: read · scope: enrichment:read
1481
+ */
1482
+ preflight_enrichment_enrichment_preflight_post: {
1483
+ input: {
1484
+ headers?: {
1485
+ "X-Target-Org-Id"?: string | null;
1486
+ };
1487
+ body: EnrichmentPreflightRequest;
1488
+ };
1489
+ output: ApiResponse_EnrichmentPreflightResponse_;
1490
+ };
1476
1491
  /**
1477
1492
  * POST /enrichment/find-people/{config_id}/preview
1478
1493
  * Preview Find People
@@ -2066,7 +2081,7 @@ export interface EnrichmentOperations {
2066
2081
  };
2067
2082
  }
2068
2083
 
2069
- // 102 schemas referenced above (the same as G8Contract.<Name>).
2084
+ // 105 schemas referenced above (the same as G8Contract.<Name>).
2070
2085
 
2071
2086
  /**
2072
2087
  * Run a saved AI group over a list. CHARGES per record.
@@ -2256,6 +2271,11 @@ export interface ApiResponse_EnrichmentPayload_ {
2256
2271
  pagination?: PaginationMeta | null;
2257
2272
  }
2258
2273
 
2274
+ export interface ApiResponse_EnrichmentPreflightResponse_ {
2275
+ data: EnrichmentPreflightResponse;
2276
+ pagination?: PaginationMeta | null;
2277
+ }
2278
+
2259
2279
  export interface ApiResponse_LookupResponse_ {
2260
2280
  data: LookupResponse;
2261
2281
  pagination?: PaginationMeta | null;
@@ -2565,6 +2585,60 @@ export interface EnrichmentListPayload {
2565
2585
  */
2566
2586
  export type EnrichmentPayload = Record<string, unknown>;
2567
2587
 
2588
+ /**
2589
+ * Check an enrichment request before running it. Free: nothing is written,
2590
+ * queued or charged.
2591
+ *
2592
+ * Takes the same inputs as the MCP `g8_enrich_contacts` tool so a preview can
2593
+ * say up front whether the run would work.
2594
+ */
2595
+ export interface EnrichmentPreflightRequest {
2596
+ /** group_id of a saved AI enrichment config (required for 'ai-research') */
2597
+ ai_group_id?: string | null;
2598
+ /** Contact IDs to enrich (duplicates are counted once) */
2599
+ contact_ids: Array<number>;
2600
+ /** Add ZeroBounce email verification */
2601
+ email_verification?: boolean;
2602
+ /** List ID the contacts belong to */
2603
+ list_id: number;
2604
+ /** 'auto' (AI when ai_group_id is set, else waterfall), 'waterfall' or 'ai-research' */
2605
+ mode?: string;
2606
+ /** Ordered provider names for a waterfall run. Omit to use the list's saved pipeline; an empty list also uses the saved pipeline (a warning says so). */
2607
+ providers?: Array<string> | null;
2608
+ /** Column to enrich: a canonical CONTACT_*\/COMPANY_* column or a synonym like 'phone' or 'email' */
2609
+ target_field?: string | null;
2610
+ }
2611
+
2612
+ /**
2613
+ * What a run with these inputs would do. Errors (unknown list, mode, field or
2614
+ * provider, impossible contact IDs) come back as 400/404 instead.
2615
+ */
2616
+ export interface EnrichmentPreflightResponse {
2617
+ /** Number of unique contacts (the count credits are estimated on) */
2618
+ contact_count: number;
2619
+ /** Contact IDs that will be enriched: duplicates removed, order kept */
2620
+ contact_ids: Array<number>;
2621
+ /** How many repeated contact IDs were dropped */
2622
+ duplicates_removed?: number;
2623
+ list_id: number;
2624
+ list_name?: string | null;
2625
+ /** Providers whose step would be skipped because the org has no key for them */
2626
+ missing_credentials?: Array<string>;
2627
+ /** Resolved mode: 'waterfall' or 'ai-research' */
2628
+ mode: string;
2629
+ /** Contact IDs that are not on the list; the run skips them and does not charge for them */
2630
+ not_in_list?: Array<number>;
2631
+ /** Providers that would run, in order (empty = the saved pipeline) */
2632
+ providers?: Array<string>;
2633
+ providers_detail?: Array<ProviderStepDetail>;
2634
+ /** Canonical column for target_field, when given */
2635
+ target_field?: string | null;
2636
+ /** True when the list's saved pipeline (or the graph8 default) would run */
2637
+ uses_saved_pipeline?: boolean;
2638
+ /** Plain-language advisories for the user */
2639
+ warnings?: Array<string>;
2640
+ }
2641
+
2568
2642
  /** Price every visible qualification template against one list. Charges nothing. */
2569
2643
  export interface EstimateAllRequest {
2570
2644
  list_id: number;
@@ -2694,10 +2768,16 @@ export interface PaginationMeta {
2694
2768
  limit: number;
2695
2769
  /** 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. */
2696
2770
  next_cursor?: string | null;
2771
+ /** 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. */
2772
+ notes?: Array<string> | null;
2697
2773
  /** Current page number (1-indexed) */
2698
2774
  page: number;
2699
2775
  /** Total number of items */
2700
2776
  total: number;
2777
+ /** 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. */
2778
+ total_available?: number | null;
2779
+ /** 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. */
2780
+ total_is_lower_bound?: boolean | null;
2701
2781
  }
2702
2782
 
2703
2783
  export interface PersonLookupRequest {