@graph8/sdk 0.251.0 → 0.260.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 +104 -7
  4. package/dist/index.d.ts +104 -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 +102 -7
  10. package/dist/react.d.ts +102 -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 +1696 -0
  140. package/docs/api/deals.md +2432 -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,1223 @@
1
+ <!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
2
+
3
+ # `g8.api.surveys`: Surveys
4
+
5
+ 21 operations (14 read, 3 write, 2 destructive, 2 external).
6
+
7
+ No hand-written client covers this area. Call it through `g8.api.surveys.*` 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: [surveys.d.ts](surveys.d.ts).
20
+
21
+ ## Operations
22
+
23
+ | Call | HTTP | Tier | Scope | Summary |
24
+ |---|---|---|---|---|
25
+ | [`createSurvey`](#op-createsurvey) | `POST /api/v1/feedback/surveys` | write | `surveys:write` | Create Survey |
26
+ | [`createSurveyTrigger`](#op-createsurveytrigger) | `POST /api/v1/feedback/surveys/{survey_id}/triggers` | write | `surveys:write` | Create Survey Trigger |
27
+ | [`deleteSurvey`](#op-deletesurvey) | `DELETE /api/v1/feedback/surveys/{survey_id}` | destructive | `surveys:delete` | Delete Survey |
28
+ | [`deleteSurveyTrigger`](#op-deletesurveytrigger) | `DELETE /api/v1/feedback/surveys/{survey_id}/triggers/{trigger_id}` | destructive | `surveys:delete` | Delete Survey Trigger |
29
+ | [`getCompanySurveyNps`](#op-getcompanysurveynps) | `GET /api/v1/feedback/companies/{company_id}/nps` | read | `surveys:read` | Get Company Survey Nps |
30
+ | [`getContactSurveyHistory`](#op-getcontactsurveyhistory) | `GET /api/v1/feedback/contacts/{contact_id}/history` | read | `surveys:read` | Get Contact Survey History |
31
+ | [`getSurvey`](#op-getsurvey) | `GET /api/v1/feedback/surveys/{survey_id}` | read | `surveys:read` | Get Survey |
32
+ | [`getSurveyAppUserResponses`](#op-getsurveyappuserresponses) | `GET /api/v1/feedback/surveys/{survey_id}/app-user-responses` | read | `surveys:read` | Get Survey App User Responses |
33
+ | [`getSurveyOrgSummary`](#op-getsurveyorgsummary) | `GET /api/v1/feedback/org-summary` | read | `surveys:read` | Get Survey Org Summary |
34
+ | [`getSurveyResponses`](#op-getsurveyresponses) | `GET /api/v1/feedback/surveys/{survey_id}/responses` | read | `surveys:read` | Get Survey Responses |
35
+ | [`getSurveySend`](#op-getsurveysend) | `GET /api/v1/feedback/sends/{send_id}` | read | `surveys:read` | Get Survey Send |
36
+ | [`getSurveySends`](#op-getsurveysends) | `GET /api/v1/feedback/surveys/{survey_id}/sends` | read | `surveys:read` | Get Survey Sends |
37
+ | [`getSurveySummary`](#op-getsurveysummary) | `GET /api/v1/feedback/surveys/{survey_id}/summary` | read | `surveys:read` | Get Survey Summary |
38
+ | [`getSurveyTrends`](#op-getsurveytrends) | `GET /api/v1/feedback/surveys/{survey_id}/trends` | read | `surveys:read` | Get Survey Trends |
39
+ | [`listSurveySendingDomains`](#op-listsurveysendingdomains) | `GET /api/v1/feedback/sending-domains` | read | `surveys:read` | List Survey Sending Domains |
40
+ | [`listSurveyTriggers`](#op-listsurveytriggers) | `GET /api/v1/feedback/surveys/{survey_id}/triggers` | read | `surveys:read` | List Survey Triggers |
41
+ | [`listSurveys`](#op-listsurveys) | `GET /api/v1/feedback/surveys` | read | `surveys:read` | List Surveys |
42
+ | [`sendSurvey`](#op-sendsurvey) | `POST /api/v1/feedback/surveys/{survey_id}/send` | external | `surveys:run` | Send Survey |
43
+ | [`surveyDomainStatus`](#op-surveydomainstatus) | `GET /api/v1/feedback/sending-domains/status` | read | `surveys:read` | Survey Domain Status |
44
+ | [`updateSurvey`](#op-updatesurvey) | `PATCH /api/v1/feedback/surveys/{survey_id}` | write | `surveys:write` | Update Survey |
45
+ | [`verifySurveyDomain`](#op-verifysurveydomain) | `POST /api/v1/feedback/sending-domains/verify` | external | `surveys:run` | Verify Survey Domain |
46
+
47
+ ---
48
+
49
+ <a id="op-createsurvey"></a>
50
+
51
+ ### `g8.api.surveys.createSurvey(input)`
52
+
53
+ **Create Survey**
54
+
55
+ - HTTP: `POST /api/v1/feedback/surveys`
56
+ - operationId: `create_survey_feedback_surveys_post` (also callable as `g8.api.call("create_survey_feedback_surveys_post", input)`)
57
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
58
+ - API-key scope: `surveys:write`
59
+
60
+ Create an NPS or CSAT survey.
61
+
62
+ ``type`` fixes the scale (NPS 0-10, CSAT 1-5 unless you override
63
+ ``scale_min`` / ``scale_max``). ``delivery_channel`` chooses email, the
64
+ messaging bridge, or the in-app widget. ``comment_mode`` controls whether a
65
+ respondent can add free text: ``none``, ``link`` (score click opens a form) or
66
+ ``html`` (textarea inside the email).
67
+
68
+ **Input**
69
+
70
+ | Field | Type | Required | Description |
71
+ |---|---|---|---|
72
+ | `body` | `CreateSurveyRequest` | yes | Request body; fields below. |
73
+
74
+ Body fields (`CreateSurveyRequest`):
75
+
76
+ | Field | Type | Required | Description |
77
+ |---|---|---|---|
78
+ | `body.name` | `string` | yes | min length 1, max length 255 |
79
+ | `body.question_text` | `string` | yes | min length 1 |
80
+ | `body.type` | `string` | yes | pattern `^(nps\|csat)$` |
81
+ | `body.comment_mode` | `string \| null` | no | default `"none"`, pattern `^(none\|link\|html)$` |
82
+ | `body.delivery_channel` | `string` | no | default `"email"`, pattern `^(email\|bridge\|in_app)$` |
83
+ | `body.scale_max` | `integer \| null` | no | |
84
+ | `body.scale_min` | `integer \| null` | no | |
85
+ | `body.template_id` | `integer \| null` | no | |
86
+ | `body.thank_you_copy` | `string \| null` | no | |
87
+
88
+ **Returns** `ApiResponse_SurveyResponseDTO_`: the envelope `{ data: SurveyResponseDTO, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
89
+
90
+ Other envelope fields: `pagination` (PaginationMeta).
91
+
92
+ `SurveyResponseDTO` fields:
93
+
94
+ | Field | Type | Required | Description |
95
+ |---|---|---|---|
96
+ | `delivery_channel` | `string` | yes | |
97
+ | `id` | `string` | yes | |
98
+ | `is_active` | `boolean` | yes | |
99
+ | `name` | `string` | yes | |
100
+ | `question_text` | `string` | yes | |
101
+ | `scale_max` | `integer` | yes | |
102
+ | `scale_min` | `integer` | yes | |
103
+ | `type` | `string` | yes | |
104
+ | `comment_mode` | `string \| null` | no | |
105
+ | `created_at` | `string (date-time) \| null` | no | |
106
+ | `score_field_column_id` | `string \| null` | no | |
107
+ | `template_id` | `integer \| null` | no | |
108
+ | `thank_you_copy` | `string \| null` | no | |
109
+
110
+ **Example**
111
+
112
+ ```ts
113
+ const result = await g8.api.surveys.createSurvey({
114
+ body: { name: "Example", question_text: "example", type: "example" },
115
+ });
116
+ ```
117
+
118
+ ---
119
+
120
+ <a id="op-createsurveytrigger"></a>
121
+
122
+ ### `g8.api.surveys.createSurveyTrigger(input)`
123
+
124
+ **Create Survey Trigger**
125
+
126
+ - HTTP: `POST /api/v1/feedback/surveys/{survey_id}/triggers`
127
+ - operationId: `create_survey_trigger_feedback_surveys__survey_id__triggers_post` (also callable as `g8.api.call("create_survey_trigger_feedback_surveys__survey_id__triggers_post", input)`)
128
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
129
+ - API-key scope: `surveys:write`
130
+
131
+ Bind an automated send to this survey.
132
+
133
+ ``scheduled`` needs ``audience_ref`` + ``cadence_days``; ``list_entry`` needs
134
+ ``audience_ref``; ``stage_entry`` needs ``stage_value``. An ``audience_ref``
135
+ that does not exist in this org is refused rather than silently never firing.
136
+
137
+ **Input**
138
+
139
+ | Field | Type | Required | Description |
140
+ |---|---|---|---|
141
+ | `path.survey_id` | `string` | yes | Survey id (UUID) — from GET /feedback/surveys |
142
+ | `body` | `CreateSurveyTriggerRequest` | yes | Request body; fields below. |
143
+
144
+ Body fields (`CreateSurveyTriggerRequest`):
145
+
146
+ | Field | Type | Required | Description |
147
+ |---|---|---|---|
148
+ | `body.sender_email` | `string (email)` | yes | |
149
+ | `body.subject` | `string` | yes | min length 1, max length 2000 |
150
+ | `body.trigger_kind` | `string` | yes | pattern `^(scheduled\|list_entry\|stage_entry)$` |
151
+ | `body.audience_ref` | `string \| null` | no | |
152
+ | `body.cadence_days` | `integer \| null` | no | min 1, max 3650 |
153
+ | `body.reply_to` | `string (email) \| null` | no | |
154
+ | `body.sender_name` | `string \| null` | no | |
155
+ | `body.stage_value` | `string \| null` | no | |
156
+
157
+ **Returns** `ApiResponse_SurveyTriggerDTO_`: the envelope `{ data: SurveyTriggerDTO, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
158
+
159
+ Other envelope fields: `pagination` (PaginationMeta).
160
+
161
+ `SurveyTriggerDTO` fields:
162
+
163
+ | Field | Type | Required | Description |
164
+ |---|---|---|---|
165
+ | `id` | `string` | yes | |
166
+ | `is_active` | `boolean` | yes | |
167
+ | `sender_email` | `string` | yes | |
168
+ | `subject` | `string` | yes | |
169
+ | `survey_id` | `string` | yes | |
170
+ | `trigger_kind` | `string` | yes | |
171
+ | `audience_ref` | `string \| null` | no | |
172
+ | `cadence_days` | `integer \| null` | no | |
173
+ | `reply_to` | `string \| null` | no | |
174
+ | `sender_name` | `string \| null` | no | |
175
+ | `stage_value` | `string \| null` | no | |
176
+
177
+ **Example**
178
+
179
+ ```ts
180
+ const result = await g8.api.surveys.createSurveyTrigger({
181
+ path: { survey_id: "id" },
182
+ body: {
183
+ sender_email: "jane@acme.com",
184
+ subject: "Example",
185
+ trigger_kind: "example",
186
+ },
187
+ });
188
+ ```
189
+
190
+ ---
191
+
192
+ <a id="op-deletesurvey"></a>
193
+
194
+ ### `g8.api.surveys.deleteSurvey(input)`
195
+
196
+ **Delete Survey**
197
+
198
+ - HTTP: `DELETE /api/v1/feedback/surveys/{survey_id}`
199
+ - operationId: `delete_survey_feedback_surveys__survey_id__delete` (also callable as `g8.api.call("delete_survey_feedback_surveys__survey_id__delete", input)`)
200
+ - Tier: `destructive`: deletes or archives data; confirm with a human before calling
201
+ - API-key scope: `surveys:delete`
202
+
203
+ Delete a survey. Deactivate instead (``PATCH is_active: false``) if you
204
+ still need its responses for reporting.
205
+
206
+ **Input**
207
+
208
+ | Field | Type | Required | Description |
209
+ |---|---|---|---|
210
+ | `path.survey_id` | `string` | yes | Survey id (UUID) — from GET /feedback/surveys |
211
+
212
+ **Returns** `ApiResponse_SurveyDeleteResponse_`: the envelope `{ data: SurveyDeleteResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
213
+
214
+ Other envelope fields: `pagination` (PaginationMeta).
215
+
216
+ `SurveyDeleteResponse` fields:
217
+
218
+ | Field | Type | Required | Description |
219
+ |---|---|---|---|
220
+ | `deleted` | `boolean` | yes | |
221
+ | `survey_id` | `string` | yes | |
222
+
223
+ **Example**
224
+
225
+ ```ts
226
+ // destructive: deletes or archives data; confirm with a human before calling.
227
+ const result = await g8.api.surveys.deleteSurvey({ path: { survey_id: "id" } });
228
+ ```
229
+
230
+ ---
231
+
232
+ <a id="op-deletesurveytrigger"></a>
233
+
234
+ ### `g8.api.surveys.deleteSurveyTrigger(input)`
235
+
236
+ **Delete Survey Trigger**
237
+
238
+ - HTTP: `DELETE /api/v1/feedback/surveys/{survey_id}/triggers/{trigger_id}`
239
+ - operationId: `delete_survey_trigger_feedback_surveys__survey_id__triggers__trigger_id__delete` (also callable as `g8.api.call("delete_survey_trigger_feedback_surveys__survey_id__triggers__trigger_id__delete", input)`)
240
+ - Tier: `destructive`: deletes or archives data; confirm with a human before calling
241
+ - API-key scope: `surveys:delete`
242
+
243
+ Remove an automated-send trigger. Scoped to its parent survey.
244
+
245
+ **Input**
246
+
247
+ | Field | Type | Required | Description |
248
+ |---|---|---|---|
249
+ | `path.survey_id` | `string` | yes | Survey id (UUID) — from GET /feedback/surveys |
250
+ | `path.trigger_id` | `string` | yes | Trigger id — from GET /feedback/surveys/{survey_id}/triggers |
251
+
252
+ **Returns** `ApiResponse_SurveyTriggerDeleteResponse_`: the envelope `{ data: SurveyTriggerDeleteResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
253
+
254
+ Other envelope fields: `pagination` (PaginationMeta).
255
+
256
+ `SurveyTriggerDeleteResponse` fields:
257
+
258
+ | Field | Type | Required | Description |
259
+ |---|---|---|---|
260
+ | `deleted` | `boolean` | yes | |
261
+ | `trigger_id` | `string` | yes | |
262
+ | `survey_id` | `string \| null` | no | |
263
+
264
+ **Example**
265
+
266
+ ```ts
267
+ // destructive: deletes or archives data; confirm with a human before calling.
268
+ const result = await g8.api.surveys.deleteSurveyTrigger({ path: { survey_id: "id", trigger_id: "id" } });
269
+ ```
270
+
271
+ ---
272
+
273
+ <a id="op-getcompanysurveynps"></a>
274
+
275
+ ### `g8.api.surveys.getCompanySurveyNps(input)`
276
+
277
+ **Get Company Survey Nps**
278
+
279
+ - HTTP: `GET /api/v1/feedback/companies/{company_id}/nps`
280
+ - operationId: `get_company_survey_nps_feedback_companies__company_id__nps_get` (also callable as `g8.api.call("get_company_survey_nps_feedback_companies__company_id__nps_get", input)`)
281
+ - Tier: `read`: reads data; safe to call and to retry
282
+ - API-key scope: `surveys:read`
283
+
284
+ Account-level NPS: score, promoter/detractor split, coverage and per-contact rows.
285
+
286
+ The headline score is suppressed (null) below the minimum-respondent
287
+ threshold rather than published from a handful of answers. Contacts the
288
+ calling key cannot see are excluded from every figure, so the coverage
289
+ denominator matches the rows returned.
290
+
291
+ **Input**
292
+
293
+ | Field | Type | Required | Description |
294
+ |---|---|---|---|
295
+ | `path.company_id` | `integer` | yes | Company id (mashup_companies.id) |
296
+ | `query.bucket` | `string` | no | Trend bucket: day, week or month. default `"week"` |
297
+ | `query.survey_id` | `string \| null` | no | Restrict to one survey. Omit to combine every NPS survey. |
298
+
299
+ **Returns** `ApiResponse_CompanyNpsDTO_`: the envelope `{ data: CompanyNpsDTO, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
300
+
301
+ Other envelope fields: `pagination` (PaginationMeta).
302
+
303
+ `CompanyNpsDTO` fields:
304
+
305
+ | Field | Type | Required | Description |
306
+ |---|---|---|---|
307
+ | `bucket` | `string` | yes | |
308
+ | `company_id` | `integer` | yes | |
309
+ | `contacts` | `Array<CompanyContactScoreDTO>` | yes | |
310
+ | `coverage` | `CoverageDTO` | yes | |
311
+ | `detractors` | `integer` | yes | |
312
+ | `passives` | `integer` | yes | |
313
+ | `promoters` | `integer` | yes | |
314
+ | `suppressed` | `boolean` | yes | |
315
+ | `time_series` | `Array<TrendBarDTO>` | yes | |
316
+ | `total_respondents` | `integer` | yes | |
317
+ | `nps_score` | `number \| null` | no | |
318
+
319
+ **Example**
320
+
321
+ ```ts
322
+ const result = await g8.api.surveys.getCompanySurveyNps({ path: { company_id: 123 } });
323
+ ```
324
+
325
+ ---
326
+
327
+ <a id="op-getcontactsurveyhistory"></a>
328
+
329
+ ### `g8.api.surveys.getContactSurveyHistory(input)`
330
+
331
+ **Get Contact Survey History**
332
+
333
+ - HTTP: `GET /api/v1/feedback/contacts/{contact_id}/history`
334
+ - operationId: `get_contact_survey_history_feedback_contacts__contact_id__history_get` (also callable as `g8.api.call("get_contact_survey_history_feedback_contacts__contact_id__history_get", input)`)
335
+ - Tier: `read`: reads data; safe to call and to retry
336
+ - API-key scope: `surveys:read`
337
+
338
+ Every survey answer this contact has given, newest first.
339
+
340
+ ``contact_id`` is the mashup_contacts PRIMARY KEY, which is what survey
341
+ responses are keyed on — not the ``CONTACT_ID`` business key.
342
+
343
+ **Input**
344
+
345
+ | Field | Type | Required | Description |
346
+ |---|---|---|---|
347
+ | `path.contact_id` | `integer` | yes | Contact id (mashup_contacts.id — the primary key) |
348
+
349
+ **Returns** `ApiResponse_ContactHistoryDTO_`: the envelope `{ data: ContactHistoryDTO, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
350
+
351
+ Other envelope fields: `pagination` (PaginationMeta).
352
+
353
+ `ContactHistoryDTO` fields:
354
+
355
+ | Field | Type | Required | Description |
356
+ |---|---|---|---|
357
+ | `contact_id` | `integer` | yes | |
358
+ | `responses` | `Array<ContactHistoryItemDTO>` | yes | |
359
+
360
+ **Example**
361
+
362
+ ```ts
363
+ const result = await g8.api.surveys.getContactSurveyHistory({ path: { contact_id: 123 } });
364
+ ```
365
+
366
+ ---
367
+
368
+ <a id="op-getsurvey"></a>
369
+
370
+ ### `g8.api.surveys.getSurvey(input)`
371
+
372
+ **Get Survey**
373
+
374
+ - HTTP: `GET /api/v1/feedback/surveys/{survey_id}`
375
+ - operationId: `get_survey_feedback_surveys__survey_id__get` (also callable as `g8.api.call("get_survey_feedback_surveys__survey_id__get", input)`)
376
+ - Tier: `read`: reads data; safe to call and to retry
377
+ - API-key scope: `surveys:read`
378
+
379
+ Read one survey definition.
380
+
381
+ **Input**
382
+
383
+ | Field | Type | Required | Description |
384
+ |---|---|---|---|
385
+ | `path.survey_id` | `string` | yes | Survey id (UUID) — from GET /feedback/surveys |
386
+
387
+ **Returns** `ApiResponse_SurveyResponseDTO_`: the envelope `{ data: SurveyResponseDTO, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
388
+
389
+ Other envelope fields: `pagination` (PaginationMeta).
390
+
391
+ `SurveyResponseDTO` fields:
392
+
393
+ | Field | Type | Required | Description |
394
+ |---|---|---|---|
395
+ | `delivery_channel` | `string` | yes | |
396
+ | `id` | `string` | yes | |
397
+ | `is_active` | `boolean` | yes | |
398
+ | `name` | `string` | yes | |
399
+ | `question_text` | `string` | yes | |
400
+ | `scale_max` | `integer` | yes | |
401
+ | `scale_min` | `integer` | yes | |
402
+ | `type` | `string` | yes | |
403
+ | `comment_mode` | `string \| null` | no | |
404
+ | `created_at` | `string (date-time) \| null` | no | |
405
+ | `score_field_column_id` | `string \| null` | no | |
406
+ | `template_id` | `integer \| null` | no | |
407
+ | `thank_you_copy` | `string \| null` | no | |
408
+
409
+ **Example**
410
+
411
+ ```ts
412
+ const result = await g8.api.surveys.getSurvey({ path: { survey_id: "id" } });
413
+ ```
414
+
415
+ ---
416
+
417
+ <a id="op-getsurveyappuserresponses"></a>
418
+
419
+ ### `g8.api.surveys.getSurveyAppUserResponses(input)`
420
+
421
+ **Get Survey App User Responses**
422
+
423
+ - HTTP: `GET /api/v1/feedback/surveys/{survey_id}/app-user-responses`
424
+ - operationId: `get_survey_app_user_responses_feedback_surveys__survey_id__app_user_responses_get` (also callable as `g8.api.call("get_survey_app_user_responses_feedback_surveys__survey_id__app_user_responses_get", input)`)
425
+ - Tier: `read`: reads data; safe to call and to retry
426
+ - API-key scope: `surveys:read`
427
+
428
+ Responses collected from your own seat-holders via the in-app widget.
429
+
430
+ Kept separate from contact responses: these are colleagues answering inside
431
+ the product, not customers answering an email.
432
+
433
+ **Input**
434
+
435
+ | Field | Type | Required | Description |
436
+ |---|---|---|---|
437
+ | `path.survey_id` | `string` | yes | Survey id (UUID) — from GET /feedback/surveys |
438
+
439
+ **Returns** `ApiResponse_AppUserResponsesDTO_`: the envelope `{ data: AppUserResponsesDTO, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
440
+
441
+ Other envelope fields: `pagination` (PaginationMeta).
442
+
443
+ `AppUserResponsesDTO` fields:
444
+
445
+ | Field | Type | Required | Description |
446
+ |---|---|---|---|
447
+ | `responses` | `Array<AppUserResponseRowDTO>` | yes | |
448
+ | `survey_id` | `string` | yes | |
449
+
450
+ **Example**
451
+
452
+ ```ts
453
+ const result = await g8.api.surveys.getSurveyAppUserResponses({ path: { survey_id: "id" } });
454
+ ```
455
+
456
+ ---
457
+
458
+ <a id="op-getsurveyorgsummary"></a>
459
+
460
+ ### `g8.api.surveys.getSurveyOrgSummary(input?)`
461
+
462
+ **Get Survey Org Summary**
463
+
464
+ - HTTP: `GET /api/v1/feedback/org-summary`
465
+ - operationId: `get_survey_org_summary_feedback_org_summary_get` (also callable as `g8.api.call("get_survey_org_summary_feedback_org_summary_get", input)`)
466
+ - Tier: `read`: reads data; safe to call and to retry
467
+ - API-key scope: `surveys:read`
468
+
469
+ Org-wide NPS and CSAT: headline scores, response rates and per-survey rollups.
470
+
471
+ **Input**
472
+
473
+ | Field | Type | Required | Description |
474
+ |---|---|---|---|
475
+ | `query.segment` | `string \| null` | no | Restrict to one audience list id. Omit for all contacts. |
476
+ | `query.bucket` | `string` | no | Trend bucket: day, week or month. default `"week"` |
477
+
478
+ **Returns** `ApiResponse_OrgSummaryDTO_`: the envelope `{ data: OrgSummaryDTO, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
479
+
480
+ Other envelope fields: `pagination` (PaginationMeta).
481
+
482
+ `OrgSummaryDTO` fields:
483
+
484
+ | Field | Type | Required | Description |
485
+ |---|---|---|---|
486
+ | `bucket` | `string` | yes | |
487
+ | `org_csat` | `OrgCsatBlockDTO` | yes | |
488
+ | `org_nps` | `OrgNpsBlockDTO` | yes | |
489
+ | `per_survey` | `Array<PerSurveyDTO>` | yes | |
490
+ | `time_series` | `Array<TrendBarDTO>` | yes | |
491
+ | `in_app_csat_avg` | `number \| null` | no | |
492
+ | `in_app_respondents` | `integer` | no | default `0` |
493
+ | `segment` | `string \| null` | no | |
494
+
495
+ **Example**
496
+
497
+ ```ts
498
+ const result = await g8.api.surveys.getSurveyOrgSummary();
499
+ ```
500
+
501
+ ---
502
+
503
+ <a id="op-getsurveyresponses"></a>
504
+
505
+ ### `g8.api.surveys.getSurveyResponses(input)`
506
+
507
+ **Get Survey Responses**
508
+
509
+ - HTTP: `GET /api/v1/feedback/surveys/{survey_id}/responses`
510
+ - operationId: `get_survey_responses_feedback_surveys__survey_id__responses_get` (also callable as `g8.api.call("get_survey_responses_feedback_surveys__survey_id__responses_get", input)`)
511
+ - Tier: `read`: reads data; safe to call and to retry
512
+ - API-key scope: `surveys:read`
513
+
514
+ Individual contact responses: score, comment, contact and timestamp.
515
+
516
+ **Input**
517
+
518
+ | Field | Type | Required | Description |
519
+ |---|---|---|---|
520
+ | `path.survey_id` | `string` | yes | Survey id (UUID) — from GET /feedback/surveys |
521
+
522
+ **Returns** `ApiResponse_SurveyResponsesDTO_`: the envelope `{ data: SurveyResponsesDTO, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
523
+
524
+ Other envelope fields: `pagination` (PaginationMeta).
525
+
526
+ `SurveyResponsesDTO` fields:
527
+
528
+ | Field | Type | Required | Description |
529
+ |---|---|---|---|
530
+ | `responses` | `Array<SurveyResponseRowDTO>` | yes | |
531
+ | `survey_id` | `string` | yes | |
532
+
533
+ **Example**
534
+
535
+ ```ts
536
+ const result = await g8.api.surveys.getSurveyResponses({ path: { survey_id: "id" } });
537
+ ```
538
+
539
+ ---
540
+
541
+ <a id="op-getsurveysend"></a>
542
+
543
+ ### `g8.api.surveys.getSurveySend(input)`
544
+
545
+ **Get Survey Send**
546
+
547
+ - HTTP: `GET /api/v1/feedback/sends/{send_id}`
548
+ - operationId: `get_survey_send_feedback_sends__send_id__get` (also callable as `g8.api.call("get_survey_send_feedback_sends__send_id__get", input)`)
549
+ - Tier: `read`: reads data; safe to call and to retry
550
+ - API-key scope: `surveys:read`
551
+
552
+ Read one send's status and recipient count — the poll target after a send.
553
+
554
+ **Input**
555
+
556
+ | Field | Type | Required | Description |
557
+ |---|---|---|---|
558
+ | `path.send_id` | `integer` | yes | Send id returned by POST /feedback/surveys/{survey_id}/send |
559
+
560
+ **Returns** `ApiResponse_SurveySendDTO_`: the envelope `{ data: SurveySendDTO, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
561
+
562
+ Other envelope fields: `pagination` (PaginationMeta).
563
+
564
+ `SurveySendDTO` fields:
565
+
566
+ | Field | Type | Required | Description |
567
+ |---|---|---|---|
568
+ | `channel` | `string` | yes | |
569
+ | `id` | `integer` | yes | |
570
+ | `recipient_count` | `integer` | yes | |
571
+ | `status` | `string` | yes | |
572
+ | `survey_id` | `string` | yes | |
573
+ | `audience_ref` | `string \| null` | no | |
574
+ | `scheduled_at` | `string (date-time) \| null` | no | |
575
+
576
+ **Example**
577
+
578
+ ```ts
579
+ const result = await g8.api.surveys.getSurveySend({ path: { send_id: 123 } });
580
+ ```
581
+
582
+ ---
583
+
584
+ <a id="op-getsurveysends"></a>
585
+
586
+ ### `g8.api.surveys.getSurveySends(input)`
587
+
588
+ **Get Survey Sends**
589
+
590
+ - HTTP: `GET /api/v1/feedback/surveys/{survey_id}/sends`
591
+ - operationId: `get_survey_sends_feedback_surveys__survey_id__sends_get` (also callable as `g8.api.call("get_survey_sends_feedback_surveys__survey_id__sends_get", input)`)
592
+ - Tier: `read`: reads data; safe to call and to retry
593
+ - API-key scope: `surveys:read`
594
+
595
+ Send history with per-send delivery breakdown and responder counts.
596
+
597
+ **Input**
598
+
599
+ | Field | Type | Required | Description |
600
+ |---|---|---|---|
601
+ | `path.survey_id` | `string` | yes | Survey id (UUID) — from GET /feedback/surveys |
602
+
603
+ **Returns** `ApiResponse_SurveySendsDTO_`: the envelope `{ data: SurveySendsDTO, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
604
+
605
+ Other envelope fields: `pagination` (PaginationMeta).
606
+
607
+ `SurveySendsDTO` fields:
608
+
609
+ | Field | Type | Required | Description |
610
+ |---|---|---|---|
611
+ | `sends` | `Array<SurveySendRowDTO>` | yes | |
612
+ | `survey_id` | `string` | yes | |
613
+
614
+ **Example**
615
+
616
+ ```ts
617
+ const result = await g8.api.surveys.getSurveySends({ path: { survey_id: "id" } });
618
+ ```
619
+
620
+ ---
621
+
622
+ <a id="op-getsurveysummary"></a>
623
+
624
+ ### `g8.api.surveys.getSurveySummary(input)`
625
+
626
+ **Get Survey Summary**
627
+
628
+ - HTTP: `GET /api/v1/feedback/surveys/{survey_id}/summary`
629
+ - operationId: `get_survey_summary_feedback_surveys__survey_id__summary_get` (also callable as `g8.api.call("get_survey_summary_feedback_surveys__survey_id__summary_get", input)`)
630
+ - Tier: `read`: reads data; safe to call and to retry
631
+ - API-key scope: `surveys:read`
632
+
633
+ Headline score, response rate and distribution for one survey.
634
+
635
+ **Input**
636
+
637
+ | Field | Type | Required | Description |
638
+ |---|---|---|---|
639
+ | `path.survey_id` | `string` | yes | Survey id (UUID) — from GET /feedback/surveys |
640
+ | `query.bucket` | `string` | no | Trend bucket: day, week or month. default `"week"` |
641
+
642
+ **Returns** `ApiResponse_SummaryDTO_`: the envelope `{ data: SummaryDTO, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
643
+
644
+ Other envelope fields: `pagination` (PaginationMeta).
645
+
646
+ `SummaryDTO` fields:
647
+
648
+ | Field | Type | Required | Description |
649
+ |---|---|---|---|
650
+ | `bucket` | `string` | yes | |
651
+ | `delivery_channel` | `string` | yes | |
652
+ | `detractors` | `integer` | yes | |
653
+ | `passives` | `integer` | yes | |
654
+ | `promoters` | `integer` | yes | |
655
+ | `response_rate` | `ResponseRateDTO` | yes | |
656
+ | `survey_id` | `string` | yes | |
657
+ | `time_series` | `Array<TrendBarDTO>` | yes | |
658
+ | `total_respondents` | `integer` | yes | |
659
+ | `type` | `string` | yes | |
660
+ | `csat_avg` | `number \| null` | no | |
661
+ | `dissatisfied` | `integer \| null` | no | |
662
+ | `neutral` | `integer \| null` | no | |
663
+ | `nps_score` | `number \| null` | no | |
664
+ | `satisfied` | `integer \| null` | no | |
665
+
666
+ **Example**
667
+
668
+ ```ts
669
+ const result = await g8.api.surveys.getSurveySummary({ path: { survey_id: "id" } });
670
+ ```
671
+
672
+ ---
673
+
674
+ <a id="op-getsurveytrends"></a>
675
+
676
+ ### `g8.api.surveys.getSurveyTrends(input)`
677
+
678
+ **Get Survey Trends**
679
+
680
+ - HTTP: `GET /api/v1/feedback/surveys/{survey_id}/trends`
681
+ - operationId: `get_survey_trends_feedback_surveys__survey_id__trends_get` (also callable as `g8.api.call("get_survey_trends_feedback_surveys__survey_id__trends_get", input)`)
682
+ - Tier: `read`: reads data; safe to call and to retry
683
+ - API-key scope: `surveys:read`
684
+
685
+ Score over time, bucketed by day, week or month.
686
+
687
+ **Input**
688
+
689
+ | Field | Type | Required | Description |
690
+ |---|---|---|---|
691
+ | `path.survey_id` | `string` | yes | Survey id (UUID) — from GET /feedback/surveys |
692
+ | `query.bucket` | `string` | no | Trend bucket: day, week or month. default `"week"` |
693
+
694
+ **Returns** `ApiResponse_TrendsDTO_`: the envelope `{ data: TrendsDTO, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
695
+
696
+ Other envelope fields: `pagination` (PaginationMeta).
697
+
698
+ `TrendsDTO` fields:
699
+
700
+ | Field | Type | Required | Description |
701
+ |---|---|---|---|
702
+ | `bars` | `Array<TrendBarDTO>` | yes | |
703
+ | `bucket` | `string` | yes | |
704
+ | `delivery_channel` | `string` | yes | |
705
+ | `survey_id` | `string` | yes | |
706
+ | `type` | `string` | yes | |
707
+
708
+ **Example**
709
+
710
+ ```ts
711
+ const result = await g8.api.surveys.getSurveyTrends({ path: { survey_id: "id" } });
712
+ ```
713
+
714
+ ---
715
+
716
+ <a id="op-listsurveysendingdomains"></a>
717
+
718
+ ### `g8.api.surveys.listSurveySendingDomains(input?)`
719
+
720
+ **List Survey Sending Domains**
721
+
722
+ - HTTP: `GET /api/v1/feedback/sending-domains`
723
+ - operationId: `list_survey_sending_domains_feedback_sending_domains_get` (also callable as `g8.api.call("list_survey_sending_domains_feedback_sending_domains_get", input)`)
724
+ - Tier: `read`: reads data; safe to call and to retry
725
+ - API-key scope: `surveys:read`
726
+
727
+ Domains this org can send surveys from.
728
+
729
+ ``sender_email`` on a send or a trigger must belong to one of the
730
+ ``verified`` domains here. Unstamped domains are reconciled against the mail
731
+ service on the way through, so a domain verified out of band shows up without
732
+ any extra call.
733
+
734
+ **Input**
735
+
736
+ | Field | Type | Required | Description |
737
+ |---|---|---|---|
738
+ | `query.include_unverified` | `boolean` | no | Include domains that are pending or not set up, with their status. default `false` |
739
+
740
+ **Returns** `ApiResponse_list_SurveySendingDomainDTO__`: the envelope `{ data: Array<SurveySendingDomainDTO>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
741
+
742
+ Other envelope fields: `pagination` (PaginationMeta).
743
+
744
+ `SurveySendingDomainDTO` fields:
745
+
746
+ | Field | Type | Required | Description |
747
+ |---|---|---|---|
748
+ | `domain` | `string` | yes | |
749
+ | `id` | `integer` | yes | |
750
+ | `status` | `"verified" \| "pending" \| "not_set_up"` | yes | |
751
+
752
+ **Example**
753
+
754
+ ```ts
755
+ const result = await g8.api.surveys.listSurveySendingDomains();
756
+ ```
757
+
758
+ ---
759
+
760
+ <a id="op-listsurveytriggers"></a>
761
+
762
+ ### `g8.api.surveys.listSurveyTriggers(input)`
763
+
764
+ **List Survey Triggers**
765
+
766
+ - HTTP: `GET /api/v1/feedback/surveys/{survey_id}/triggers`
767
+ - operationId: `list_survey_triggers_feedback_surveys__survey_id__triggers_get` (also callable as `g8.api.call("list_survey_triggers_feedback_surveys__survey_id__triggers_get", input)`)
768
+ - Tier: `read`: reads data; safe to call and to retry
769
+ - API-key scope: `surveys:read`
770
+
771
+ List this survey's automated-send triggers.
772
+
773
+ **Input**
774
+
775
+ | Field | Type | Required | Description |
776
+ |---|---|---|---|
777
+ | `path.survey_id` | `string` | yes | Survey id (UUID) — from GET /feedback/surveys |
778
+
779
+ **Returns** `ApiResponse_list_SurveyTriggerDTO__`: the envelope `{ data: Array<SurveyTriggerDTO>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
780
+
781
+ Other envelope fields: `pagination` (PaginationMeta).
782
+
783
+ `SurveyTriggerDTO` fields:
784
+
785
+ | Field | Type | Required | Description |
786
+ |---|---|---|---|
787
+ | `id` | `string` | yes | |
788
+ | `is_active` | `boolean` | yes | |
789
+ | `sender_email` | `string` | yes | |
790
+ | `subject` | `string` | yes | |
791
+ | `survey_id` | `string` | yes | |
792
+ | `trigger_kind` | `string` | yes | |
793
+ | `audience_ref` | `string \| null` | no | |
794
+ | `cadence_days` | `integer \| null` | no | |
795
+ | `reply_to` | `string \| null` | no | |
796
+ | `sender_name` | `string \| null` | no | |
797
+ | `stage_value` | `string \| null` | no | |
798
+
799
+ **Example**
800
+
801
+ ```ts
802
+ const result = await g8.api.surveys.listSurveyTriggers({ path: { survey_id: "id" } });
803
+ ```
804
+
805
+ ---
806
+
807
+ <a id="op-listsurveys"></a>
808
+
809
+ ### `g8.api.surveys.listSurveys(input?)`
810
+
811
+ **List Surveys**
812
+
813
+ - HTTP: `GET /api/v1/feedback/surveys`
814
+ - operationId: `list_surveys_feedback_surveys_get` (also callable as `g8.api.call("list_surveys_feedback_surveys_get", input)`)
815
+ - Tier: `read`: reads data; safe to call and to retry
816
+ - API-key scope: `surveys:read`
817
+
818
+ List every survey in the org, active and inactive.
819
+
820
+ **Input**: none.
821
+
822
+ **Returns** `ApiResponse_list_SurveyResponseDTO__`: the envelope `{ data: Array<SurveyResponseDTO>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
823
+
824
+ Other envelope fields: `pagination` (PaginationMeta).
825
+
826
+ `SurveyResponseDTO` fields:
827
+
828
+ | Field | Type | Required | Description |
829
+ |---|---|---|---|
830
+ | `delivery_channel` | `string` | yes | |
831
+ | `id` | `string` | yes | |
832
+ | `is_active` | `boolean` | yes | |
833
+ | `name` | `string` | yes | |
834
+ | `question_text` | `string` | yes | |
835
+ | `scale_max` | `integer` | yes | |
836
+ | `scale_min` | `integer` | yes | |
837
+ | `type` | `string` | yes | |
838
+ | `comment_mode` | `string \| null` | no | |
839
+ | `created_at` | `string (date-time) \| null` | no | |
840
+ | `score_field_column_id` | `string \| null` | no | |
841
+ | `template_id` | `integer \| null` | no | |
842
+ | `thank_you_copy` | `string \| null` | no | |
843
+
844
+ **Example**
845
+
846
+ ```ts
847
+ const result = await g8.api.surveys.listSurveys();
848
+ ```
849
+
850
+ ---
851
+
852
+ <a id="op-sendsurvey"></a>
853
+
854
+ ### `g8.api.surveys.sendSurvey(input)`
855
+
856
+ **Send Survey**
857
+
858
+ - HTTP: `POST /api/v1/feedback/surveys/{survey_id}/send`
859
+ - operationId: `send_survey_feedback_surveys__survey_id__send_post` (also callable as `g8.api.call("send_survey_feedback_surveys__survey_id__send_post", input)`)
860
+ - Tier: `external`: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first
861
+ - API-key scope: `surveys:run`
862
+
863
+ Send a survey to an audience. Real mail goes to real people.
864
+
865
+ ``audience_ref`` is a list id. For the email channel ``sender_email`` must sit
866
+ on a verified sending domain (``GET /surveys/sending-domains``) and
867
+ ``subject`` is required. Set ``scheduled_at`` to queue it for later. Returns
868
+ 202 with a ``send_id`` — dispatch is asynchronous; poll
869
+ ``GET /surveys/sends/{send_id}``.
870
+
871
+ **Input**
872
+
873
+ | Field | Type | Required | Description |
874
+ |---|---|---|---|
875
+ | `path.survey_id` | `string` | yes | Survey id (UUID) — from GET /feedback/surveys |
876
+ | `body` | `SendSurveyRequest` | yes | Request body; fields below. |
877
+
878
+ Body fields (`SendSurveyRequest`):
879
+
880
+ | Field | Type | Required | Description |
881
+ |---|---|---|---|
882
+ | `body.audience_ref` | `string` | yes | min length 1 |
883
+ | `body.channel` | `string` | no | default `"email"`, pattern `^(email\|bridge)$` |
884
+ | `body.reply_to` | `string (email) \| null` | no | |
885
+ | `body.scheduled_at` | `string (date-time) \| null` | no | |
886
+ | `body.sender_email` | `string (email) \| null` | no | |
887
+ | `body.sender_name` | `string \| null` | no | |
888
+ | `body.subject` | `string \| null` | no | max length 2000 |
889
+
890
+ **Returns** `ApiResponse_SurveySendAccepted_`: the envelope `{ data: SurveySendAccepted, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
891
+
892
+ Other envelope fields: `pagination` (PaginationMeta).
893
+
894
+ `SurveySendAccepted` fields:
895
+
896
+ | Field | Type | Required | Description |
897
+ |---|---|---|---|
898
+ | `recipient_count` | `integer` | yes | Contacts resolved from the audience at accept time. |
899
+ | `send_id` | `integer` | yes | Poll GET /surveys/sends/{send_id} for progress. |
900
+ | `status` | `string` | yes | Dispatch state, e.g. queued or scheduled. |
901
+
902
+ **Example**
903
+
904
+ ```ts
905
+ // external: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first.
906
+ const result = await g8.api.surveys.sendSurvey({ path: { survey_id: "id" }, body: { audience_ref: "example" } });
907
+ ```
908
+
909
+ ---
910
+
911
+ <a id="op-surveydomainstatus"></a>
912
+
913
+ ### `g8.api.surveys.surveyDomainStatus(input)`
914
+
915
+ **Survey Domain Status**
916
+
917
+ - HTTP: `GET /api/v1/feedback/sending-domains/status`
918
+ - operationId: `survey_domain_status_feedback_sending_domains_status_get` (also callable as `g8.api.call("survey_domain_status_feedback_sending_domains_status_get", input)`)
919
+ - Tier: `read`: reads data; safe to call and to retry
920
+ - API-key scope: `surveys:read`
921
+
922
+ Whether the domain and its DKIM keys have verified yet.
923
+
924
+ Not a passive read: when the provider reports the domain verified, THIS
925
+ call is what promotes it into `GET /feedback/sending-domains`. A caller
926
+ that never polls can end up with a domain that verified upstream and still
927
+ does not appear in the picker.
928
+
929
+ **Input**
930
+
931
+ | Field | Type | Required | Description |
932
+ |---|---|---|---|
933
+ | `query.domain` | `string` | yes | The domain to check. |
934
+
935
+ **Returns** `ApiResponse_SurveyDomainPayload_`: the envelope `{ data: SurveyDomainPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
936
+
937
+ Other envelope fields: `pagination` (PaginationMeta).
938
+
939
+ **Example**
940
+
941
+ ```ts
942
+ const result = await g8.api.surveys.surveyDomainStatus({ query: { domain: "acme.com" } });
943
+ ```
944
+
945
+ ---
946
+
947
+ <a id="op-updatesurvey"></a>
948
+
949
+ ### `g8.api.surveys.updateSurvey(input)`
950
+
951
+ **Update Survey**
952
+
953
+ - HTTP: `PATCH /api/v1/feedback/surveys/{survey_id}`
954
+ - operationId: `update_survey_feedback_surveys__survey_id__patch` (also callable as `g8.api.call("update_survey_feedback_surveys__survey_id__patch", input)`)
955
+ - Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
956
+ - API-key scope: `surveys:write`
957
+
958
+ Update a survey. Only supplied fields change.
959
+
960
+ Setting ``is_active: false`` stops new sends and in-app impressions while
961
+ keeping every response already collected.
962
+
963
+ **Input**
964
+
965
+ | Field | Type | Required | Description |
966
+ |---|---|---|---|
967
+ | `path.survey_id` | `string` | yes | Survey id (UUID) — from GET /feedback/surveys |
968
+ | `body` | `UpdateSurveyRequest` | yes | Request body; fields below. |
969
+
970
+ Body fields (`UpdateSurveyRequest`):
971
+
972
+ | Field | Type | Required | Description |
973
+ |---|---|---|---|
974
+ | `body.delivery_channel` | `string \| null` | no | pattern `^(email\|bridge\|in_app)$` |
975
+ | `body.is_active` | `boolean \| null` | no | |
976
+ | `body.name` | `string \| null` | no | max length 255 |
977
+ | `body.question_text` | `string \| null` | no | |
978
+ | `body.template_id` | `integer \| null` | no | |
979
+ | `body.thank_you_copy` | `string \| null` | no | |
980
+
981
+ **Returns** `ApiResponse_SurveyResponseDTO_`: the envelope `{ data: SurveyResponseDTO, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
982
+
983
+ Other envelope fields: `pagination` (PaginationMeta).
984
+
985
+ `SurveyResponseDTO` fields:
986
+
987
+ | Field | Type | Required | Description |
988
+ |---|---|---|---|
989
+ | `delivery_channel` | `string` | yes | |
990
+ | `id` | `string` | yes | |
991
+ | `is_active` | `boolean` | yes | |
992
+ | `name` | `string` | yes | |
993
+ | `question_text` | `string` | yes | |
994
+ | `scale_max` | `integer` | yes | |
995
+ | `scale_min` | `integer` | yes | |
996
+ | `type` | `string` | yes | |
997
+ | `comment_mode` | `string \| null` | no | |
998
+ | `created_at` | `string (date-time) \| null` | no | |
999
+ | `score_field_column_id` | `string \| null` | no | |
1000
+ | `template_id` | `integer \| null` | no | |
1001
+ | `thank_you_copy` | `string \| null` | no | |
1002
+
1003
+ **Example**
1004
+
1005
+ ```ts
1006
+ const result = await g8.api.surveys.updateSurvey({ path: { survey_id: "id" }, body: {} });
1007
+ ```
1008
+
1009
+ ---
1010
+
1011
+ <a id="op-verifysurveydomain"></a>
1012
+
1013
+ ### `g8.api.surveys.verifySurveyDomain(input)`
1014
+
1015
+ **Verify Survey Domain**
1016
+
1017
+ - HTTP: `POST /api/v1/feedback/sending-domains/verify`
1018
+ - operationId: `verify_survey_domain_feedback_sending_domains_verify_post` (also callable as `g8.api.call("verify_survey_domain_feedback_sending_domains_verify_post", input)`)
1019
+ - Tier: `external`: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first
1020
+ - API-key scope: `surveys:run`
1021
+
1022
+ Start verification of a domain for SURVEY sending, and get the DNS
1023
+ records back.
1024
+
1025
+ The records include DMARC, which Gmail and Yahoo require of bulk senders -
1026
+ publishing SPF and DKIM alone passes this check and still lands in spam.
1027
+
1028
+ Idempotent: re-running it on a domain already being verified re-reads the
1029
+ records rather than starting again, and a previously FAILED domain is reset
1030
+ to pending so the reconciler picks it up.
1031
+
1032
+ A domain bought through graph8 has its DNS added automatically; a domain
1033
+ you own needs the records added at your own provider before
1034
+ `/status` will ever turn green.
1035
+
1036
+ **Input**
1037
+
1038
+ | Field | Type | Required | Description |
1039
+ |---|---|---|---|
1040
+ | `body` | `VerifySurveyDomainRequest` | yes | Request body; fields below. |
1041
+
1042
+ Body fields (`VerifySurveyDomainRequest`):
1043
+
1044
+ | Field | Type | Required | Description |
1045
+ |---|---|---|---|
1046
+ | `body.domain` | `string` | yes | The sending domain or subdomain, e.g. `feedback.acme.com`. min length 1 |
1047
+
1048
+ **Returns** `ApiResponse_SurveyDomainPayload_`: the envelope `{ data: SurveyDomainPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
1049
+
1050
+ Other envelope fields: `pagination` (PaginationMeta).
1051
+
1052
+ **Example**
1053
+
1054
+ ```ts
1055
+ // external: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first.
1056
+ const result = await g8.api.surveys.verifySurveyDomain({ body: { domain: "acme.com" } });
1057
+ ```
1058
+
1059
+ ---
1060
+
1061
+ ## Referenced types
1062
+
1063
+ Named types that appear in the tables above. Full TypeScript definitions: `G8Contract.<Name>` (`import type { G8Contract } from "@graph8/sdk"`).
1064
+
1065
+ <a id="type-appuserresponserowdto"></a>
1066
+
1067
+ ### `AppUserResponseRowDTO`
1068
+
1069
+ | Field | Type | Required | Description |
1070
+ |---|---|---|---|
1071
+ | `app_user_id` | `string` | yes | |
1072
+ | `channel` | `string` | yes | |
1073
+ | `score` | `integer` | yes | |
1074
+ | `comment` | `string \| null` | no | |
1075
+ | `responded_at` | `string \| null` | no | |
1076
+
1077
+ <a id="type-companycontactscoredto"></a>
1078
+
1079
+ ### `CompanyContactScoreDTO`
1080
+
1081
+ | Field | Type | Required | Description |
1082
+ |---|---|---|---|
1083
+ | `contact_id` | `integer` | yes | |
1084
+ | `classification` | `string \| null` | no | |
1085
+ | `first_name` | `string \| null` | no | |
1086
+ | `history` | `Array<SurveyScorePointDTO>` | no | default `[]` |
1087
+ | `last_name` | `string \| null` | no | |
1088
+ | `last_responded_at` | `string \| null` | no | |
1089
+ | `responded` | `boolean` | no | default `false` |
1090
+ | `score` | `integer \| null` | no | |
1091
+ | `trend` | `string \| null` | no | |
1092
+
1093
+ <a id="type-contacthistoryitemdto"></a>
1094
+
1095
+ ### `ContactHistoryItemDTO`
1096
+
1097
+ | Field | Type | Required | Description |
1098
+ |---|---|---|---|
1099
+ | `score` | `integer` | yes | |
1100
+ | `survey_id` | `string` | yes | |
1101
+ | `type` | `string` | yes | |
1102
+ | `channel` | `string \| null` | no | |
1103
+ | `classification` | `string \| null` | no | |
1104
+ | `responded_at` | `string \| null` | no | |
1105
+ | `survey_name` | `string \| null` | no | |
1106
+
1107
+ <a id="type-coveragedto"></a>
1108
+
1109
+ ### `CoverageDTO`
1110
+
1111
+ | Field | Type | Required | Description |
1112
+ |---|---|---|---|
1113
+ | `rate` | `number` | yes | |
1114
+ | `responded` | `integer` | yes | |
1115
+ | `total_contacts` | `integer` | yes | |
1116
+
1117
+ <a id="type-orgcsatblockdto"></a>
1118
+
1119
+ ### `OrgCsatBlockDTO`
1120
+
1121
+ | Field | Type | Required | Description |
1122
+ |---|---|---|---|
1123
+ | `total_respondents` | `integer` | yes | |
1124
+ | `csat_avg` | `number \| null` | no | |
1125
+
1126
+ <a id="type-orgnpsblockdto"></a>
1127
+
1128
+ ### `OrgNpsBlockDTO`
1129
+
1130
+ | Field | Type | Required | Description |
1131
+ |---|---|---|---|
1132
+ | `detractors` | `integer` | yes | |
1133
+ | `passives` | `integer` | yes | |
1134
+ | `promoters` | `integer` | yes | |
1135
+ | `total_respondents` | `integer` | yes | |
1136
+ | `nps_score` | `number \| null` | no | |
1137
+
1138
+ <a id="type-persurveydto"></a>
1139
+
1140
+ ### `PerSurveyDTO`
1141
+
1142
+ | Field | Type | Required | Description |
1143
+ |---|---|---|---|
1144
+ | `detractors` | `integer` | yes | |
1145
+ | `passives` | `integer` | yes | |
1146
+ | `promoters` | `integer` | yes | |
1147
+ | `survey_id` | `string` | yes | |
1148
+ | `total_respondents` | `integer` | yes | |
1149
+ | `type` | `string` | yes | |
1150
+ | `audience_count` | `integer \| null` | no | |
1151
+ | `audience_name` | `string \| null` | no | |
1152
+ | `audience_ref` | `string \| null` | no | |
1153
+ | `cadence_days` | `integer \| null` | no | |
1154
+ | `cadence_kind` | `string \| null` | no | |
1155
+ | `cadence_label` | `string \| null` | no | |
1156
+ | `csat_avg` | `number \| null` | no | |
1157
+ | `delivery_channel` | `string \| null` | no | |
1158
+ | `is_active` | `boolean` | no | default `true` |
1159
+ | `name` | `string \| null` | no | |
1160
+ | `nps_score` | `number \| null` | no | |
1161
+ | `sent_count` | `integer` | no | default `0` |
1162
+ | `status` | `string \| null` | no | |
1163
+ | `trend` | `Array<TrendBarDTO>` | no | default `[]` |
1164
+
1165
+ <a id="type-responseratedto"></a>
1166
+
1167
+ ### `ResponseRateDTO`
1168
+
1169
+ | Field | Type | Required | Description |
1170
+ |---|---|---|---|
1171
+ | `rate` | `number` | yes | |
1172
+ | `responded` | `integer` | yes | |
1173
+ | `sent` | `integer` | yes | |
1174
+
1175
+ <a id="type-surveyresponserowdto"></a>
1176
+
1177
+ ### `SurveyResponseRowDTO`
1178
+
1179
+ | Field | Type | Required | Description |
1180
+ |---|---|---|---|
1181
+ | `contact_id` | `integer` | yes | |
1182
+ | `score` | `integer` | yes | |
1183
+ | `channel` | `string \| null` | no | |
1184
+ | `classification` | `string \| null` | no | |
1185
+ | `comment` | `string \| null` | no | |
1186
+ | `first_name` | `string \| null` | no | |
1187
+ | `history` | `Array<SurveyScorePointDTO>` | no | default `[]` |
1188
+ | `last_name` | `string \| null` | no | |
1189
+ | `responded_at` | `string \| null` | no | |
1190
+ | `response_count` | `integer` | no | default `1` |
1191
+ | `trend` | `string \| null` | no | |
1192
+
1193
+ <a id="type-surveysendrowdto"></a>
1194
+
1195
+ ### `SurveySendRowDTO`
1196
+
1197
+ | Field | Type | Required | Description |
1198
+ |---|---|---|---|
1199
+ | `channel` | `string` | yes | |
1200
+ | `delivery_breakdown` | `SendDeliveryBreakdownDTO` | yes | |
1201
+ | `id` | `integer` | yes | |
1202
+ | `status` | `string` | yes | |
1203
+ | `audience_name` | `string \| null` | no | |
1204
+ | `audience_ref` | `string \| null` | no | |
1205
+ | `created_at` | `string \| null` | no | |
1206
+ | `recipient_count` | `integer` | no | default `0` |
1207
+ | `responded_count` | `integer` | no | default `0` |
1208
+ | `scheduled_at` | `string \| null` | no | |
1209
+ | `trigger_kind` | `string \| null` | no | |
1210
+
1211
+ <a id="type-trendbardto"></a>
1212
+
1213
+ ### `TrendBarDTO`
1214
+
1215
+ | Field | Type | Required | Description |
1216
+ |---|---|---|---|
1217
+ | `detractors` | `integer` | yes | |
1218
+ | `passives` | `integer` | yes | |
1219
+ | `period` | `string` | yes | |
1220
+ | `promoters` | `integer` | yes | |
1221
+ | `total` | `integer` | yes | |
1222
+ | `csat_avg` | `number \| null` | no | |
1223
+ | `nps_score` | `number \| null` | no | |