@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,210 @@
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.sandbox` (sandbox): 9 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<"sandbox_clear_failure_rules_sandbox_failure_injection_delete">;
9
+ *
10
+ * Reference with examples: sandbox.md
11
+ */
12
+ /* eslint-disable */
13
+
14
+ /** `g8.api.sandbox.<member>` -> the operationId it calls. */
15
+ export interface SandboxMembers {
16
+ sandboxClearFailureRules: "sandbox_clear_failure_rules_sandbox_failure_injection_delete";
17
+ sandboxListFailureRules: "sandbox_list_failure_rules_sandbox_failure_injection_get";
18
+ sandboxOutbox: "sandbox_outbox_sandbox_outbox_get";
19
+ sandboxResetFixtures: "sandbox_reset_fixtures_sandbox_fixtures_reset_post";
20
+ sandboxRestore: "sandbox_restore_sandbox_fixtures_restore_post";
21
+ sandboxSeedFixtures: "sandbox_seed_fixtures_sandbox_fixtures_seed_post";
22
+ sandboxSetFailureRule: "sandbox_set_failure_rule_sandbox_failure_injection_put";
23
+ sandboxSnapshot: "sandbox_snapshot_sandbox_fixtures_snapshot_post";
24
+ sandboxStatus: "sandbox_status_sandbox_status_get";
25
+ }
26
+
27
+ /** Input and output of every `g8.api.sandbox` operation, keyed by operationId. */
28
+ export interface SandboxOperations {
29
+ /**
30
+ * DELETE /sandbox/failure-injection
31
+ * Clear failure rules
32
+ * tier: destructive · scope: sandbox:delete
33
+ */
34
+ sandbox_clear_failure_rules_sandbox_failure_injection_delete: {
35
+ input: {
36
+ query?: {
37
+ /** Clear one channel only; omit for all */
38
+ channel?: string | null;
39
+ };
40
+ headers?: {
41
+ "X-Target-Org-Id"?: string | null;
42
+ };
43
+ };
44
+ output: FailureRulesResponse;
45
+ };
46
+ /**
47
+ * GET /sandbox/failure-injection
48
+ * List failure rules
49
+ * tier: read · scope: sandbox:read
50
+ */
51
+ sandbox_list_failure_rules_sandbox_failure_injection_get: {
52
+ input: {
53
+ headers?: {
54
+ "X-Target-Org-Id"?: string | null;
55
+ };
56
+ };
57
+ output: FailureRulesResponse;
58
+ };
59
+ /**
60
+ * GET /sandbox/outbox
61
+ * List simulated outbox
62
+ * tier: read · scope: sandbox:read
63
+ */
64
+ sandbox_outbox_sandbox_outbox_get: {
65
+ input: {
66
+ query?: {
67
+ /** Filter by channel */
68
+ channel?: string | null;
69
+ limit?: number;
70
+ offset?: number;
71
+ };
72
+ headers?: {
73
+ "X-Target-Org-Id"?: string | null;
74
+ };
75
+ };
76
+ output: OutboxListResponse;
77
+ };
78
+ /**
79
+ * POST /sandbox/fixtures/reset
80
+ * Reset fixture data
81
+ * tier: destructive · scope: sandbox:delete
82
+ */
83
+ sandbox_reset_fixtures_sandbox_fixtures_reset_post: {
84
+ input: {
85
+ headers?: {
86
+ "X-Target-Org-Id"?: string | null;
87
+ };
88
+ };
89
+ output: FixtureActionResponse;
90
+ };
91
+ /**
92
+ * POST /sandbox/fixtures/restore
93
+ * Restore a snapshot
94
+ * tier: destructive · scope: sandbox:delete
95
+ */
96
+ sandbox_restore_sandbox_fixtures_restore_post: {
97
+ input: {
98
+ query?: {
99
+ name?: string;
100
+ };
101
+ headers?: {
102
+ "X-Target-Org-Id"?: string | null;
103
+ };
104
+ };
105
+ output: SnapshotActionResponse;
106
+ };
107
+ /**
108
+ * POST /sandbox/fixtures/seed
109
+ * Seed sample data
110
+ * tier: write · scope: sandbox:write
111
+ */
112
+ sandbox_seed_fixtures_sandbox_fixtures_seed_post: {
113
+ input: {
114
+ headers?: {
115
+ "X-Target-Org-Id"?: string | null;
116
+ };
117
+ };
118
+ output: FixtureActionResponse;
119
+ };
120
+ /**
121
+ * PUT /sandbox/failure-injection
122
+ * Set a failure rule
123
+ * tier: write · scope: sandbox:write
124
+ */
125
+ sandbox_set_failure_rule_sandbox_failure_injection_put: {
126
+ input: {
127
+ headers?: {
128
+ "X-Target-Org-Id"?: string | null;
129
+ };
130
+ body: FailureRuleRequest;
131
+ };
132
+ output: FailureRulesResponse;
133
+ };
134
+ /**
135
+ * POST /sandbox/fixtures/snapshot
136
+ * Snapshot fixture tables
137
+ * tier: write · scope: sandbox:write
138
+ */
139
+ sandbox_snapshot_sandbox_fixtures_snapshot_post: {
140
+ input: {
141
+ query?: {
142
+ name?: string;
143
+ };
144
+ headers?: {
145
+ "X-Target-Org-Id"?: string | null;
146
+ };
147
+ };
148
+ output: SnapshotActionResponse;
149
+ };
150
+ /**
151
+ * GET /sandbox/status
152
+ * Sandbox status
153
+ * tier: read · scope: sandbox:read
154
+ */
155
+ sandbox_status_sandbox_status_get: {
156
+ input: {
157
+ headers?: {
158
+ "X-Target-Org-Id"?: string | null;
159
+ };
160
+ };
161
+ output: SandboxStatusResponse;
162
+ };
163
+ }
164
+
165
+ // 6 schemas referenced above (the same as G8Contract.<Name>).
166
+
167
+ export interface FailureRuleRequest {
168
+ /** Channel the injected failure applies to: email, sms, whatsapp, voice, linkedin, crm, ads, calendar, or '*' for every channel. */
169
+ channel: string;
170
+ /** One of: hard_bounce, provider_error, timeout, rate_limited, invalid_recipient. */
171
+ failure_mode: string;
172
+ /** Fail this many sends, then auto-clear. Omit to fail until cleared. */
173
+ remaining?: number | null;
174
+ }
175
+
176
+ export interface FailureRulesResponse {
177
+ rules: Array<Record<string, unknown>>;
178
+ sandbox?: boolean;
179
+ }
180
+
181
+ export interface FixtureActionResponse {
182
+ action: string;
183
+ companies?: number;
184
+ contacts?: number;
185
+ detail?: string | null;
186
+ sandbox?: boolean;
187
+ }
188
+
189
+ export interface OutboxListResponse {
190
+ count: number;
191
+ items: Array<Record<string, unknown>>;
192
+ sandbox?: boolean;
193
+ }
194
+
195
+ export interface SandboxStatusResponse {
196
+ /** Which graph8 deployment answered: 'sandbox' (developer sandbox), 'qa' (the QA environment) or 'live' (production). */
197
+ environment?: string;
198
+ /** Mode of the API key that made the call: 'live', 'test' or 'sandbox'. */
199
+ key_mode?: string | null;
200
+ message: string;
201
+ org_id: string;
202
+ sandbox?: boolean;
203
+ }
204
+
205
+ export interface SnapshotActionResponse {
206
+ action: string;
207
+ name: string;
208
+ sandbox?: boolean;
209
+ tables: Array<string>;
210
+ }
@@ -0,0 +1,380 @@
1
+ <!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
2
+
3
+ # `g8.api.sandbox`: sandbox
4
+
5
+ 9 operations (3 read, 3 write, 3 destructive).
6
+
7
+ No hand-written client covers this area. Call it through `g8.api.sandbox.*` as shown below, or by operationId with `g8.api.call(operationId, input)`.
8
+
9
+ Every example below assumes this setup (server-side, API key):
10
+
11
+ ```ts
12
+ import { g8 } from "@graph8/sdk";
13
+
14
+ g8.init({ apiKey: process.env.G8_API_KEY! });
15
+ ```
16
+
17
+ Example values are placeholders that match each field's type. Only required fields are shown. Every example is type-checked against the SDK in CI.
18
+
19
+ Exact TypeScript types for every operation on this page, and every schema they use: [sandbox.d.ts](sandbox.d.ts).
20
+
21
+ ## Operations
22
+
23
+ | Call | HTTP | Tier | Scope | Summary |
24
+ |---|---|---|---|---|
25
+ | [`sandboxClearFailureRules`](#op-sandboxclearfailurerules) | `DELETE /api/v1/sandbox/failure-injection` | destructive | `sandbox:delete` | Clear failure rules |
26
+ | [`sandboxListFailureRules`](#op-sandboxlistfailurerules) | `GET /api/v1/sandbox/failure-injection` | read | `sandbox:read` | List failure rules |
27
+ | [`sandboxOutbox`](#op-sandboxoutbox) | `GET /api/v1/sandbox/outbox` | read | `sandbox:read` | List simulated outbox |
28
+ | [`sandboxResetFixtures`](#op-sandboxresetfixtures) | `POST /api/v1/sandbox/fixtures/reset` | destructive | `sandbox:delete` | Reset fixture data |
29
+ | [`sandboxRestore`](#op-sandboxrestore) | `POST /api/v1/sandbox/fixtures/restore` | destructive | `sandbox:delete` | Restore a snapshot |
30
+ | [`sandboxSeedFixtures`](#op-sandboxseedfixtures) | `POST /api/v1/sandbox/fixtures/seed` | write | `sandbox:write` | Seed sample data |
31
+ | [`sandboxSetFailureRule`](#op-sandboxsetfailurerule) | `PUT /api/v1/sandbox/failure-injection` | write | `sandbox:write` | Set a failure rule |
32
+ | [`sandboxSnapshot`](#op-sandboxsnapshot) | `POST /api/v1/sandbox/fixtures/snapshot` | write | `sandbox:write` | Snapshot fixture tables |
33
+ | [`sandboxStatus`](#op-sandboxstatus) | `GET /api/v1/sandbox/status` | read | `sandbox:read` | Sandbox status |
34
+
35
+ ---
36
+
37
+ <a id="op-sandboxclearfailurerules"></a>
38
+
39
+ ### `g8.api.sandbox.sandboxClearFailureRules(input?)`
40
+
41
+ **Clear failure rules**
42
+
43
+ - HTTP: `DELETE /api/v1/sandbox/failure-injection`
44
+ - operationId: `sandbox_clear_failure_rules_sandbox_failure_injection_delete` (also callable as `g8.api.call("sandbox_clear_failure_rules_sandbox_failure_injection_delete", input)`)
45
+ - Tier: `destructive`: deletes or archives data; confirm with a human before calling
46
+ - API-key scope: `sandbox:delete`
47
+ - Sandbox only: available to test-mode keys against the sandbox environment
48
+
49
+ SANDBOX ONLY. This endpoint exists only in the graph8 developer sandbox and returns 404 on the live platform. Call GET /sandbox/status to see which environment your key reaches.
50
+
51
+ **Input**
52
+
53
+ | Field | Type | Required | Description |
54
+ |---|---|---|---|
55
+ | `query.channel` | `string \| null` | no | Clear one channel only; omit for all |
56
+
57
+ **Returns** `FailureRulesResponse`.
58
+
59
+ | Field | Type | Required | Description |
60
+ |---|---|---|---|
61
+ | `rules` | `Array<Record<string, unknown>>` | yes | |
62
+ | `sandbox` | `boolean` | no | default `true` |
63
+
64
+ **Example**
65
+
66
+ ```ts
67
+ // destructive: deletes or archives data; confirm with a human before calling.
68
+ const result = await g8.api.sandbox.sandboxClearFailureRules();
69
+ ```
70
+
71
+ ---
72
+
73
+ <a id="op-sandboxlistfailurerules"></a>
74
+
75
+ ### `g8.api.sandbox.sandboxListFailureRules(input?)`
76
+
77
+ **List failure rules**
78
+
79
+ - HTTP: `GET /api/v1/sandbox/failure-injection`
80
+ - operationId: `sandbox_list_failure_rules_sandbox_failure_injection_get` (also callable as `g8.api.call("sandbox_list_failure_rules_sandbox_failure_injection_get", input)`)
81
+ - Tier: `read`: reads data; safe to call and to retry
82
+ - API-key scope: `sandbox:read`
83
+ - Sandbox only: available to test-mode keys against the sandbox environment
84
+
85
+ SANDBOX ONLY. This endpoint exists only in the graph8 developer sandbox and returns 404 on the live platform. Call GET /sandbox/status to see which environment your key reaches.
86
+
87
+ **Input**: none.
88
+
89
+ **Returns** `FailureRulesResponse`.
90
+
91
+ | Field | Type | Required | Description |
92
+ |---|---|---|---|
93
+ | `rules` | `Array<Record<string, unknown>>` | yes | |
94
+ | `sandbox` | `boolean` | no | default `true` |
95
+
96
+ **Example**
97
+
98
+ ```ts
99
+ const result = await g8.api.sandbox.sandboxListFailureRules();
100
+ ```
101
+
102
+ ---
103
+
104
+ <a id="op-sandboxoutbox"></a>
105
+
106
+ ### `g8.api.sandbox.sandboxOutbox(input?)`
107
+
108
+ **List simulated outbox**
109
+
110
+ - HTTP: `GET /api/v1/sandbox/outbox`
111
+ - operationId: `sandbox_outbox_sandbox_outbox_get` (also callable as `g8.api.call("sandbox_outbox_sandbox_outbox_get", input)`)
112
+ - Tier: `read`: reads data; safe to call and to retry
113
+ - API-key scope: `sandbox:read`
114
+ - Sandbox only: available to test-mode keys against the sandbox environment
115
+
116
+ SANDBOX ONLY. This endpoint exists only in the graph8 developer sandbox and returns 404 on the live platform. Call GET /sandbox/status to see which environment your key reaches.
117
+
118
+ Every simulated outbound side effect for your org, newest first.
119
+
120
+ **Input**
121
+
122
+ | Field | Type | Required | Description |
123
+ |---|---|---|---|
124
+ | `query.channel` | `string \| null` | no | Filter by channel |
125
+ | `query.limit` | `integer` | no | default `50` |
126
+ | `query.offset` | `integer` | no | default `0` |
127
+
128
+ **Returns** `OutboxListResponse`.
129
+
130
+ | Field | Type | Required | Description |
131
+ |---|---|---|---|
132
+ | `count` | `integer` | yes | |
133
+ | `items` | `Array<Record<string, unknown>>` | yes | |
134
+ | `sandbox` | `boolean` | no | default `true` |
135
+
136
+ **Example**
137
+
138
+ ```ts
139
+ const result = await g8.api.sandbox.sandboxOutbox();
140
+ ```
141
+
142
+ ---
143
+
144
+ <a id="op-sandboxresetfixtures"></a>
145
+
146
+ ### `g8.api.sandbox.sandboxResetFixtures(input?)`
147
+
148
+ **Reset fixture data**
149
+
150
+ - HTTP: `POST /api/v1/sandbox/fixtures/reset`
151
+ - operationId: `sandbox_reset_fixtures_sandbox_fixtures_reset_post` (also callable as `g8.api.call("sandbox_reset_fixtures_sandbox_fixtures_reset_post", input)`)
152
+ - Tier: `destructive`: deletes or archives data; confirm with a human before calling
153
+ - API-key scope: `sandbox:delete`
154
+ - Sandbox only: available to test-mode keys against the sandbox environment
155
+
156
+ SANDBOX ONLY. This endpoint exists only in the graph8 developer sandbox and returns 404 on the live platform. Call GET /sandbox/status to see which environment your key reaches.
157
+
158
+ Delete all seeded fixture rows for your org and reseed a fresh set.
159
+
160
+ **Input**: none.
161
+
162
+ **Returns** `FixtureActionResponse`.
163
+
164
+ | Field | Type | Required | Description |
165
+ |---|---|---|---|
166
+ | `action` | `string` | yes | |
167
+ | `companies` | `integer` | no | default `0` |
168
+ | `contacts` | `integer` | no | default `0` |
169
+ | `detail` | `string \| null` | no | |
170
+ | `sandbox` | `boolean` | no | default `true` |
171
+
172
+ **Example**
173
+
174
+ ```ts
175
+ // destructive: deletes or archives data; confirm with a human before calling.
176
+ const result = await g8.api.sandbox.sandboxResetFixtures();
177
+ ```
178
+
179
+ ---
180
+
181
+ <a id="op-sandboxrestore"></a>
182
+
183
+ ### `g8.api.sandbox.sandboxRestore(input?)`
184
+
185
+ **Restore a snapshot**
186
+
187
+ - HTTP: `POST /api/v1/sandbox/fixtures/restore`
188
+ - operationId: `sandbox_restore_sandbox_fixtures_restore_post` (also callable as `g8.api.call("sandbox_restore_sandbox_fixtures_restore_post", input)`)
189
+ - Tier: `destructive`: deletes or archives data; confirm with a human before calling
190
+ - API-key scope: `sandbox:delete`
191
+ - Sandbox only: available to test-mode keys against the sandbox environment
192
+
193
+ SANDBOX ONLY. This endpoint exists only in the graph8 developer sandbox and returns 404 on the live platform. Call GET /sandbox/status to see which environment your key reaches.
194
+
195
+ Restore the fixture rows to a previously saved snapshot.
196
+
197
+ Only sandbox-fixture rows (``meta.sandbox_fixture = true``) are replaced —
198
+ any records you created through normal API calls in this sandbox are left
199
+ untouched. Snapshots are taken over the same fixture-scoped set, so a
200
+ restore round-trips exactly what ``/fixtures/snapshot`` captured.
201
+
202
+ **Input**
203
+
204
+ | Field | Type | Required | Description |
205
+ |---|---|---|---|
206
+ | `query.name` | `string` | no | default `"default"` |
207
+
208
+ **Returns** `SnapshotActionResponse`.
209
+
210
+ | Field | Type | Required | Description |
211
+ |---|---|---|---|
212
+ | `action` | `string` | yes | |
213
+ | `name` | `string` | yes | |
214
+ | `tables` | `Array<string>` | yes | |
215
+ | `sandbox` | `boolean` | no | default `true` |
216
+
217
+ **Example**
218
+
219
+ ```ts
220
+ // destructive: deletes or archives data; confirm with a human before calling.
221
+ const result = await g8.api.sandbox.sandboxRestore();
222
+ ```
223
+
224
+ ---
225
+
226
+ <a id="op-sandboxseedfixtures"></a>
227
+
228
+ ### `g8.api.sandbox.sandboxSeedFixtures(input?)`
229
+
230
+ **Seed sample data**
231
+
232
+ - HTTP: `POST /api/v1/sandbox/fixtures/seed`
233
+ - operationId: `sandbox_seed_fixtures_sandbox_fixtures_seed_post` (also callable as `g8.api.call("sandbox_seed_fixtures_sandbox_fixtures_seed_post", input)`)
234
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
235
+ - API-key scope: `sandbox:write`
236
+ - Sandbox only: available to test-mode keys against the sandbox environment
237
+
238
+ SANDBOX ONLY. This endpoint exists only in the graph8 developer sandbox and returns 404 on the live platform. Call GET /sandbox/status to see which environment your key reaches.
239
+
240
+ Insert the standard sandbox fixture set into your org. Idempotent.
241
+
242
+ **Input**: none.
243
+
244
+ **Returns** `FixtureActionResponse`.
245
+
246
+ | Field | Type | Required | Description |
247
+ |---|---|---|---|
248
+ | `action` | `string` | yes | |
249
+ | `companies` | `integer` | no | default `0` |
250
+ | `contacts` | `integer` | no | default `0` |
251
+ | `detail` | `string \| null` | no | |
252
+ | `sandbox` | `boolean` | no | default `true` |
253
+
254
+ **Example**
255
+
256
+ ```ts
257
+ const result = await g8.api.sandbox.sandboxSeedFixtures();
258
+ ```
259
+
260
+ ---
261
+
262
+ <a id="op-sandboxsetfailurerule"></a>
263
+
264
+ ### `g8.api.sandbox.sandboxSetFailureRule(input)`
265
+
266
+ **Set a failure rule**
267
+
268
+ - HTTP: `PUT /api/v1/sandbox/failure-injection`
269
+ - operationId: `sandbox_set_failure_rule_sandbox_failure_injection_put` (also callable as `g8.api.call("sandbox_set_failure_rule_sandbox_failure_injection_put", input)`)
270
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
271
+ - API-key scope: `sandbox:write`
272
+ - Sandbox only: available to test-mode keys against the sandbox environment
273
+
274
+ SANDBOX ONLY. This endpoint exists only in the graph8 developer sandbox and returns 404 on the live platform. Call GET /sandbox/status to see which environment your key reaches.
275
+
276
+ Make the next simulated sends on a channel fail the way you choose (M3-5).
277
+
278
+ **Input**
279
+
280
+ | Field | Type | Required | Description |
281
+ |---|---|---|---|
282
+ | `body` | `FailureRuleRequest` | yes | Request body; fields below. |
283
+
284
+ Body fields (`FailureRuleRequest`):
285
+
286
+ | Field | Type | Required | Description |
287
+ |---|---|---|---|
288
+ | `body.channel` | `string` | yes | Channel the injected failure applies to: email, sms, whatsapp, voice, linkedin, crm, ads, calendar, or '*' for every channel. |
289
+ | `body.failure_mode` | `string` | yes | One of: hard_bounce, provider_error, timeout, rate_limited, invalid_recipient. |
290
+ | `body.remaining` | `integer \| null` | no | Fail this many sends, then auto-clear. Omit to fail until cleared. min 1, max 10000 |
291
+
292
+ **Returns** `FailureRulesResponse`.
293
+
294
+ | Field | Type | Required | Description |
295
+ |---|---|---|---|
296
+ | `rules` | `Array<Record<string, unknown>>` | yes | |
297
+ | `sandbox` | `boolean` | no | default `true` |
298
+
299
+ **Example**
300
+
301
+ ```ts
302
+ const result = await g8.api.sandbox.sandboxSetFailureRule({ body: { channel: "example", failure_mode: "example" } });
303
+ ```
304
+
305
+ ---
306
+
307
+ <a id="op-sandboxsnapshot"></a>
308
+
309
+ ### `g8.api.sandbox.sandboxSnapshot(input?)`
310
+
311
+ **Snapshot fixture tables**
312
+
313
+ - HTTP: `POST /api/v1/sandbox/fixtures/snapshot`
314
+ - operationId: `sandbox_snapshot_sandbox_fixtures_snapshot_post` (also callable as `g8.api.call("sandbox_snapshot_sandbox_fixtures_snapshot_post", input)`)
315
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
316
+ - API-key scope: `sandbox:write`
317
+ - Sandbox only: available to test-mode keys against the sandbox environment
318
+
319
+ SANDBOX ONLY. This endpoint exists only in the graph8 developer sandbox and returns 404 on the live platform. Call GET /sandbox/status to see which environment your key reaches.
320
+
321
+ Save the current contents of the fixture tables under a named snapshot.
322
+
323
+ **Input**
324
+
325
+ | Field | Type | Required | Description |
326
+ |---|---|---|---|
327
+ | `query.name` | `string` | no | default `"default"` |
328
+
329
+ **Returns** `SnapshotActionResponse`.
330
+
331
+ | Field | Type | Required | Description |
332
+ |---|---|---|---|
333
+ | `action` | `string` | yes | |
334
+ | `name` | `string` | yes | |
335
+ | `tables` | `Array<string>` | yes | |
336
+ | `sandbox` | `boolean` | no | default `true` |
337
+
338
+ **Example**
339
+
340
+ ```ts
341
+ const result = await g8.api.sandbox.sandboxSnapshot();
342
+ ```
343
+
344
+ ---
345
+
346
+ <a id="op-sandboxstatus"></a>
347
+
348
+ ### `g8.api.sandbox.sandboxStatus(input?)`
349
+
350
+ **Sandbox status**
351
+
352
+ - HTTP: `GET /api/v1/sandbox/status`
353
+ - operationId: `sandbox_status_sandbox_status_get` (also callable as `g8.api.call("sandbox_status_sandbox_status_get", input)`)
354
+ - Tier: `read`: reads data; safe to call and to retry
355
+ - API-key scope: `sandbox:read`
356
+
357
+ Report whether this is the developer sandbox and which org the key acts as.
358
+
359
+ Answers on every deployment. In the developer sandbox: ``sandbox: true``,
360
+ ``environment: "sandbox"``. Anywhere else: ``sandbox: false`` and
361
+ ``environment`` is ``"live"`` (production) or ``"qa"``. The other
362
+ ``/sandbox/*`` routes exist only in the sandbox and return 404 elsewhere.
363
+
364
+ **Input**: none.
365
+
366
+ **Returns** `SandboxStatusResponse`.
367
+
368
+ | Field | Type | Required | Description |
369
+ |---|---|---|---|
370
+ | `message` | `string` | yes | |
371
+ | `org_id` | `string` | yes | |
372
+ | `environment` | `string` | no | Which graph8 deployment answered: 'sandbox' (developer sandbox), 'qa' (the QA environment) or 'live' (production). default `"sandbox"` |
373
+ | `key_mode` | `string \| null` | no | Mode of the API key that made the call: 'live', 'test' or 'sandbox'. |
374
+ | `sandbox` | `boolean` | no | default `true` |
375
+
376
+ **Example**
377
+
378
+ ```ts
379
+ const result = await g8.api.sandbox.sandboxStatus();
380
+ ```
@@ -0,0 +1,104 @@
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.scans` (Scans): 2 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<"create_scan_repos__repo_id__scan_post">;
9
+ *
10
+ * Reference with examples: scans.md
11
+ */
12
+ /* eslint-disable */
13
+
14
+ /** `g8.api.scans.<member>` -> the operationId it calls. */
15
+ export interface ScansMembers {
16
+ createScan: "create_scan_repos__repo_id__scan_post";
17
+ getScan: "get_scan_repos__repo_id__scan_get";
18
+ }
19
+
20
+ /** Input and output of every `g8.api.scans` operation, keyed by operationId. */
21
+ export interface ScansOperations {
22
+ /**
23
+ * POST /repos/{repo_id}/scan
24
+ * Create Scan
25
+ * tier: billable · scope: search:run
26
+ */
27
+ create_scan_repos__repo_id__scan_post: {
28
+ input: {
29
+ path: {
30
+ /** Repository ID */
31
+ repo_id: string;
32
+ };
33
+ headers?: {
34
+ "X-Target-Org-Id"?: string | null;
35
+ };
36
+ body: ScanResultsRequest;
37
+ };
38
+ output: ApiResponse_ScanResponse_;
39
+ };
40
+ /**
41
+ * GET /repos/{repo_id}/scan
42
+ * Get Scan
43
+ * tier: billable · scope: search:run
44
+ */
45
+ get_scan_repos__repo_id__scan_get: {
46
+ input: {
47
+ path: {
48
+ /** Repository ID */
49
+ repo_id: string;
50
+ };
51
+ headers?: {
52
+ "X-Target-Org-Id"?: string | null;
53
+ };
54
+ };
55
+ output: ApiResponse_ScanResponse_;
56
+ };
57
+ }
58
+
59
+ // 4 schemas referenced above (the same as G8Contract.<Name>).
60
+
61
+ export interface ApiResponse_ScanResponse_ {
62
+ data: ScanResponse;
63
+ pagination?: PaginationMeta | null;
64
+ }
65
+
66
+ export interface PaginationMeta {
67
+ /** Whether there are more pages */
68
+ has_next: boolean;
69
+ /** Items per page */
70
+ limit: number;
71
+ /** 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. */
72
+ next_cursor?: string | null;
73
+ /** Current page number (1-indexed) */
74
+ page: number;
75
+ /** Total number of items */
76
+ total: number;
77
+ }
78
+
79
+ export interface ScanResponse {
80
+ api_routes: Array<Record<string, unknown>>;
81
+ created_at?: string | null;
82
+ gtm_readiness?: Record<string, unknown>;
83
+ id: string;
84
+ product_type?: string | null;
85
+ readme_summary?: string | null;
86
+ repo_id: string;
87
+ scan_duration_ms?: number | null;
88
+ tech_stack: Record<string, unknown>;
89
+ }
90
+
91
+ export interface ScanResultsRequest {
92
+ /** Detected API routes */
93
+ api_routes?: Array<Record<string, unknown>>;
94
+ /** GTM readiness flags */
95
+ gtm_readiness?: Record<string, unknown>;
96
+ /** Detected product type (b2b_saas, api, etc.) */
97
+ product_type?: string | null;
98
+ /** Extracted README summary */
99
+ readme_summary?: string | null;
100
+ /** Scan duration in milliseconds */
101
+ scan_duration_ms?: number | null;
102
+ /** Detected tech stack (framework, language, etc.) */
103
+ tech_stack: Record<string, unknown>;
104
+ }