@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.
- package/README.md +9 -2
- package/dist/cli.js +216 -0
- package/dist/index.d.mts +105 -7
- package/dist/index.d.ts +105 -7
- package/dist/index.js +44 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +44 -3
- package/dist/index.mjs.map +1 -1
- package/dist/react.d.mts +103 -7
- package/dist/react.d.ts +103 -7
- package/dist/react.js +62 -11
- package/dist/react.js.map +1 -1
- package/dist/react.mjs +53 -12
- package/dist/react.mjs.map +1 -1
- package/dist/types/README.md +7 -0
- package/dist/types/agency.d.ts +20 -0
- package/dist/types/agentSetup.d.ts +57 -0
- package/dist/types/api.d.ts +127 -0
- package/dist/types/appClient.d.ts +99 -0
- package/dist/types/appPlatform.d.ts +269 -0
- package/dist/types/appTokens.d.ts +125 -0
- package/dist/types/apps.d.ts +130 -0
- package/dist/types/audiences.d.ts +88 -0
- package/dist/types/calendar.d.ts +55 -0
- package/dist/types/campaigns.d.ts +61 -0
- package/dist/types/chat.d.ts +35 -0
- package/dist/types/cli.d.ts +14 -0
- package/dist/types/companies.d.ts +123 -0
- package/dist/types/contacts.d.ts +200 -0
- package/dist/types/copilot.d.ts +31 -0
- package/dist/types/core.d.ts +1052 -0
- package/dist/types/deals.d.ts +215 -0
- package/dist/types/enrich.d.ts +51 -0
- package/dist/types/fields.d.ts +84 -0
- package/dist/types/forms.d.ts +16 -0
- package/dist/types/http.d.ts +141 -0
- package/dist/types/inbox.d.ts +123 -0
- package/dist/types/index.d.ts +63 -0
- package/dist/types/intent.d.ts +196 -0
- package/dist/types/lists.d.ts +44 -0
- package/dist/types/mailboxes.d.ts +240 -0
- package/dist/types/marketplace.d.ts +62 -0
- package/dist/types/meetings.d.ts +70 -0
- package/dist/types/newsletter.d.ts +212 -0
- package/dist/types/notes.d.ts +57 -0
- package/dist/types/objects.d.ts +281 -0
- package/dist/types/pipelines.d.ts +135 -0
- package/dist/types/quotes.d.ts +143 -0
- package/dist/types/react.d.ts +978 -0
- package/dist/types/search.d.ts +99 -0
- package/dist/types/sequences.d.ts +255 -0
- package/dist/types/signals.d.ts +28 -0
- package/dist/types/skills.d.ts +176 -0
- package/dist/types/snippet.d.ts +24 -0
- package/dist/types/studio.d.ts +161 -0
- package/dist/types/tasks.d.ts +101 -0
- package/dist/types/types.d.ts +45 -0
- package/dist/types/utils.d.ts +21 -0
- package/dist/types/version.d.ts +10 -0
- package/dist/types/visitors.d.ts +29 -0
- package/dist/types/voice.d.ts +304 -0
- package/dist/types/webhooks.d.ts +71 -0
- package/dist/types/workflows.d.ts +229 -0
- package/docs/agents.md +748 -0
- package/docs/api/README.md +165 -0
- package/docs/api/accounts.d.ts +396 -0
- package/docs/api/accounts.md +644 -0
- package/docs/api/adCampaigns.d.ts +707 -0
- package/docs/api/adCampaigns.md +1091 -0
- package/docs/api/adCreatives.d.ts +996 -0
- package/docs/api/adCreatives.md +1708 -0
- package/docs/api/agency.d.ts +556 -0
- package/docs/api/agency.md +845 -0
- package/docs/api/agent.d.ts +330 -0
- package/docs/api/agent.md +514 -0
- package/docs/api/agents.d.ts +1622 -0
- package/docs/api/agents.md +2860 -0
- package/docs/api/aiInbox.d.ts +1984 -0
- package/docs/api/aiInbox.md +3490 -0
- package/docs/api/analytics.d.ts +1273 -0
- package/docs/api/analytics.md +2095 -0
- package/docs/api/apiKeys.d.ts +252 -0
- package/docs/api/apiKeys.md +318 -0
- package/docs/api/appDeployments.d.ts +236 -0
- package/docs/api/appDeployments.md +471 -0
- package/docs/api/appDomains.d.ts +171 -0
- package/docs/api/appDomains.md +281 -0
- package/docs/api/appLogs.d.ts +120 -0
- package/docs/api/appLogs.md +159 -0
- package/docs/api/appObjects.d.ts +415 -0
- package/docs/api/appObjects.md +568 -0
- package/docs/api/appPages.d.ts +557 -0
- package/docs/api/appPages.md +796 -0
- package/docs/api/appPlatformTokens.d.ts +123 -0
- package/docs/api/appPlatformTokens.md +172 -0
- package/docs/api/appointments.d.ts +2361 -0
- package/docs/api/appointments.md +3917 -0
- package/docs/api/apps.d.ts +822 -0
- package/docs/api/apps.md +1342 -0
- package/docs/api/assertUpsert.d.ts +286 -0
- package/docs/api/assertUpsert.md +370 -0
- package/docs/api/audienceSyncs.d.ts +259 -0
- package/docs/api/audienceSyncs.md +395 -0
- package/docs/api/brandKit.d.ts +686 -0
- package/docs/api/brandKit.md +1133 -0
- package/docs/api/bugReports.d.ts +181 -0
- package/docs/api/bugReports.md +268 -0
- package/docs/api/by-path.md +3260 -0
- package/docs/api/calendarInvites.d.ts +117 -0
- package/docs/api/calendarInvites.md +148 -0
- package/docs/api/campaignWorkflows.d.ts +152 -0
- package/docs/api/campaignWorkflows.md +200 -0
- package/docs/api/campaigns.d.ts +721 -0
- package/docs/api/campaigns.md +1236 -0
- package/docs/api/channels.d.ts +171 -0
- package/docs/api/channels.md +235 -0
- package/docs/api/cliCampaigns.d.ts +205 -0
- package/docs/api/cliCampaigns.md +256 -0
- package/docs/api/cliPipelines.d.ts +324 -0
- package/docs/api/cliPipelines.md +562 -0
- package/docs/api/clickHouse.d.ts +115 -0
- package/docs/api/clickHouse.md +138 -0
- package/docs/api/companies.d.ts +1636 -0
- package/docs/api/companies.md +2211 -0
- package/docs/api/companyIntelligence.d.ts +299 -0
- package/docs/api/companyIntelligence.md +488 -0
- package/docs/api/contacts.d.ts +2173 -0
- package/docs/api/contacts.md +3143 -0
- package/docs/api/content.d.ts +968 -0
- package/docs/api/content.md +1667 -0
- package/docs/api/contentGridSkills.d.ts +177 -0
- package/docs/api/contentGridSkills.md +271 -0
- package/docs/api/copilot.d.ts +1017 -0
- package/docs/api/copilot.md +1765 -0
- package/docs/api/crmSyncs.d.ts +215 -0
- package/docs/api/crmSyncs.md +301 -0
- package/docs/api/customerSuccess.d.ts +491 -0
- package/docs/api/customerSuccess.md +776 -0
- package/docs/api/deals.d.ts +1697 -0
- package/docs/api/deals.md +2436 -0
- package/docs/api/deliverability.d.ts +418 -0
- package/docs/api/deliverability.md +677 -0
- package/docs/api/desk.d.ts +1765 -0
- package/docs/api/desk.md +3007 -0
- package/docs/api/dialer.d.ts +1185 -0
- package/docs/api/dialer.md +2166 -0
- package/docs/api/dialerAnalytics.d.ts +187 -0
- package/docs/api/dialerAnalytics.md +257 -0
- package/docs/api/documents.d.ts +895 -0
- package/docs/api/documents.md +1440 -0
- package/docs/api/duplicates.d.ts +195 -0
- package/docs/api/duplicates.md +315 -0
- package/docs/api/eSign.d.ts +38 -0
- package/docs/api/eSign.md +54 -0
- package/docs/api/eSignature.d.ts +242 -0
- package/docs/api/eSignature.md +341 -0
- package/docs/api/enrichment.d.ts +3207 -0
- package/docs/api/enrichment.md +5225 -0
- package/docs/api/events.d.ts +115 -0
- package/docs/api/events.md +105 -0
- package/docs/api/fields.d.ts +482 -0
- package/docs/api/fields.md +566 -0
- package/docs/api/forms.d.ts +1012 -0
- package/docs/api/forms.md +1542 -0
- package/docs/api/gtmCampaigns.d.ts +662 -0
- package/docs/api/gtmCampaigns.md +1044 -0
- package/docs/api/gtmContext.d.ts +1187 -0
- package/docs/api/gtmContext.md +2112 -0
- package/docs/api/gtmDeliverability.d.ts +60 -0
- package/docs/api/gtmDeliverability.md +63 -0
- package/docs/api/gtmKnowledgeBase.d.ts +76 -0
- package/docs/api/gtmKnowledgeBase.md +91 -0
- package/docs/api/gtmLaunchHelpers.d.ts +123 -0
- package/docs/api/gtmLaunchHelpers.md +148 -0
- package/docs/api/gtmLibrary.d.ts +448 -0
- package/docs/api/gtmLibrary.md +780 -0
- package/docs/api/health.d.ts +39 -0
- package/docs/api/health.md +58 -0
- package/docs/api/imageLibrary.d.ts +341 -0
- package/docs/api/imageLibrary.md +569 -0
- package/docs/api/imports.d.ts +157 -0
- package/docs/api/imports.md +174 -0
- package/docs/api/inbox.d.ts +709 -0
- package/docs/api/inbox.md +1067 -0
- package/docs/api/install.d.ts +213 -0
- package/docs/api/install.md +317 -0
- package/docs/api/installedApps.d.ts +131 -0
- package/docs/api/installedApps.md +241 -0
- package/docs/api/integrationStatus.d.ts +142 -0
- package/docs/api/integrationStatus.md +205 -0
- package/docs/api/integrations.d.ts +2327 -0
- package/docs/api/integrations.md +3791 -0
- package/docs/api/intent.d.ts +482 -0
- package/docs/api/intent.md +858 -0
- package/docs/api/knowledge.d.ts +501 -0
- package/docs/api/knowledge.md +843 -0
- package/docs/api/knowledgeBase.d.ts +84 -0
- package/docs/api/knowledgeBase.md +96 -0
- package/docs/api/landingPages.d.ts +1411 -0
- package/docs/api/landingPages.md +2488 -0
- package/docs/api/leads.d.ts +133 -0
- package/docs/api/leads.md +180 -0
- package/docs/api/library.d.ts +217 -0
- package/docs/api/library.md +338 -0
- package/docs/api/linkedIn.d.ts +227 -0
- package/docs/api/linkedIn.md +289 -0
- package/docs/api/linkedInOutreach.d.ts +727 -0
- package/docs/api/linkedInOutreach.md +990 -0
- package/docs/api/lists.d.ts +1106 -0
- package/docs/api/lists.md +1609 -0
- package/docs/api/logs.d.ts +71 -0
- package/docs/api/logs.md +70 -0
- package/docs/api/mailboxes.d.ts +1050 -0
- package/docs/api/mailboxes.md +1690 -0
- package/docs/api/marketingIntelligence.d.ts +256 -0
- package/docs/api/marketingIntelligence.md +454 -0
- package/docs/api/marketplace.d.ts +3173 -0
- package/docs/api/marketplace.md +5953 -0
- package/docs/api/mcp.d.ts +69 -0
- package/docs/api/mcp.md +69 -0
- package/docs/api/me.d.ts +54 -0
- package/docs/api/me.md +56 -0
- package/docs/api/meetings.d.ts +539 -0
- package/docs/api/meetings.md +747 -0
- package/docs/api/newsletter.d.ts +1613 -0
- package/docs/api/newsletter.md +2746 -0
- package/docs/api/notes.d.ts +517 -0
- package/docs/api/notes.md +888 -0
- package/docs/api/notifications.d.ts +94 -0
- package/docs/api/notifications.md +105 -0
- package/docs/api/objects.d.ts +621 -0
- package/docs/api/objects.md +1098 -0
- package/docs/api/openSearch.d.ts +234 -0
- package/docs/api/openSearch.md +297 -0
- package/docs/api/ops.d.ts +299 -0
- package/docs/api/ops.md +339 -0
- package/docs/api/orgGovernance.d.ts +393 -0
- package/docs/api/orgGovernance.md +623 -0
- package/docs/api/orgVideos.d.ts +184 -0
- package/docs/api/orgVideos.md +252 -0
- package/docs/api/organizationSettings.d.ts +626 -0
- package/docs/api/organizationSettings.md +911 -0
- package/docs/api/phoneNumbers.d.ts +484 -0
- package/docs/api/phoneNumbers.md +777 -0
- package/docs/api/profile.d.ts +329 -0
- package/docs/api/profile.md +540 -0
- package/docs/api/programmaticPages.d.ts +400 -0
- package/docs/api/programmaticPages.md +626 -0
- package/docs/api/providerDomains.d.ts +866 -0
- package/docs/api/providerDomains.md +1446 -0
- package/docs/api/providerUsage.d.ts +129 -0
- package/docs/api/providerUsage.md +186 -0
- package/docs/api/public.d.ts +69 -0
- package/docs/api/public.md +78 -0
- package/docs/api/publicCopilot.d.ts +67 -0
- package/docs/api/publicCopilot.md +80 -0
- package/docs/api/publicSignals.d.ts +66 -0
- package/docs/api/publicSignals.md +71 -0
- package/docs/api/publicVisitors.d.ts +97 -0
- package/docs/api/publicVisitors.md +118 -0
- package/docs/api/quotes.d.ts +1564 -0
- package/docs/api/quotes.md +2553 -0
- package/docs/api/radar.d.ts +808 -0
- package/docs/api/radar.md +1431 -0
- package/docs/api/radarReports.d.ts +208 -0
- package/docs/api/radarReports.md +306 -0
- package/docs/api/recordRoles.d.ts +143 -0
- package/docs/api/recordRoles.md +175 -0
- package/docs/api/repos.d.ts +146 -0
- package/docs/api/repos.md +211 -0
- package/docs/api/research.d.ts +295 -0
- package/docs/api/research.md +534 -0
- package/docs/api/revenue.d.ts +402 -0
- package/docs/api/revenue.md +608 -0
- package/docs/api/revenueAnalytics.d.ts +147 -0
- package/docs/api/revenueAnalytics.md +212 -0
- package/docs/api/revenueLifecycle.d.ts +207 -0
- package/docs/api/revenueLifecycle.md +274 -0
- package/docs/api/revenueRecords.d.ts +372 -0
- package/docs/api/revenueRecords.md +563 -0
- package/docs/api/roles.d.ts +431 -0
- package/docs/api/roles.md +812 -0
- package/docs/api/salesCoach.d.ts +877 -0
- package/docs/api/salesCoach.md +1540 -0
- package/docs/api/sandbox.d.ts +210 -0
- package/docs/api/sandbox.md +380 -0
- package/docs/api/scans.d.ts +104 -0
- package/docs/api/scans.md +136 -0
- package/docs/api/scheduleBuy.d.ts +293 -0
- package/docs/api/scheduleBuy.md +431 -0
- package/docs/api/scraping.d.ts +266 -0
- package/docs/api/scraping.md +383 -0
- package/docs/api/sdrAnalytics.d.ts +138 -0
- package/docs/api/sdrAnalytics.md +246 -0
- package/docs/api/search.d.ts +598 -0
- package/docs/api/search.md +866 -0
- package/docs/api/seo.d.ts +447 -0
- package/docs/api/seo.md +660 -0
- package/docs/api/sequenceLifecycle.d.ts +439 -0
- package/docs/api/sequenceLifecycle.md +513 -0
- package/docs/api/sequences.d.ts +1936 -0
- package/docs/api/sequences.md +3232 -0
- package/docs/api/settings.d.ts +448 -0
- package/docs/api/settings.md +731 -0
- package/docs/api/signals.d.ts +1441 -0
- package/docs/api/signals.md +2526 -0
- package/docs/api/signatures.d.ts +719 -0
- package/docs/api/signatures.md +1247 -0
- package/docs/api/skills.d.ts +230 -0
- package/docs/api/skills.md +466 -0
- package/docs/api/snippet.d.ts +85 -0
- package/docs/api/snippet.md +106 -0
- package/docs/api/socialPublishing.d.ts +824 -0
- package/docs/api/socialPublishing.md +1245 -0
- package/docs/api/studioDocuments.d.ts +244 -0
- package/docs/api/studioDocuments.md +348 -0
- package/docs/api/support.d.ts +90 -0
- package/docs/api/support.md +76 -0
- package/docs/api/suppressions.d.ts +241 -0
- package/docs/api/suppressions.md +343 -0
- package/docs/api/surveys.d.ts +847 -0
- package/docs/api/surveys.md +1223 -0
- package/docs/api/tasks.d.ts +813 -0
- package/docs/api/tasks.md +1344 -0
- package/docs/api/teamMembers.d.ts +668 -0
- package/docs/api/teamMembers.md +1040 -0
- package/docs/api/teams.d.ts +784 -0
- package/docs/api/teams.md +1395 -0
- package/docs/api/usage.d.ts +277 -0
- package/docs/api/usage.md +389 -0
- package/docs/api/visitors.d.ts +690 -0
- package/docs/api/visitors.md +1075 -0
- package/docs/api/voice.d.ts +4661 -0
- package/docs/api/voice.md +7905 -0
- package/docs/api/webAnalytics.d.ts +964 -0
- package/docs/api/webAnalytics.md +1452 -0
- package/docs/api/webChat.d.ts +1704 -0
- package/docs/api/webChat.md +2048 -0
- package/docs/api/webhooks.d.ts +251 -0
- package/docs/api/webhooks.md +386 -0
- package/docs/api/websiteEditor.d.ts +324 -0
- package/docs/api/websiteEditor.md +517 -0
- package/docs/api/work.d.ts +2298 -0
- package/docs/api/work.md +3096 -0
- package/docs/api/workbench.d.ts +2962 -0
- package/docs/api/workbench.md +4884 -0
- package/docs/api/workflows.d.ts +1218 -0
- package/docs/api/workflows.md +2302 -0
- package/docs/sdk-clients.md +4339 -0
- package/package.json +10 -3
|
@@ -0,0 +1,2095 @@
|
|
|
1
|
+
<!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
|
|
2
|
+
|
|
3
|
+
# `g8.api.analytics`: Analytics
|
|
4
|
+
|
|
5
|
+
51 operations (51 read).
|
|
6
|
+
|
|
7
|
+
No hand-written client covers this area. Call it through `g8.api.analytics.*` 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: [analytics.d.ts](analytics.d.ts).
|
|
20
|
+
|
|
21
|
+
## Operations
|
|
22
|
+
|
|
23
|
+
| Call | HTTP | Tier | Scope | Summary |
|
|
24
|
+
|---|---|---|---|---|
|
|
25
|
+
| [`computeCohort`](#op-computecohort) | `POST /api/v1/analytics/sales-report/cohort` | read | `analytics:read` | Compute Cohort |
|
|
26
|
+
| [`explainCohort`](#op-explaincohort) | `POST /api/v1/analytics/sales-report/cohort/explain` | read | `analytics:read` | Explain Cohort |
|
|
27
|
+
| [`exportCohortCsv`](#op-exportcohortcsv) | `POST /api/v1/analytics/sales-report/export` | read | `analytics:read` | Export Cohort Csv |
|
|
28
|
+
| [`getActivationFunnel`](#op-getactivationfunnel) | `GET /api/v1/analytics/product-usage/activation-funnel` | read | `analytics:read` | Get Activation Funnel |
|
|
29
|
+
| [`getActiveUsers`](#op-getactiveusers) | `GET /api/v1/analytics/product-usage/active-users` | read | `analytics:read` | Get Active Users |
|
|
30
|
+
| [`getAnalyticsDataSources`](#op-getanalyticsdatasources) | `GET /api/v1/analytics/data-sources` | read | `analytics:read` | Get Analytics Data Sources |
|
|
31
|
+
| [`getAudienceByIndustry`](#op-getaudiencebyindustry) | `GET /api/v1/analytics/outbound/audience/industry` | read | `analytics:read` | Get Audience By Industry |
|
|
32
|
+
| [`getAudienceByIndustryGroup`](#op-getaudiencebyindustrygroup) | `GET /api/v1/analytics/outbound/audience/industry-group` | read | `analytics:read` | Get Audience By Industry Group |
|
|
33
|
+
| [`getAudienceBySeniority`](#op-getaudiencebyseniority) | `GET /api/v1/analytics/outbound/audience/seniority` | read | `analytics:read` | Get Audience By Seniority |
|
|
34
|
+
| [`getCallMetrics`](#op-getcallmetrics) | `GET /api/v1/analytics/outbound/call-metrics` | read | `analytics:read` | Get Call Metrics |
|
|
35
|
+
| [`getCallTrend`](#op-getcalltrend) | `GET /api/v1/analytics/outbound/call-metrics/trend` | read | `analytics:read` | Get Call Trend |
|
|
36
|
+
| [`getCampaignDashboard`](#op-getcampaigndashboard) | `GET /api/v1/analytics/outbound/dashboards/campaign` | read | `analytics:read` | Get Campaign Dashboard |
|
|
37
|
+
| [`getCampaignVisitors`](#op-getcampaignvisitors) | `GET /api/v1/analytics/campaign-visitors` | read | `analytics:read` | Get Campaign Visitors |
|
|
38
|
+
| [`getChannelAttribution`](#op-getchannelattribution) | `GET /api/v1/analytics/outbound/channel-attribution` | read | `analytics:read` | Get Channel Attribution |
|
|
39
|
+
| [`getDataQuality`](#op-getdataquality) | `GET /api/v1/analytics/sales-report/data-quality` | read | `analytics:read` | Get Data Quality |
|
|
40
|
+
| [`getDunning`](#op-getdunning) | `GET /api/v1/analytics/subscriptions/dunning` | read | `analytics:read` | Get Dunning |
|
|
41
|
+
| [`getEmailBySequence`](#op-getemailbysequence) | `GET /api/v1/analytics/outbound/email-metrics/by-sequence` | read | `analytics:read` | Get Email By Sequence |
|
|
42
|
+
| [`getEmailByStep`](#op-getemailbystep) | `GET /api/v1/analytics/outbound/email-metrics/by-step` | read | `analytics:read` | Get Email By Step |
|
|
43
|
+
| [`getEmailMetrics`](#op-getemailmetrics) | `GET /api/v1/analytics/outbound/email-metrics` | read | `analytics:read` | Get Email Metrics |
|
|
44
|
+
| [`getEmailTrend`](#op-getemailtrend) | `GET /api/v1/analytics/outbound/email-metrics/trend` | read | `analytics:read` | Get Email Trend |
|
|
45
|
+
| [`getExecutiveDashboard`](#op-getexecutivedashboard) | `GET /api/v1/analytics/outbound/dashboards/executive` | read | `analytics:read` | Get Executive Dashboard |
|
|
46
|
+
| [`getFeatureAdoption`](#op-getfeatureadoption) | `GET /api/v1/analytics/product-usage/feature-adoption` | read | `analytics:read` | Get Feature Adoption |
|
|
47
|
+
| [`getFilterOptions`](#op-getfilteroptions) | `GET /api/v1/analytics/sales-report/filter-options` | read | `analytics:read` | Get Filter Options |
|
|
48
|
+
| [`getLaunchpadActivityProfile`](#op-getlaunchpadactivityprofile) | `GET /api/v1/analytics/launchpad/activity-profile` | read | `analytics:read` | Get Launchpad Activity Profile |
|
|
49
|
+
| [`getLaunchpadBriefing`](#op-getlaunchpadbriefing) | `GET /api/v1/analytics/launchpad/briefing` | read | `analytics:read` | Get Launchpad Briefing |
|
|
50
|
+
| [`getLaunchpadCalendarToday`](#op-getlaunchpadcalendartoday) | `GET /api/v1/analytics/launchpad/calendar/today` | read | `analytics:read` | Get Launchpad Calendar Today |
|
|
51
|
+
| [`getLaunchpadHomeFeed`](#op-getlaunchpadhomefeed) | `GET /api/v1/analytics/launchpad/home-feed` | read | `analytics:read` | Get Launchpad Home Feed |
|
|
52
|
+
| [`getLaunchpadSmartCards`](#op-getlaunchpadsmartcards) | `GET /api/v1/analytics/launchpad/smart-cards` | read | `analytics:read` | Get Launchpad Smart Cards |
|
|
53
|
+
| [`getManagerDashboard`](#op-getmanagerdashboard) | `GET /api/v1/analytics/outbound/dashboards/manager` | read | `analytics:read` | Get Manager Dashboard |
|
|
54
|
+
| [`getMeetingByChannel`](#op-getmeetingbychannel) | `GET /api/v1/analytics/outbound/meeting-metrics/by-channel` | read | `analytics:read` | Get Meeting By Channel |
|
|
55
|
+
| [`getMeetingFunnel`](#op-getmeetingfunnel) | `GET /api/v1/analytics/outbound/meeting-funnel` | read | `analytics:read` | Get Meeting Funnel |
|
|
56
|
+
| [`getMeetingMetrics`](#op-getmeetingmetrics) | `GET /api/v1/analytics/outbound/meeting-metrics` | read | `analytics:read` | Get Meeting Metrics |
|
|
57
|
+
| [`getMeetingTrend`](#op-getmeetingtrend) | `GET /api/v1/analytics/outbound/meeting-metrics/trend` | read | `analytics:read` | Get Meeting Trend |
|
|
58
|
+
| [`getMovement`](#op-getmovement) | `GET /api/v1/analytics/subscriptions/movement` | read | `analytics:read` | Get Movement |
|
|
59
|
+
| [`getMrr`](#op-getmrr) | `GET /api/v1/analytics/subscriptions/mrr` | read | `analytics:read` | Get Mrr |
|
|
60
|
+
| [`getMySdrDashboard`](#op-getmysdrdashboard) | `GET /api/v1/analytics/outbound/dashboards/sdr` | read | `analytics:read` | Get My Sdr Dashboard |
|
|
61
|
+
| [`getOutboundSummary`](#op-getoutboundsummary) | `GET /api/v1/analytics/outbound/summary` | read | `analytics:read` | Get Outbound Summary |
|
|
62
|
+
| [`getPlanDistribution`](#op-getplandistribution) | `GET /api/v1/analytics/subscriptions/plan-distribution` | read | `analytics:read` | Get Plan Distribution |
|
|
63
|
+
| [`getRetention`](#op-getretention) | `GET /api/v1/analytics/subscriptions/retention` | read | `analytics:read` | Get Retention |
|
|
64
|
+
| [`getSdrActivity`](#op-getsdractivity) | `GET /api/v1/analytics/outbound/sdr-activity` | read | `analytics:read` | Get Sdr Activity |
|
|
65
|
+
| [`getSdrActivityByEmail`](#op-getsdractivitybyemail) | `GET /api/v1/analytics/outbound/sdr-activity/{sdr_email}` | read | `analytics:read` | Get Sdr Activity By Email |
|
|
66
|
+
| [`getSdrDaily`](#op-getsdrdaily) | `GET /api/v1/analytics/outbound/sdr-activity/daily` | read | `analytics:read` | Get Sdr Daily |
|
|
67
|
+
| [`getSdrDashboardByEmail`](#op-getsdrdashboardbyemail) | `GET /api/v1/analytics/outbound/dashboards/sdr/{sdr_email}` | read | `analytics:read` | Get Sdr Dashboard By Email |
|
|
68
|
+
| [`getSdrLeaderboard`](#op-getsdrleaderboard) | `GET /api/v1/analytics/outbound/sdr-activity/leaderboard` | read | `analytics:read` | Get Sdr Leaderboard |
|
|
69
|
+
| [`getSequencePerformance`](#op-getsequenceperformance) | `GET /api/v1/analytics/outbound/sequence-performance` | read | `analytics:read` | Get Sequence Performance |
|
|
70
|
+
| [`getSequencePerformanceById`](#op-getsequenceperformancebyid) | `GET /api/v1/analytics/outbound/sequence-performance/{sequence_id}` | read | `analytics:read` | Get Sequence Performance By Id |
|
|
71
|
+
| [`getTeamComparison`](#op-getteamcomparison) | `GET /api/v1/analytics/outbound/sdr-activity/team-comparison` | read | `analytics:read` | Get Team Comparison |
|
|
72
|
+
| [`getTopPages`](#op-gettoppages) | `GET /api/v1/analytics/product-usage/top-pages` | read | `analytics:read` | Get Top Pages |
|
|
73
|
+
| [`getTrialConversion`](#op-gettrialconversion) | `GET /api/v1/analytics/subscriptions/trial-conversion` | read | `analytics:read` | Get Trial Conversion |
|
|
74
|
+
| [`getVoiceAiOutcomes`](#op-getvoiceaioutcomes) | `GET /api/v1/analytics/outbound/call-metrics/voice-ai` | read | `analytics:read` | Get Voice Ai Outcomes |
|
|
75
|
+
| [`postDataQuality`](#op-postdataquality) | `POST /api/v1/analytics/sales-report/data-quality` | read | `analytics:read` | Post Data Quality |
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
<a id="op-computecohort"></a>
|
|
80
|
+
|
|
81
|
+
### `g8.api.analytics.computeCohort(input)`
|
|
82
|
+
|
|
83
|
+
**Compute Cohort**
|
|
84
|
+
|
|
85
|
+
- HTTP: `POST /api/v1/analytics/sales-report/cohort`
|
|
86
|
+
- operationId: `compute_cohort_analytics_sales_report_cohort_post` (also callable as `g8.api.call("compute_cohort_analytics_sales_report_cohort_post", input)`)
|
|
87
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
88
|
+
- API-key scope: `analytics:read`
|
|
89
|
+
|
|
90
|
+
The whole Sales Report for one filter, in one round trip.
|
|
91
|
+
|
|
92
|
+
Cohort plus funnel, pipeline, revenue and drill-down - thirteen sections
|
|
93
|
+
resolved from a single deal cohort, which is the reason this is one call
|
|
94
|
+
and not thirteen: the sections agree because they are computed over the
|
|
95
|
+
same resolved set, not re-derived.
|
|
96
|
+
|
|
97
|
+
Reads; writes nothing. It is a POST because the filter is a tree, not
|
|
98
|
+
because it mutates - and it is tiered `read` for that reason.
|
|
99
|
+
|
|
100
|
+
The filter is `extra="forbid"`: a misspelled key is a 422 naming it,
|
|
101
|
+
rather than a silently wider result with a 200 on it.
|
|
102
|
+
|
|
103
|
+
**Input**
|
|
104
|
+
|
|
105
|
+
| Field | Type | Required | Description |
|
|
106
|
+
|---|---|---|---|
|
|
107
|
+
| `body` | `FilterQueryDto` | yes | Request body; fields below. |
|
|
108
|
+
| `query.tz` | `string` | no | IANA timezone the local-day window bounds are computed in, e.g. `Asia/Tokyo`. Changes which deals fall inside the date range. default `"UTC"` |
|
|
109
|
+
|
|
110
|
+
Body fields (`FilterQueryDto`):
|
|
111
|
+
|
|
112
|
+
| Field | Type | Required | Description |
|
|
113
|
+
|---|---|---|---|
|
|
114
|
+
| `body.date` | `DateRangeDto` | yes | |
|
|
115
|
+
| `body.audiences` | `IntIdFilterGroupDto \| null` | no | |
|
|
116
|
+
| `body.campaign` | `FilterGroupDto \| null` | no | |
|
|
117
|
+
| `body.channel` | `FilterGroupDto \| null` | no | |
|
|
118
|
+
| `body.country` | `FilterGroupDto \| null` | no | |
|
|
119
|
+
| `body.grading_bucket` | `GradingBucketFilterGroupDto \| null` | no | |
|
|
120
|
+
| `body.granularity` | `"day" \| "week" \| "month" \| null` | no | |
|
|
121
|
+
| `body.headcount` | `HeadcountFilterGroupDto \| null` | no | |
|
|
122
|
+
| `body.industry` | `FilterGroupDto \| null` | no | |
|
|
123
|
+
| `body.lifecycle` | `FilterGroupDto \| null` | no | |
|
|
124
|
+
| `body.objections` | `ObjectionCodeFilterGroupDto \| null` | no | |
|
|
125
|
+
| `body.pipeline` | `UuidFilterGroupDto \| null` | no | |
|
|
126
|
+
| `body.pipeline_target` | `"prospects_meeting" \| "prospects_revenue" \| "customers_revenue" \| null` | no | default `"prospects_revenue"` |
|
|
127
|
+
| `body.rec_type` | `IntIdFilterGroupDto \| null` | no | |
|
|
128
|
+
| `body.rep` | `FilterGroupDto \| null` | no | |
|
|
129
|
+
| `body.signals_calendar` | `FilterGroupDto \| null` | no | |
|
|
130
|
+
| `body.signals_chat` | `FilterGroupDto \| null` | no | |
|
|
131
|
+
| `body.signals_crm` | `FilterGroupDto \| null` | no | |
|
|
132
|
+
| `body.signals_email` | `FilterGroupDto \| null` | no | |
|
|
133
|
+
| `body.signals_enrichment` | `FilterGroupDto \| null` | no | |
|
|
134
|
+
| `body.signals_forms` | `FilterGroupDto \| null` | no | |
|
|
135
|
+
| `body.signals_intent` | `FilterGroupDto \| null` | no | |
|
|
136
|
+
| `body.signals_linkedin` | `FilterGroupDto \| null` | no | |
|
|
137
|
+
| `body.signals_sequence` | `FilterGroupDto \| null` | no | |
|
|
138
|
+
| `body.signals_sms` | `FilterGroupDto \| null` | no | |
|
|
139
|
+
| `body.signals_voice` | `FilterGroupDto \| null` | no | |
|
|
140
|
+
| `body.signals_website` | `FilterGroupDto \| null` | no | |
|
|
141
|
+
| `body.stage` | `UuidFilterGroupDto \| null` | no | |
|
|
142
|
+
| `body.tier` | `FilterGroupDto \| null` | no | |
|
|
143
|
+
|
|
144
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
145
|
+
|
|
146
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
147
|
+
|
|
148
|
+
**Example**
|
|
149
|
+
|
|
150
|
+
```ts
|
|
151
|
+
const result = await g8.api.analytics.computeCohort({ body: { date: { from: "2026-01-01", to: "2026-01-01" } } });
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
<a id="op-explaincohort"></a>
|
|
157
|
+
|
|
158
|
+
### `g8.api.analytics.explainCohort(input)`
|
|
159
|
+
|
|
160
|
+
**Explain Cohort**
|
|
161
|
+
|
|
162
|
+
- HTTP: `POST /api/v1/analytics/sales-report/cohort/explain`
|
|
163
|
+
- operationId: `explain_cohort_analytics_sales_report_cohort_explain_post` (also callable as `g8.api.call("explain_cohort_analytics_sales_report_cohort_explain_post", input)`)
|
|
164
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
165
|
+
- API-key scope: `analytics:read`
|
|
166
|
+
|
|
167
|
+
Which clause emptied the view.
|
|
168
|
+
|
|
169
|
+
Takes the SAME body as `/cohort` and answers one
|
|
170
|
+
`{label, lead_count, deal_count, measured}` row per progressively-built
|
|
171
|
+
prefix of the filter - baseline, then +rep, then +lifecycle, and so on.
|
|
172
|
+
Read the drop (`290 -> 57 -> 11 -> 0`) and the last step that moved is the
|
|
173
|
+
clause that did it.
|
|
174
|
+
|
|
175
|
+
COUNTS ONLY, never rows - which is both what makes it affordable (about 26
|
|
176
|
+
count queries against `/cohort`'s full section fan-out) and why it is safe
|
|
177
|
+
to call when `/cohort` itself would withhold person rows.
|
|
178
|
+
|
|
179
|
+
**Input**
|
|
180
|
+
|
|
181
|
+
| Field | Type | Required | Description |
|
|
182
|
+
|---|---|---|---|
|
|
183
|
+
| `body` | `FilterQueryDto` | yes | Request body; fields below. |
|
|
184
|
+
| `query.tz` | `string` | no | IANA timezone the local-day window bounds are computed in, e.g. `Asia/Tokyo`. Changes which deals fall inside the date range. default `"UTC"` |
|
|
185
|
+
|
|
186
|
+
Body fields (`FilterQueryDto`):
|
|
187
|
+
|
|
188
|
+
| Field | Type | Required | Description |
|
|
189
|
+
|---|---|---|---|
|
|
190
|
+
| `body.date` | `DateRangeDto` | yes | |
|
|
191
|
+
| `body.audiences` | `IntIdFilterGroupDto \| null` | no | |
|
|
192
|
+
| `body.campaign` | `FilterGroupDto \| null` | no | |
|
|
193
|
+
| `body.channel` | `FilterGroupDto \| null` | no | |
|
|
194
|
+
| `body.country` | `FilterGroupDto \| null` | no | |
|
|
195
|
+
| `body.grading_bucket` | `GradingBucketFilterGroupDto \| null` | no | |
|
|
196
|
+
| `body.granularity` | `"day" \| "week" \| "month" \| null` | no | |
|
|
197
|
+
| `body.headcount` | `HeadcountFilterGroupDto \| null` | no | |
|
|
198
|
+
| `body.industry` | `FilterGroupDto \| null` | no | |
|
|
199
|
+
| `body.lifecycle` | `FilterGroupDto \| null` | no | |
|
|
200
|
+
| `body.objections` | `ObjectionCodeFilterGroupDto \| null` | no | |
|
|
201
|
+
| `body.pipeline` | `UuidFilterGroupDto \| null` | no | |
|
|
202
|
+
| `body.pipeline_target` | `"prospects_meeting" \| "prospects_revenue" \| "customers_revenue" \| null` | no | default `"prospects_revenue"` |
|
|
203
|
+
| `body.rec_type` | `IntIdFilterGroupDto \| null` | no | |
|
|
204
|
+
| `body.rep` | `FilterGroupDto \| null` | no | |
|
|
205
|
+
| `body.signals_calendar` | `FilterGroupDto \| null` | no | |
|
|
206
|
+
| `body.signals_chat` | `FilterGroupDto \| null` | no | |
|
|
207
|
+
| `body.signals_crm` | `FilterGroupDto \| null` | no | |
|
|
208
|
+
| `body.signals_email` | `FilterGroupDto \| null` | no | |
|
|
209
|
+
| `body.signals_enrichment` | `FilterGroupDto \| null` | no | |
|
|
210
|
+
| `body.signals_forms` | `FilterGroupDto \| null` | no | |
|
|
211
|
+
| `body.signals_intent` | `FilterGroupDto \| null` | no | |
|
|
212
|
+
| `body.signals_linkedin` | `FilterGroupDto \| null` | no | |
|
|
213
|
+
| `body.signals_sequence` | `FilterGroupDto \| null` | no | |
|
|
214
|
+
| `body.signals_sms` | `FilterGroupDto \| null` | no | |
|
|
215
|
+
| `body.signals_voice` | `FilterGroupDto \| null` | no | |
|
|
216
|
+
| `body.signals_website` | `FilterGroupDto \| null` | no | |
|
|
217
|
+
| `body.stage` | `UuidFilterGroupDto \| null` | no | |
|
|
218
|
+
| `body.tier` | `FilterGroupDto \| null` | no | |
|
|
219
|
+
|
|
220
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
221
|
+
|
|
222
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
223
|
+
|
|
224
|
+
**Example**
|
|
225
|
+
|
|
226
|
+
```ts
|
|
227
|
+
const result = await g8.api.analytics.explainCohort({ body: { date: { from: "2026-01-01", to: "2026-01-01" } } });
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
<a id="op-exportcohortcsv"></a>
|
|
233
|
+
|
|
234
|
+
### `g8.api.analytics.exportCohortCsv(input)`
|
|
235
|
+
|
|
236
|
+
**Export Cohort Csv**
|
|
237
|
+
|
|
238
|
+
- HTTP: `POST /api/v1/analytics/sales-report/export`
|
|
239
|
+
- operationId: `export_cohort_csv_analytics_sales_report_export_post` (also callable as `g8.api.call("export_cohort_csv_analytics_sales_report_export_post", input)`)
|
|
240
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
241
|
+
- API-key scope: `analytics:read`
|
|
242
|
+
|
|
243
|
+
Download one section of the report - or the cohort drill-down - as CSV.
|
|
244
|
+
|
|
245
|
+
Takes the `/cohort` filter plus `section`; an absent or unknown section is
|
|
246
|
+
the persons drill-down. The export is the SAME cohort the report shows,
|
|
247
|
+
narrowed by the same deal and lead scopes, so it can never be a wider
|
|
248
|
+
download than the screen. Person rows are withheld exactly where `/cohort`
|
|
249
|
+
withholds them.
|
|
250
|
+
|
|
251
|
+
Reads; writes nothing. A POST only because the filter is a tree - tiered
|
|
252
|
+
`read`.
|
|
253
|
+
|
|
254
|
+
**Input**
|
|
255
|
+
|
|
256
|
+
| Field | Type | Required | Description |
|
|
257
|
+
|---|---|---|---|
|
|
258
|
+
| `body` | `ExportRequestDto` | yes | Request body; fields below. |
|
|
259
|
+
| `query.tz` | `string` | no | IANA timezone the local-day window bounds are computed in, e.g. `Asia/Tokyo`. Changes which deals fall inside the date range. default `"UTC"` |
|
|
260
|
+
|
|
261
|
+
Body fields (`ExportRequestDto`):
|
|
262
|
+
|
|
263
|
+
| Field | Type | Required | Description |
|
|
264
|
+
|---|---|---|---|
|
|
265
|
+
| `body.date` | `DateRangeDto` | yes | |
|
|
266
|
+
| `body.audiences` | `IntIdFilterGroupDto \| null` | no | |
|
|
267
|
+
| `body.campaign` | `FilterGroupDto \| null` | no | |
|
|
268
|
+
| `body.channel` | `FilterGroupDto \| null` | no | |
|
|
269
|
+
| `body.country` | `FilterGroupDto \| null` | no | |
|
|
270
|
+
| `body.grading_bucket` | `GradingBucketFilterGroupDto \| null` | no | |
|
|
271
|
+
| `body.granularity` | `"day" \| "week" \| "month" \| null` | no | |
|
|
272
|
+
| `body.headcount` | `HeadcountFilterGroupDto \| null` | no | |
|
|
273
|
+
| `body.industry` | `FilterGroupDto \| null` | no | |
|
|
274
|
+
| `body.lifecycle` | `FilterGroupDto \| null` | no | |
|
|
275
|
+
| `body.objections` | `ObjectionCodeFilterGroupDto \| null` | no | |
|
|
276
|
+
| `body.pipeline` | `UuidFilterGroupDto \| null` | no | |
|
|
277
|
+
| `body.pipeline_target` | `"prospects_meeting" \| "prospects_revenue" \| "customers_revenue" \| null` | no | default `"prospects_revenue"` |
|
|
278
|
+
| `body.rec_type` | `IntIdFilterGroupDto \| null` | no | |
|
|
279
|
+
| `body.rep` | `FilterGroupDto \| null` | no | |
|
|
280
|
+
| `body.section` | `string \| null` | no | max length 128 |
|
|
281
|
+
| `body.signals_calendar` | `FilterGroupDto \| null` | no | |
|
|
282
|
+
| `body.signals_chat` | `FilterGroupDto \| null` | no | |
|
|
283
|
+
| `body.signals_crm` | `FilterGroupDto \| null` | no | |
|
|
284
|
+
| `body.signals_email` | `FilterGroupDto \| null` | no | |
|
|
285
|
+
| `body.signals_enrichment` | `FilterGroupDto \| null` | no | |
|
|
286
|
+
| `body.signals_forms` | `FilterGroupDto \| null` | no | |
|
|
287
|
+
| `body.signals_intent` | `FilterGroupDto \| null` | no | |
|
|
288
|
+
| `body.signals_linkedin` | `FilterGroupDto \| null` | no | |
|
|
289
|
+
| `body.signals_sequence` | `FilterGroupDto \| null` | no | |
|
|
290
|
+
| `body.signals_sms` | `FilterGroupDto \| null` | no | |
|
|
291
|
+
| `body.signals_voice` | `FilterGroupDto \| null` | no | |
|
|
292
|
+
| `body.signals_website` | `FilterGroupDto \| null` | no | |
|
|
293
|
+
| `body.stage` | `UuidFilterGroupDto \| null` | no | |
|
|
294
|
+
| `body.tier` | `FilterGroupDto \| null` | no | |
|
|
295
|
+
|
|
296
|
+
**Returns**: no JSON body is declared for the success response.
|
|
297
|
+
|
|
298
|
+
**Example**
|
|
299
|
+
|
|
300
|
+
```ts
|
|
301
|
+
const result = await g8.api.analytics.exportCohortCsv({ body: { date: { from: "2026-01-01", to: "2026-01-01" } } });
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
---
|
|
305
|
+
|
|
306
|
+
<a id="op-getactivationfunnel"></a>
|
|
307
|
+
|
|
308
|
+
### `g8.api.analytics.getActivationFunnel(input?)`
|
|
309
|
+
|
|
310
|
+
**Get Activation Funnel**
|
|
311
|
+
|
|
312
|
+
- HTTP: `GET /api/v1/analytics/product-usage/activation-funnel`
|
|
313
|
+
- operationId: `get_activation_funnel_analytics_product_usage_activation_funnel_get` (also callable as `g8.api.call("get_activation_funnel_analytics_product_usage_activation_funnel_get", input)`)
|
|
314
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
315
|
+
- API-key scope: `analytics:read`
|
|
316
|
+
|
|
317
|
+
Sign-in to first list to first campaign launched.
|
|
318
|
+
|
|
319
|
+
The onboarding funnel: where a new seat stops before it becomes a user.
|
|
320
|
+
|
|
321
|
+
**Input**
|
|
322
|
+
|
|
323
|
+
| Field | Type | Required | Description |
|
|
324
|
+
|---|---|---|---|
|
|
325
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
326
|
+
|
|
327
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
328
|
+
|
|
329
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
330
|
+
|
|
331
|
+
**Example**
|
|
332
|
+
|
|
333
|
+
```ts
|
|
334
|
+
const result = await g8.api.analytics.getActivationFunnel();
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
---
|
|
338
|
+
|
|
339
|
+
<a id="op-getactiveusers"></a>
|
|
340
|
+
|
|
341
|
+
### `g8.api.analytics.getActiveUsers(input?)`
|
|
342
|
+
|
|
343
|
+
**Get Active Users**
|
|
344
|
+
|
|
345
|
+
- HTTP: `GET /api/v1/analytics/product-usage/active-users`
|
|
346
|
+
- operationId: `get_active_users_analytics_product_usage_active_users_get` (also callable as `g8.api.call("get_active_users_analytics_product_usage_active_users_get", input)`)
|
|
347
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
348
|
+
- API-key scope: `analytics:read`
|
|
349
|
+
|
|
350
|
+
Daily, weekly and monthly actives, plus stickiness (DAU/MAU).
|
|
351
|
+
|
|
352
|
+
Stickiness is the one to watch: DAU can climb on a hiring spree while the
|
|
353
|
+
ratio falls, which says the new people are not coming back.
|
|
354
|
+
|
|
355
|
+
**Input**
|
|
356
|
+
|
|
357
|
+
| Field | Type | Required | Description |
|
|
358
|
+
|---|---|---|---|
|
|
359
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
360
|
+
|
|
361
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
362
|
+
|
|
363
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
364
|
+
|
|
365
|
+
**Example**
|
|
366
|
+
|
|
367
|
+
```ts
|
|
368
|
+
const result = await g8.api.analytics.getActiveUsers();
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
---
|
|
372
|
+
|
|
373
|
+
<a id="op-getanalyticsdatasources"></a>
|
|
374
|
+
|
|
375
|
+
### `g8.api.analytics.getAnalyticsDataSources(input?)`
|
|
376
|
+
|
|
377
|
+
**Get Analytics Data Sources**
|
|
378
|
+
|
|
379
|
+
- HTTP: `GET /api/v1/analytics/data-sources`
|
|
380
|
+
- operationId: `get_analytics_data_sources_analytics_data_sources_get` (also callable as `g8.api.call("get_analytics_data_sources_analytics_data_sources_get", input)`)
|
|
381
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
382
|
+
- API-key scope: `analytics:read`
|
|
383
|
+
|
|
384
|
+
Whether the org has the two sources the revenue and product reports read.
|
|
385
|
+
|
|
386
|
+
The payments-integration flag gates `/analytics/subscriptions/*` and the
|
|
387
|
+
product-event flag gates `/analytics/product-usage/*`. Check it first: a
|
|
388
|
+
report over a source the org has not connected answers empty, not 404.
|
|
389
|
+
|
|
390
|
+
**Input**: none.
|
|
391
|
+
|
|
392
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
393
|
+
|
|
394
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
395
|
+
|
|
396
|
+
**Example**
|
|
397
|
+
|
|
398
|
+
```ts
|
|
399
|
+
const result = await g8.api.analytics.getAnalyticsDataSources();
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
---
|
|
403
|
+
|
|
404
|
+
<a id="op-getaudiencebyindustry"></a>
|
|
405
|
+
|
|
406
|
+
### `g8.api.analytics.getAudienceByIndustry(input?)`
|
|
407
|
+
|
|
408
|
+
**Get Audience By Industry**
|
|
409
|
+
|
|
410
|
+
- HTTP: `GET /api/v1/analytics/outbound/audience/industry`
|
|
411
|
+
- operationId: `get_audience_by_industry_analytics_outbound_audience_industry_get` (also callable as `g8.api.call("get_audience_by_industry_analytics_outbound_audience_industry_get", input)`)
|
|
412
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
413
|
+
- API-key scope: `analytics:read`
|
|
414
|
+
|
|
415
|
+
Performance grouped by the COMPANY's specific industry.
|
|
416
|
+
|
|
417
|
+
**Input**
|
|
418
|
+
|
|
419
|
+
| Field | Type | Required | Description |
|
|
420
|
+
|---|---|---|---|
|
|
421
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
422
|
+
|
|
423
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
424
|
+
|
|
425
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
426
|
+
|
|
427
|
+
**Example**
|
|
428
|
+
|
|
429
|
+
```ts
|
|
430
|
+
const result = await g8.api.analytics.getAudienceByIndustry();
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
---
|
|
434
|
+
|
|
435
|
+
<a id="op-getaudiencebyindustrygroup"></a>
|
|
436
|
+
|
|
437
|
+
### `g8.api.analytics.getAudienceByIndustryGroup(input?)`
|
|
438
|
+
|
|
439
|
+
**Get Audience By Industry Group**
|
|
440
|
+
|
|
441
|
+
- HTTP: `GET /api/v1/analytics/outbound/audience/industry-group`
|
|
442
|
+
- operationId: `get_audience_by_industry_group_analytics_outbound_audience_industry_group_get` (also callable as `g8.api.call("get_audience_by_industry_group_analytics_outbound_audience_industry_group_get", input)`)
|
|
443
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
444
|
+
- API-key scope: `analytics:read`
|
|
445
|
+
|
|
446
|
+
The same, grouped into broad categories rather than exact industries.
|
|
447
|
+
|
|
448
|
+
Use this one when the specific-industry split is too sparse to read -
|
|
449
|
+
"Technology" has volume where "Prepackaged Software" does not.
|
|
450
|
+
|
|
451
|
+
**Input**
|
|
452
|
+
|
|
453
|
+
| Field | Type | Required | Description |
|
|
454
|
+
|---|---|---|---|
|
|
455
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
456
|
+
|
|
457
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
458
|
+
|
|
459
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
460
|
+
|
|
461
|
+
**Example**
|
|
462
|
+
|
|
463
|
+
```ts
|
|
464
|
+
const result = await g8.api.analytics.getAudienceByIndustryGroup();
|
|
465
|
+
```
|
|
466
|
+
|
|
467
|
+
---
|
|
468
|
+
|
|
469
|
+
<a id="op-getaudiencebyseniority"></a>
|
|
470
|
+
|
|
471
|
+
### `g8.api.analytics.getAudienceBySeniority(input?)`
|
|
472
|
+
|
|
473
|
+
**Get Audience By Seniority**
|
|
474
|
+
|
|
475
|
+
- HTTP: `GET /api/v1/analytics/outbound/audience/seniority`
|
|
476
|
+
- operationId: `get_audience_by_seniority_analytics_outbound_audience_seniority_get` (also callable as `g8.api.call("get_audience_by_seniority_analytics_outbound_audience_seniority_get", input)`)
|
|
477
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
478
|
+
- API-key scope: `analytics:read`
|
|
479
|
+
|
|
480
|
+
Performance grouped by the CONTACT's seniority - C-level down to IC.
|
|
481
|
+
|
|
482
|
+
Answers who replies, not who was mailed. The three audience reports are
|
|
483
|
+
the ones that change targeting rather than copy.
|
|
484
|
+
|
|
485
|
+
**Input**
|
|
486
|
+
|
|
487
|
+
| Field | Type | Required | Description |
|
|
488
|
+
|---|---|---|---|
|
|
489
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
490
|
+
|
|
491
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
492
|
+
|
|
493
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
494
|
+
|
|
495
|
+
**Example**
|
|
496
|
+
|
|
497
|
+
```ts
|
|
498
|
+
const result = await g8.api.analytics.getAudienceBySeniority();
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
---
|
|
502
|
+
|
|
503
|
+
<a id="op-getcallmetrics"></a>
|
|
504
|
+
|
|
505
|
+
### `g8.api.analytics.getCallMetrics(input?)`
|
|
506
|
+
|
|
507
|
+
**Get Call Metrics**
|
|
508
|
+
|
|
509
|
+
- HTTP: `GET /api/v1/analytics/outbound/call-metrics`
|
|
510
|
+
- operationId: `get_call_metrics_analytics_outbound_call_metrics_get` (also callable as `g8.api.call("get_call_metrics_analytics_outbound_call_metrics_get", input)`)
|
|
511
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
512
|
+
- API-key scope: `analytics:read`
|
|
513
|
+
|
|
514
|
+
Dispatched, connected, completed, voicemail - call volume and outcome.
|
|
515
|
+
|
|
516
|
+
**Input**
|
|
517
|
+
|
|
518
|
+
| Field | Type | Required | Description |
|
|
519
|
+
|---|---|---|---|
|
|
520
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
521
|
+
|
|
522
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
523
|
+
|
|
524
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
525
|
+
|
|
526
|
+
**Example**
|
|
527
|
+
|
|
528
|
+
```ts
|
|
529
|
+
const result = await g8.api.analytics.getCallMetrics();
|
|
530
|
+
```
|
|
531
|
+
|
|
532
|
+
---
|
|
533
|
+
|
|
534
|
+
<a id="op-getcalltrend"></a>
|
|
535
|
+
|
|
536
|
+
### `g8.api.analytics.getCallTrend(input?)`
|
|
537
|
+
|
|
538
|
+
**Get Call Trend**
|
|
539
|
+
|
|
540
|
+
- HTTP: `GET /api/v1/analytics/outbound/call-metrics/trend`
|
|
541
|
+
- operationId: `get_call_trend_analytics_outbound_call_metrics_trend_get` (also callable as `g8.api.call("get_call_trend_analytics_outbound_call_metrics_trend_get", input)`)
|
|
542
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
543
|
+
- API-key scope: `analytics:read`
|
|
544
|
+
|
|
545
|
+
The same call metrics, one row per day.
|
|
546
|
+
|
|
547
|
+
**Input**
|
|
548
|
+
|
|
549
|
+
| Field | Type | Required | Description |
|
|
550
|
+
|---|---|---|---|
|
|
551
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
552
|
+
|
|
553
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
554
|
+
|
|
555
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
556
|
+
|
|
557
|
+
**Example**
|
|
558
|
+
|
|
559
|
+
```ts
|
|
560
|
+
const result = await g8.api.analytics.getCallTrend();
|
|
561
|
+
```
|
|
562
|
+
|
|
563
|
+
---
|
|
564
|
+
|
|
565
|
+
<a id="op-getcampaigndashboard"></a>
|
|
566
|
+
|
|
567
|
+
### `g8.api.analytics.getCampaignDashboard(input?)`
|
|
568
|
+
|
|
569
|
+
**Get Campaign Dashboard**
|
|
570
|
+
|
|
571
|
+
- HTTP: `GET /api/v1/analytics/outbound/dashboards/campaign`
|
|
572
|
+
- operationId: `get_campaign_dashboard_analytics_outbound_dashboards_campaign_get` (also callable as `g8.api.call("get_campaign_dashboard_analytics_outbound_dashboards_campaign_get", input)`)
|
|
573
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
574
|
+
- API-key scope: `analytics:read`
|
|
575
|
+
|
|
576
|
+
Sequence and campaign performance, as a campaign manager reads it.
|
|
577
|
+
|
|
578
|
+
**Input**
|
|
579
|
+
|
|
580
|
+
| Field | Type | Required | Description |
|
|
581
|
+
|---|---|---|---|
|
|
582
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
583
|
+
|
|
584
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
585
|
+
|
|
586
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
587
|
+
|
|
588
|
+
**Example**
|
|
589
|
+
|
|
590
|
+
```ts
|
|
591
|
+
const result = await g8.api.analytics.getCampaignDashboard();
|
|
592
|
+
```
|
|
593
|
+
|
|
594
|
+
---
|
|
595
|
+
|
|
596
|
+
<a id="op-getcampaignvisitors"></a>
|
|
597
|
+
|
|
598
|
+
### `g8.api.analytics.getCampaignVisitors(input?)`
|
|
599
|
+
|
|
600
|
+
**Get Campaign Visitors**
|
|
601
|
+
|
|
602
|
+
- HTTP: `GET /api/v1/analytics/campaign-visitors`
|
|
603
|
+
- operationId: `get_campaign_visitors_analytics_campaign_visitors_get` (also callable as `g8.api.call("get_campaign_visitors_analytics_campaign_visitors_get", input)`)
|
|
604
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
605
|
+
- API-key scope: `analytics:read`
|
|
606
|
+
|
|
607
|
+
Campaign Visitors report for the authenticated org (analytics report a23).
|
|
608
|
+
|
|
609
|
+
Returns, for the resolved window:
|
|
610
|
+
|
|
611
|
+
* **summary** — KPI tiles (page events, campaign clicks, unique contacts /
|
|
612
|
+
steps, identified visitors, and the encrypted/plaintext/unparseable
|
|
613
|
+
diagnostic split). Click counters are email-security-scanner filtered
|
|
614
|
+
(humans only) so they match the in-app report — raw scanner traffic
|
|
615
|
+
(Microsoft Defender / SafeLinks) is excluded.
|
|
616
|
+
* **top_campaign_steps** — per sequencer step: clicks, unique contacts, a
|
|
617
|
+
human-readable label, and send-side context (emails sent / with link).
|
|
618
|
+
* **link_engagement** — per clicked destination URL: human clicks, unique
|
|
619
|
+
contacts, the emails-with-link denominator, and CTR% (clamped 0–100).
|
|
620
|
+
* **top_contacts** — who clicked, with resolved name/email (PII; omit via
|
|
621
|
+
`include_contacts=false`).
|
|
622
|
+
|
|
623
|
+
Enrichment (labels, email, send counts, CTR) is best-effort: a field is
|
|
624
|
+
``null`` when it couldn't be resolved, never a fabricated zero. An org with
|
|
625
|
+
no visitor-tracking pipeline returns an empty report with
|
|
626
|
+
``summary.jitsu_wired = false``.
|
|
627
|
+
|
|
628
|
+
Agency keys: pass ``X-Target-Org-Id`` to run the report for a specific client
|
|
629
|
+
org within your authorized set.
|
|
630
|
+
|
|
631
|
+
**Input**
|
|
632
|
+
|
|
633
|
+
| Field | Type | Required | Description |
|
|
634
|
+
|---|---|---|---|
|
|
635
|
+
| `query.start_date` | `string (date) \| null` | no | Window start (inclusive), YYYY-MM-DD. If omitted, derived from `days`. |
|
|
636
|
+
| `query.end_date` | `string (date) \| null` | no | Window end (inclusive), YYYY-MM-DD. If omitted, today. |
|
|
637
|
+
| `query.days` | `integer \| null` | no | Rolling 'last N days from today'. Ignored when start_date/end_date are supplied. |
|
|
638
|
+
| `query.limit` | `integer` | no | Row cap for the steps + contacts tables default `50` |
|
|
639
|
+
| `query.include_contacts` | `boolean` | no | Include the Top contacts table (contact name + email — PII). Set false to omit it entirely for a privacy-lean response. default `true` |
|
|
640
|
+
|
|
641
|
+
**Returns** `ApiResponse_CampaignVisitorsReport_`: the envelope `{ data: CampaignVisitorsReport, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
642
|
+
|
|
643
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
644
|
+
|
|
645
|
+
`CampaignVisitorsReport` fields:
|
|
646
|
+
|
|
647
|
+
| Field | Type | Required | Description |
|
|
648
|
+
|---|---|---|---|
|
|
649
|
+
| `link_engagement` | `Array<CampaignVisitorLink>` | yes | |
|
|
650
|
+
| `summary` | `CampaignVisitorsSummary` | yes | |
|
|
651
|
+
| `top_campaign_steps` | `Array<CampaignVisitorStep>` | yes | |
|
|
652
|
+
| `top_contacts` | `Array<CampaignVisitorContact>` | yes | |
|
|
653
|
+
| `window` | `CampaignVisitorsWindow` | yes | |
|
|
654
|
+
|
|
655
|
+
**Example**
|
|
656
|
+
|
|
657
|
+
```ts
|
|
658
|
+
const result = await g8.api.analytics.getCampaignVisitors();
|
|
659
|
+
```
|
|
660
|
+
|
|
661
|
+
---
|
|
662
|
+
|
|
663
|
+
<a id="op-getchannelattribution"></a>
|
|
664
|
+
|
|
665
|
+
### `g8.api.analytics.getChannelAttribution(input?)`
|
|
666
|
+
|
|
667
|
+
**Get Channel Attribution**
|
|
668
|
+
|
|
669
|
+
- HTTP: `GET /api/v1/analytics/outbound/channel-attribution`
|
|
670
|
+
- operationId: `get_channel_attribution_analytics_outbound_channel_attribution_get` (also callable as `g8.api.call("get_channel_attribution_analytics_outbound_channel_attribution_get", input)`)
|
|
671
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
672
|
+
- API-key scope: `analytics:read`
|
|
673
|
+
|
|
674
|
+
What each channel contributed - email versus phone versus LinkedIn.
|
|
675
|
+
|
|
676
|
+
**Input**
|
|
677
|
+
|
|
678
|
+
| Field | Type | Required | Description |
|
|
679
|
+
|---|---|---|---|
|
|
680
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
681
|
+
|
|
682
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
683
|
+
|
|
684
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
685
|
+
|
|
686
|
+
**Example**
|
|
687
|
+
|
|
688
|
+
```ts
|
|
689
|
+
const result = await g8.api.analytics.getChannelAttribution();
|
|
690
|
+
```
|
|
691
|
+
|
|
692
|
+
---
|
|
693
|
+
|
|
694
|
+
<a id="op-getdataquality"></a>
|
|
695
|
+
|
|
696
|
+
### `g8.api.analytics.getDataQuality(input?)`
|
|
697
|
+
|
|
698
|
+
**Get Data Quality**
|
|
699
|
+
|
|
700
|
+
- HTTP: `GET /api/v1/analytics/sales-report/data-quality`
|
|
701
|
+
- operationId: `get_data_quality_analytics_sales_report_data_quality_get` (also callable as `g8.api.call("get_data_quality_analytics_sales_report_data_quality_get", input)`)
|
|
702
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
703
|
+
- API-key scope: `analytics:read`
|
|
704
|
+
|
|
705
|
+
Why a Sales Report section might be empty.
|
|
706
|
+
|
|
707
|
+
Upstream linkage counts plus pre-rendered warnings. ALWAYS 200 - a failing
|
|
708
|
+
sub-query degrades to zero rather than raising, so an empty `warnings` list
|
|
709
|
+
means "nothing breached a threshold", not "the check did not run".
|
|
710
|
+
|
|
711
|
+
Read this first when a number looks wrong. It is the difference between a
|
|
712
|
+
filter that matched nothing and a pipeline that is not wired up.
|
|
713
|
+
|
|
714
|
+
**Input**: none.
|
|
715
|
+
|
|
716
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
717
|
+
|
|
718
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
719
|
+
|
|
720
|
+
**Example**
|
|
721
|
+
|
|
722
|
+
```ts
|
|
723
|
+
const result = await g8.api.analytics.getDataQuality();
|
|
724
|
+
```
|
|
725
|
+
|
|
726
|
+
---
|
|
727
|
+
|
|
728
|
+
<a id="op-getdunning"></a>
|
|
729
|
+
|
|
730
|
+
### `g8.api.analytics.getDunning(input?)`
|
|
731
|
+
|
|
732
|
+
**Get Dunning**
|
|
733
|
+
|
|
734
|
+
- HTTP: `GET /api/v1/analytics/subscriptions/dunning`
|
|
735
|
+
- operationId: `get_dunning_analytics_subscriptions_dunning_get` (also callable as `g8.api.call("get_dunning_analytics_subscriptions_dunning_get", input)`)
|
|
736
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
737
|
+
- API-key scope: `analytics:read`
|
|
738
|
+
|
|
739
|
+
Failed payments: still open, recovered, or written off.
|
|
740
|
+
|
|
741
|
+
Revenue already earned and not yet collected - usually the cheapest money
|
|
742
|
+
on this router to go and get.
|
|
743
|
+
|
|
744
|
+
**Input**
|
|
745
|
+
|
|
746
|
+
| Field | Type | Required | Description |
|
|
747
|
+
|---|---|---|---|
|
|
748
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
749
|
+
|
|
750
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
751
|
+
|
|
752
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
753
|
+
|
|
754
|
+
**Example**
|
|
755
|
+
|
|
756
|
+
```ts
|
|
757
|
+
const result = await g8.api.analytics.getDunning();
|
|
758
|
+
```
|
|
759
|
+
|
|
760
|
+
---
|
|
761
|
+
|
|
762
|
+
<a id="op-getemailbysequence"></a>
|
|
763
|
+
|
|
764
|
+
### `g8.api.analytics.getEmailBySequence(input?)`
|
|
765
|
+
|
|
766
|
+
**Get Email By Sequence**
|
|
767
|
+
|
|
768
|
+
- HTTP: `GET /api/v1/analytics/outbound/email-metrics/by-sequence`
|
|
769
|
+
- operationId: `get_email_by_sequence_analytics_outbound_email_metrics_by_sequence_get` (also callable as `g8.api.call("get_email_by_sequence_analytics_outbound_email_metrics_by_sequence_get", input)`)
|
|
770
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
771
|
+
- API-key scope: `analytics:read`
|
|
772
|
+
|
|
773
|
+
Email metrics split by sequence - which campaign is carrying the org.
|
|
774
|
+
|
|
775
|
+
**Input**
|
|
776
|
+
|
|
777
|
+
| Field | Type | Required | Description |
|
|
778
|
+
|---|---|---|---|
|
|
779
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
780
|
+
| `query.limit` | `integer` | no | Sequences to return. default `50` |
|
|
781
|
+
|
|
782
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
783
|
+
|
|
784
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
785
|
+
|
|
786
|
+
**Example**
|
|
787
|
+
|
|
788
|
+
```ts
|
|
789
|
+
const result = await g8.api.analytics.getEmailBySequence();
|
|
790
|
+
```
|
|
791
|
+
|
|
792
|
+
---
|
|
793
|
+
|
|
794
|
+
<a id="op-getemailbystep"></a>
|
|
795
|
+
|
|
796
|
+
### `g8.api.analytics.getEmailByStep(input?)`
|
|
797
|
+
|
|
798
|
+
**Get Email By Step**
|
|
799
|
+
|
|
800
|
+
- HTTP: `GET /api/v1/analytics/outbound/email-metrics/by-step`
|
|
801
|
+
- operationId: `get_email_by_step_analytics_outbound_email_metrics_by_step_get` (also callable as `g8.api.call("get_email_by_step_analytics_outbound_email_metrics_by_step_get", input)`)
|
|
802
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
803
|
+
- API-key scope: `analytics:read`
|
|
804
|
+
|
|
805
|
+
Email metrics by STEP ORDER - where in the sequence people drop.
|
|
806
|
+
|
|
807
|
+
The step view is the one that changes a sequence: a reply rate that dies
|
|
808
|
+
at step three is a step-three problem, not a sequence problem.
|
|
809
|
+
|
|
810
|
+
**Input**
|
|
811
|
+
|
|
812
|
+
| Field | Type | Required | Description |
|
|
813
|
+
|---|---|---|---|
|
|
814
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
815
|
+
| `query.sequence_id` | `string \| null` | no | Narrow to one sequence. Omit for every sequence's steps folded together by step order. |
|
|
816
|
+
|
|
817
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
818
|
+
|
|
819
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
820
|
+
|
|
821
|
+
**Example**
|
|
822
|
+
|
|
823
|
+
```ts
|
|
824
|
+
const result = await g8.api.analytics.getEmailByStep();
|
|
825
|
+
```
|
|
826
|
+
|
|
827
|
+
---
|
|
828
|
+
|
|
829
|
+
<a id="op-getemailmetrics"></a>
|
|
830
|
+
|
|
831
|
+
### `g8.api.analytics.getEmailMetrics(input?)`
|
|
832
|
+
|
|
833
|
+
**Get Email Metrics**
|
|
834
|
+
|
|
835
|
+
- HTTP: `GET /api/v1/analytics/outbound/email-metrics`
|
|
836
|
+
- operationId: `get_email_metrics_analytics_outbound_email_metrics_get` (also callable as `g8.api.call("get_email_metrics_analytics_outbound_email_metrics_get", input)`)
|
|
837
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
838
|
+
- API-key scope: `analytics:read`
|
|
839
|
+
|
|
840
|
+
Sent, bounced, delivered, replied, and the rates between them.
|
|
841
|
+
|
|
842
|
+
**Input**
|
|
843
|
+
|
|
844
|
+
| Field | Type | Required | Description |
|
|
845
|
+
|---|---|---|---|
|
|
846
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
847
|
+
|
|
848
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
849
|
+
|
|
850
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
851
|
+
|
|
852
|
+
**Example**
|
|
853
|
+
|
|
854
|
+
```ts
|
|
855
|
+
const result = await g8.api.analytics.getEmailMetrics();
|
|
856
|
+
```
|
|
857
|
+
|
|
858
|
+
---
|
|
859
|
+
|
|
860
|
+
<a id="op-getemailtrend"></a>
|
|
861
|
+
|
|
862
|
+
### `g8.api.analytics.getEmailTrend(input?)`
|
|
863
|
+
|
|
864
|
+
**Get Email Trend**
|
|
865
|
+
|
|
866
|
+
- HTTP: `GET /api/v1/analytics/outbound/email-metrics/trend`
|
|
867
|
+
- operationId: `get_email_trend_analytics_outbound_email_metrics_trend_get` (also callable as `g8.api.call("get_email_trend_analytics_outbound_email_metrics_trend_get", input)`)
|
|
868
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
869
|
+
- API-key scope: `analytics:read`
|
|
870
|
+
|
|
871
|
+
The same email metrics, one row per day.
|
|
872
|
+
|
|
873
|
+
**Input**
|
|
874
|
+
|
|
875
|
+
| Field | Type | Required | Description |
|
|
876
|
+
|---|---|---|---|
|
|
877
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
878
|
+
|
|
879
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
880
|
+
|
|
881
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
882
|
+
|
|
883
|
+
**Example**
|
|
884
|
+
|
|
885
|
+
```ts
|
|
886
|
+
const result = await g8.api.analytics.getEmailTrend();
|
|
887
|
+
```
|
|
888
|
+
|
|
889
|
+
---
|
|
890
|
+
|
|
891
|
+
<a id="op-getexecutivedashboard"></a>
|
|
892
|
+
|
|
893
|
+
### `g8.api.analytics.getExecutiveDashboard(input?)`
|
|
894
|
+
|
|
895
|
+
**Get Executive Dashboard**
|
|
896
|
+
|
|
897
|
+
- HTTP: `GET /api/v1/analytics/outbound/dashboards/executive`
|
|
898
|
+
- operationId: `get_executive_dashboard_analytics_outbound_dashboards_executive_get` (also callable as `g8.api.call("get_executive_dashboard_analytics_outbound_dashboards_executive_get", input)`)
|
|
899
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
900
|
+
- API-key scope: `analytics:read`
|
|
901
|
+
|
|
902
|
+
The leadership roll-up. Cached for an hour - it is not a live view.
|
|
903
|
+
|
|
904
|
+
**Input**
|
|
905
|
+
|
|
906
|
+
| Field | Type | Required | Description |
|
|
907
|
+
|---|---|---|---|
|
|
908
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
909
|
+
|
|
910
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
911
|
+
|
|
912
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
913
|
+
|
|
914
|
+
**Example**
|
|
915
|
+
|
|
916
|
+
```ts
|
|
917
|
+
const result = await g8.api.analytics.getExecutiveDashboard();
|
|
918
|
+
```
|
|
919
|
+
|
|
920
|
+
---
|
|
921
|
+
|
|
922
|
+
<a id="op-getfeatureadoption"></a>
|
|
923
|
+
|
|
924
|
+
### `g8.api.analytics.getFeatureAdoption(input?)`
|
|
925
|
+
|
|
926
|
+
**Get Feature Adoption**
|
|
927
|
+
|
|
928
|
+
- HTTP: `GET /api/v1/analytics/product-usage/feature-adoption`
|
|
929
|
+
- operationId: `get_feature_adoption_analytics_product_usage_feature_adoption_get` (also callable as `g8.api.call("get_feature_adoption_analytics_product_usage_feature_adoption_get", input)`)
|
|
930
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
931
|
+
- API-key scope: `analytics:read`
|
|
932
|
+
|
|
933
|
+
Share of distinct actors who hit each lifecycle event in the window.
|
|
934
|
+
|
|
935
|
+
**Input**
|
|
936
|
+
|
|
937
|
+
| Field | Type | Required | Description |
|
|
938
|
+
|---|---|---|---|
|
|
939
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
940
|
+
|
|
941
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
942
|
+
|
|
943
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
944
|
+
|
|
945
|
+
**Example**
|
|
946
|
+
|
|
947
|
+
```ts
|
|
948
|
+
const result = await g8.api.analytics.getFeatureAdoption();
|
|
949
|
+
```
|
|
950
|
+
|
|
951
|
+
---
|
|
952
|
+
|
|
953
|
+
<a id="op-getfilteroptions"></a>
|
|
954
|
+
|
|
955
|
+
### `g8.api.analytics.getFilterOptions(input?)`
|
|
956
|
+
|
|
957
|
+
**Get Filter Options**
|
|
958
|
+
|
|
959
|
+
- HTTP: `GET /api/v1/analytics/sales-report/filter-options`
|
|
960
|
+
- operationId: `get_filter_options_analytics_sales_report_filter_options_get` (also callable as `g8.api.call("get_filter_options_analytics_sales_report_filter_options_get", input)`)
|
|
961
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
962
|
+
- API-key scope: `analytics:read`
|
|
963
|
+
|
|
964
|
+
Every value the filter above will accept - reps, pipelines, stages,
|
|
965
|
+
lifecycles, audiences, CRM sources.
|
|
966
|
+
|
|
967
|
+
Call this before `/cohort` rather than guessing ids. Send `from` and `to`
|
|
968
|
+
together to also get a `granularity` block saying which time buckets that
|
|
969
|
+
window supports and why each refused one cannot.
|
|
970
|
+
|
|
971
|
+
**Input**
|
|
972
|
+
|
|
973
|
+
| Field | Type | Required | Description |
|
|
974
|
+
|---|---|---|---|
|
|
975
|
+
| `query.from` | `string (date) \| null` | no | Start of the window to grade time-bucket granularities against. Must be sent WITH `to`. Omit both and the response is unchanged and carries no `granularity` block. |
|
|
976
|
+
| `query.to` | `string (date) \| null` | no | End of that window. Must be sent WITH `from`. |
|
|
977
|
+
|
|
978
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
979
|
+
|
|
980
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
981
|
+
|
|
982
|
+
**Example**
|
|
983
|
+
|
|
984
|
+
```ts
|
|
985
|
+
const result = await g8.api.analytics.getFilterOptions();
|
|
986
|
+
```
|
|
987
|
+
|
|
988
|
+
---
|
|
989
|
+
|
|
990
|
+
<a id="op-getlaunchpadactivityprofile"></a>
|
|
991
|
+
|
|
992
|
+
### `g8.api.analytics.getLaunchpadActivityProfile(input?)`
|
|
993
|
+
|
|
994
|
+
**Get Launchpad Activity Profile**
|
|
995
|
+
|
|
996
|
+
- HTTP: `GET /api/v1/analytics/launchpad/activity-profile`
|
|
997
|
+
- operationId: `get_launchpad_activity_profile_analytics_launchpad_activity_profile_get` (also callable as `g8.api.call("get_launchpad_activity_profile_analytics_launchpad_activity_profile_get", input)`)
|
|
998
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
999
|
+
- API-key scope: `analytics:read`
|
|
1000
|
+
|
|
1001
|
+
The key-holder's detected persona and the activity types they actually do.
|
|
1002
|
+
|
|
1003
|
+
**Input**: none.
|
|
1004
|
+
|
|
1005
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1006
|
+
|
|
1007
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1008
|
+
|
|
1009
|
+
**Example**
|
|
1010
|
+
|
|
1011
|
+
```ts
|
|
1012
|
+
const result = await g8.api.analytics.getLaunchpadActivityProfile();
|
|
1013
|
+
```
|
|
1014
|
+
|
|
1015
|
+
---
|
|
1016
|
+
|
|
1017
|
+
<a id="op-getlaunchpadbriefing"></a>
|
|
1018
|
+
|
|
1019
|
+
### `g8.api.analytics.getLaunchpadBriefing(input?)`
|
|
1020
|
+
|
|
1021
|
+
**Get Launchpad Briefing**
|
|
1022
|
+
|
|
1023
|
+
- HTTP: `GET /api/v1/analytics/launchpad/briefing`
|
|
1024
|
+
- operationId: `get_launchpad_briefing_analytics_launchpad_briefing_get` (also callable as `g8.api.call("get_launchpad_briefing_analytics_launchpad_briefing_get", input)`)
|
|
1025
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1026
|
+
- API-key scope: `analytics:read`
|
|
1027
|
+
|
|
1028
|
+
Today's briefing for the key-holder: what changed, and what needs them.
|
|
1029
|
+
|
|
1030
|
+
**Input**: none.
|
|
1031
|
+
|
|
1032
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1033
|
+
|
|
1034
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1035
|
+
|
|
1036
|
+
**Example**
|
|
1037
|
+
|
|
1038
|
+
```ts
|
|
1039
|
+
const result = await g8.api.analytics.getLaunchpadBriefing();
|
|
1040
|
+
```
|
|
1041
|
+
|
|
1042
|
+
---
|
|
1043
|
+
|
|
1044
|
+
<a id="op-getlaunchpadcalendartoday"></a>
|
|
1045
|
+
|
|
1046
|
+
### `g8.api.analytics.getLaunchpadCalendarToday(input?)`
|
|
1047
|
+
|
|
1048
|
+
**Get Launchpad Calendar Today**
|
|
1049
|
+
|
|
1050
|
+
- HTTP: `GET /api/v1/analytics/launchpad/calendar/today`
|
|
1051
|
+
- operationId: `get_launchpad_calendar_today_analytics_launchpad_calendar_today_get` (also callable as `g8.api.call("get_launchpad_calendar_today_analytics_launchpad_calendar_today_get", input)`)
|
|
1052
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1053
|
+
- API-key scope: `analytics:read`
|
|
1054
|
+
|
|
1055
|
+
The key-holder's meetings for one day.
|
|
1056
|
+
|
|
1057
|
+
**Input**
|
|
1058
|
+
|
|
1059
|
+
| Field | Type | Required | Description |
|
|
1060
|
+
|---|---|---|---|
|
|
1061
|
+
| `query.date` | `string \| null` | no | ISO date to read instead of today. |
|
|
1062
|
+
| `query.timezone` | `string` | no | IANA timezone the day boundaries are computed in. default `"UTC"` |
|
|
1063
|
+
|
|
1064
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1065
|
+
|
|
1066
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1067
|
+
|
|
1068
|
+
**Example**
|
|
1069
|
+
|
|
1070
|
+
```ts
|
|
1071
|
+
const result = await g8.api.analytics.getLaunchpadCalendarToday();
|
|
1072
|
+
```
|
|
1073
|
+
|
|
1074
|
+
---
|
|
1075
|
+
|
|
1076
|
+
<a id="op-getlaunchpadhomefeed"></a>
|
|
1077
|
+
|
|
1078
|
+
### `g8.api.analytics.getLaunchpadHomeFeed(input?)`
|
|
1079
|
+
|
|
1080
|
+
**Get Launchpad Home Feed**
|
|
1081
|
+
|
|
1082
|
+
- HTTP: `GET /api/v1/analytics/launchpad/home-feed`
|
|
1083
|
+
- operationId: `get_launchpad_home_feed_analytics_launchpad_home_feed_get` (also callable as `g8.api.call("get_launchpad_home_feed_analytics_launchpad_home_feed_get", input)`)
|
|
1084
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1085
|
+
- API-key scope: `analytics:read`
|
|
1086
|
+
|
|
1087
|
+
The key-holder's home feed: replies, meetings and recent activity.
|
|
1088
|
+
|
|
1089
|
+
**Input**: none.
|
|
1090
|
+
|
|
1091
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1092
|
+
|
|
1093
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1094
|
+
|
|
1095
|
+
**Example**
|
|
1096
|
+
|
|
1097
|
+
```ts
|
|
1098
|
+
const result = await g8.api.analytics.getLaunchpadHomeFeed();
|
|
1099
|
+
```
|
|
1100
|
+
|
|
1101
|
+
---
|
|
1102
|
+
|
|
1103
|
+
<a id="op-getlaunchpadsmartcards"></a>
|
|
1104
|
+
|
|
1105
|
+
### `g8.api.analytics.getLaunchpadSmartCards(input?)`
|
|
1106
|
+
|
|
1107
|
+
**Get Launchpad Smart Cards**
|
|
1108
|
+
|
|
1109
|
+
- HTTP: `GET /api/v1/analytics/launchpad/smart-cards`
|
|
1110
|
+
- operationId: `get_launchpad_smart_cards_analytics_launchpad_smart_cards_get` (also callable as `g8.api.call("get_launchpad_smart_cards_analytics_launchpad_smart_cards_get", input)`)
|
|
1111
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1112
|
+
- API-key scope: `analytics:read`
|
|
1113
|
+
|
|
1114
|
+
Persona-ranked cards with live counts, as the copilot home screen shows them.
|
|
1115
|
+
|
|
1116
|
+
**Input**: none.
|
|
1117
|
+
|
|
1118
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1119
|
+
|
|
1120
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1121
|
+
|
|
1122
|
+
**Example**
|
|
1123
|
+
|
|
1124
|
+
```ts
|
|
1125
|
+
const result = await g8.api.analytics.getLaunchpadSmartCards();
|
|
1126
|
+
```
|
|
1127
|
+
|
|
1128
|
+
---
|
|
1129
|
+
|
|
1130
|
+
<a id="op-getmanagerdashboard"></a>
|
|
1131
|
+
|
|
1132
|
+
### `g8.api.analytics.getManagerDashboard(input?)`
|
|
1133
|
+
|
|
1134
|
+
**Get Manager Dashboard**
|
|
1135
|
+
|
|
1136
|
+
- HTTP: `GET /api/v1/analytics/outbound/dashboards/manager`
|
|
1137
|
+
- operationId: `get_manager_dashboard_analytics_outbound_dashboards_manager_get` (also callable as `g8.api.call("get_manager_dashboard_analytics_outbound_dashboards_manager_get", input)`)
|
|
1138
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1139
|
+
- API-key scope: `analytics:read`
|
|
1140
|
+
|
|
1141
|
+
Team overview, as an SDR manager reads it.
|
|
1142
|
+
|
|
1143
|
+
**Input**
|
|
1144
|
+
|
|
1145
|
+
| Field | Type | Required | Description |
|
|
1146
|
+
|---|---|---|---|
|
|
1147
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
1148
|
+
|
|
1149
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1150
|
+
|
|
1151
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1152
|
+
|
|
1153
|
+
**Example**
|
|
1154
|
+
|
|
1155
|
+
```ts
|
|
1156
|
+
const result = await g8.api.analytics.getManagerDashboard();
|
|
1157
|
+
```
|
|
1158
|
+
|
|
1159
|
+
---
|
|
1160
|
+
|
|
1161
|
+
<a id="op-getmeetingbychannel"></a>
|
|
1162
|
+
|
|
1163
|
+
### `g8.api.analytics.getMeetingByChannel(input?)`
|
|
1164
|
+
|
|
1165
|
+
**Get Meeting By Channel**
|
|
1166
|
+
|
|
1167
|
+
- HTTP: `GET /api/v1/analytics/outbound/meeting-metrics/by-channel`
|
|
1168
|
+
- operationId: `get_meeting_by_channel_analytics_outbound_meeting_metrics_by_channel_get` (also callable as `g8.api.call("get_meeting_by_channel_analytics_outbound_meeting_metrics_by_channel_get", input)`)
|
|
1169
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1170
|
+
- API-key scope: `analytics:read`
|
|
1171
|
+
|
|
1172
|
+
Which channel produced each booking - email, phone, or inbound.
|
|
1173
|
+
|
|
1174
|
+
**Input**
|
|
1175
|
+
|
|
1176
|
+
| Field | Type | Required | Description |
|
|
1177
|
+
|---|---|---|---|
|
|
1178
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
1179
|
+
|
|
1180
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1181
|
+
|
|
1182
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1183
|
+
|
|
1184
|
+
**Example**
|
|
1185
|
+
|
|
1186
|
+
```ts
|
|
1187
|
+
const result = await g8.api.analytics.getMeetingByChannel();
|
|
1188
|
+
```
|
|
1189
|
+
|
|
1190
|
+
---
|
|
1191
|
+
|
|
1192
|
+
<a id="op-getmeetingfunnel"></a>
|
|
1193
|
+
|
|
1194
|
+
### `g8.api.analytics.getMeetingFunnel(input?)`
|
|
1195
|
+
|
|
1196
|
+
**Get Meeting Funnel**
|
|
1197
|
+
|
|
1198
|
+
- HTTP: `GET /api/v1/analytics/outbound/meeting-funnel`
|
|
1199
|
+
- operationId: `get_meeting_funnel_analytics_outbound_meeting_funnel_get` (also callable as `g8.api.call("get_meeting_funnel_analytics_outbound_meeting_funnel_get", input)`)
|
|
1200
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1201
|
+
- API-key scope: `analytics:read`
|
|
1202
|
+
|
|
1203
|
+
Booked, held, cancelled - and the conversion between them.
|
|
1204
|
+
|
|
1205
|
+
The funnel, not the counts: `/meeting-metrics` answers how many, this
|
|
1206
|
+
answers how many SURVIVED.
|
|
1207
|
+
|
|
1208
|
+
**Input**
|
|
1209
|
+
|
|
1210
|
+
| Field | Type | Required | Description |
|
|
1211
|
+
|---|---|---|---|
|
|
1212
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
1213
|
+
|
|
1214
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1215
|
+
|
|
1216
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1217
|
+
|
|
1218
|
+
**Example**
|
|
1219
|
+
|
|
1220
|
+
```ts
|
|
1221
|
+
const result = await g8.api.analytics.getMeetingFunnel();
|
|
1222
|
+
```
|
|
1223
|
+
|
|
1224
|
+
---
|
|
1225
|
+
|
|
1226
|
+
<a id="op-getmeetingmetrics"></a>
|
|
1227
|
+
|
|
1228
|
+
### `g8.api.analytics.getMeetingMetrics(input?)`
|
|
1229
|
+
|
|
1230
|
+
**Get Meeting Metrics**
|
|
1231
|
+
|
|
1232
|
+
- HTTP: `GET /api/v1/analytics/outbound/meeting-metrics`
|
|
1233
|
+
- operationId: `get_meeting_metrics_analytics_outbound_meeting_metrics_get` (also callable as `g8.api.call("get_meeting_metrics_analytics_outbound_meeting_metrics_get", input)`)
|
|
1234
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1235
|
+
- API-key scope: `analytics:read`
|
|
1236
|
+
|
|
1237
|
+
Meetings booked, cancelled, net, and the cancellation rate.
|
|
1238
|
+
|
|
1239
|
+
**Input**
|
|
1240
|
+
|
|
1241
|
+
| Field | Type | Required | Description |
|
|
1242
|
+
|---|---|---|---|
|
|
1243
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
1244
|
+
|
|
1245
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1246
|
+
|
|
1247
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1248
|
+
|
|
1249
|
+
**Example**
|
|
1250
|
+
|
|
1251
|
+
```ts
|
|
1252
|
+
const result = await g8.api.analytics.getMeetingMetrics();
|
|
1253
|
+
```
|
|
1254
|
+
|
|
1255
|
+
---
|
|
1256
|
+
|
|
1257
|
+
<a id="op-getmeetingtrend"></a>
|
|
1258
|
+
|
|
1259
|
+
### `g8.api.analytics.getMeetingTrend(input?)`
|
|
1260
|
+
|
|
1261
|
+
**Get Meeting Trend**
|
|
1262
|
+
|
|
1263
|
+
- HTTP: `GET /api/v1/analytics/outbound/meeting-metrics/trend`
|
|
1264
|
+
- operationId: `get_meeting_trend_analytics_outbound_meeting_metrics_trend_get` (also callable as `g8.api.call("get_meeting_trend_analytics_outbound_meeting_metrics_trend_get", input)`)
|
|
1265
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1266
|
+
- API-key scope: `analytics:read`
|
|
1267
|
+
|
|
1268
|
+
The same meeting metrics, one row per day.
|
|
1269
|
+
|
|
1270
|
+
**Input**
|
|
1271
|
+
|
|
1272
|
+
| Field | Type | Required | Description |
|
|
1273
|
+
|---|---|---|---|
|
|
1274
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
1275
|
+
|
|
1276
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1277
|
+
|
|
1278
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1279
|
+
|
|
1280
|
+
**Example**
|
|
1281
|
+
|
|
1282
|
+
```ts
|
|
1283
|
+
const result = await g8.api.analytics.getMeetingTrend();
|
|
1284
|
+
```
|
|
1285
|
+
|
|
1286
|
+
---
|
|
1287
|
+
|
|
1288
|
+
<a id="op-getmovement"></a>
|
|
1289
|
+
|
|
1290
|
+
### `g8.api.analytics.getMovement(input?)`
|
|
1291
|
+
|
|
1292
|
+
**Get Movement**
|
|
1293
|
+
|
|
1294
|
+
- HTTP: `GET /api/v1/analytics/subscriptions/movement`
|
|
1295
|
+
- operationId: `get_movement_analytics_subscriptions_movement_get` (also callable as `g8.api.call("get_movement_analytics_subscriptions_movement_get", input)`)
|
|
1296
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1297
|
+
- API-key scope: `analytics:read`
|
|
1298
|
+
|
|
1299
|
+
The MRR waterfall: new, expansion, contraction, churned, reactivated.
|
|
1300
|
+
|
|
1301
|
+
Where `/mrr` says what the number is, this says what MOVED it.
|
|
1302
|
+
|
|
1303
|
+
**Input**
|
|
1304
|
+
|
|
1305
|
+
| Field | Type | Required | Description |
|
|
1306
|
+
|---|---|---|---|
|
|
1307
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
1308
|
+
|
|
1309
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1310
|
+
|
|
1311
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1312
|
+
|
|
1313
|
+
**Example**
|
|
1314
|
+
|
|
1315
|
+
```ts
|
|
1316
|
+
const result = await g8.api.analytics.getMovement();
|
|
1317
|
+
```
|
|
1318
|
+
|
|
1319
|
+
---
|
|
1320
|
+
|
|
1321
|
+
<a id="op-getmrr"></a>
|
|
1322
|
+
|
|
1323
|
+
### `g8.api.analytics.getMrr(input?)`
|
|
1324
|
+
|
|
1325
|
+
**Get Mrr**
|
|
1326
|
+
|
|
1327
|
+
- HTTP: `GET /api/v1/analytics/subscriptions/mrr`
|
|
1328
|
+
- operationId: `get_mrr_analytics_subscriptions_mrr_get` (also callable as `g8.api.call("get_mrr_analytics_subscriptions_mrr_get", input)`)
|
|
1329
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1330
|
+
- API-key scope: `analytics:read`
|
|
1331
|
+
|
|
1332
|
+
MRR and ARR headline, plus the trailing trend.
|
|
1333
|
+
|
|
1334
|
+
The window sizes the TREND only - the headline is the current snapshot
|
|
1335
|
+
either way, so a shorter window makes the chart shorter, not the number
|
|
1336
|
+
smaller.
|
|
1337
|
+
|
|
1338
|
+
**Input**
|
|
1339
|
+
|
|
1340
|
+
| Field | Type | Required | Description |
|
|
1341
|
+
|---|---|---|---|
|
|
1342
|
+
| `query.trailing_days` | `integer` | no | Length of the trend series, in days. default `90` |
|
|
1343
|
+
|
|
1344
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1345
|
+
|
|
1346
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1347
|
+
|
|
1348
|
+
**Example**
|
|
1349
|
+
|
|
1350
|
+
```ts
|
|
1351
|
+
const result = await g8.api.analytics.getMrr();
|
|
1352
|
+
```
|
|
1353
|
+
|
|
1354
|
+
---
|
|
1355
|
+
|
|
1356
|
+
<a id="op-getmysdrdashboard"></a>
|
|
1357
|
+
|
|
1358
|
+
### `g8.api.analytics.getMySdrDashboard(input?)`
|
|
1359
|
+
|
|
1360
|
+
**Get My Sdr Dashboard**
|
|
1361
|
+
|
|
1362
|
+
- HTTP: `GET /api/v1/analytics/outbound/dashboards/sdr`
|
|
1363
|
+
- operationId: `get_my_sdr_dashboard_analytics_outbound_dashboards_sdr_get` (also callable as `g8.api.call("get_my_sdr_dashboard_analytics_outbound_dashboards_sdr_get", input)`)
|
|
1364
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1365
|
+
- API-key scope: `analytics:read`
|
|
1366
|
+
|
|
1367
|
+
The dashboard of the person who minted this key.
|
|
1368
|
+
|
|
1369
|
+
The rep is read from the key-holder's identity, so an organisation-scoped
|
|
1370
|
+
key - which has no person behind it and would resolve to a synthetic
|
|
1371
|
+
sentinel address, answering empty - is refused with a 403 rather than
|
|
1372
|
+
handed a dashboard that looks like a rep with no activity.
|
|
1373
|
+
|
|
1374
|
+
**Input**
|
|
1375
|
+
|
|
1376
|
+
| Field | Type | Required | Description |
|
|
1377
|
+
|---|---|---|---|
|
|
1378
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
1379
|
+
|
|
1380
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1381
|
+
|
|
1382
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1383
|
+
|
|
1384
|
+
**Example**
|
|
1385
|
+
|
|
1386
|
+
```ts
|
|
1387
|
+
const result = await g8.api.analytics.getMySdrDashboard();
|
|
1388
|
+
```
|
|
1389
|
+
|
|
1390
|
+
---
|
|
1391
|
+
|
|
1392
|
+
<a id="op-getoutboundsummary"></a>
|
|
1393
|
+
|
|
1394
|
+
### `g8.api.analytics.getOutboundSummary(input?)`
|
|
1395
|
+
|
|
1396
|
+
**Get Outbound Summary**
|
|
1397
|
+
|
|
1398
|
+
- HTTP: `GET /api/v1/analytics/outbound/summary`
|
|
1399
|
+
- operationId: `get_outbound_summary_analytics_outbound_summary_get` (also callable as `g8.api.call("get_outbound_summary_analytics_outbound_summary_get", input)`)
|
|
1400
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1401
|
+
- API-key scope: `analytics:read`
|
|
1402
|
+
|
|
1403
|
+
Email, calls and meetings in one call - the top-line outbound KPIs.
|
|
1404
|
+
|
|
1405
|
+
The cheapest way to ask "how is outbound doing": one request instead of
|
|
1406
|
+
the three channel summaries below.
|
|
1407
|
+
|
|
1408
|
+
**Input**
|
|
1409
|
+
|
|
1410
|
+
| Field | Type | Required | Description |
|
|
1411
|
+
|---|---|---|---|
|
|
1412
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
1413
|
+
|
|
1414
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1415
|
+
|
|
1416
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1417
|
+
|
|
1418
|
+
**Example**
|
|
1419
|
+
|
|
1420
|
+
```ts
|
|
1421
|
+
const result = await g8.api.analytics.getOutboundSummary();
|
|
1422
|
+
```
|
|
1423
|
+
|
|
1424
|
+
---
|
|
1425
|
+
|
|
1426
|
+
<a id="op-getplandistribution"></a>
|
|
1427
|
+
|
|
1428
|
+
### `g8.api.analytics.getPlanDistribution(input?)`
|
|
1429
|
+
|
|
1430
|
+
**Get Plan Distribution**
|
|
1431
|
+
|
|
1432
|
+
- HTTP: `GET /api/v1/analytics/subscriptions/plan-distribution`
|
|
1433
|
+
- operationId: `get_plan_distribution_analytics_subscriptions_plan_distribution_get` (also callable as `g8.api.call("get_plan_distribution_analytics_subscriptions_plan_distribution_get", input)`)
|
|
1434
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1435
|
+
- API-key scope: `analytics:read`
|
|
1436
|
+
|
|
1437
|
+
Active subscriptions and MRR per plan, as of now.
|
|
1438
|
+
|
|
1439
|
+
A snapshot, so it takes no window - the only report here that does not.
|
|
1440
|
+
|
|
1441
|
+
**Input**: none.
|
|
1442
|
+
|
|
1443
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1444
|
+
|
|
1445
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1446
|
+
|
|
1447
|
+
**Example**
|
|
1448
|
+
|
|
1449
|
+
```ts
|
|
1450
|
+
const result = await g8.api.analytics.getPlanDistribution();
|
|
1451
|
+
```
|
|
1452
|
+
|
|
1453
|
+
---
|
|
1454
|
+
|
|
1455
|
+
<a id="op-getretention"></a>
|
|
1456
|
+
|
|
1457
|
+
### `g8.api.analytics.getRetention(input?)`
|
|
1458
|
+
|
|
1459
|
+
**Get Retention**
|
|
1460
|
+
|
|
1461
|
+
- HTTP: `GET /api/v1/analytics/subscriptions/retention`
|
|
1462
|
+
- operationId: `get_retention_analytics_subscriptions_retention_get` (also callable as `g8.api.call("get_retention_analytics_subscriptions_retention_get", input)`)
|
|
1463
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1464
|
+
- API-key scope: `analytics:read`
|
|
1465
|
+
|
|
1466
|
+
Gross revenue churn, net revenue retention, and logo churn.
|
|
1467
|
+
|
|
1468
|
+
**Input**
|
|
1469
|
+
|
|
1470
|
+
| Field | Type | Required | Description |
|
|
1471
|
+
|---|---|---|---|
|
|
1472
|
+
| `query.days` | `integer` | no | Trailing window, in days. default `90` |
|
|
1473
|
+
|
|
1474
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1475
|
+
|
|
1476
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1477
|
+
|
|
1478
|
+
**Example**
|
|
1479
|
+
|
|
1480
|
+
```ts
|
|
1481
|
+
const result = await g8.api.analytics.getRetention();
|
|
1482
|
+
```
|
|
1483
|
+
|
|
1484
|
+
---
|
|
1485
|
+
|
|
1486
|
+
<a id="op-getsdractivity"></a>
|
|
1487
|
+
|
|
1488
|
+
### `g8.api.analytics.getSdrActivity(input?)`
|
|
1489
|
+
|
|
1490
|
+
**Get Sdr Activity**
|
|
1491
|
+
|
|
1492
|
+
- HTTP: `GET /api/v1/analytics/outbound/sdr-activity`
|
|
1493
|
+
- operationId: `get_sdr_activity_analytics_outbound_sdr_activity_get` (also callable as `g8.api.call("get_sdr_activity_analytics_outbound_sdr_activity_get", input)`)
|
|
1494
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1495
|
+
- API-key scope: `analytics:read`
|
|
1496
|
+
|
|
1497
|
+
Activity per rep across the window - the roster view.
|
|
1498
|
+
|
|
1499
|
+
**Input**
|
|
1500
|
+
|
|
1501
|
+
| Field | Type | Required | Description |
|
|
1502
|
+
|---|---|---|---|
|
|
1503
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
1504
|
+
|
|
1505
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1506
|
+
|
|
1507
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1508
|
+
|
|
1509
|
+
**Example**
|
|
1510
|
+
|
|
1511
|
+
```ts
|
|
1512
|
+
const result = await g8.api.analytics.getSdrActivity();
|
|
1513
|
+
```
|
|
1514
|
+
|
|
1515
|
+
---
|
|
1516
|
+
|
|
1517
|
+
<a id="op-getsdractivitybyemail"></a>
|
|
1518
|
+
|
|
1519
|
+
### `g8.api.analytics.getSdrActivityByEmail(input)`
|
|
1520
|
+
|
|
1521
|
+
**Get Sdr Activity By Email**
|
|
1522
|
+
|
|
1523
|
+
- HTTP: `GET /api/v1/analytics/outbound/sdr-activity/{sdr_email}`
|
|
1524
|
+
- operationId: `get_sdr_activity_by_email_analytics_outbound_sdr_activity__sdr_email__get` (also callable as `g8.api.call("get_sdr_activity_by_email_analytics_outbound_sdr_activity__sdr_email__get", input)`)
|
|
1525
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1526
|
+
- API-key scope: `analytics:read`
|
|
1527
|
+
|
|
1528
|
+
One rep's daily activity.
|
|
1529
|
+
|
|
1530
|
+
A PLAIN path segment, where the app declares `{sdr_email:path}`. The
|
|
1531
|
+
greedy converter would match across `/` and swallow every future route
|
|
1532
|
+
under `/sdr-activity/`; an email address has no slash in it, and the
|
|
1533
|
+
already-published `GET /analytics/sdr/{sdr_email}` sets the precedent one
|
|
1534
|
+
namespace over.
|
|
1535
|
+
|
|
1536
|
+
**Input**
|
|
1537
|
+
|
|
1538
|
+
| Field | Type | Required | Description |
|
|
1539
|
+
|---|---|---|---|
|
|
1540
|
+
| `path.sdr_email` | `string` | yes | The rep's email address. |
|
|
1541
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
1542
|
+
|
|
1543
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1544
|
+
|
|
1545
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1546
|
+
|
|
1547
|
+
**Example**
|
|
1548
|
+
|
|
1549
|
+
```ts
|
|
1550
|
+
const result = await g8.api.analytics.getSdrActivityByEmail({ path: { sdr_email: "jane@acme.com" } });
|
|
1551
|
+
```
|
|
1552
|
+
|
|
1553
|
+
---
|
|
1554
|
+
|
|
1555
|
+
<a id="op-getsdrdaily"></a>
|
|
1556
|
+
|
|
1557
|
+
### `g8.api.analytics.getSdrDaily(input?)`
|
|
1558
|
+
|
|
1559
|
+
**Get Sdr Daily**
|
|
1560
|
+
|
|
1561
|
+
- HTTP: `GET /api/v1/analytics/outbound/sdr-activity/daily`
|
|
1562
|
+
- operationId: `get_sdr_daily_analytics_outbound_sdr_activity_daily_get` (also callable as `g8.api.call("get_sdr_daily_analytics_outbound_sdr_activity_daily_get", input)`)
|
|
1563
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1564
|
+
- API-key scope: `analytics:read`
|
|
1565
|
+
|
|
1566
|
+
Per-rep activity broken out by day.
|
|
1567
|
+
|
|
1568
|
+
**Input**
|
|
1569
|
+
|
|
1570
|
+
| Field | Type | Required | Description |
|
|
1571
|
+
|---|---|---|---|
|
|
1572
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
1573
|
+
| `query.sdr_email` | `string \| null` | no | Narrow to one rep. Omit for the whole team. |
|
|
1574
|
+
|
|
1575
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1576
|
+
|
|
1577
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1578
|
+
|
|
1579
|
+
**Example**
|
|
1580
|
+
|
|
1581
|
+
```ts
|
|
1582
|
+
const result = await g8.api.analytics.getSdrDaily();
|
|
1583
|
+
```
|
|
1584
|
+
|
|
1585
|
+
---
|
|
1586
|
+
|
|
1587
|
+
<a id="op-getsdrdashboardbyemail"></a>
|
|
1588
|
+
|
|
1589
|
+
### `g8.api.analytics.getSdrDashboardByEmail(input)`
|
|
1590
|
+
|
|
1591
|
+
**Get Sdr Dashboard By Email**
|
|
1592
|
+
|
|
1593
|
+
- HTTP: `GET /api/v1/analytics/outbound/dashboards/sdr/{sdr_email}`
|
|
1594
|
+
- operationId: `get_sdr_dashboard_by_email_analytics_outbound_dashboards_sdr__sdr_email__get` (also callable as `g8.api.call("get_sdr_dashboard_by_email_analytics_outbound_dashboards_sdr__sdr_email__get", input)`)
|
|
1595
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1596
|
+
- API-key scope: `analytics:read`
|
|
1597
|
+
|
|
1598
|
+
One rep's dashboard, named explicitly.
|
|
1599
|
+
|
|
1600
|
+
`GET /analytics/outbound/dashboards/sdr` is the key-holder's OWN
|
|
1601
|
+
dashboard; this one names the rep, so any key may read any rep's numbers.
|
|
1602
|
+
|
|
1603
|
+
**Input**
|
|
1604
|
+
|
|
1605
|
+
| Field | Type | Required | Description |
|
|
1606
|
+
|---|---|---|---|
|
|
1607
|
+
| `path.sdr_email` | `string` | yes | The rep's email address. |
|
|
1608
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
1609
|
+
|
|
1610
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1611
|
+
|
|
1612
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1613
|
+
|
|
1614
|
+
**Example**
|
|
1615
|
+
|
|
1616
|
+
```ts
|
|
1617
|
+
const result = await g8.api.analytics.getSdrDashboardByEmail({ path: { sdr_email: "jane@acme.com" } });
|
|
1618
|
+
```
|
|
1619
|
+
|
|
1620
|
+
---
|
|
1621
|
+
|
|
1622
|
+
<a id="op-getsdrleaderboard"></a>
|
|
1623
|
+
|
|
1624
|
+
### `g8.api.analytics.getSdrLeaderboard(input?)`
|
|
1625
|
+
|
|
1626
|
+
**Get Sdr Leaderboard**
|
|
1627
|
+
|
|
1628
|
+
- HTTP: `GET /api/v1/analytics/outbound/sdr-activity/leaderboard`
|
|
1629
|
+
- operationId: `get_sdr_leaderboard_analytics_outbound_sdr_activity_leaderboard_get` (also callable as `g8.api.call("get_sdr_leaderboard_analytics_outbound_sdr_activity_leaderboard_get", input)`)
|
|
1630
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1631
|
+
- API-key scope: `analytics:read`
|
|
1632
|
+
|
|
1633
|
+
Reps ranked by reply rate.
|
|
1634
|
+
|
|
1635
|
+
A rep is only ranked once they have sent at least ten emails - the app's
|
|
1636
|
+
own floor, and the reason a rep who sent three and got one reply does not
|
|
1637
|
+
appear at 33%.
|
|
1638
|
+
|
|
1639
|
+
Not the same report as `GET /analytics/sdr/leaderboard`, which already
|
|
1640
|
+
ships: that one ranks on the SDR analytics service's own activity roll-up,
|
|
1641
|
+
this one on outbound sequence performance. Different services, different
|
|
1642
|
+
numbers, both intentional.
|
|
1643
|
+
|
|
1644
|
+
**Input**
|
|
1645
|
+
|
|
1646
|
+
| Field | Type | Required | Description |
|
|
1647
|
+
|---|---|---|---|
|
|
1648
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
1649
|
+
| `query.limit` | `integer` | no | Reps to return. default `20` |
|
|
1650
|
+
|
|
1651
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1652
|
+
|
|
1653
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1654
|
+
|
|
1655
|
+
**Example**
|
|
1656
|
+
|
|
1657
|
+
```ts
|
|
1658
|
+
const result = await g8.api.analytics.getSdrLeaderboard();
|
|
1659
|
+
```
|
|
1660
|
+
|
|
1661
|
+
---
|
|
1662
|
+
|
|
1663
|
+
<a id="op-getsequenceperformance"></a>
|
|
1664
|
+
|
|
1665
|
+
### `g8.api.analytics.getSequencePerformance(input?)`
|
|
1666
|
+
|
|
1667
|
+
**Get Sequence Performance**
|
|
1668
|
+
|
|
1669
|
+
- HTTP: `GET /api/v1/analytics/outbound/sequence-performance`
|
|
1670
|
+
- operationId: `get_sequence_performance_analytics_outbound_sequence_performance_get` (also callable as `g8.api.call("get_sequence_performance_analytics_outbound_sequence_performance_get", input)`)
|
|
1671
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1672
|
+
- API-key scope: `analytics:read`
|
|
1673
|
+
|
|
1674
|
+
Contacts to replies to meetings, one row per sequence.
|
|
1675
|
+
|
|
1676
|
+
The end-to-end view `/email-metrics/by-sequence` cannot give: that one
|
|
1677
|
+
stops at the reply, this one carries through to the meeting.
|
|
1678
|
+
|
|
1679
|
+
**Input**
|
|
1680
|
+
|
|
1681
|
+
| Field | Type | Required | Description |
|
|
1682
|
+
|---|---|---|---|
|
|
1683
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
1684
|
+
| `query.limit` | `integer` | no | Sequences to return. default `50` |
|
|
1685
|
+
|
|
1686
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1687
|
+
|
|
1688
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1689
|
+
|
|
1690
|
+
**Example**
|
|
1691
|
+
|
|
1692
|
+
```ts
|
|
1693
|
+
const result = await g8.api.analytics.getSequencePerformance();
|
|
1694
|
+
```
|
|
1695
|
+
|
|
1696
|
+
---
|
|
1697
|
+
|
|
1698
|
+
<a id="op-getsequenceperformancebyid"></a>
|
|
1699
|
+
|
|
1700
|
+
### `g8.api.analytics.getSequencePerformanceById(input)`
|
|
1701
|
+
|
|
1702
|
+
**Get Sequence Performance By Id**
|
|
1703
|
+
|
|
1704
|
+
- HTTP: `GET /api/v1/analytics/outbound/sequence-performance/{sequence_id}`
|
|
1705
|
+
- operationId: `get_sequence_performance_by_id_analytics_outbound_sequence_performance__sequence_id__get` (also callable as `g8.api.call("get_sequence_performance_by_id_analytics_outbound_sequence_performance__sequence_id__get", input)`)
|
|
1706
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1707
|
+
- API-key scope: `analytics:read`
|
|
1708
|
+
|
|
1709
|
+
The same row for ONE sequence, without paging the list to find it.
|
|
1710
|
+
|
|
1711
|
+
**Input**
|
|
1712
|
+
|
|
1713
|
+
| Field | Type | Required | Description |
|
|
1714
|
+
|---|---|---|---|
|
|
1715
|
+
| `path.sequence_id` | `string` | yes | Sequence id. |
|
|
1716
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
1717
|
+
|
|
1718
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1719
|
+
|
|
1720
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1721
|
+
|
|
1722
|
+
**Example**
|
|
1723
|
+
|
|
1724
|
+
```ts
|
|
1725
|
+
const result = await g8.api.analytics.getSequencePerformanceById({ path: { sequence_id: "id" } });
|
|
1726
|
+
```
|
|
1727
|
+
|
|
1728
|
+
---
|
|
1729
|
+
|
|
1730
|
+
<a id="op-getteamcomparison"></a>
|
|
1731
|
+
|
|
1732
|
+
### `g8.api.analytics.getTeamComparison(input?)`
|
|
1733
|
+
|
|
1734
|
+
**Get Team Comparison**
|
|
1735
|
+
|
|
1736
|
+
- HTTP: `GET /api/v1/analytics/outbound/sdr-activity/team-comparison`
|
|
1737
|
+
- operationId: `get_team_comparison_analytics_outbound_sdr_activity_team_comparison_get` (also callable as `g8.api.call("get_team_comparison_analytics_outbound_sdr_activity_team_comparison_get", input)`)
|
|
1738
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1739
|
+
- API-key scope: `analytics:read`
|
|
1740
|
+
|
|
1741
|
+
Team averages - the baseline an individual rep is read against.
|
|
1742
|
+
|
|
1743
|
+
**Input**
|
|
1744
|
+
|
|
1745
|
+
| Field | Type | Required | Description |
|
|
1746
|
+
|---|---|---|---|
|
|
1747
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
1748
|
+
|
|
1749
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1750
|
+
|
|
1751
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1752
|
+
|
|
1753
|
+
**Example**
|
|
1754
|
+
|
|
1755
|
+
```ts
|
|
1756
|
+
const result = await g8.api.analytics.getTeamComparison();
|
|
1757
|
+
```
|
|
1758
|
+
|
|
1759
|
+
---
|
|
1760
|
+
|
|
1761
|
+
<a id="op-gettoppages"></a>
|
|
1762
|
+
|
|
1763
|
+
### `g8.api.analytics.getTopPages(input?)`
|
|
1764
|
+
|
|
1765
|
+
**Get Top Pages**
|
|
1766
|
+
|
|
1767
|
+
- HTTP: `GET /api/v1/analytics/product-usage/top-pages`
|
|
1768
|
+
- operationId: `get_top_pages_analytics_product_usage_top_pages_get` (also callable as `g8.api.call("get_top_pages_analytics_product_usage_top_pages_get", input)`)
|
|
1769
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1770
|
+
- API-key scope: `analytics:read`
|
|
1771
|
+
|
|
1772
|
+
Busiest in-app pages and event names by volume.
|
|
1773
|
+
|
|
1774
|
+
**Input**
|
|
1775
|
+
|
|
1776
|
+
| Field | Type | Required | Description |
|
|
1777
|
+
|---|---|---|---|
|
|
1778
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
1779
|
+
| `query.limit` | `integer` | no | Rows per list. default `20` |
|
|
1780
|
+
|
|
1781
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1782
|
+
|
|
1783
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1784
|
+
|
|
1785
|
+
**Example**
|
|
1786
|
+
|
|
1787
|
+
```ts
|
|
1788
|
+
const result = await g8.api.analytics.getTopPages();
|
|
1789
|
+
```
|
|
1790
|
+
|
|
1791
|
+
---
|
|
1792
|
+
|
|
1793
|
+
<a id="op-gettrialconversion"></a>
|
|
1794
|
+
|
|
1795
|
+
### `g8.api.analytics.getTrialConversion(input?)`
|
|
1796
|
+
|
|
1797
|
+
**Get Trial Conversion**
|
|
1798
|
+
|
|
1799
|
+
- HTTP: `GET /api/v1/analytics/subscriptions/trial-conversion`
|
|
1800
|
+
- operationId: `get_trial_conversion_analytics_subscriptions_trial_conversion_get` (also callable as `g8.api.call("get_trial_conversion_analytics_subscriptions_trial_conversion_get", input)`)
|
|
1801
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1802
|
+
- API-key scope: `analytics:read`
|
|
1803
|
+
|
|
1804
|
+
Trial-to-paid rate and the median time it takes.
|
|
1805
|
+
|
|
1806
|
+
**Input**
|
|
1807
|
+
|
|
1808
|
+
| Field | Type | Required | Description |
|
|
1809
|
+
|---|---|---|---|
|
|
1810
|
+
| `query.days` | `integer` | no | Trailing window, in days. default `60` |
|
|
1811
|
+
|
|
1812
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1813
|
+
|
|
1814
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1815
|
+
|
|
1816
|
+
**Example**
|
|
1817
|
+
|
|
1818
|
+
```ts
|
|
1819
|
+
const result = await g8.api.analytics.getTrialConversion();
|
|
1820
|
+
```
|
|
1821
|
+
|
|
1822
|
+
---
|
|
1823
|
+
|
|
1824
|
+
<a id="op-getvoiceaioutcomes"></a>
|
|
1825
|
+
|
|
1826
|
+
### `g8.api.analytics.getVoiceAiOutcomes(input?)`
|
|
1827
|
+
|
|
1828
|
+
**Get Voice Ai Outcomes**
|
|
1829
|
+
|
|
1830
|
+
- HTTP: `GET /api/v1/analytics/outbound/call-metrics/voice-ai`
|
|
1831
|
+
- operationId: `get_voice_ai_outcomes_analytics_outbound_call_metrics_voice_ai_get` (also callable as `g8.api.call("get_voice_ai_outcomes_analytics_outbound_call_metrics_voice_ai_get", input)`)
|
|
1832
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1833
|
+
- API-key scope: `analytics:read`
|
|
1834
|
+
|
|
1835
|
+
How the AI-placed calls ended, broken down by outcome.
|
|
1836
|
+
|
|
1837
|
+
Voice AI only - the human dialer's own quality surface is
|
|
1838
|
+
`GET /analytics/dialer/*`, which already ships.
|
|
1839
|
+
|
|
1840
|
+
**Input**
|
|
1841
|
+
|
|
1842
|
+
| Field | Type | Required | Description |
|
|
1843
|
+
|---|---|---|---|
|
|
1844
|
+
| `query.days` | `integer` | no | Size of the trailing window, in days, ending today (UTC). default `30` |
|
|
1845
|
+
|
|
1846
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1847
|
+
|
|
1848
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1849
|
+
|
|
1850
|
+
**Example**
|
|
1851
|
+
|
|
1852
|
+
```ts
|
|
1853
|
+
const result = await g8.api.analytics.getVoiceAiOutcomes();
|
|
1854
|
+
```
|
|
1855
|
+
|
|
1856
|
+
---
|
|
1857
|
+
|
|
1858
|
+
<a id="op-postdataquality"></a>
|
|
1859
|
+
|
|
1860
|
+
### `g8.api.analytics.postDataQuality(input)`
|
|
1861
|
+
|
|
1862
|
+
**Post Data Quality**
|
|
1863
|
+
|
|
1864
|
+
- HTTP: `POST /api/v1/analytics/sales-report/data-quality`
|
|
1865
|
+
- operationId: `post_data_quality_analytics_sales_report_data_quality_post` (also callable as `g8.api.call("post_data_quality_analytics_sales_report_data_quality_post", input)`)
|
|
1866
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1867
|
+
- API-key scope: `analytics:read`
|
|
1868
|
+
|
|
1869
|
+
The same diagnostic, narrowed to the deals one filter resolves.
|
|
1870
|
+
|
|
1871
|
+
A SECOND VERB rather than a changed one: the GET above is unchanged, so
|
|
1872
|
+
"omit the filter and get today's answer" stays a structural fact rather
|
|
1873
|
+
than a claim about a defaulted parameter.
|
|
1874
|
+
|
|
1875
|
+
Only the DEAL-anchored figures move. The transcript counters, the 90-day
|
|
1876
|
+
event total and the tier-rules flag come back org-wide on this path too,
|
|
1877
|
+
because no filter on this report can reach them.
|
|
1878
|
+
|
|
1879
|
+
**Input**
|
|
1880
|
+
|
|
1881
|
+
| Field | Type | Required | Description |
|
|
1882
|
+
|---|---|---|---|
|
|
1883
|
+
| `body` | `FilterQueryDto` | yes | Request body; fields below. |
|
|
1884
|
+
| `query.tz` | `string` | no | IANA timezone the local-day window bounds are computed in, e.g. `Asia/Tokyo`. Changes which deals fall inside the date range. default `"UTC"` |
|
|
1885
|
+
|
|
1886
|
+
Body fields (`FilterQueryDto`):
|
|
1887
|
+
|
|
1888
|
+
| Field | Type | Required | Description |
|
|
1889
|
+
|---|---|---|---|
|
|
1890
|
+
| `body.date` | `DateRangeDto` | yes | |
|
|
1891
|
+
| `body.audiences` | `IntIdFilterGroupDto \| null` | no | |
|
|
1892
|
+
| `body.campaign` | `FilterGroupDto \| null` | no | |
|
|
1893
|
+
| `body.channel` | `FilterGroupDto \| null` | no | |
|
|
1894
|
+
| `body.country` | `FilterGroupDto \| null` | no | |
|
|
1895
|
+
| `body.grading_bucket` | `GradingBucketFilterGroupDto \| null` | no | |
|
|
1896
|
+
| `body.granularity` | `"day" \| "week" \| "month" \| null` | no | |
|
|
1897
|
+
| `body.headcount` | `HeadcountFilterGroupDto \| null` | no | |
|
|
1898
|
+
| `body.industry` | `FilterGroupDto \| null` | no | |
|
|
1899
|
+
| `body.lifecycle` | `FilterGroupDto \| null` | no | |
|
|
1900
|
+
| `body.objections` | `ObjectionCodeFilterGroupDto \| null` | no | |
|
|
1901
|
+
| `body.pipeline` | `UuidFilterGroupDto \| null` | no | |
|
|
1902
|
+
| `body.pipeline_target` | `"prospects_meeting" \| "prospects_revenue" \| "customers_revenue" \| null` | no | default `"prospects_revenue"` |
|
|
1903
|
+
| `body.rec_type` | `IntIdFilterGroupDto \| null` | no | |
|
|
1904
|
+
| `body.rep` | `FilterGroupDto \| null` | no | |
|
|
1905
|
+
| `body.signals_calendar` | `FilterGroupDto \| null` | no | |
|
|
1906
|
+
| `body.signals_chat` | `FilterGroupDto \| null` | no | |
|
|
1907
|
+
| `body.signals_crm` | `FilterGroupDto \| null` | no | |
|
|
1908
|
+
| `body.signals_email` | `FilterGroupDto \| null` | no | |
|
|
1909
|
+
| `body.signals_enrichment` | `FilterGroupDto \| null` | no | |
|
|
1910
|
+
| `body.signals_forms` | `FilterGroupDto \| null` | no | |
|
|
1911
|
+
| `body.signals_intent` | `FilterGroupDto \| null` | no | |
|
|
1912
|
+
| `body.signals_linkedin` | `FilterGroupDto \| null` | no | |
|
|
1913
|
+
| `body.signals_sequence` | `FilterGroupDto \| null` | no | |
|
|
1914
|
+
| `body.signals_sms` | `FilterGroupDto \| null` | no | |
|
|
1915
|
+
| `body.signals_voice` | `FilterGroupDto \| null` | no | |
|
|
1916
|
+
| `body.signals_website` | `FilterGroupDto \| null` | no | |
|
|
1917
|
+
| `body.stage` | `UuidFilterGroupDto \| null` | no | |
|
|
1918
|
+
| `body.tier` | `FilterGroupDto \| null` | no | |
|
|
1919
|
+
|
|
1920
|
+
**Returns** `ApiResponse_ReportPayload_`: the envelope `{ data: ReportPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1921
|
+
|
|
1922
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1923
|
+
|
|
1924
|
+
**Example**
|
|
1925
|
+
|
|
1926
|
+
```ts
|
|
1927
|
+
const result = await g8.api.analytics.postDataQuality({ body: { date: { from: "2026-01-01", to: "2026-01-01" } } });
|
|
1928
|
+
```
|
|
1929
|
+
|
|
1930
|
+
---
|
|
1931
|
+
|
|
1932
|
+
## Referenced types
|
|
1933
|
+
|
|
1934
|
+
Named types that appear in the tables above. Full TypeScript definitions: `G8Contract.<Name>` (`import type { G8Contract } from "@graph8/sdk"`).
|
|
1935
|
+
|
|
1936
|
+
<a id="type-campaignvisitorcontact"></a>
|
|
1937
|
+
|
|
1938
|
+
### `CampaignVisitorContact`
|
|
1939
|
+
|
|
1940
|
+
One row of the Top contacts table. Carries PII (``name`` / ``email``) for the org's own contacts. Omitted entirely from the response when the request passes ``include_contacts=false``.
|
|
1941
|
+
|
|
1942
|
+
| Field | Type | Required | Description |
|
|
1943
|
+
|---|---|---|---|
|
|
1944
|
+
| `contact_id` | `integer` | yes | Per-org contact id |
|
|
1945
|
+
| `visits` | `integer` | yes | Click events by this contact in the window |
|
|
1946
|
+
| `email` | `string \| null` | no | Contact work email when resolvable (PII) |
|
|
1947
|
+
| `last_path` | `string \| null` | no | Most recent path this contact clicked to |
|
|
1948
|
+
| `last_seen` | `string \| null` | no | Latest click timestamp (ISO) |
|
|
1949
|
+
| `name` | `string \| null` | no | Contact full name when resolvable (PII) |
|
|
1950
|
+
| `step_id` | `string \| null` | no | Sequencer step the click was attributed to |
|
|
1951
|
+
| `step_label` | `string \| null` | no | Human-readable step label when resolvable |
|
|
1952
|
+
|
|
1953
|
+
<a id="type-campaignvisitorlink"></a>
|
|
1954
|
+
|
|
1955
|
+
### `CampaignVisitorLink`
|
|
1956
|
+
|
|
1957
|
+
One row of the Email Link Engagement table (a clicked destination URL).
|
|
1958
|
+
|
|
1959
|
+
| Field | Type | Required | Description |
|
|
1960
|
+
|---|---|---|---|
|
|
1961
|
+
| `events` | `integer` | yes | Human click events on this URL (scanner-filtered) |
|
|
1962
|
+
| `host` | `string` | yes | Clicked destination host |
|
|
1963
|
+
| `path` | `string` | yes | Clicked destination path |
|
|
1964
|
+
| `unique_contacts` | `integer` | yes | Distinct contacts who clicked this URL |
|
|
1965
|
+
| `ctr_percent` | `number \| null` | no | events ÷ emails_with_link × 100, clamped [0,100]; null when no denominator |
|
|
1966
|
+
| `emails_with_link` | `integer \| null` | no | Sends whose template embedded this URL (CTR denominator) |
|
|
1967
|
+
| `last_seen` | `string \| null` | no | Latest click timestamp (ISO) |
|
|
1968
|
+
| `step_ids` | `Array<string>` | no | Sequencer steps whose links drove these clicks |
|
|
1969
|
+
| `step_labels` | `Array<string> \| null` | no | Human-readable labels for step_ids when resolvable |
|
|
1970
|
+
|
|
1971
|
+
<a id="type-campaignvisitorstep"></a>
|
|
1972
|
+
|
|
1973
|
+
### `CampaignVisitorStep`
|
|
1974
|
+
|
|
1975
|
+
One row of the Top campaign steps table.
|
|
1976
|
+
|
|
1977
|
+
| Field | Type | Required | Description |
|
|
1978
|
+
|---|---|---|---|
|
|
1979
|
+
| `events` | `integer` | yes | Campaign click events attributed to this step |
|
|
1980
|
+
| `step_id` | `string` | yes | Sequencer step id (globally-unique CUID) |
|
|
1981
|
+
| `unique_contacts` | `integer` | yes | Distinct contacts who clicked from this step |
|
|
1982
|
+
| `emails_sent` | `integer \| null` | no | EMAIL sends dispatched from this step in the window |
|
|
1983
|
+
| `emails_with_link` | `integer \| null` | no | Of those sends, how many carried a link |
|
|
1984
|
+
| `first_seen` | `string \| null` | no | Earliest click timestamp (ISO) |
|
|
1985
|
+
| `last_seen` | `string \| null` | no | Latest click timestamp (ISO) |
|
|
1986
|
+
| `step_label` | `string \| null` | no | Human-readable '{sequence} / Step {n}' when resolvable |
|
|
1987
|
+
|
|
1988
|
+
<a id="type-campaignvisitorssummary"></a>
|
|
1989
|
+
|
|
1990
|
+
### `CampaignVisitorsSummary`
|
|
1991
|
+
|
|
1992
|
+
KPI tiles for the org's campaign-click activity in the window. All click-derived counters are email-security-scanner filtered (humans only) when ``SEQUENCER_VISITOR_SCANNER_FILTER=enforce`` — the same honest counts the in-app report shows. ``total_page_events`` is all page volume (not filtered).
|
|
1993
|
+
|
|
1994
|
+
| Field | Type | Required | Description |
|
|
1995
|
+
|---|---|---|---|
|
|
1996
|
+
| `contact_rows` | `integer` | yes | Total (contact, step) click groups before the `limit` cap |
|
|
1997
|
+
| `encrypted_pageviews` | `integer` | yes | Diagnostic: campaign clicks with an encrypted (#c=e1.) hash |
|
|
1998
|
+
| `identified_visitors` | `integer` | yes | Distinct identified web sessions on campaign clicks |
|
|
1999
|
+
| `jitsu_wired` | `boolean` | yes | False when the org has no visitor-tracking pipeline / no page events |
|
|
2000
|
+
| `link_rows` | `integer` | yes | Total distinct clicked (host, path) before the ceiling |
|
|
2001
|
+
| `pageview_events` | `integer` | yes | Parseable campaign-attributed click events |
|
|
2002
|
+
| `plaintext_pageviews` | `integer` | yes | Diagnostic: campaign clicks with a plaintext hash |
|
|
2003
|
+
| `step_rows` | `integer` | yes | Total distinct campaign steps before the `limit` cap |
|
|
2004
|
+
| `total_page_events` | `integer` | yes | All page events in the window (campaign + non-campaign) |
|
|
2005
|
+
| `unique_campaign_steps` | `integer` | yes | Distinct sequencer steps that drew clicks |
|
|
2006
|
+
| `unique_contacts` | `integer` | yes | Distinct contacts who clicked a campaign link |
|
|
2007
|
+
| `unparseable_pageviews` | `integer` | yes | Campaign clicks whose tracking hash could not be decoded |
|
|
2008
|
+
|
|
2009
|
+
<a id="type-campaignvisitorswindow"></a>
|
|
2010
|
+
|
|
2011
|
+
### `CampaignVisitorsWindow`
|
|
2012
|
+
|
|
2013
|
+
The resolved reporting window echoed back to the caller.
|
|
2014
|
+
|
|
2015
|
+
| Field | Type | Required | Description |
|
|
2016
|
+
|---|---|---|---|
|
|
2017
|
+
| `days` | `integer` | yes | Inclusive calendar-day span of the window |
|
|
2018
|
+
| `end_date` | `string` | yes | Window end (inclusive), YYYY-MM-DD |
|
|
2019
|
+
| `mode` | `string` | yes | 'anchored' (explicit start/end) or 'rolling' (last-N-days) |
|
|
2020
|
+
| `start_date` | `string` | yes | Window start (inclusive), YYYY-MM-DD |
|
|
2021
|
+
|
|
2022
|
+
<a id="type-daterangedto"></a>
|
|
2023
|
+
|
|
2024
|
+
### `DateRangeDto`
|
|
2025
|
+
|
|
2026
|
+
| Field | Type | Required | Description |
|
|
2027
|
+
|---|---|---|---|
|
|
2028
|
+
| `from` | `string (date)` | yes | |
|
|
2029
|
+
| `to` | `string (date)` | yes | |
|
|
2030
|
+
|
|
2031
|
+
<a id="type-filtergroupdto"></a>
|
|
2032
|
+
|
|
2033
|
+
### `FilterGroupDto`
|
|
2034
|
+
|
|
2035
|
+
One filter group — list of values + optional NOT toggle. ``in_`` is capped at ``MAX_FILTER_VALUES_PER_GROUP`` items of ``MAX_FILTER_VALUE_LENGTH`` characters each. Over-cap input raises during body parsing, so FastAPI answers 422 with the offending group named in ``detail[].loc`` (``["body", "<group>", "in"]``) and the cap in ``detail[].msg`` — no handler code, and therefore no SQL, runs. THIS SHAPE DOES NOT NEST. ``in_`` holds scalars and there is no group-of-groups member, so a caller cannot vary the tree depth: it is fixed at 2 (query -> group -> values) by construction, and ``extra="forbi…
|
|
2036
|
+
|
|
2037
|
+
| Field | Type | Required | Description |
|
|
2038
|
+
|---|---|---|---|
|
|
2039
|
+
| `in` | `Array<string>` | no | max items 1000 |
|
|
2040
|
+
| `not` | `boolean` | no | default `false` |
|
|
2041
|
+
|
|
2042
|
+
<a id="type-gradingbucketfiltergroupdto"></a>
|
|
2043
|
+
|
|
2044
|
+
### `GradingBucketFilterGroupDto`
|
|
2045
|
+
|
|
2046
|
+
`grading_bucket` — a CLOSED vocabulary (`GRADING_BUCKETS`). An unknown bucket produces no band clause and widens to the full book.
|
|
2047
|
+
|
|
2048
|
+
| Field | Type | Required | Description |
|
|
2049
|
+
|---|---|---|---|
|
|
2050
|
+
| `in` | `Array<"high" \| "med" \| "low">` | no | max items 1000 |
|
|
2051
|
+
| `not` | `boolean` | no | default `false` |
|
|
2052
|
+
|
|
2053
|
+
<a id="type-headcountfiltergroupdto"></a>
|
|
2054
|
+
|
|
2055
|
+
### `HeadcountFilterGroupDto`
|
|
2056
|
+
|
|
2057
|
+
`headcount` — a CLOSED vocabulary (`HEADCOUNT_BANDS`), and the exact list `/filter-options` hands the client.
|
|
2058
|
+
|
|
2059
|
+
| Field | Type | Required | Description |
|
|
2060
|
+
|---|---|---|---|
|
|
2061
|
+
| `in` | `Array<"1-10" \| "11-50" \| "51-200" \| "201-1000" \| "1001+">` | no | max items 1000 |
|
|
2062
|
+
| `not` | `boolean` | no | default `false` |
|
|
2063
|
+
|
|
2064
|
+
<a id="type-intidfiltergroupdto"></a>
|
|
2065
|
+
|
|
2066
|
+
### `IntIdFilterGroupDto`
|
|
2067
|
+
|
|
2068
|
+
`rec_type` / `audiences` — `Lead.rec_type` is `SmallInteger` and `audience_id` is `Integer`; both appliers coerce and skip what will not parse.
|
|
2069
|
+
|
|
2070
|
+
| Field | Type | Required | Description |
|
|
2071
|
+
|---|---|---|---|
|
|
2072
|
+
| `in` | `Array<string>` | no | max items 1000 |
|
|
2073
|
+
| `not` | `boolean` | no | default `false` |
|
|
2074
|
+
|
|
2075
|
+
<a id="type-objectioncodefiltergroupdto"></a>
|
|
2076
|
+
|
|
2077
|
+
### `ObjectionCodeFilterGroupDto`
|
|
2078
|
+
|
|
2079
|
+
`objections` — codes live in the PER-ORG `cb_objection_codes` catalog, so only the SHAPE can be checked here. Blank is the one thing the applier provably cannot use.
|
|
2080
|
+
|
|
2081
|
+
| Field | Type | Required | Description |
|
|
2082
|
+
|---|---|---|---|
|
|
2083
|
+
| `in` | `Array<string>` | no | max items 1000 |
|
|
2084
|
+
| `not` | `boolean` | no | default `false` |
|
|
2085
|
+
|
|
2086
|
+
<a id="type-uuidfiltergroupdto"></a>
|
|
2087
|
+
|
|
2088
|
+
### `UuidFilterGroupDto`
|
|
2089
|
+
|
|
2090
|
+
`pipeline` / `stage` — `CBDeal.pipeline_id` and `.stage_id` are real `PostgresUUID` columns, so a non-UUID can only ever fail open.
|
|
2091
|
+
|
|
2092
|
+
| Field | Type | Required | Description |
|
|
2093
|
+
|---|---|---|---|
|
|
2094
|
+
| `in` | `Array<string>` | no | max items 1000 |
|
|
2095
|
+
| `not` | `boolean` | no | default `false` |
|