@graph8/sdk 0.251.0 → 0.262.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (350) hide show
  1. package/README.md +9 -2
  2. package/dist/cli.js +216 -0
  3. package/dist/index.d.mts +105 -7
  4. package/dist/index.d.ts +105 -7
  5. package/dist/index.js +44 -3
  6. package/dist/index.js.map +1 -1
  7. package/dist/index.mjs +44 -3
  8. package/dist/index.mjs.map +1 -1
  9. package/dist/react.d.mts +103 -7
  10. package/dist/react.d.ts +103 -7
  11. package/dist/react.js +62 -11
  12. package/dist/react.js.map +1 -1
  13. package/dist/react.mjs +53 -12
  14. package/dist/react.mjs.map +1 -1
  15. package/dist/types/README.md +7 -0
  16. package/dist/types/agency.d.ts +20 -0
  17. package/dist/types/agentSetup.d.ts +57 -0
  18. package/dist/types/api.d.ts +127 -0
  19. package/dist/types/appClient.d.ts +99 -0
  20. package/dist/types/appPlatform.d.ts +269 -0
  21. package/dist/types/appTokens.d.ts +125 -0
  22. package/dist/types/apps.d.ts +130 -0
  23. package/dist/types/audiences.d.ts +88 -0
  24. package/dist/types/calendar.d.ts +55 -0
  25. package/dist/types/campaigns.d.ts +61 -0
  26. package/dist/types/chat.d.ts +35 -0
  27. package/dist/types/cli.d.ts +14 -0
  28. package/dist/types/companies.d.ts +123 -0
  29. package/dist/types/contacts.d.ts +200 -0
  30. package/dist/types/copilot.d.ts +31 -0
  31. package/dist/types/core.d.ts +1052 -0
  32. package/dist/types/deals.d.ts +215 -0
  33. package/dist/types/enrich.d.ts +51 -0
  34. package/dist/types/fields.d.ts +84 -0
  35. package/dist/types/forms.d.ts +16 -0
  36. package/dist/types/http.d.ts +141 -0
  37. package/dist/types/inbox.d.ts +123 -0
  38. package/dist/types/index.d.ts +63 -0
  39. package/dist/types/intent.d.ts +196 -0
  40. package/dist/types/lists.d.ts +44 -0
  41. package/dist/types/mailboxes.d.ts +240 -0
  42. package/dist/types/marketplace.d.ts +62 -0
  43. package/dist/types/meetings.d.ts +70 -0
  44. package/dist/types/newsletter.d.ts +212 -0
  45. package/dist/types/notes.d.ts +57 -0
  46. package/dist/types/objects.d.ts +281 -0
  47. package/dist/types/pipelines.d.ts +135 -0
  48. package/dist/types/quotes.d.ts +143 -0
  49. package/dist/types/react.d.ts +978 -0
  50. package/dist/types/search.d.ts +99 -0
  51. package/dist/types/sequences.d.ts +255 -0
  52. package/dist/types/signals.d.ts +28 -0
  53. package/dist/types/skills.d.ts +176 -0
  54. package/dist/types/snippet.d.ts +24 -0
  55. package/dist/types/studio.d.ts +161 -0
  56. package/dist/types/tasks.d.ts +101 -0
  57. package/dist/types/types.d.ts +45 -0
  58. package/dist/types/utils.d.ts +21 -0
  59. package/dist/types/version.d.ts +10 -0
  60. package/dist/types/visitors.d.ts +29 -0
  61. package/dist/types/voice.d.ts +304 -0
  62. package/dist/types/webhooks.d.ts +71 -0
  63. package/dist/types/workflows.d.ts +229 -0
  64. package/docs/agents.md +748 -0
  65. package/docs/api/README.md +165 -0
  66. package/docs/api/accounts.d.ts +396 -0
  67. package/docs/api/accounts.md +644 -0
  68. package/docs/api/adCampaigns.d.ts +707 -0
  69. package/docs/api/adCampaigns.md +1091 -0
  70. package/docs/api/adCreatives.d.ts +996 -0
  71. package/docs/api/adCreatives.md +1708 -0
  72. package/docs/api/agency.d.ts +556 -0
  73. package/docs/api/agency.md +845 -0
  74. package/docs/api/agent.d.ts +330 -0
  75. package/docs/api/agent.md +514 -0
  76. package/docs/api/agents.d.ts +1622 -0
  77. package/docs/api/agents.md +2860 -0
  78. package/docs/api/aiInbox.d.ts +1984 -0
  79. package/docs/api/aiInbox.md +3490 -0
  80. package/docs/api/analytics.d.ts +1273 -0
  81. package/docs/api/analytics.md +2095 -0
  82. package/docs/api/apiKeys.d.ts +252 -0
  83. package/docs/api/apiKeys.md +318 -0
  84. package/docs/api/appDeployments.d.ts +236 -0
  85. package/docs/api/appDeployments.md +471 -0
  86. package/docs/api/appDomains.d.ts +171 -0
  87. package/docs/api/appDomains.md +281 -0
  88. package/docs/api/appLogs.d.ts +120 -0
  89. package/docs/api/appLogs.md +159 -0
  90. package/docs/api/appObjects.d.ts +415 -0
  91. package/docs/api/appObjects.md +568 -0
  92. package/docs/api/appPages.d.ts +557 -0
  93. package/docs/api/appPages.md +796 -0
  94. package/docs/api/appPlatformTokens.d.ts +123 -0
  95. package/docs/api/appPlatformTokens.md +172 -0
  96. package/docs/api/appointments.d.ts +2361 -0
  97. package/docs/api/appointments.md +3917 -0
  98. package/docs/api/apps.d.ts +822 -0
  99. package/docs/api/apps.md +1342 -0
  100. package/docs/api/assertUpsert.d.ts +286 -0
  101. package/docs/api/assertUpsert.md +370 -0
  102. package/docs/api/audienceSyncs.d.ts +259 -0
  103. package/docs/api/audienceSyncs.md +395 -0
  104. package/docs/api/brandKit.d.ts +686 -0
  105. package/docs/api/brandKit.md +1133 -0
  106. package/docs/api/bugReports.d.ts +181 -0
  107. package/docs/api/bugReports.md +268 -0
  108. package/docs/api/by-path.md +3260 -0
  109. package/docs/api/calendarInvites.d.ts +117 -0
  110. package/docs/api/calendarInvites.md +148 -0
  111. package/docs/api/campaignWorkflows.d.ts +152 -0
  112. package/docs/api/campaignWorkflows.md +200 -0
  113. package/docs/api/campaigns.d.ts +721 -0
  114. package/docs/api/campaigns.md +1236 -0
  115. package/docs/api/channels.d.ts +171 -0
  116. package/docs/api/channels.md +235 -0
  117. package/docs/api/cliCampaigns.d.ts +205 -0
  118. package/docs/api/cliCampaigns.md +256 -0
  119. package/docs/api/cliPipelines.d.ts +324 -0
  120. package/docs/api/cliPipelines.md +562 -0
  121. package/docs/api/clickHouse.d.ts +115 -0
  122. package/docs/api/clickHouse.md +138 -0
  123. package/docs/api/companies.d.ts +1636 -0
  124. package/docs/api/companies.md +2211 -0
  125. package/docs/api/companyIntelligence.d.ts +299 -0
  126. package/docs/api/companyIntelligence.md +488 -0
  127. package/docs/api/contacts.d.ts +2173 -0
  128. package/docs/api/contacts.md +3143 -0
  129. package/docs/api/content.d.ts +968 -0
  130. package/docs/api/content.md +1667 -0
  131. package/docs/api/contentGridSkills.d.ts +177 -0
  132. package/docs/api/contentGridSkills.md +271 -0
  133. package/docs/api/copilot.d.ts +1017 -0
  134. package/docs/api/copilot.md +1765 -0
  135. package/docs/api/crmSyncs.d.ts +215 -0
  136. package/docs/api/crmSyncs.md +301 -0
  137. package/docs/api/customerSuccess.d.ts +491 -0
  138. package/docs/api/customerSuccess.md +776 -0
  139. package/docs/api/deals.d.ts +1697 -0
  140. package/docs/api/deals.md +2436 -0
  141. package/docs/api/deliverability.d.ts +418 -0
  142. package/docs/api/deliverability.md +677 -0
  143. package/docs/api/desk.d.ts +1765 -0
  144. package/docs/api/desk.md +3007 -0
  145. package/docs/api/dialer.d.ts +1185 -0
  146. package/docs/api/dialer.md +2166 -0
  147. package/docs/api/dialerAnalytics.d.ts +187 -0
  148. package/docs/api/dialerAnalytics.md +257 -0
  149. package/docs/api/documents.d.ts +895 -0
  150. package/docs/api/documents.md +1440 -0
  151. package/docs/api/duplicates.d.ts +195 -0
  152. package/docs/api/duplicates.md +315 -0
  153. package/docs/api/eSign.d.ts +38 -0
  154. package/docs/api/eSign.md +54 -0
  155. package/docs/api/eSignature.d.ts +242 -0
  156. package/docs/api/eSignature.md +341 -0
  157. package/docs/api/enrichment.d.ts +3207 -0
  158. package/docs/api/enrichment.md +5225 -0
  159. package/docs/api/events.d.ts +115 -0
  160. package/docs/api/events.md +105 -0
  161. package/docs/api/fields.d.ts +482 -0
  162. package/docs/api/fields.md +566 -0
  163. package/docs/api/forms.d.ts +1012 -0
  164. package/docs/api/forms.md +1542 -0
  165. package/docs/api/gtmCampaigns.d.ts +662 -0
  166. package/docs/api/gtmCampaigns.md +1044 -0
  167. package/docs/api/gtmContext.d.ts +1187 -0
  168. package/docs/api/gtmContext.md +2112 -0
  169. package/docs/api/gtmDeliverability.d.ts +60 -0
  170. package/docs/api/gtmDeliverability.md +63 -0
  171. package/docs/api/gtmKnowledgeBase.d.ts +76 -0
  172. package/docs/api/gtmKnowledgeBase.md +91 -0
  173. package/docs/api/gtmLaunchHelpers.d.ts +123 -0
  174. package/docs/api/gtmLaunchHelpers.md +148 -0
  175. package/docs/api/gtmLibrary.d.ts +448 -0
  176. package/docs/api/gtmLibrary.md +780 -0
  177. package/docs/api/health.d.ts +39 -0
  178. package/docs/api/health.md +58 -0
  179. package/docs/api/imageLibrary.d.ts +341 -0
  180. package/docs/api/imageLibrary.md +569 -0
  181. package/docs/api/imports.d.ts +157 -0
  182. package/docs/api/imports.md +174 -0
  183. package/docs/api/inbox.d.ts +709 -0
  184. package/docs/api/inbox.md +1067 -0
  185. package/docs/api/install.d.ts +213 -0
  186. package/docs/api/install.md +317 -0
  187. package/docs/api/installedApps.d.ts +131 -0
  188. package/docs/api/installedApps.md +241 -0
  189. package/docs/api/integrationStatus.d.ts +142 -0
  190. package/docs/api/integrationStatus.md +205 -0
  191. package/docs/api/integrations.d.ts +2327 -0
  192. package/docs/api/integrations.md +3791 -0
  193. package/docs/api/intent.d.ts +482 -0
  194. package/docs/api/intent.md +858 -0
  195. package/docs/api/knowledge.d.ts +501 -0
  196. package/docs/api/knowledge.md +843 -0
  197. package/docs/api/knowledgeBase.d.ts +84 -0
  198. package/docs/api/knowledgeBase.md +96 -0
  199. package/docs/api/landingPages.d.ts +1411 -0
  200. package/docs/api/landingPages.md +2488 -0
  201. package/docs/api/leads.d.ts +133 -0
  202. package/docs/api/leads.md +180 -0
  203. package/docs/api/library.d.ts +217 -0
  204. package/docs/api/library.md +338 -0
  205. package/docs/api/linkedIn.d.ts +227 -0
  206. package/docs/api/linkedIn.md +289 -0
  207. package/docs/api/linkedInOutreach.d.ts +727 -0
  208. package/docs/api/linkedInOutreach.md +990 -0
  209. package/docs/api/lists.d.ts +1106 -0
  210. package/docs/api/lists.md +1609 -0
  211. package/docs/api/logs.d.ts +71 -0
  212. package/docs/api/logs.md +70 -0
  213. package/docs/api/mailboxes.d.ts +1050 -0
  214. package/docs/api/mailboxes.md +1690 -0
  215. package/docs/api/marketingIntelligence.d.ts +256 -0
  216. package/docs/api/marketingIntelligence.md +454 -0
  217. package/docs/api/marketplace.d.ts +3173 -0
  218. package/docs/api/marketplace.md +5953 -0
  219. package/docs/api/mcp.d.ts +69 -0
  220. package/docs/api/mcp.md +69 -0
  221. package/docs/api/me.d.ts +54 -0
  222. package/docs/api/me.md +56 -0
  223. package/docs/api/meetings.d.ts +539 -0
  224. package/docs/api/meetings.md +747 -0
  225. package/docs/api/newsletter.d.ts +1613 -0
  226. package/docs/api/newsletter.md +2746 -0
  227. package/docs/api/notes.d.ts +517 -0
  228. package/docs/api/notes.md +888 -0
  229. package/docs/api/notifications.d.ts +94 -0
  230. package/docs/api/notifications.md +105 -0
  231. package/docs/api/objects.d.ts +621 -0
  232. package/docs/api/objects.md +1098 -0
  233. package/docs/api/openSearch.d.ts +234 -0
  234. package/docs/api/openSearch.md +297 -0
  235. package/docs/api/ops.d.ts +299 -0
  236. package/docs/api/ops.md +339 -0
  237. package/docs/api/orgGovernance.d.ts +393 -0
  238. package/docs/api/orgGovernance.md +623 -0
  239. package/docs/api/orgVideos.d.ts +184 -0
  240. package/docs/api/orgVideos.md +252 -0
  241. package/docs/api/organizationSettings.d.ts +626 -0
  242. package/docs/api/organizationSettings.md +911 -0
  243. package/docs/api/phoneNumbers.d.ts +484 -0
  244. package/docs/api/phoneNumbers.md +777 -0
  245. package/docs/api/profile.d.ts +329 -0
  246. package/docs/api/profile.md +540 -0
  247. package/docs/api/programmaticPages.d.ts +400 -0
  248. package/docs/api/programmaticPages.md +626 -0
  249. package/docs/api/providerDomains.d.ts +866 -0
  250. package/docs/api/providerDomains.md +1446 -0
  251. package/docs/api/providerUsage.d.ts +129 -0
  252. package/docs/api/providerUsage.md +186 -0
  253. package/docs/api/public.d.ts +69 -0
  254. package/docs/api/public.md +78 -0
  255. package/docs/api/publicCopilot.d.ts +67 -0
  256. package/docs/api/publicCopilot.md +80 -0
  257. package/docs/api/publicSignals.d.ts +66 -0
  258. package/docs/api/publicSignals.md +71 -0
  259. package/docs/api/publicVisitors.d.ts +97 -0
  260. package/docs/api/publicVisitors.md +118 -0
  261. package/docs/api/quotes.d.ts +1564 -0
  262. package/docs/api/quotes.md +2553 -0
  263. package/docs/api/radar.d.ts +808 -0
  264. package/docs/api/radar.md +1431 -0
  265. package/docs/api/radarReports.d.ts +208 -0
  266. package/docs/api/radarReports.md +306 -0
  267. package/docs/api/recordRoles.d.ts +143 -0
  268. package/docs/api/recordRoles.md +175 -0
  269. package/docs/api/repos.d.ts +146 -0
  270. package/docs/api/repos.md +211 -0
  271. package/docs/api/research.d.ts +295 -0
  272. package/docs/api/research.md +534 -0
  273. package/docs/api/revenue.d.ts +402 -0
  274. package/docs/api/revenue.md +608 -0
  275. package/docs/api/revenueAnalytics.d.ts +147 -0
  276. package/docs/api/revenueAnalytics.md +212 -0
  277. package/docs/api/revenueLifecycle.d.ts +207 -0
  278. package/docs/api/revenueLifecycle.md +274 -0
  279. package/docs/api/revenueRecords.d.ts +372 -0
  280. package/docs/api/revenueRecords.md +563 -0
  281. package/docs/api/roles.d.ts +431 -0
  282. package/docs/api/roles.md +812 -0
  283. package/docs/api/salesCoach.d.ts +877 -0
  284. package/docs/api/salesCoach.md +1540 -0
  285. package/docs/api/sandbox.d.ts +210 -0
  286. package/docs/api/sandbox.md +380 -0
  287. package/docs/api/scans.d.ts +104 -0
  288. package/docs/api/scans.md +136 -0
  289. package/docs/api/scheduleBuy.d.ts +293 -0
  290. package/docs/api/scheduleBuy.md +431 -0
  291. package/docs/api/scraping.d.ts +266 -0
  292. package/docs/api/scraping.md +383 -0
  293. package/docs/api/sdrAnalytics.d.ts +138 -0
  294. package/docs/api/sdrAnalytics.md +246 -0
  295. package/docs/api/search.d.ts +598 -0
  296. package/docs/api/search.md +866 -0
  297. package/docs/api/seo.d.ts +447 -0
  298. package/docs/api/seo.md +660 -0
  299. package/docs/api/sequenceLifecycle.d.ts +439 -0
  300. package/docs/api/sequenceLifecycle.md +513 -0
  301. package/docs/api/sequences.d.ts +1936 -0
  302. package/docs/api/sequences.md +3232 -0
  303. package/docs/api/settings.d.ts +448 -0
  304. package/docs/api/settings.md +731 -0
  305. package/docs/api/signals.d.ts +1441 -0
  306. package/docs/api/signals.md +2526 -0
  307. package/docs/api/signatures.d.ts +719 -0
  308. package/docs/api/signatures.md +1247 -0
  309. package/docs/api/skills.d.ts +230 -0
  310. package/docs/api/skills.md +466 -0
  311. package/docs/api/snippet.d.ts +85 -0
  312. package/docs/api/snippet.md +106 -0
  313. package/docs/api/socialPublishing.d.ts +824 -0
  314. package/docs/api/socialPublishing.md +1245 -0
  315. package/docs/api/studioDocuments.d.ts +244 -0
  316. package/docs/api/studioDocuments.md +348 -0
  317. package/docs/api/support.d.ts +90 -0
  318. package/docs/api/support.md +76 -0
  319. package/docs/api/suppressions.d.ts +241 -0
  320. package/docs/api/suppressions.md +343 -0
  321. package/docs/api/surveys.d.ts +847 -0
  322. package/docs/api/surveys.md +1223 -0
  323. package/docs/api/tasks.d.ts +813 -0
  324. package/docs/api/tasks.md +1344 -0
  325. package/docs/api/teamMembers.d.ts +668 -0
  326. package/docs/api/teamMembers.md +1040 -0
  327. package/docs/api/teams.d.ts +784 -0
  328. package/docs/api/teams.md +1395 -0
  329. package/docs/api/usage.d.ts +277 -0
  330. package/docs/api/usage.md +389 -0
  331. package/docs/api/visitors.d.ts +690 -0
  332. package/docs/api/visitors.md +1075 -0
  333. package/docs/api/voice.d.ts +4661 -0
  334. package/docs/api/voice.md +7905 -0
  335. package/docs/api/webAnalytics.d.ts +964 -0
  336. package/docs/api/webAnalytics.md +1452 -0
  337. package/docs/api/webChat.d.ts +1704 -0
  338. package/docs/api/webChat.md +2048 -0
  339. package/docs/api/webhooks.d.ts +251 -0
  340. package/docs/api/webhooks.md +386 -0
  341. package/docs/api/websiteEditor.d.ts +324 -0
  342. package/docs/api/websiteEditor.md +517 -0
  343. package/docs/api/work.d.ts +2298 -0
  344. package/docs/api/work.md +3096 -0
  345. package/docs/api/workbench.d.ts +2962 -0
  346. package/docs/api/workbench.md +4884 -0
  347. package/docs/api/workflows.d.ts +1218 -0
  348. package/docs/api/workflows.md +2302 -0
  349. package/docs/sdk-clients.md +4339 -0
  350. package/package.json +10 -3
@@ -0,0 +1,1441 @@
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.signals` (Signals): 56 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<"add_engagers_to_list_social_listeners_posts__post_id__engagements_add_to_list_post">;
9
+ *
10
+ * Reference with examples: signals.md
11
+ */
12
+ /* eslint-disable */
13
+
14
+ /** `g8.api.signals.<member>` -> the operationId it calls. */
15
+ export interface SignalsMembers {
16
+ addEngagersToList: "add_engagers_to_list_social_listeners_posts__post_id__engagements_add_to_list_post";
17
+ addPostAuthorToSequence: "add_post_author_to_sequence_social_listeners_posts__post_id__add_to_sequence_post";
18
+ autoSeedAllListeners: "auto_seed_all_listeners_social_listeners_auto_seed_all_post";
19
+ autoSeedBrandListener: "auto_seed_brand_listener_social_listeners_auto_seed_brand_post";
20
+ autoSeedCompetitorListeners: "auto_seed_competitor_listeners_social_listeners_auto_seed_competitors_post";
21
+ autoSeedEngagementListeners: "auto_seed_engagement_listeners_social_listeners_auto_seed_engagement_post";
22
+ autoSeedKeywordListeners: "auto_seed_keyword_listeners_social_listeners_auto_seed_keywords_post";
23
+ bulkCreateListenersFromList: "bulk_create_listeners_from_list_social_listeners_bulk_from_list_post";
24
+ connectXCredentials: "connect_x_credentials_social_listeners_integrations_x_post";
25
+ createListener: "create_listener_social_listeners_post";
26
+ deleteKeywordUrl: "delete_keyword_url_intent_keyword_urls__url_id__delete";
27
+ deleteListener: "delete_listener_social_listeners__listener_id__delete";
28
+ disconnectXCredentials: "disconnect_x_credentials_social_listeners_integrations_x_delete";
29
+ generateListenerQuery: "generate_listener_query_social_listeners_queries_generate_post";
30
+ getAbmCompanyPersonas: "get_abm_company_personas_intent_abm_companies__company_id__personas_get";
31
+ getAutoSeedStatus: "get_auto_seed_status_social_listeners_auto_seed_status_get";
32
+ getCompanyJobCounts: "get_company_job_counts_hiring_signals_companies_job_counts_post";
33
+ getHiringJobDetails: "get_hiring_job_details_hiring_signals_jobs__job_id__get";
34
+ getJobResolutionStatus: "get_job_resolution_status_intent_keywords__keyword_id__job_resolution_get";
35
+ getKeywordSyncConfig: "get_keyword_sync_config_intent_keywords__keyword_id__sync_config_get";
36
+ getListener: "get_listener_social_listeners__listener_id__get";
37
+ getSocialSettings: "get_social_settings_social_listeners_settings_get";
38
+ getSocialStats: "get_social_stats_social_listeners_stats_get";
39
+ getXEffectiveMode: "get_x_effective_mode_social_listeners_integrations_x_mode_get";
40
+ getXIntegration: "get_x_integration_social_listeners_integrations_x_get";
41
+ listAbmCompanies: "list_abm_companies_intent_abm_companies_get";
42
+ listCompanyHiringJobs: "list_company_hiring_jobs_hiring_signals_companies__linkedin_company_id__jobs_get";
43
+ listCompanyLinkedinPosts: "list_company_linkedin_posts_hiring_signals_companies__linkedin_company_id__linkedin_posts_get";
44
+ listJobChangeSignals: "list_job_change_signals_hiring_signals_job_changes_get";
45
+ listListeners: "list_listeners_social_listeners_get";
46
+ listPostsByContact: "list_posts_by_contact_social_listeners_posts_by_contact__contact_id__get";
47
+ listSourceLists: "list_source_lists_social_listeners_source_lists_get";
48
+ listTopEngagedAccounts: "list_top_engaged_accounts_social_listeners_engagements_top_accounts_get";
49
+ markPost: "mark_post_social_listeners_posts__post_id__mark_post";
50
+ matchJobChangeSignals: "match_job_change_signals_hiring_signals_job_changes_match_post";
51
+ previewKeywordUrls: "preview_keyword_urls_intent_keywords_preview_post";
52
+ previewListenerCost: "preview_listener_cost_social_listeners_preview_cost_post";
53
+ proposeHiringKeywords: "propose_hiring_keywords_intent_keywords_auto_seed_proposals_post";
54
+ resolveHiringCompanyIds: "resolve_hiring_company_ids_hiring_signals_companies_resolve_ids_post";
55
+ resolveJobsForKeyword: "resolve_jobs_for_keyword_intent_keywords__keyword_id__job_resolution_post";
56
+ rollupAbmCompanies: "rollup_abm_companies_intent_abm_rollup_post";
57
+ saveIntentToContactMetadata: "save_intent_to_contact_metadata_intent_contacts_metadata_post";
58
+ saveKeywordSyncConfig: "save_keyword_sync_config_intent_keywords__keyword_id__sync_config_patch";
59
+ savePostAuthorAsContact: "save_post_author_as_contact_social_listeners_posts__post_id__save_contact_post";
60
+ searchHiringAggregators: "search_hiring_aggregators_hiring_signals_aggregators_post";
61
+ searchHiringCompanies: "search_hiring_companies_hiring_signals_companies_post";
62
+ searchHiringDecisionMakers: "search_hiring_decision_makers_hiring_signals_decision_makers_post";
63
+ searchHiringJobs: "search_hiring_jobs_hiring_signals_jobs_post";
64
+ searchHiringRecruiters: "search_hiring_recruiters_hiring_signals_recruiters_post";
65
+ searchMatchedPosts: "search_matched_posts_social_listeners_posts_search_post";
66
+ searchPostEngagements: "search_post_engagements_social_listeners_posts__post_id__engagements_search_post";
67
+ testXCredentials: "test_x_credentials_social_listeners_integrations_x_test_post";
68
+ triggerKeywordSync: "trigger_keyword_sync_intent_keywords__keyword_id__sync_post";
69
+ updateHiringKeyword: "update_hiring_keyword_intent_keywords__keyword_id__patch";
70
+ updateListener: "update_listener_social_listeners__listener_id__patch";
71
+ updateSocialSettings: "update_social_settings_social_listeners_settings_patch";
72
+ }
73
+
74
+ /** Input and output of every `g8.api.signals` operation, keyed by operationId. */
75
+ export interface SignalsOperations {
76
+ /**
77
+ * POST /social-listeners/posts/{post_id}/engagements/add-to-list
78
+ * Add Engagers To List
79
+ * tier: billable · scope: intent:run
80
+ */
81
+ add_engagers_to_list_social_listeners_posts__post_id__engagements_add_to_list_post: {
82
+ input: {
83
+ path: {
84
+ /** The post's platform-native id. */
85
+ post_id: string;
86
+ };
87
+ headers?: {
88
+ "X-Target-Org-Id"?: string | null;
89
+ };
90
+ body: AddEngagersToListRequest;
91
+ };
92
+ output: ApiResponse_SocialPayload_;
93
+ };
94
+ /**
95
+ * POST /social-listeners/posts/{post_id}/add-to-sequence
96
+ * Add Post Author To Sequence
97
+ * tier: external · scope: intent:run
98
+ */
99
+ add_post_author_to_sequence_social_listeners_posts__post_id__add_to_sequence_post: {
100
+ input: {
101
+ path: {
102
+ /** The post's platform-native id. */
103
+ post_id: string;
104
+ };
105
+ headers?: {
106
+ "X-Target-Org-Id"?: string | null;
107
+ };
108
+ body: AddPostToSequenceRequest;
109
+ };
110
+ output: ApiResponse_SocialPayload_;
111
+ };
112
+ /**
113
+ * POST /social-listeners/auto-seed/all
114
+ * Auto Seed All Listeners
115
+ * tier: billable · scope: intent:run
116
+ */
117
+ auto_seed_all_listeners_social_listeners_auto_seed_all_post: {
118
+ input: {
119
+ headers?: {
120
+ "X-Target-Org-Id"?: string | null;
121
+ };
122
+ body?: SeedChannelsRequest | null;
123
+ };
124
+ output: ApiResponse_SocialPayload_;
125
+ };
126
+ /**
127
+ * POST /social-listeners/auto-seed/brand
128
+ * Auto Seed Brand Listener
129
+ * tier: billable · scope: intent:run
130
+ */
131
+ auto_seed_brand_listener_social_listeners_auto_seed_brand_post: {
132
+ input: {
133
+ headers?: {
134
+ "X-Target-Org-Id"?: string | null;
135
+ };
136
+ };
137
+ output: ApiResponse_SocialPayload_;
138
+ };
139
+ /**
140
+ * POST /social-listeners/auto-seed/competitors
141
+ * Auto Seed Competitor Listeners
142
+ * tier: billable · scope: intent:run
143
+ */
144
+ auto_seed_competitor_listeners_social_listeners_auto_seed_competitors_post: {
145
+ input: {
146
+ headers?: {
147
+ "X-Target-Org-Id"?: string | null;
148
+ };
149
+ };
150
+ output: ApiResponse_SocialPayload_;
151
+ };
152
+ /**
153
+ * POST /social-listeners/auto-seed/engagement
154
+ * Auto Seed Engagement Listeners
155
+ * tier: billable · scope: intent:run
156
+ */
157
+ auto_seed_engagement_listeners_social_listeners_auto_seed_engagement_post: {
158
+ input: {
159
+ headers?: {
160
+ "X-Target-Org-Id"?: string | null;
161
+ };
162
+ body?: SeedChannelsRequest | null;
163
+ };
164
+ output: ApiResponse_SocialPayload_;
165
+ };
166
+ /**
167
+ * POST /social-listeners/auto-seed/keywords
168
+ * Auto Seed Keyword Listeners
169
+ * tier: billable · scope: intent:run
170
+ */
171
+ auto_seed_keyword_listeners_social_listeners_auto_seed_keywords_post: {
172
+ input: {
173
+ headers?: {
174
+ "X-Target-Org-Id"?: string | null;
175
+ };
176
+ };
177
+ output: ApiResponse_SocialPayload_;
178
+ };
179
+ /**
180
+ * POST /social-listeners/bulk-from-list
181
+ * Bulk Create Listeners From List
182
+ * tier: billable · scope: intent:run
183
+ */
184
+ bulk_create_listeners_from_list_social_listeners_bulk_from_list_post: {
185
+ input: {
186
+ headers?: {
187
+ "X-Target-Org-Id"?: string | null;
188
+ };
189
+ body: BulkCreateFromListRequest;
190
+ };
191
+ output: ApiResponse_SocialPayload_;
192
+ };
193
+ /**
194
+ * POST /social-listeners/integrations/x
195
+ * Connect X Credentials
196
+ * tier: billable · scope: intent:run
197
+ */
198
+ connect_x_credentials_social_listeners_integrations_x_post: {
199
+ input: {
200
+ headers?: {
201
+ "X-Target-Org-Id"?: string | null;
202
+ };
203
+ body: XApiCredentialsRequest;
204
+ };
205
+ output: ApiResponse_SocialPayload_;
206
+ };
207
+ /**
208
+ * POST /social-listeners
209
+ * Create Listener
210
+ * tier: billable · scope: intent:run
211
+ */
212
+ create_listener_social_listeners_post: {
213
+ input: {
214
+ headers?: {
215
+ "X-Target-Org-Id"?: string | null;
216
+ };
217
+ body: CreateListenerRequest;
218
+ };
219
+ output: ApiResponse_SocialPayload_;
220
+ };
221
+ /**
222
+ * DELETE /intent/keyword-urls/{url_id}
223
+ * Delete Keyword Url
224
+ * tier: destructive · scope: intent:delete
225
+ */
226
+ delete_keyword_url_intent_keyword_urls__url_id__delete: {
227
+ input: {
228
+ path: {
229
+ /** The keyword URL's id. */
230
+ url_id: string;
231
+ };
232
+ headers?: {
233
+ "X-Target-Org-Id"?: string | null;
234
+ };
235
+ };
236
+ output: ApiResponse_IntentPayload_;
237
+ };
238
+ /**
239
+ * DELETE /social-listeners/{listener_id}
240
+ * Delete Listener
241
+ * tier: destructive · scope: intent:delete
242
+ */
243
+ delete_listener_social_listeners__listener_id__delete: {
244
+ input: {
245
+ path: {
246
+ /** The listener's id. */
247
+ listener_id: string;
248
+ };
249
+ headers?: {
250
+ "X-Target-Org-Id"?: string | null;
251
+ };
252
+ };
253
+ output: ApiResponse_SocialPayload_;
254
+ };
255
+ /**
256
+ * DELETE /social-listeners/integrations/x
257
+ * Disconnect X Credentials
258
+ * tier: destructive · scope: intent:delete
259
+ */
260
+ disconnect_x_credentials_social_listeners_integrations_x_delete: {
261
+ input: {
262
+ headers?: {
263
+ "X-Target-Org-Id"?: string | null;
264
+ };
265
+ };
266
+ output: ApiResponse_SocialPayload_;
267
+ };
268
+ /**
269
+ * POST /social-listeners/queries/generate
270
+ * Generate Listener Query
271
+ * tier: billable · scope: intent:run
272
+ */
273
+ generate_listener_query_social_listeners_queries_generate_post: {
274
+ input: {
275
+ headers?: {
276
+ "X-Target-Org-Id"?: string | null;
277
+ };
278
+ body: GenerateQueryRequest;
279
+ };
280
+ output: ApiResponse_SocialPayload_;
281
+ };
282
+ /**
283
+ * GET /intent/abm/companies/{company_id}/personas
284
+ * Get Abm Company Personas
285
+ * tier: read · scope: intent:read
286
+ */
287
+ get_abm_company_personas_intent_abm_companies__company_id__personas_get: {
288
+ input: {
289
+ path: {
290
+ /** Company id. */
291
+ company_id: number;
292
+ };
293
+ query?: {
294
+ /** Look-back window in days. */
295
+ days?: number;
296
+ /** The same three modes as a keyword's sync config, so this previews what a sync exports. */
297
+ export_mode?: "signals_only" | "icp_plus_signals" | "all_icp_personas";
298
+ /** Score against this ICP. */
299
+ icp_id?: string | null;
300
+ };
301
+ headers?: {
302
+ "X-Target-Org-Id"?: string | null;
303
+ };
304
+ };
305
+ output: ApiResponse_IntentPayload_;
306
+ };
307
+ /**
308
+ * GET /social-listeners/auto-seed-status
309
+ * Get Auto Seed Status
310
+ * tier: read · scope: intent:read
311
+ */
312
+ get_auto_seed_status_social_listeners_auto_seed_status_get: {
313
+ input: {
314
+ query?: {
315
+ /** A job id from `/auto-seed/all`. Omit for the most recent run. */
316
+ job_id?: string | null;
317
+ };
318
+ headers?: {
319
+ "X-Target-Org-Id"?: string | null;
320
+ };
321
+ };
322
+ output: ApiResponse_SocialPayload_;
323
+ };
324
+ /**
325
+ * POST /hiring-signals/companies/job-counts
326
+ * Get Company Job Counts
327
+ * tier: billable · scope: intent:run
328
+ */
329
+ get_company_job_counts_hiring_signals_companies_job_counts_post: {
330
+ input: {
331
+ headers?: {
332
+ "X-Target-Org-Id"?: string | null;
333
+ };
334
+ body: CompanyJobCountsRequest;
335
+ };
336
+ output: ApiResponse_dict_;
337
+ };
338
+ /**
339
+ * GET /hiring-signals/jobs/{job_id}
340
+ * Get Hiring Job Details
341
+ * tier: read · scope: intent:read
342
+ */
343
+ get_hiring_job_details_hiring_signals_jobs__job_id__get: {
344
+ input: {
345
+ path: {
346
+ /** Job id. */
347
+ job_id: number;
348
+ };
349
+ headers?: {
350
+ "X-Target-Org-Id"?: string | null;
351
+ };
352
+ };
353
+ output: ApiResponse_JobDetails_;
354
+ };
355
+ /**
356
+ * GET /intent/keywords/{keyword_id}/job-resolution
357
+ * Get Job Resolution Status
358
+ * tier: read · scope: intent:read
359
+ */
360
+ get_job_resolution_status_intent_keywords__keyword_id__job_resolution_get: {
361
+ input: {
362
+ path: {
363
+ /** The keyword's id. */
364
+ keyword_id: string;
365
+ };
366
+ headers?: {
367
+ "X-Target-Org-Id"?: string | null;
368
+ };
369
+ };
370
+ output: ApiResponse_IntentPayload_;
371
+ };
372
+ /**
373
+ * GET /intent/keywords/{keyword_id}/sync-config
374
+ * Get Keyword Sync Config
375
+ * tier: read · scope: intent:read
376
+ */
377
+ get_keyword_sync_config_intent_keywords__keyword_id__sync_config_get: {
378
+ input: {
379
+ path: {
380
+ /** The keyword's id. */
381
+ keyword_id: string;
382
+ };
383
+ headers?: {
384
+ "X-Target-Org-Id"?: string | null;
385
+ };
386
+ };
387
+ output: ApiResponse_IntentPayload_;
388
+ };
389
+ /**
390
+ * GET /social-listeners/{listener_id}
391
+ * Get Listener
392
+ * tier: read · scope: intent:read
393
+ */
394
+ get_listener_social_listeners__listener_id__get: {
395
+ input: {
396
+ path: {
397
+ /** The listener's id. */
398
+ listener_id: string;
399
+ };
400
+ headers?: {
401
+ "X-Target-Org-Id"?: string | null;
402
+ };
403
+ };
404
+ output: ApiResponse_SocialPayload_;
405
+ };
406
+ /**
407
+ * GET /social-listeners/settings
408
+ * Get Social Settings
409
+ * tier: read · scope: intent:read
410
+ */
411
+ get_social_settings_social_listeners_settings_get: {
412
+ input: {
413
+ headers?: {
414
+ "X-Target-Org-Id"?: string | null;
415
+ };
416
+ };
417
+ output: ApiResponse_SocialPayload_;
418
+ };
419
+ /**
420
+ * GET /social-listeners/stats
421
+ * Get Social Stats
422
+ * tier: read · scope: intent:read
423
+ */
424
+ get_social_stats_social_listeners_stats_get: {
425
+ input: {
426
+ headers?: {
427
+ "X-Target-Org-Id"?: string | null;
428
+ };
429
+ };
430
+ output: ApiResponse_SocialPayload_;
431
+ };
432
+ /**
433
+ * GET /social-listeners/integrations/x/mode
434
+ * Get X Effective Mode
435
+ * tier: read · scope: intent:read
436
+ */
437
+ get_x_effective_mode_social_listeners_integrations_x_mode_get: {
438
+ input: {
439
+ headers?: {
440
+ "X-Target-Org-Id"?: string | null;
441
+ };
442
+ };
443
+ output: ApiResponse_SocialPayload_;
444
+ };
445
+ /**
446
+ * GET /social-listeners/integrations/x
447
+ * Get X Integration
448
+ * tier: read · scope: intent:read
449
+ */
450
+ get_x_integration_social_listeners_integrations_x_get: {
451
+ input: {
452
+ headers?: {
453
+ "X-Target-Org-Id"?: string | null;
454
+ };
455
+ };
456
+ output: ApiResponse_SocialPayload_;
457
+ };
458
+ /**
459
+ * GET /intent/abm/companies
460
+ * List Abm Companies
461
+ * tier: read · scope: intent:read
462
+ */
463
+ list_abm_companies_intent_abm_companies_get: {
464
+ input: {
465
+ query?: {
466
+ /** Look-back window in days. */
467
+ days?: number;
468
+ /** Comma-separated keyword ids to restrict to. */
469
+ keyword_ids?: string | null;
470
+ /** Score against this ICP. */
471
+ icp_id?: string | null;
472
+ page?: number;
473
+ limit?: number;
474
+ /** Grid filter model as JSON, passed through unchanged. */
475
+ agFilterModel?: string | null;
476
+ /** Grid sort model as JSON (`colId`, `sort`). */
477
+ agSortModel?: string | null;
478
+ };
479
+ headers?: {
480
+ "X-Target-Org-Id"?: string | null;
481
+ };
482
+ };
483
+ output: ApiResponse_IntentPayload_;
484
+ };
485
+ /**
486
+ * GET /hiring-signals/companies/{linkedin_company_id}/jobs
487
+ * List Company Hiring Jobs
488
+ * tier: read · scope: intent:read
489
+ */
490
+ list_company_hiring_jobs_hiring_signals_companies__linkedin_company_id__jobs_get: {
491
+ input: {
492
+ path: {
493
+ /** LinkedIn company id (lcid). */
494
+ linkedin_company_id: number;
495
+ };
496
+ query?: {
497
+ limit?: number;
498
+ window_days?: number;
499
+ /** Expand the lcid to its subsidiaries, so a parent company's view surfaces postings made under a child lcid. On by default because the parent is usually who the customer is selling to. */
500
+ include_subsidiaries?: boolean;
501
+ };
502
+ headers?: {
503
+ "X-Target-Org-Id"?: string | null;
504
+ };
505
+ };
506
+ output: ApiResponse_JobSearchResponse_;
507
+ };
508
+ /**
509
+ * GET /hiring-signals/companies/{linkedin_company_id}/linkedin-posts
510
+ * List Company Linkedin Posts
511
+ * tier: read · scope: intent:read
512
+ */
513
+ list_company_linkedin_posts_hiring_signals_companies__linkedin_company_id__linkedin_posts_get: {
514
+ input: {
515
+ path: {
516
+ /** LinkedIn company id (lcid). */
517
+ linkedin_company_id: number;
518
+ };
519
+ query?: {
520
+ limit?: number;
521
+ /** Optional age cap in days. OMIT to get the newest posts regardless of age. */
522
+ window_days?: number | null;
523
+ };
524
+ headers?: {
525
+ "X-Target-Org-Id"?: string | null;
526
+ };
527
+ };
528
+ output: ApiResponse_JobSearchResponse_;
529
+ };
530
+ /**
531
+ * GET /hiring-signals/job-changes
532
+ * List Job Change Signals
533
+ * tier: read · scope: intent:read
534
+ */
535
+ list_job_change_signals_hiring_signals_job_changes_get: {
536
+ input: {
537
+ query?: {
538
+ /** Filter to a single contact. */
539
+ contact_id?: number | null;
540
+ /** Filter to a single Talent Moves listener. */
541
+ listener_id?: string | null;
542
+ /** Only events detected at or after this ISO timestamp. */
543
+ since?: string | null;
544
+ limit?: number;
545
+ offset?: number;
546
+ };
547
+ headers?: {
548
+ "X-Target-Org-Id"?: string | null;
549
+ };
550
+ };
551
+ output: ApiResponse_JobChangeSignalsResponse_;
552
+ };
553
+ /**
554
+ * GET /social-listeners
555
+ * List Listeners
556
+ * tier: read · scope: intent:read
557
+ */
558
+ list_listeners_social_listeners_get: {
559
+ input: {
560
+ headers?: {
561
+ "X-Target-Org-Id"?: string | null;
562
+ };
563
+ };
564
+ output: ApiResponse_SocialCollection_;
565
+ };
566
+ /**
567
+ * GET /social-listeners/posts/by-contact/{contact_id}
568
+ * List Posts By Contact
569
+ * tier: read · scope: intent:read
570
+ */
571
+ list_posts_by_contact_social_listeners_posts_by_contact__contact_id__get: {
572
+ input: {
573
+ path: {
574
+ /** Contact id. */
575
+ contact_id: number;
576
+ };
577
+ query?: {
578
+ limit?: number;
579
+ };
580
+ headers?: {
581
+ "X-Target-Org-Id"?: string | null;
582
+ };
583
+ };
584
+ output: ApiResponse_SocialCollection_;
585
+ };
586
+ /**
587
+ * GET /social-listeners/source-lists
588
+ * List Source Lists
589
+ * tier: read · scope: intent:read
590
+ */
591
+ list_source_lists_social_listeners_source_lists_get: {
592
+ input: {
593
+ query?: {
594
+ /** Filter to one audience type. */
595
+ audience_type?: string | null;
596
+ /** Only lists still in use. */
597
+ active_only?: boolean;
598
+ };
599
+ headers?: {
600
+ "X-Target-Org-Id"?: string | null;
601
+ };
602
+ };
603
+ output: ApiResponse_SocialCollection_;
604
+ };
605
+ /**
606
+ * GET /social-listeners/engagements/top-accounts
607
+ * List Top Engaged Accounts
608
+ * tier: read · scope: intent:read
609
+ */
610
+ list_top_engaged_accounts_social_listeners_engagements_top_accounts_get: {
611
+ input: {
612
+ query?: {
613
+ days?: number;
614
+ platform?: ("x" | "linkedin" | "reddit" | "instagram" | "youtube") | null;
615
+ /** Only accounts that engaged this often. */
616
+ min_posts?: number;
617
+ limit?: number;
618
+ };
619
+ headers?: {
620
+ "X-Target-Org-Id"?: string | null;
621
+ };
622
+ };
623
+ output: ApiResponse_SocialCollection_;
624
+ };
625
+ /**
626
+ * POST /social-listeners/posts/{post_id}/mark
627
+ * Mark Post
628
+ * tier: billable · scope: intent:run
629
+ */
630
+ mark_post_social_listeners_posts__post_id__mark_post: {
631
+ input: {
632
+ path: {
633
+ /** The post's platform-native id. */
634
+ post_id: string;
635
+ };
636
+ query?: {
637
+ /** Which platform the post id belongs to. */
638
+ platform?: "x" | "linkedin" | "reddit" | "instagram" | "youtube";
639
+ };
640
+ headers?: {
641
+ "X-Target-Org-Id"?: string | null;
642
+ };
643
+ body: MarkPostRequest;
644
+ };
645
+ output: ApiResponse_SocialPayload_;
646
+ };
647
+ /**
648
+ * POST /hiring-signals/job-changes/match
649
+ * Match Job Change Signals
650
+ * tier: billable · scope: intent:run
651
+ */
652
+ match_job_change_signals_hiring_signals_job_changes_match_post: {
653
+ input: {
654
+ headers?: {
655
+ "X-Target-Org-Id"?: string | null;
656
+ };
657
+ body: JobChangeMatchRequest;
658
+ };
659
+ output: ApiResponse_JobChangeSignalsResponse_;
660
+ };
661
+ /**
662
+ * POST /intent/keywords/preview
663
+ * Preview Keyword Urls
664
+ * tier: read · scope: intent:read
665
+ */
666
+ preview_keyword_urls_intent_keywords_preview_post: {
667
+ input: {
668
+ headers?: {
669
+ "X-Target-Org-Id"?: string | null;
670
+ };
671
+ body: PreviewKeywordUrlsRequest;
672
+ };
673
+ output: ApiResponse_IntentPayload_;
674
+ };
675
+ /**
676
+ * POST /social-listeners/preview-cost
677
+ * Preview Listener Cost
678
+ * tier: read · scope: intent:read
679
+ */
680
+ preview_listener_cost_social_listeners_preview_cost_post: {
681
+ input: {
682
+ headers?: {
683
+ "X-Target-Org-Id"?: string | null;
684
+ };
685
+ body: PreviewCostRequest;
686
+ };
687
+ output: ApiResponse_SocialPayload_;
688
+ };
689
+ /**
690
+ * POST /intent/keywords/auto-seed-proposals
691
+ * Propose Hiring Keywords
692
+ * tier: billable · scope: intent:run
693
+ */
694
+ propose_hiring_keywords_intent_keywords_auto_seed_proposals_post: {
695
+ input: {
696
+ headers?: {
697
+ "X-Target-Org-Id"?: string | null;
698
+ };
699
+ body: AutoSeedProposalsRequest;
700
+ };
701
+ output: ApiResponse_IntentPayload_;
702
+ };
703
+ /**
704
+ * POST /hiring-signals/companies/resolve-ids
705
+ * Resolve Hiring Company Ids
706
+ * tier: billable · scope: intent:run
707
+ */
708
+ resolve_hiring_company_ids_hiring_signals_companies_resolve_ids_post: {
709
+ input: {
710
+ headers?: {
711
+ "X-Target-Org-Id"?: string | null;
712
+ };
713
+ body: ResolveCompanyIdsRequest;
714
+ };
715
+ output: ApiResponse_dict_;
716
+ };
717
+ /**
718
+ * POST /intent/keywords/{keyword_id}/job-resolution
719
+ * Resolve Jobs For Keyword
720
+ * tier: billable · scope: intent:run
721
+ */
722
+ resolve_jobs_for_keyword_intent_keywords__keyword_id__job_resolution_post: {
723
+ input: {
724
+ path: {
725
+ /** The keyword's id. */
726
+ keyword_id: string;
727
+ };
728
+ headers?: {
729
+ "X-Target-Org-Id"?: string | null;
730
+ };
731
+ };
732
+ output: ApiResponse_IntentPayload_;
733
+ };
734
+ /**
735
+ * POST /intent/abm/rollup
736
+ * Rollup Abm Companies
737
+ * tier: read · scope: intent:read
738
+ */
739
+ rollup_abm_companies_intent_abm_rollup_post: {
740
+ input: {
741
+ headers?: {
742
+ "X-Target-Org-Id"?: string | null;
743
+ };
744
+ body: AbmRollupRequest;
745
+ };
746
+ output: ApiResponse_IntentPayload_;
747
+ };
748
+ /**
749
+ * POST /intent/contacts/metadata
750
+ * Save Intent To Contact Metadata
751
+ * tier: billable · scope: intent:run
752
+ */
753
+ save_intent_to_contact_metadata_intent_contacts_metadata_post: {
754
+ input: {
755
+ headers?: {
756
+ "X-Target-Org-Id"?: string | null;
757
+ };
758
+ body: SaveIntentToMetadataRequest;
759
+ };
760
+ output: ApiResponse_IntentPayload_;
761
+ };
762
+ /**
763
+ * PATCH /intent/keywords/{keyword_id}/sync-config
764
+ * Save Keyword Sync Config
765
+ * tier: billable · scope: intent:run
766
+ */
767
+ save_keyword_sync_config_intent_keywords__keyword_id__sync_config_patch: {
768
+ input: {
769
+ path: {
770
+ /** The keyword's id. */
771
+ keyword_id: string;
772
+ };
773
+ headers?: {
774
+ "X-Target-Org-Id"?: string | null;
775
+ };
776
+ body: KeywordSyncConfigRequest;
777
+ };
778
+ output: ApiResponse_IntentPayload_;
779
+ };
780
+ /**
781
+ * POST /social-listeners/posts/{post_id}/save-contact
782
+ * Save Post Author As Contact
783
+ * tier: billable · scope: intent:run
784
+ */
785
+ save_post_author_as_contact_social_listeners_posts__post_id__save_contact_post: {
786
+ input: {
787
+ path: {
788
+ /** The post's platform-native id. */
789
+ post_id: string;
790
+ };
791
+ query?: {
792
+ platform?: "x" | "linkedin" | "reddit" | "instagram" | "youtube";
793
+ };
794
+ headers?: {
795
+ "X-Target-Org-Id"?: string | null;
796
+ };
797
+ };
798
+ output: ApiResponse_SocialPayload_;
799
+ };
800
+ /**
801
+ * POST /hiring-signals/aggregators
802
+ * Search Hiring Aggregators
803
+ * tier: billable · scope: intent:run
804
+ */
805
+ search_hiring_aggregators_hiring_signals_aggregators_post: {
806
+ input: {
807
+ headers?: {
808
+ "X-Target-Org-Id"?: string | null;
809
+ };
810
+ body: JobSearchRequest;
811
+ };
812
+ output: ApiResponse_JobSearchResponse_;
813
+ };
814
+ /**
815
+ * POST /hiring-signals/companies
816
+ * Search Hiring Companies
817
+ * tier: billable · scope: intent:run
818
+ */
819
+ search_hiring_companies_hiring_signals_companies_post: {
820
+ input: {
821
+ headers?: {
822
+ "X-Target-Org-Id"?: string | null;
823
+ };
824
+ body: JobSearchRequest;
825
+ };
826
+ output: ApiResponse_JobSearchResponse_;
827
+ };
828
+ /**
829
+ * POST /hiring-signals/decision-makers
830
+ * Search Hiring Decision Makers
831
+ * tier: billable · scope: intent:run
832
+ */
833
+ search_hiring_decision_makers_hiring_signals_decision_makers_post: {
834
+ input: {
835
+ headers?: {
836
+ "X-Target-Org-Id"?: string | null;
837
+ };
838
+ body: JobSearchRequest;
839
+ };
840
+ output: ApiResponse_JobSearchResponse_;
841
+ };
842
+ /**
843
+ * POST /hiring-signals/jobs
844
+ * Search Hiring Jobs
845
+ * tier: billable · scope: intent:run
846
+ */
847
+ search_hiring_jobs_hiring_signals_jobs_post: {
848
+ input: {
849
+ headers?: {
850
+ "X-Target-Org-Id"?: string | null;
851
+ };
852
+ body: JobSearchRequest;
853
+ };
854
+ output: ApiResponse_JobSearchResponse_;
855
+ };
856
+ /**
857
+ * POST /hiring-signals/recruiters
858
+ * Search Hiring Recruiters
859
+ * tier: billable · scope: intent:run
860
+ */
861
+ search_hiring_recruiters_hiring_signals_recruiters_post: {
862
+ input: {
863
+ headers?: {
864
+ "X-Target-Org-Id"?: string | null;
865
+ };
866
+ body: JobSearchRequest;
867
+ };
868
+ output: ApiResponse_JobSearchResponse_;
869
+ };
870
+ /**
871
+ * POST /social-listeners/posts/search
872
+ * Search Matched Posts
873
+ * tier: read · scope: intent:read
874
+ */
875
+ search_matched_posts_social_listeners_posts_search_post: {
876
+ input: {
877
+ headers?: {
878
+ "X-Target-Org-Id"?: string | null;
879
+ };
880
+ body: SearchPostsRequest;
881
+ };
882
+ output: ApiResponse_SocialCollection_;
883
+ };
884
+ /**
885
+ * POST /social-listeners/posts/{post_id}/engagements/search
886
+ * Search Post Engagements
887
+ * tier: read · scope: intent:read
888
+ */
889
+ search_post_engagements_social_listeners_posts__post_id__engagements_search_post: {
890
+ input: {
891
+ path: {
892
+ /** The post's platform-native id. */
893
+ post_id: string;
894
+ };
895
+ headers?: {
896
+ "X-Target-Org-Id"?: string | null;
897
+ };
898
+ body: SearchPostEngagementsRequest;
899
+ };
900
+ output: ApiResponse_SocialCollection_;
901
+ };
902
+ /**
903
+ * POST /social-listeners/integrations/x/test
904
+ * Test X Credentials
905
+ * tier: billable · scope: intent:run
906
+ */
907
+ test_x_credentials_social_listeners_integrations_x_test_post: {
908
+ input: {
909
+ headers?: {
910
+ "X-Target-Org-Id"?: string | null;
911
+ };
912
+ body: XApiCredentialsRequest;
913
+ };
914
+ output: ApiResponse_SocialPayload_;
915
+ };
916
+ /**
917
+ * POST /intent/keywords/{keyword_id}/sync
918
+ * Trigger Keyword Sync
919
+ * tier: billable · scope: intent:run
920
+ */
921
+ trigger_keyword_sync_intent_keywords__keyword_id__sync_post: {
922
+ input: {
923
+ path: {
924
+ /** The keyword's id. */
925
+ keyword_id: string;
926
+ };
927
+ headers?: {
928
+ "X-Target-Org-Id"?: string | null;
929
+ };
930
+ };
931
+ output: ApiResponse_IntentPayload_;
932
+ };
933
+ /**
934
+ * PATCH /intent/keywords/{keyword_id}
935
+ * Update Hiring Keyword
936
+ * tier: billable · scope: intent:run
937
+ */
938
+ update_hiring_keyword_intent_keywords__keyword_id__patch: {
939
+ input: {
940
+ path: {
941
+ /** The keyword's id. */
942
+ keyword_id: string;
943
+ };
944
+ headers?: {
945
+ "X-Target-Org-Id"?: string | null;
946
+ };
947
+ body: UpdateKeywordRequest;
948
+ };
949
+ output: ApiResponse_IntentPayload_;
950
+ };
951
+ /**
952
+ * PATCH /social-listeners/{listener_id}
953
+ * Update Listener
954
+ * tier: billable · scope: intent:run
955
+ */
956
+ update_listener_social_listeners__listener_id__patch: {
957
+ input: {
958
+ path: {
959
+ /** The listener's id. */
960
+ listener_id: string;
961
+ };
962
+ headers?: {
963
+ "X-Target-Org-Id"?: string | null;
964
+ };
965
+ body: PatchListenerRequest;
966
+ };
967
+ output: ApiResponse_SocialPayload_;
968
+ };
969
+ /**
970
+ * PATCH /social-listeners/settings
971
+ * Update Social Settings
972
+ * tier: billable · scope: intent:run
973
+ */
974
+ update_social_settings_social_listeners_settings_patch: {
975
+ input: {
976
+ headers?: {
977
+ "X-Target-Org-Id"?: string | null;
978
+ };
979
+ body: PatchSocialSettingsRequest;
980
+ };
981
+ output: ApiResponse_SocialPayload_;
982
+ };
983
+ }
984
+
985
+ // 40 schemas referenced above (the same as G8Contract.<Name>).
986
+
987
+ /** Intent totals for a named set of accounts. */
988
+ export interface AbmRollupRequest {
989
+ /** Company ids, at most 500 per call - the app refuses more; chunk larger sets. */
990
+ company_ids: Array<number>;
991
+ /** Look-back window in days. */
992
+ days?: number;
993
+ }
994
+
995
+ /**
996
+ * Turn the people who engaged with a post into a graph8 list.
997
+ *
998
+ * Supply `audience_id` to add to an existing list, or `audience_name` to
999
+ * create one. Contacts that do not exist yet are created as stubs.
1000
+ */
1001
+ export interface AddEngagersToListRequest {
1002
+ /** An existing graph8 list. */
1003
+ audience_id?: string | null;
1004
+ /** Create a new graph8 list with this name. */
1005
+ audience_name?: string | null;
1006
+ /** Only commenters, or only reactors. Omit for both. */
1007
+ engagement_type?: ("comment" | "reaction") | null;
1008
+ platform?: "x" | "linkedin" | "reddit" | "instagram" | "youtube";
1009
+ /** Optional echo of the path id. The PATH value is authoritative. */
1010
+ post_external_id?: string | null;
1011
+ }
1012
+
1013
+ /**
1014
+ * Enrol a post's author into a sequence.
1015
+ *
1016
+ * ASYNCHRONOUS. This resolves the author to a contact and publishes an
1017
+ * enrolment request; the sequencer picks it up afterwards. A 200 means the
1018
+ * request was accepted, not that the person is enrolled.
1019
+ */
1020
+ export interface AddPostToSequenceRequest {
1021
+ platform?: "x" | "linkedin" | "reddit" | "instagram" | "youtube";
1022
+ sequence_id: string;
1023
+ }
1024
+
1025
+ export interface ApiResponse_IntentPayload_ {
1026
+ data: IntentPayload;
1027
+ pagination?: PaginationMeta | null;
1028
+ }
1029
+
1030
+ export interface ApiResponse_JobChangeSignalsResponse_ {
1031
+ data: JobChangeSignalsResponse;
1032
+ pagination?: PaginationMeta | null;
1033
+ }
1034
+
1035
+ export interface ApiResponse_JobDetails_ {
1036
+ data: JobDetails;
1037
+ pagination?: PaginationMeta | null;
1038
+ }
1039
+
1040
+ export interface ApiResponse_JobSearchResponse_ {
1041
+ data: JobSearchResponse;
1042
+ pagination?: PaginationMeta | null;
1043
+ }
1044
+
1045
+ export interface ApiResponse_SocialCollection_ {
1046
+ data: SocialCollection;
1047
+ pagination?: PaginationMeta | null;
1048
+ }
1049
+
1050
+ export interface ApiResponse_SocialPayload_ {
1051
+ data: SocialPayload;
1052
+ pagination?: PaginationMeta | null;
1053
+ }
1054
+
1055
+ export interface ApiResponse_dict_ {
1056
+ data: Record<string, unknown>;
1057
+ pagination?: PaginationMeta | null;
1058
+ }
1059
+
1060
+ /** Propose hiring keywords from the org's own context. */
1061
+ export interface AutoSeedProposalsRequest {
1062
+ /** `jobs` (Hiring Wave) or `job_changes` (Talent Moves). */
1063
+ signal_type?: "jobs" | "job_changes";
1064
+ }
1065
+
1066
+ /**
1067
+ * Create one `user` listener per social profile on a graph8 list.
1068
+ *
1069
+ * No platform lookup happens here - handles are resolved lazily by the
1070
+ * polling worker, so this does not consume quota per row at creation time.
1071
+ */
1072
+ export interface BulkCreateFromListRequest {
1073
+ /** The graph8 audience to read profiles from. */
1074
+ list_id: number;
1075
+ /** Only `user` listeners can be bulk-created from a list. */
1076
+ listener_type?: "user";
1077
+ platform?: "x" | "linkedin" | "reddit" | "instagram" | "youtube";
1078
+ /** Create one listener per platform. Overrides `platform`. */
1079
+ platforms?: (Array<"x" | "linkedin" | "reddit" | "instagram" | "youtube">) | null;
1080
+ }
1081
+
1082
+ /** Per-channel spend and volume ceilings. */
1083
+ export interface ChannelSettingsRule {
1084
+ enabled?: boolean;
1085
+ /** Fetch who engaged with each matched post. Multiplies what a poll costs. */
1086
+ fetch_engagements?: boolean;
1087
+ max_comments_per_post?: number;
1088
+ max_reactions_per_post?: number;
1089
+ monthly_credit_cap?: number;
1090
+ per_poll_result_cap?: number;
1091
+ }
1092
+
1093
+ /** Active-job counts for a page of companies. */
1094
+ export interface CompanyJobCountsRequest {
1095
+ /** LinkedIn company ids (lcids). Capped at 1000 - one grid page, not a corpus scan. */
1096
+ linkedin_company_ids?: Array<number>;
1097
+ window_days?: number;
1098
+ }
1099
+
1100
+ /** When a matched post's author becomes a graph8 contact. */
1101
+ export interface ContactCaptureRule {
1102
+ enabled?: boolean;
1103
+ min_followers?: number;
1104
+ only_when_classified?: boolean;
1105
+ }
1106
+
1107
+ /**
1108
+ * Start watching something. THIS CAN SPEND CREDITS.
1109
+ *
1110
+ * A `brand` listener with no `query` builds one with an LLM call, which is
1111
+ * charged. Every other combination writes a row and the polling worker does
1112
+ * the fetching from then on.
1113
+ */
1114
+ export interface CreateListenerRequest {
1115
+ filters?: Record<string, unknown>;
1116
+ /** Rebuild a brand query even though one exists. Spends a credit to do it. */
1117
+ force_rebuild_brand?: boolean;
1118
+ /** `brand` and `competitor` watch a named entity, `keyword` watches a query, `engagement` watches an ICP-shaped bucket, `user` watches one account's posts. */
1119
+ listener_type: "brand" | "competitor" | "keyword" | "engagement" | "user";
1120
+ /** Per-listener ceiling on credits. The one field that BOUNDS what this costs. */
1121
+ monthly_credit_cap?: number | null;
1122
+ name: string;
1123
+ platform?: "x" | "linkedin" | "reddit" | "instagram" | "youtube";
1124
+ /** How often the worker polls. Shorter means more matches AND more spend. */
1125
+ poll_interval_sec?: number | null;
1126
+ /** Platform-native search query. OMITTING this on a `brand` listener makes the app build one with an LLM call, which SPENDS CREDITS. Supply a query, or call `POST /social-listeners/queries/generate` first if you want to see it before committing. */
1127
+ query?: string | null;
1128
+ /** Required for a `user` listener: the account to watch. */
1129
+ target_handle?: string | null;
1130
+ }
1131
+
1132
+ /**
1133
+ * Turn a plain-English description into a platform-native query.
1134
+ *
1135
+ * THIS SPENDS CREDITS - it is an LLM call. It returns the query rather than
1136
+ * creating a listener, so you can read it before committing to one.
1137
+ */
1138
+ export interface GenerateQueryRequest {
1139
+ description: string;
1140
+ listener_type: "brand" | "competitor" | "keyword" | "engagement" | "user";
1141
+ }
1142
+
1143
+ /**
1144
+ * One intent object or handler response.
1145
+ *
1146
+ * Open-shaped: these payloads carry corpus detail that grows with the corpus.
1147
+ * A list result is returned under `items`.
1148
+ */
1149
+ export type IntentPayload = Record<string, unknown>;
1150
+
1151
+ /** Look up which LinkedIn profiles changed job recently. */
1152
+ export interface JobChangeMatchRequest {
1153
+ /** LinkedIn profile URLs to match against the last 90 days of job-change events. */
1154
+ linkedin_urls: Array<string>;
1155
+ }
1156
+
1157
+ /**
1158
+ * Job-change events for this org.
1159
+ *
1160
+ * Identifying fields are REDACTED unless the caller holds a Signals write
1161
+ * capability - these are real named people who moved employer, which is
1162
+ * exactly the data a read-only role is not meant to export.
1163
+ */
1164
+ export interface JobChangeSignalsResponse {
1165
+ signals?: Array<Record<string, unknown>>;
1166
+ total?: number;
1167
+ [key: string]: unknown;
1168
+ }
1169
+
1170
+ /** One posting, with its company, recruiter and the company's other jobs. */
1171
+ export interface JobDetails {
1172
+ company_name?: string | null;
1173
+ job_id?: number | null;
1174
+ job_location?: string | null;
1175
+ linkedin_company_id?: number | null;
1176
+ posted_at?: string | null;
1177
+ title?: string | null;
1178
+ [key: string]: unknown;
1179
+ }
1180
+
1181
+ /**
1182
+ * One request shape for every Hiring Signals tab.
1183
+ *
1184
+ * The app uses a single command for all of them deliberately - the form is
1185
+ * flat, and each handler needs both the base filters and the persona half.
1186
+ * Splitting them here would just add a layer the routes flatten back out.
1187
+ */
1188
+ export interface JobSearchRequest {
1189
+ contacts_per_company?: number;
1190
+ /** Drop postings from job-board aggregators. On by default because an aggregator is not a company that is hiring - it is a company that lists other people's jobs. `/jobs/search/aggregators` returns exactly what this suppressed, so a caller can audit it. */
1191
+ exclude_aggregators?: boolean;
1192
+ /** Run the recruiter aggregation and enrichment hop. Set false to skip two round-trips when only Companies and Decision-makers are needed. */
1193
+ include_recruiters?: boolean;
1194
+ /** Job-title keywords. OR semantics - any match counts. */
1195
+ keywords: Array<string>;
1196
+ /** Page size. Capped at 200 to bound the ClickHouse cost. */
1197
+ limit?: number;
1198
+ /** Free-text token matched case-insensitively against the job location. */
1199
+ location_contains?: string | null;
1200
+ offset?: number;
1201
+ /** Scope to one parent company and its subsidiaries. Omit to search everywhere. */
1202
+ parent_linkedin_company_id?: number | null;
1203
+ /** Max postings counted per company. */
1204
+ per_company_cap?: number;
1205
+ /** Decision-maker department filter. */
1206
+ persona_department?: Array<string> | null;
1207
+ /** Decision-maker seniority filter. */
1208
+ persona_seniority?: Array<string> | null;
1209
+ /** Decision-maker title substring filter. */
1210
+ persona_title_contains?: string | null;
1211
+ /** Recruiter paging, INDEPENDENT of `limit`/`offset`: one recruiter can serve many companies, so the two counts diverge and a caller can page one tab without touching the other. */
1212
+ recruiter_limit?: number;
1213
+ recruiter_offset?: number;
1214
+ /** How far back to look for postings. */
1215
+ window_days?: number;
1216
+ }
1217
+
1218
+ /**
1219
+ * A page of Hiring Signals results.
1220
+ *
1221
+ * Rows stay open dicts: each tab (jobs, companies, decision-makers,
1222
+ * recruiters, aggregators) returns a different shape assembled from
1223
+ * ClickHouse plus OpenSearch, and the columns move as enrichment improves.
1224
+ */
1225
+ export interface JobSearchResponse {
1226
+ results?: Array<Record<string, unknown>>;
1227
+ total?: number;
1228
+ [key: string]: unknown;
1229
+ }
1230
+
1231
+ /**
1232
+ * The filters a keyword's URL set is shaped by.
1233
+ *
1234
+ * Mirrors the app's `KeywordSearchFilters`, including its bounds. Keys beyond
1235
+ * the typed ones are accepted and passed through, as the app accepts them.
1236
+ */
1237
+ export interface KeywordFilters {
1238
+ /** `b2b`, `b2c` or `both`. */
1239
+ audience?: "b2b" | "b2c" | "both";
1240
+ /** Domains to drop. */
1241
+ exclude_domains?: Array<string>;
1242
+ /** Page types to drop from the URL set. */
1243
+ exclude_page_types?: Array<"news" | "finance" | "forum" | "vendor_marketing">;
1244
+ /** Run a model pass over candidate pages. */
1245
+ llm_triage?: boolean;
1246
+ /** Soft cap so no single domain dominates the set. */
1247
+ max_urls_per_domain?: number;
1248
+ /** Drop pages scored below this commercial intent. */
1249
+ min_commercial_intent_level?: number;
1250
+ [key: string]: unknown;
1251
+ }
1252
+
1253
+ /** Wire a keyword to a list, optionally on a schedule. */
1254
+ export interface KeywordSyncConfigRequest {
1255
+ /** Push on a schedule, without anyone calling anything, rather than only on request. */
1256
+ auto_sync_enabled?: boolean;
1257
+ /** Buying committee whose personas are exported. */
1258
+ committee_id?: string | null;
1259
+ /** `signals_only` exports only the people a signal named; `icp_plus_signals` adds the ICP's personas at those companies; `all_icp_personas` exports every persona regardless of signal. */
1260
+ export_mode?: "signals_only" | "icp_plus_signals" | "all_icp_personas";
1261
+ /** Score matches against this ICP. */
1262
+ icp_id?: string | null;
1263
+ /** The list matches are pushed into. */
1264
+ list_id?: number | null;
1265
+ }
1266
+
1267
+ /** Triage one matched post. */
1268
+ export interface MarkPostRequest {
1269
+ status: "reviewed" | "dismissed";
1270
+ }
1271
+
1272
+ export interface PaginationMeta {
1273
+ /** Whether there are more pages */
1274
+ has_next: boolean;
1275
+ /** Items per page */
1276
+ limit: number;
1277
+ /** 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. */
1278
+ next_cursor?: string | null;
1279
+ /** Current page number (1-indexed) */
1280
+ page: number;
1281
+ /** Total number of items */
1282
+ total: number;
1283
+ }
1284
+
1285
+ /**
1286
+ * Partial update. Omitted fields are left alone.
1287
+ *
1288
+ * Changing `target_handle` on a `user` listener re-resolves the account
1289
+ * against the platform, which consumes X API quota.
1290
+ */
1291
+ export interface PatchListenerRequest {
1292
+ filters?: Record<string, unknown> | null;
1293
+ /** False pauses polling without deleting the listener. */
1294
+ is_active?: boolean | null;
1295
+ monthly_credit_cap?: number | null;
1296
+ name?: string | null;
1297
+ poll_interval_sec?: number | null;
1298
+ query?: string | null;
1299
+ target_handle?: string | null;
1300
+ }
1301
+
1302
+ /**
1303
+ * Org-wide social listening settings. Omitted fields are left alone.
1304
+ *
1305
+ * This is the surface that BOUNDS what the whole feature costs -
1306
+ * `monthly_credit_cap`, the per-channel caps and `auto_pause_on_cap` between
1307
+ * them decide whether an over-eager listener can keep spending.
1308
+ */
1309
+ export interface PatchSocialSettingsRequest {
1310
+ /** Alert at this percentage of the cap. */
1311
+ alert_threshold_pct?: number | null;
1312
+ auto_archive_days?: number | null;
1313
+ auto_create_contacts?: boolean | null;
1314
+ /** Stop polling when the cap is reached, rather than alerting. */
1315
+ auto_pause_on_cap?: boolean | null;
1316
+ /** Keyed by platform. Keys the app does not recognise are dropped by its own merge - it rebuilds the map from the supported set. */
1317
+ channel_settings?: Record<string, ChannelSettingsRule> | null;
1318
+ classifier_model?: string | null;
1319
+ contact_capture?: Record<string, ContactCaptureRule> | null;
1320
+ monthly_credit_cap?: number | null;
1321
+ /** Org-wide monthly credit ceiling across the non-X channels (LinkedIn, Reddit, Instagram, YouTube) together. 0 means no org-wide ceiling; the per-channel caps in `channel_settings` still apply. */
1322
+ other_channels_monthly_credit_cap?: number | null;
1323
+ }
1324
+
1325
+ /** Ask what a listener WOULD cost. Charges nothing. */
1326
+ export interface PreviewCostRequest {
1327
+ listener_type: "brand" | "competitor" | "keyword" | "engagement" | "user";
1328
+ platform?: "x" | "linkedin" | "reddit" | "instagram" | "youtube";
1329
+ /** The interval to cost. Shorter intervals cost more. */
1330
+ poll_interval_sec?: number;
1331
+ query?: string | null;
1332
+ target_handle?: string | null;
1333
+ }
1334
+
1335
+ /** What a keyword WOULD match, without creating it. */
1336
+ export interface PreviewKeywordUrlsRequest {
1337
+ /** The keyword to preview. */
1338
+ keyword: string;
1339
+ /** Filters to preview it with. */
1340
+ search_filters?: KeywordFilters;
1341
+ }
1342
+
1343
+ /**
1344
+ * Turn LinkedIn company ids into graph8 company ids.
1345
+ *
1346
+ * This is what makes a Hiring Signals result actionable: the search returns
1347
+ * lcids, and a list or a sequence needs graph8 ids. The handler caps the
1348
+ * input server-side regardless of what is sent.
1349
+ */
1350
+ export interface ResolveCompanyIdsRequest {
1351
+ linkedin_company_ids?: Array<number>;
1352
+ }
1353
+
1354
+ /**
1355
+ * Write each contact's resolved intent onto the contact record.
1356
+ *
1357
+ * No `org_id`: the org is the authenticated key's own.
1358
+ */
1359
+ export interface SaveIntentToMetadataRequest {
1360
+ /** Overwrite intent metadata already on a contact, rather than only filling gaps. */
1361
+ force_update?: boolean;
1362
+ }
1363
+
1364
+ /** Filters over engagements ALREADY stored against a post. */
1365
+ export interface SearchPostEngagementsRequest {
1366
+ engagement_type?: ("comment" | "reaction") | null;
1367
+ limit?: number;
1368
+ page?: number;
1369
+ platform?: "x" | "linkedin" | "reddit" | "instagram" | "youtube";
1370
+ }
1371
+
1372
+ /** Filters over posts ALREADY matched and stored. Fetches nothing live. */
1373
+ export interface SearchPostsRequest {
1374
+ /** Grid-style filter expressions, passed through unchanged. Their grammar is the app's, not this contract's - a typed model here would freeze a filter language that still moves. */
1375
+ conditions?: Array<Record<string, unknown>>;
1376
+ /** Only posts whose author resolved to a graph8 contact. */
1377
+ has_contact?: boolean | null;
1378
+ /** Hide posts the classifier scored confidently LOW (< 0.5), while keeping never-classified ones visible. Not the same as `min_score=0.5`, which would also hide the unscored. */
1379
+ hide_low_confidence?: boolean | null;
1380
+ limit?: number;
1381
+ listener_id?: string | null;
1382
+ max_score?: number | null;
1383
+ min_score?: number | null;
1384
+ page?: number;
1385
+ platform?: ("x" | "linkedin" | "reddit" | "instagram" | "youtube") | null;
1386
+ since?: string | null;
1387
+ /** `new`, `reviewed` or `dismissed`. */
1388
+ status?: string | null;
1389
+ until?: string | null;
1390
+ }
1391
+
1392
+ /** Which channels an auto-seed targets. Defaults to X alone. */
1393
+ export interface SeedChannelsRequest {
1394
+ channels?: (Array<"x" | "linkedin" | "reddit" | "instagram" | "youtube">) | null;
1395
+ }
1396
+
1397
+ /**
1398
+ * A list of social-listening objects. A bare list is surfaced as `items`;
1399
+ * a named collection keeps its key AND gains `items`.
1400
+ */
1401
+ export interface SocialCollection {
1402
+ items?: Array<unknown>;
1403
+ [key: string]: unknown;
1404
+ }
1405
+
1406
+ /**
1407
+ * One social-listening object, or one handler response.
1408
+ *
1409
+ * Open-shaped: these payloads carry per-platform detail that differs between
1410
+ * X, LinkedIn, Reddit, Instagram and YouTube and grows with them.
1411
+ */
1412
+ export type SocialPayload = Record<string, unknown>;
1413
+
1414
+ /**
1415
+ * Partial update of a HIRING listener (`jobs` / `job_changes` keyword).
1416
+ *
1417
+ * Omitted fields are left alone. The app refuses a plain intent keyword here
1418
+ * with a 404; its filters are replaced with `POST /intent/keywords/{id}/filters`.
1419
+ */
1420
+ export interface UpdateKeywordRequest {
1421
+ /** The listener's name. Must not be blank. */
1422
+ keyword?: string | null;
1423
+ /** FULL REPLACEMENT of the filter object, not a merge - filters left out are dropped. `window_days` must be 1-365 and `contacts_per_company` 1-50 when present. */
1424
+ search_filters?: Record<string, unknown> | null;
1425
+ /** Talent Moves watchlist scope, as a JSON-encoded string. */
1426
+ watchlist_source?: string | null;
1427
+ }
1428
+
1429
+ /**
1430
+ * An X developer app's key and secret.
1431
+ *
1432
+ * WRITE-ONLY. Neither value, nor the bearer token derived from them, is ever
1433
+ * returned by any route on this surface - `GET /social-listeners/integrations/x`
1434
+ * reports whether a connection exists, not what it is.
1435
+ */
1436
+ export interface XApiCredentialsRequest {
1437
+ /** X Developer App API key (consumer key). */
1438
+ api_key: string;
1439
+ /** X Developer App API secret. */
1440
+ api_secret: string;
1441
+ }