@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,1540 @@
|
|
|
1
|
+
<!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
|
|
2
|
+
|
|
3
|
+
# `g8.api.salesCoach`: Sales Coach
|
|
4
|
+
|
|
5
|
+
37 operations (20 read, 10 write, 5 destructive, 2 external).
|
|
6
|
+
|
|
7
|
+
No hand-written client covers this area. Call it through `g8.api.salesCoach.*` 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: [salesCoach.d.ts](salesCoach.d.ts).
|
|
20
|
+
|
|
21
|
+
## Operations
|
|
22
|
+
|
|
23
|
+
| Call | HTTP | Tier | Scope | Summary |
|
|
24
|
+
|---|---|---|---|---|
|
|
25
|
+
| [`addInterviewMember`](#op-addinterviewmember) | `POST /api/v1/sales-coach/interviews/{interview_id}/members` | external | `team:run` | Add Interview Member |
|
|
26
|
+
| [`assignTeamRole`](#op-assignteamrole) | `PUT /api/v1/sales-coach/team/users/{user_id}/role` | destructive | `team:delete` | Assign Team Role |
|
|
27
|
+
| [`createCall`](#op-createcall) | `POST /api/v1/sales-coach/calls` | write | `team:write` | Create Call |
|
|
28
|
+
| [`createInterview`](#op-createinterview) | `POST /api/v1/sales-coach/interviews` | write | `team:write` | Create Interview |
|
|
29
|
+
| [`createInterviewAttempt`](#op-createinterviewattempt) | `POST /api/v1/sales-coach/interview-attempts` | write | `team:write` | Create Interview Attempt |
|
|
30
|
+
| [`createInterviewAttemptByCode`](#op-createinterviewattemptbycode) | `POST /api/v1/sales-coach/interview-attempts/by-code/{code}` | write | `team:write` | Create Interview Attempt By Code |
|
|
31
|
+
| [`createTeamLeaderboard`](#op-createteamleaderboard) | `POST /api/v1/sales-coach/team/leaderboards` | write | `team:write` | Create Team Leaderboard |
|
|
32
|
+
| [`createTeamSet`](#op-createteamset) | `POST /api/v1/sales-coach/team/sets` | write | `team:write` | Create Team Set |
|
|
33
|
+
| [`deleteCall`](#op-deletecall) | `DELETE /api/v1/sales-coach/calls/{call_id}` | destructive | `team:delete` | Delete Call |
|
|
34
|
+
| [`deleteInterview`](#op-deleteinterview) | `DELETE /api/v1/sales-coach/interviews/{interview_id}` | destructive | `team:delete` | Delete Interview |
|
|
35
|
+
| [`deleteTeamLeaderboard`](#op-deleteteamleaderboard) | `DELETE /api/v1/sales-coach/team/leaderboards/{lb_id}` | destructive | `team:delete` | Delete Team Leaderboard |
|
|
36
|
+
| [`deleteTeamSet`](#op-deleteteamset) | `DELETE /api/v1/sales-coach/team/sets/{set_id}` | destructive | `team:delete` | Delete Team Set |
|
|
37
|
+
| [`getCall`](#op-getcall) | `GET /api/v1/sales-coach/calls/{call_id}` | read | `team:read` | Get Call |
|
|
38
|
+
| [`getCallAudioUrl`](#op-getcallaudiourl) | `GET /api/v1/sales-coach/calls/{call_id}/audio-url` | read | `team:read` | Get Call Audio Url |
|
|
39
|
+
| [`getCallTranscript`](#op-getcalltranscript) | `GET /api/v1/sales-coach/calls/{call_id}/transcript` | read | `team:read` | Get Call Transcript |
|
|
40
|
+
| [`getInterview`](#op-getinterview) | `GET /api/v1/sales-coach/interviews/{interview_id}` | read | `team:read` | Get Interview |
|
|
41
|
+
| [`getInterviewByCode`](#op-getinterviewbycode) | `GET /api/v1/sales-coach/interviews/by-code/{code}` | read | `team:read` | Get Interview By Code |
|
|
42
|
+
| [`getSalesCoachLeaderboard`](#op-getsalescoachleaderboard) | `GET /api/v1/sales-coach/leaderboard` | read | `team:read` | Get Sales Coach Leaderboard |
|
|
43
|
+
| [`getTeamActiveUsersSummary`](#op-getteamactiveuserssummary) | `GET /api/v1/sales-coach/team/active-users-summary` | read | `team:read` | Get Team Active Users Summary |
|
|
44
|
+
| [`getTeamBootstrap`](#op-getteambootstrap) | `GET /api/v1/sales-coach/team/bootstrap` | read | `team:read` | Get Team Bootstrap |
|
|
45
|
+
| [`getTeamConfig`](#op-getteamconfig) | `GET /api/v1/sales-coach/team/config` | read | `team:read` | Get Team Config |
|
|
46
|
+
| [`getTeamKpiCatalog`](#op-getteamkpicatalog) | `GET /api/v1/sales-coach/team/kpi-catalog` | read | `team:read` | Get Team Kpi Catalog |
|
|
47
|
+
| [`getTeamLeaderboardData`](#op-getteamleaderboarddata) | `GET /api/v1/sales-coach/team/leaderboards/{lb_id}/data` | read | `team:read` | Get Team Leaderboard Data |
|
|
48
|
+
| [`getTeamSetData`](#op-getteamsetdata) | `GET /api/v1/sales-coach/team/sets/{set_id}/data` | read | `team:read` | Get Team Set Data |
|
|
49
|
+
| [`listCalls`](#op-listcalls) | `GET /api/v1/sales-coach/calls` | read | `team:read` | List Calls |
|
|
50
|
+
| [`listCoachContactLists`](#op-listcoachcontactlists) | `GET /api/v1/sales-coach/contact-lists` | read | `team:read` | List Coach Contact Lists |
|
|
51
|
+
| [`listInterviewAttempts`](#op-listinterviewattempts) | `GET /api/v1/sales-coach/interview-attempts` | read | `team:read` | List Interview Attempts |
|
|
52
|
+
| [`listInterviews`](#op-listinterviews) | `GET /api/v1/sales-coach/interviews` | read | `team:read` | List Interviews |
|
|
53
|
+
| [`listTeamLeaderboards`](#op-listteamleaderboards) | `GET /api/v1/sales-coach/team/leaderboards` | read | `team:read` | List Team Leaderboards |
|
|
54
|
+
| [`listTeamRoles`](#op-listteamroles) | `GET /api/v1/sales-coach/team/roles` | read | `team:read` | List Team Roles |
|
|
55
|
+
| [`listTeamSets`](#op-listteamsets) | `GET /api/v1/sales-coach/team/sets` | read | `team:read` | List Team Sets |
|
|
56
|
+
| [`searchCoachProspects`](#op-searchcoachprospects) | `GET /api/v1/sales-coach/prospects/search` | read | `team:read` | Search Coach Prospects |
|
|
57
|
+
| [`sendInterviewInvite`](#op-sendinterviewinvite) | `POST /api/v1/sales-coach/interviews/{interview_id}/members/{member_id}/send-invite` | external | `team:run` | Send Interview Invite |
|
|
58
|
+
| [`updateCall`](#op-updatecall) | `PUT /api/v1/sales-coach/calls/{call_id}` | write | `team:write` | Update Call |
|
|
59
|
+
| [`updateTeamConfig`](#op-updateteamconfig) | `PUT /api/v1/sales-coach/team/config` | write | `team:write` | Update Team Config |
|
|
60
|
+
| [`updateTeamLeaderboard`](#op-updateteamleaderboard) | `PUT /api/v1/sales-coach/team/leaderboards/{lb_id}` | write | `team:write` | Update Team Leaderboard |
|
|
61
|
+
| [`updateTeamSet`](#op-updateteamset) | `PUT /api/v1/sales-coach/team/sets/{set_id}` | write | `team:write` | Update Team Set |
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
<a id="op-addinterviewmember"></a>
|
|
66
|
+
|
|
67
|
+
### `g8.api.salesCoach.addInterviewMember(input)`
|
|
68
|
+
|
|
69
|
+
**Add Interview Member**
|
|
70
|
+
|
|
71
|
+
- HTTP: `POST /api/v1/sales-coach/interviews/{interview_id}/members`
|
|
72
|
+
- operationId: `add_interview_member_sales_coach_interviews__interview_id__members_post` (also callable as `g8.api.call("add_interview_member_sales_coach_interviews__interview_id__members_post", input)`)
|
|
73
|
+
- Tier: `external`: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first
|
|
74
|
+
- API-key scope: `team:run`
|
|
75
|
+
|
|
76
|
+
Add someone to an interview round and mint their invite code.
|
|
77
|
+
|
|
78
|
+
`send_invite=true` EMAILS THAT PERSON. It defaults to false, so adding a
|
|
79
|
+
member is by default a quiet write and the mail is a separate decision -
|
|
80
|
+
which is what makes it safe to build a whole round before anybody hears
|
|
81
|
+
about it.
|
|
82
|
+
|
|
83
|
+
**Input**
|
|
84
|
+
|
|
85
|
+
| Field | Type | Required | Description |
|
|
86
|
+
|---|---|---|---|
|
|
87
|
+
| `path.interview_id` | `string (uuid)` | yes | Interview round id (UUID). |
|
|
88
|
+
| `body` | `AddInterviewMemberRequest` | yes | Request body; fields below. |
|
|
89
|
+
|
|
90
|
+
Body fields (`AddInterviewMemberRequest`):
|
|
91
|
+
|
|
92
|
+
| Field | Type | Required | Description |
|
|
93
|
+
|---|---|---|---|
|
|
94
|
+
| `body.email` | `string` | yes | min length 1 |
|
|
95
|
+
| `body.name` | `string` | yes | min length 1 |
|
|
96
|
+
| `body.send_invite` | `boolean` | no | Send the invite email now. TRUE REACHES A REAL PERSON. default `false` |
|
|
97
|
+
|
|
98
|
+
**Returns** `ApiResponse_CoachPayload_`: the envelope `{ data: CoachPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
99
|
+
|
|
100
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
101
|
+
|
|
102
|
+
**Example**
|
|
103
|
+
|
|
104
|
+
```ts
|
|
105
|
+
// external: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first.
|
|
106
|
+
const result = await g8.api.salesCoach.addInterviewMember({
|
|
107
|
+
path: { interview_id: "00000000-0000-0000-0000-000000000000" },
|
|
108
|
+
body: { email: "jane@acme.com", name: "Example" },
|
|
109
|
+
});
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
<a id="op-assignteamrole"></a>
|
|
115
|
+
|
|
116
|
+
### `g8.api.salesCoach.assignTeamRole(input)`
|
|
117
|
+
|
|
118
|
+
**Assign Team Role**
|
|
119
|
+
|
|
120
|
+
- HTTP: `PUT /api/v1/sales-coach/team/users/{user_id}/role`
|
|
121
|
+
- operationId: `assign_team_role_sales_coach_team_users__user_id__role_put` (also callable as `g8.api.call("assign_team_role_sales_coach_team_users__user_id__role_put", input)`)
|
|
122
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
123
|
+
- API-key scope: `team:delete`
|
|
124
|
+
|
|
125
|
+
Grant a Team HQ role. THIS REPLACES THE PERSON'S PERMISSIONS.
|
|
126
|
+
|
|
127
|
+
`cb_user_roles` has a composite primary key on (user_id, org_id), so the
|
|
128
|
+
new row replaces whatever they had - this is a privilege grant, not a
|
|
129
|
+
label on a dashboard.
|
|
130
|
+
|
|
131
|
+
The app's three rules apply unchanged and each is a 403:
|
|
132
|
+
|
|
133
|
+
* the caller must be able to manage the team floor;
|
|
134
|
+
* no self-assignment, or a manager could re-role themselves;
|
|
135
|
+
* the caller must already hold every permission of the role they are
|
|
136
|
+
granting, unless they are an org Owner or Admin - Settings'
|
|
137
|
+
non-escalation rule.
|
|
138
|
+
|
|
139
|
+
Only the five Team HQ slugs are assignable. `admin` is not one of them and
|
|
140
|
+
is refused at the request layer.
|
|
141
|
+
|
|
142
|
+
**Input**
|
|
143
|
+
|
|
144
|
+
| Field | Type | Required | Description |
|
|
145
|
+
|---|---|---|---|
|
|
146
|
+
| `path.user_id` | `string` | yes | The member to re-role. |
|
|
147
|
+
| `body` | `AssignTeamRoleRequest` | yes | Request body; fields below. |
|
|
148
|
+
|
|
149
|
+
Body fields (`AssignTeamRoleRequest`):
|
|
150
|
+
|
|
151
|
+
| Field | Type | Required | Description |
|
|
152
|
+
|---|---|---|---|
|
|
153
|
+
| `body.slug` | `"ae" \| "sdr" \| "csm" \| "campaign_manager" \| "sales_manager"` | yes | The role to grant. `admin` is not assignable here - it belongs to Settings -> Roles, behind the full RBAC admin gate. |
|
|
154
|
+
|
|
155
|
+
**Returns** `ApiResponse_TeamPayload_`: the envelope `{ data: TeamPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
156
|
+
|
|
157
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
158
|
+
|
|
159
|
+
**Example**
|
|
160
|
+
|
|
161
|
+
```ts
|
|
162
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
163
|
+
const result = await g8.api.salesCoach.assignTeamRole({ path: { user_id: "id" }, body: { slug: "ae" } });
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
<a id="op-createcall"></a>
|
|
169
|
+
|
|
170
|
+
### `g8.api.salesCoach.createCall(input)`
|
|
171
|
+
|
|
172
|
+
**Create Call**
|
|
173
|
+
|
|
174
|
+
- HTTP: `POST /api/v1/sales-coach/calls`
|
|
175
|
+
- operationId: `create_call_sales_coach_calls_post` (also callable as `g8.api.call("create_call_sales_coach_calls_post", input)`)
|
|
176
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
177
|
+
- API-key scope: `team:write`
|
|
178
|
+
|
|
179
|
+
Open a practice call record.
|
|
180
|
+
|
|
181
|
+
This is the ROW, not the conversation: it is what a transcript, a score and
|
|
182
|
+
an interview attempt all attach to. It does not start anything or reach
|
|
183
|
+
anybody.
|
|
184
|
+
|
|
185
|
+
**Input**
|
|
186
|
+
|
|
187
|
+
| Field | Type | Required | Description |
|
|
188
|
+
|---|---|---|---|
|
|
189
|
+
| `body` | `CreateCallRequest` | yes | Request body; fields below. |
|
|
190
|
+
|
|
191
|
+
Body fields (`CreateCallRequest`):
|
|
192
|
+
|
|
193
|
+
| Field | Type | Required | Description |
|
|
194
|
+
|---|---|---|---|
|
|
195
|
+
| `body.call_mode` | `"compete" \| "assisted"` | yes | `compete` is the rep alone against the AI prospect; `assisted` is the coached variant. |
|
|
196
|
+
| `body.persona_type` | `string \| null` | no | |
|
|
197
|
+
| `body.prospect_company` | `string \| null` | no | |
|
|
198
|
+
| `body.prospect_name` | `string \| null` | no | |
|
|
199
|
+
|
|
200
|
+
**Returns** `ApiResponse_CoachPayload_`: the envelope `{ data: CoachPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
201
|
+
|
|
202
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
203
|
+
|
|
204
|
+
**Example**
|
|
205
|
+
|
|
206
|
+
```ts
|
|
207
|
+
const result = await g8.api.salesCoach.createCall({ body: { call_mode: "compete" } });
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
<a id="op-createinterview"></a>
|
|
213
|
+
|
|
214
|
+
### `g8.api.salesCoach.createInterview(input)`
|
|
215
|
+
|
|
216
|
+
**Create Interview**
|
|
217
|
+
|
|
218
|
+
- HTTP: `POST /api/v1/sales-coach/interviews`
|
|
219
|
+
- operationId: `create_interview_sales_coach_interviews_post` (also callable as `g8.api.call("create_interview_sales_coach_interviews_post", input)`)
|
|
220
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
221
|
+
- API-key scope: `team:write`
|
|
222
|
+
|
|
223
|
+
Create an interview round.
|
|
224
|
+
|
|
225
|
+
Creating it invites nobody. Members are added separately, and only then can
|
|
226
|
+
an invite go out.
|
|
227
|
+
|
|
228
|
+
**Input**
|
|
229
|
+
|
|
230
|
+
| Field | Type | Required | Description |
|
|
231
|
+
|---|---|---|---|
|
|
232
|
+
| `body` | `CreateInterviewRequest` | yes | Request body; fields below. |
|
|
233
|
+
|
|
234
|
+
Body fields (`CreateInterviewRequest`):
|
|
235
|
+
|
|
236
|
+
| Field | Type | Required | Description |
|
|
237
|
+
|---|---|---|---|
|
|
238
|
+
| `body.audience_id` | `string` | yes | Audience the prospect is drawn from. min length 1 |
|
|
239
|
+
| `body.name` | `string` | yes | What the round is called. min length 1 |
|
|
240
|
+
| `body.prospect_id` | `string` | yes | The contact the AI will play. min length 1 |
|
|
241
|
+
| `body.behavior` | `string` | no | How the AI prospect behaves. Free-form: the app does not close this set. default `"Nay-sayer"`, min length 1 |
|
|
242
|
+
| `body.code_ttl_days` | `integer \| null` | no | How long an invite code stays valid. Omit for the app default of 14 days. max 365, > 0 |
|
|
243
|
+
| `body.max_attempts` | `integer` | no | How many times a member may try. default `3`, > 0 |
|
|
244
|
+
| `body.prospect_name` | `string \| null` | no | |
|
|
245
|
+
|
|
246
|
+
**Returns** `ApiResponse_CoachPayload_`: the envelope `{ data: CoachPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
247
|
+
|
|
248
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
249
|
+
|
|
250
|
+
**Example**
|
|
251
|
+
|
|
252
|
+
```ts
|
|
253
|
+
const result = await g8.api.salesCoach.createInterview({ body: { audience_id: "id", name: "Example", prospect_id: "id" } });
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
<a id="op-createinterviewattempt"></a>
|
|
259
|
+
|
|
260
|
+
### `g8.api.salesCoach.createInterviewAttempt(input)`
|
|
261
|
+
|
|
262
|
+
**Create Interview Attempt**
|
|
263
|
+
|
|
264
|
+
- HTTP: `POST /api/v1/sales-coach/interview-attempts`
|
|
265
|
+
- operationId: `create_interview_attempt_sales_coach_interview_attempts_post` (also callable as `g8.api.call("create_interview_attempt_sales_coach_interview_attempts_post", input)`)
|
|
266
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
267
|
+
- API-key scope: `team:write`
|
|
268
|
+
|
|
269
|
+
Attach an existing call to an interview round as an attempt.
|
|
270
|
+
|
|
271
|
+
The call must already exist - this records that it COUNTED, it does not
|
|
272
|
+
create it. Create the call first with `POST /sales-coach/calls`.
|
|
273
|
+
|
|
274
|
+
**Input**
|
|
275
|
+
|
|
276
|
+
| Field | Type | Required | Description |
|
|
277
|
+
|---|---|---|---|
|
|
278
|
+
| `body` | `CreateInterviewAttemptRequest` | yes | Request body; fields below. |
|
|
279
|
+
|
|
280
|
+
Body fields (`CreateInterviewAttemptRequest`):
|
|
281
|
+
|
|
282
|
+
| Field | Type | Required | Description |
|
|
283
|
+
|---|---|---|---|
|
|
284
|
+
| `body.call_id` | `string (uuid)` | yes | The practice call this attempt is made of. |
|
|
285
|
+
| `body.member_id` | `string (uuid) \| null` | no | Which member attempted it. Omit for an unattributed attempt. |
|
|
286
|
+
|
|
287
|
+
**Returns** `ApiResponse_CoachPayload_`: the envelope `{ data: CoachPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
288
|
+
|
|
289
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
290
|
+
|
|
291
|
+
**Example**
|
|
292
|
+
|
|
293
|
+
```ts
|
|
294
|
+
const result = await g8.api.salesCoach.createInterviewAttempt({ body: { call_id: "00000000-0000-0000-0000-000000000000" } });
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
<a id="op-createinterviewattemptbycode"></a>
|
|
300
|
+
|
|
301
|
+
### `g8.api.salesCoach.createInterviewAttemptByCode(input)`
|
|
302
|
+
|
|
303
|
+
**Create Interview Attempt By Code**
|
|
304
|
+
|
|
305
|
+
- HTTP: `POST /api/v1/sales-coach/interview-attempts/by-code/{code}`
|
|
306
|
+
- operationId: `create_interview_attempt_by_code_sales_coach_interview_attempts_by_code__code__post` (also callable as `g8.api.call("create_interview_attempt_by_code_sales_coach_interview_attempts_by_code__code__post", input)`)
|
|
307
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
308
|
+
- API-key scope: `team:write`
|
|
309
|
+
|
|
310
|
+
Record an attempt identified by the member's CODE rather than their id.
|
|
311
|
+
|
|
312
|
+
The path a candidate flow uses, where the code is the only thing on hand.
|
|
313
|
+
An EXPIRED code is a 410, not a 404 - the distinction matters, because a
|
|
314
|
+
410 means "this was real and the window closed" and is worth re-inviting
|
|
315
|
+
for, while a 404 means the code never existed.
|
|
316
|
+
|
|
317
|
+
**Input**
|
|
318
|
+
|
|
319
|
+
| Field | Type | Required | Description |
|
|
320
|
+
|---|---|---|---|
|
|
321
|
+
| `path.code` | `string` | yes | The member's invite code. Matched case-insensitively. |
|
|
322
|
+
| `body` | `CreateInterviewAttemptByCodeRequest` | yes | Request body; fields below. |
|
|
323
|
+
|
|
324
|
+
Body fields (`CreateInterviewAttemptByCodeRequest`):
|
|
325
|
+
|
|
326
|
+
| Field | Type | Required | Description |
|
|
327
|
+
|---|---|---|---|
|
|
328
|
+
| `body.call_id` | `string (uuid)` | yes | The practice call this attempt is made of. |
|
|
329
|
+
|
|
330
|
+
**Returns** `ApiResponse_CoachPayload_`: the envelope `{ data: CoachPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
331
|
+
|
|
332
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
333
|
+
|
|
334
|
+
**Example**
|
|
335
|
+
|
|
336
|
+
```ts
|
|
337
|
+
const result = await g8.api.salesCoach.createInterviewAttemptByCode({
|
|
338
|
+
path: { code: "example" },
|
|
339
|
+
body: { call_id: "00000000-0000-0000-0000-000000000000" },
|
|
340
|
+
});
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
<a id="op-createteamleaderboard"></a>
|
|
346
|
+
|
|
347
|
+
### `g8.api.salesCoach.createTeamLeaderboard(input)`
|
|
348
|
+
|
|
349
|
+
**Create Team Leaderboard**
|
|
350
|
+
|
|
351
|
+
- HTTP: `POST /api/v1/sales-coach/team/leaderboards`
|
|
352
|
+
- operationId: `create_team_leaderboard_sales_coach_team_leaderboards_post` (also callable as `g8.api.call("create_team_leaderboard_sales_coach_team_leaderboards_post", input)`)
|
|
353
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
354
|
+
- API-key scope: `team:write`
|
|
355
|
+
|
|
356
|
+
Create a leaderboard.
|
|
357
|
+
|
|
358
|
+
`id` is caller-chosen, matching the app: these are config rows keyed by a
|
|
359
|
+
slug you pick, and POSTing an id that already exists UPSERTS rather than
|
|
360
|
+
failing. Said plainly because a caller retrying a create would otherwise
|
|
361
|
+
assume a duplicate was rejected.
|
|
362
|
+
|
|
363
|
+
Requires team-floor management: org Owner/Admin, or an explicit
|
|
364
|
+
`sales_manager` assignment.
|
|
365
|
+
|
|
366
|
+
**Input**
|
|
367
|
+
|
|
368
|
+
| Field | Type | Required | Description |
|
|
369
|
+
|---|---|---|---|
|
|
370
|
+
| `body` | `LeaderboardConfigRequest` | yes | Request body; fields below. |
|
|
371
|
+
|
|
372
|
+
Body fields (`LeaderboardConfigRequest`):
|
|
373
|
+
|
|
374
|
+
| Field | Type | Required | Description |
|
|
375
|
+
|---|---|---|---|
|
|
376
|
+
| `body.id` | `string` | yes | Caller-chosen id. Reusing one upserts, matching the app. |
|
|
377
|
+
| `body.kpis` | `Array<LeaderboardKpi>` | yes | |
|
|
378
|
+
| `body.name` | `string` | yes | |
|
|
379
|
+
| `body.roles` | `Array<string>` | yes | Which team roles appear on this board. |
|
|
380
|
+
| `body.goal` | `LeaderboardGoal \| null` | no | |
|
|
381
|
+
| `body.is_system` | `boolean` | no | Marks a board the product ships rather than one a customer made. Accepted because the app's model has it; leave it False for your own boards. default `false` |
|
|
382
|
+
|
|
383
|
+
**Returns** `ApiResponse_TeamPayload_`: the envelope `{ data: TeamPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
384
|
+
|
|
385
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
386
|
+
|
|
387
|
+
**Example**
|
|
388
|
+
|
|
389
|
+
```ts
|
|
390
|
+
const result = await g8.api.salesCoach.createTeamLeaderboard({
|
|
391
|
+
body: {
|
|
392
|
+
id: "id",
|
|
393
|
+
kpis: [{ id: "id", weight: 1 }],
|
|
394
|
+
name: "Example",
|
|
395
|
+
roles: ["example"],
|
|
396
|
+
},
|
|
397
|
+
});
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
---
|
|
401
|
+
|
|
402
|
+
<a id="op-createteamset"></a>
|
|
403
|
+
|
|
404
|
+
### `g8.api.salesCoach.createTeamSet(input)`
|
|
405
|
+
|
|
406
|
+
**Create Team Set**
|
|
407
|
+
|
|
408
|
+
- HTTP: `POST /api/v1/sales-coach/team/sets`
|
|
409
|
+
- operationId: `create_team_set_sales_coach_team_sets_post` (also callable as `g8.api.call("create_team_set_sales_coach_team_sets_post", input)`)
|
|
410
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
411
|
+
- API-key scope: `team:write`
|
|
412
|
+
|
|
413
|
+
Create a rotation of leaderboards. Caller-chosen `id`, same as boards.
|
|
414
|
+
|
|
415
|
+
**Input**
|
|
416
|
+
|
|
417
|
+
| Field | Type | Required | Description |
|
|
418
|
+
|---|---|---|---|
|
|
419
|
+
| `body` | `SetConfigRequest` | yes | Request body; fields below. |
|
|
420
|
+
|
|
421
|
+
Body fields (`SetConfigRequest`):
|
|
422
|
+
|
|
423
|
+
| Field | Type | Required | Description |
|
|
424
|
+
|---|---|---|---|
|
|
425
|
+
| `body.id` | `string` | yes | Caller-chosen id. |
|
|
426
|
+
| `body.leaderboard_ids` | `Array<string>` | yes | The boards to rotate through, in order. |
|
|
427
|
+
| `body.name` | `string` | yes | |
|
|
428
|
+
| `body.audio_enabled` | `boolean` | no | Whether the display plays a sound on a change. default `false` |
|
|
429
|
+
| `body.is_default` | `boolean` | no | default `false` |
|
|
430
|
+
| `body.rotation_seconds` | `integer` | no | Seconds per board. The app's default is 30. default `30` |
|
|
431
|
+
|
|
432
|
+
**Returns** `ApiResponse_TeamPayload_`: the envelope `{ data: TeamPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
433
|
+
|
|
434
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
435
|
+
|
|
436
|
+
**Example**
|
|
437
|
+
|
|
438
|
+
```ts
|
|
439
|
+
const result = await g8.api.salesCoach.createTeamSet({ body: { id: "id", leaderboard_ids: ["id"], name: "Example" } });
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
---
|
|
443
|
+
|
|
444
|
+
<a id="op-deletecall"></a>
|
|
445
|
+
|
|
446
|
+
### `g8.api.salesCoach.deleteCall(input)`
|
|
447
|
+
|
|
448
|
+
**Delete Call**
|
|
449
|
+
|
|
450
|
+
- HTTP: `DELETE /api/v1/sales-coach/calls/{call_id}`
|
|
451
|
+
- operationId: `delete_call_sales_coach_calls__call_id__delete` (also callable as `g8.api.call("delete_call_sales_coach_calls__call_id__delete", input)`)
|
|
452
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
453
|
+
- API-key scope: `team:delete`
|
|
454
|
+
|
|
455
|
+
Delete a practice call, with its transcript and scores.
|
|
456
|
+
|
|
457
|
+
Owner-or-manager gated. Anything that ranked this call - a leaderboard, an
|
|
458
|
+
interview attempt - loses it, so a score that was on the board disappears
|
|
459
|
+
from it.
|
|
460
|
+
|
|
461
|
+
**Input**
|
|
462
|
+
|
|
463
|
+
| Field | Type | Required | Description |
|
|
464
|
+
|---|---|---|---|
|
|
465
|
+
| `path.call_id` | `string (uuid)` | yes | Call id (UUID). |
|
|
466
|
+
|
|
467
|
+
**Returns** `ApiResponse_CoachPayload_`: the envelope `{ data: CoachPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
468
|
+
|
|
469
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
470
|
+
|
|
471
|
+
**Example**
|
|
472
|
+
|
|
473
|
+
```ts
|
|
474
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
475
|
+
const result = await g8.api.salesCoach.deleteCall({ path: { call_id: "00000000-0000-0000-0000-000000000000" } });
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
---
|
|
479
|
+
|
|
480
|
+
<a id="op-deleteinterview"></a>
|
|
481
|
+
|
|
482
|
+
### `g8.api.salesCoach.deleteInterview(input)`
|
|
483
|
+
|
|
484
|
+
**Delete Interview**
|
|
485
|
+
|
|
486
|
+
- HTTP: `DELETE /api/v1/sales-coach/interviews/{interview_id}`
|
|
487
|
+
- operationId: `delete_interview_sales_coach_interviews__interview_id__delete` (also callable as `g8.api.call("delete_interview_sales_coach_interviews__interview_id__delete", input)`)
|
|
488
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
489
|
+
- API-key scope: `team:delete`
|
|
490
|
+
|
|
491
|
+
Delete an interview round.
|
|
492
|
+
|
|
493
|
+
Its members' invite codes stop resolving, so anyone holding a link that has
|
|
494
|
+
not been used yet loses it.
|
|
495
|
+
|
|
496
|
+
**Input**
|
|
497
|
+
|
|
498
|
+
| Field | Type | Required | Description |
|
|
499
|
+
|---|---|---|---|
|
|
500
|
+
| `path.interview_id` | `string (uuid)` | yes | Interview round id (UUID). |
|
|
501
|
+
|
|
502
|
+
**Returns** `ApiResponse_CoachPayload_`: the envelope `{ data: CoachPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
503
|
+
|
|
504
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
505
|
+
|
|
506
|
+
**Example**
|
|
507
|
+
|
|
508
|
+
```ts
|
|
509
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
510
|
+
const result = await g8.api.salesCoach.deleteInterview({ path: { interview_id: "00000000-0000-0000-0000-000000000000" } });
|
|
511
|
+
```
|
|
512
|
+
|
|
513
|
+
---
|
|
514
|
+
|
|
515
|
+
<a id="op-deleteteamleaderboard"></a>
|
|
516
|
+
|
|
517
|
+
### `g8.api.salesCoach.deleteTeamLeaderboard(input)`
|
|
518
|
+
|
|
519
|
+
**Delete Team Leaderboard**
|
|
520
|
+
|
|
521
|
+
- HTTP: `DELETE /api/v1/sales-coach/team/leaderboards/{lb_id}`
|
|
522
|
+
- operationId: `delete_team_leaderboard_sales_coach_team_leaderboards__lb_id__delete` (also callable as `g8.api.call("delete_team_leaderboard_sales_coach_team_leaderboards__lb_id__delete", input)`)
|
|
523
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
524
|
+
- API-key scope: `team:delete`
|
|
525
|
+
|
|
526
|
+
Delete a leaderboard.
|
|
527
|
+
|
|
528
|
+
The app answers 204 with no body. This returns `{"deleted": true}` in the
|
|
529
|
+
standard envelope instead, because every other operation on this contract
|
|
530
|
+
returns one and a client that special-cased an empty body here would be
|
|
531
|
+
the only place it had to.
|
|
532
|
+
|
|
533
|
+
**Input**
|
|
534
|
+
|
|
535
|
+
| Field | Type | Required | Description |
|
|
536
|
+
|---|---|---|---|
|
|
537
|
+
| `path.lb_id` | `string` | yes | Leaderboard id. |
|
|
538
|
+
|
|
539
|
+
**Returns** `ApiResponse_TeamPayload_`: the envelope `{ data: TeamPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
540
|
+
|
|
541
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
542
|
+
|
|
543
|
+
**Example**
|
|
544
|
+
|
|
545
|
+
```ts
|
|
546
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
547
|
+
const result = await g8.api.salesCoach.deleteTeamLeaderboard({ path: { lb_id: "id" } });
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
---
|
|
551
|
+
|
|
552
|
+
<a id="op-deleteteamset"></a>
|
|
553
|
+
|
|
554
|
+
### `g8.api.salesCoach.deleteTeamSet(input)`
|
|
555
|
+
|
|
556
|
+
**Delete Team Set**
|
|
557
|
+
|
|
558
|
+
- HTTP: `DELETE /api/v1/sales-coach/team/sets/{set_id}`
|
|
559
|
+
- operationId: `delete_team_set_sales_coach_team_sets__set_id__delete` (also callable as `g8.api.call("delete_team_set_sales_coach_team_sets__set_id__delete", input)`)
|
|
560
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
561
|
+
- API-key scope: `team:delete`
|
|
562
|
+
|
|
563
|
+
Delete a rotation. The leaderboards in it are untouched.
|
|
564
|
+
|
|
565
|
+
**Input**
|
|
566
|
+
|
|
567
|
+
| Field | Type | Required | Description |
|
|
568
|
+
|---|---|---|---|
|
|
569
|
+
| `path.set_id` | `string` | yes | Set id. |
|
|
570
|
+
|
|
571
|
+
**Returns** `ApiResponse_TeamPayload_`: the envelope `{ data: TeamPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
572
|
+
|
|
573
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
574
|
+
|
|
575
|
+
**Example**
|
|
576
|
+
|
|
577
|
+
```ts
|
|
578
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
579
|
+
const result = await g8.api.salesCoach.deleteTeamSet({ path: { set_id: "id" } });
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
---
|
|
583
|
+
|
|
584
|
+
<a id="op-getcall"></a>
|
|
585
|
+
|
|
586
|
+
### `g8.api.salesCoach.getCall(input)`
|
|
587
|
+
|
|
588
|
+
**Get Call**
|
|
589
|
+
|
|
590
|
+
- HTTP: `GET /api/v1/sales-coach/calls/{call_id}`
|
|
591
|
+
- operationId: `get_call_sales_coach_calls__call_id__get` (also callable as `g8.api.call("get_call_sales_coach_calls__call_id__get", input)`)
|
|
592
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
593
|
+
- API-key scope: `team:read`
|
|
594
|
+
|
|
595
|
+
One practice call. Owner-or-manager gated, same as the list.
|
|
596
|
+
|
|
597
|
+
**Input**
|
|
598
|
+
|
|
599
|
+
| Field | Type | Required | Description |
|
|
600
|
+
|---|---|---|---|
|
|
601
|
+
| `path.call_id` | `string (uuid)` | yes | Call id (UUID). |
|
|
602
|
+
|
|
603
|
+
**Returns** `ApiResponse_CoachPayload_`: the envelope `{ data: CoachPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
604
|
+
|
|
605
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
606
|
+
|
|
607
|
+
**Example**
|
|
608
|
+
|
|
609
|
+
```ts
|
|
610
|
+
const result = await g8.api.salesCoach.getCall({ path: { call_id: "00000000-0000-0000-0000-000000000000" } });
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
---
|
|
614
|
+
|
|
615
|
+
<a id="op-getcallaudiourl"></a>
|
|
616
|
+
|
|
617
|
+
### `g8.api.salesCoach.getCallAudioUrl(input)`
|
|
618
|
+
|
|
619
|
+
**Get Call Audio Url**
|
|
620
|
+
|
|
621
|
+
- HTTP: `GET /api/v1/sales-coach/calls/{call_id}/audio-url`
|
|
622
|
+
- operationId: `get_call_audio_url_sales_coach_calls__call_id__audio_url_get` (also callable as `g8.api.call("get_call_audio_url_sales_coach_calls__call_id__audio_url_get", input)`)
|
|
623
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
624
|
+
- API-key scope: `team:read`
|
|
625
|
+
|
|
626
|
+
A time-limited link to the call recording.
|
|
627
|
+
|
|
628
|
+
The URL is signed and expires: treat it as the credential it is, not as a
|
|
629
|
+
permanent address to store. The gate runs BEFORE the link is minted, so a
|
|
630
|
+
caller who may not read the call never receives one.
|
|
631
|
+
|
|
632
|
+
**Input**
|
|
633
|
+
|
|
634
|
+
| Field | Type | Required | Description |
|
|
635
|
+
|---|---|---|---|
|
|
636
|
+
| `path.call_id` | `string (uuid)` | yes | Call id (UUID). |
|
|
637
|
+
|
|
638
|
+
**Returns** `ApiResponse_CoachPayload_`: the envelope `{ data: CoachPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
639
|
+
|
|
640
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
641
|
+
|
|
642
|
+
**Example**
|
|
643
|
+
|
|
644
|
+
```ts
|
|
645
|
+
const result = await g8.api.salesCoach.getCallAudioUrl({ path: { call_id: "00000000-0000-0000-0000-000000000000" } });
|
|
646
|
+
```
|
|
647
|
+
|
|
648
|
+
---
|
|
649
|
+
|
|
650
|
+
<a id="op-getcalltranscript"></a>
|
|
651
|
+
|
|
652
|
+
### `g8.api.salesCoach.getCallTranscript(input)`
|
|
653
|
+
|
|
654
|
+
**Get Call Transcript**
|
|
655
|
+
|
|
656
|
+
- HTTP: `GET /api/v1/sales-coach/calls/{call_id}/transcript`
|
|
657
|
+
- operationId: `get_call_transcript_sales_coach_calls__call_id__transcript_get` (also callable as `g8.api.call("get_call_transcript_sales_coach_calls__call_id__transcript_get", input)`)
|
|
658
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
659
|
+
- API-key scope: `team:read`
|
|
660
|
+
|
|
661
|
+
What was actually said, segment by segment.
|
|
662
|
+
|
|
663
|
+
Owner-or-manager gated for the same reason the call is: this is the most
|
|
664
|
+
revealing artifact the feature holds.
|
|
665
|
+
|
|
666
|
+
**Input**
|
|
667
|
+
|
|
668
|
+
| Field | Type | Required | Description |
|
|
669
|
+
|---|---|---|---|
|
|
670
|
+
| `path.call_id` | `string (uuid)` | yes | Call id (UUID). |
|
|
671
|
+
|
|
672
|
+
**Returns** `ApiResponse_CoachListPayload_`: the envelope `{ data: CoachListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
673
|
+
|
|
674
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
675
|
+
|
|
676
|
+
`CoachListPayload` fields:
|
|
677
|
+
|
|
678
|
+
| Field | Type | Required | Description |
|
|
679
|
+
|---|---|---|---|
|
|
680
|
+
| `items` | `Array<unknown>` | no | |
|
|
681
|
+
|
|
682
|
+
**Example**
|
|
683
|
+
|
|
684
|
+
```ts
|
|
685
|
+
const result = await g8.api.salesCoach.getCallTranscript({ path: { call_id: "00000000-0000-0000-0000-000000000000" } });
|
|
686
|
+
```
|
|
687
|
+
|
|
688
|
+
---
|
|
689
|
+
|
|
690
|
+
<a id="op-getinterview"></a>
|
|
691
|
+
|
|
692
|
+
### `g8.api.salesCoach.getInterview(input)`
|
|
693
|
+
|
|
694
|
+
**Get Interview**
|
|
695
|
+
|
|
696
|
+
- HTTP: `GET /api/v1/sales-coach/interviews/{interview_id}`
|
|
697
|
+
- operationId: `get_interview_sales_coach_interviews__interview_id__get` (also callable as `g8.api.call("get_interview_sales_coach_interviews__interview_id__get", input)`)
|
|
698
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
699
|
+
- API-key scope: `team:read`
|
|
700
|
+
|
|
701
|
+
One interview round, with its members.
|
|
702
|
+
|
|
703
|
+
**Input**
|
|
704
|
+
|
|
705
|
+
| Field | Type | Required | Description |
|
|
706
|
+
|---|---|---|---|
|
|
707
|
+
| `path.interview_id` | `string (uuid)` | yes | Interview round id (UUID). |
|
|
708
|
+
|
|
709
|
+
**Returns** `ApiResponse_CoachPayload_`: the envelope `{ data: CoachPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
710
|
+
|
|
711
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
712
|
+
|
|
713
|
+
**Example**
|
|
714
|
+
|
|
715
|
+
```ts
|
|
716
|
+
const result = await g8.api.salesCoach.getInterview({ path: { interview_id: "00000000-0000-0000-0000-000000000000" } });
|
|
717
|
+
```
|
|
718
|
+
|
|
719
|
+
---
|
|
720
|
+
|
|
721
|
+
<a id="op-getinterviewbycode"></a>
|
|
722
|
+
|
|
723
|
+
### `g8.api.salesCoach.getInterviewByCode(input)`
|
|
724
|
+
|
|
725
|
+
**Get Interview By Code**
|
|
726
|
+
|
|
727
|
+
- HTTP: `GET /api/v1/sales-coach/interviews/by-code/{code}`
|
|
728
|
+
- operationId: `get_interview_by_code_sales_coach_interviews_by_code__code__get` (also callable as `g8.api.call("get_interview_by_code_sales_coach_interviews_by_code__code__get", input)`)
|
|
729
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
730
|
+
- API-key scope: `team:read`
|
|
731
|
+
|
|
732
|
+
Resolve an invite code to the round it belongs to.
|
|
733
|
+
|
|
734
|
+
Published as `by-code` rather than the app's `code` so it reads the same
|
|
735
|
+
way as `/interview-attempts/by-code/{code}` - the app spells the same idea
|
|
736
|
+
two ways and a public contract should not inherit that.
|
|
737
|
+
|
|
738
|
+
**Input**
|
|
739
|
+
|
|
740
|
+
| Field | Type | Required | Description |
|
|
741
|
+
|---|---|---|---|
|
|
742
|
+
| `path.code` | `string` | yes | A member's invite code. |
|
|
743
|
+
|
|
744
|
+
**Returns** `ApiResponse_CoachPayload_`: the envelope `{ data: CoachPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
745
|
+
|
|
746
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
747
|
+
|
|
748
|
+
**Example**
|
|
749
|
+
|
|
750
|
+
```ts
|
|
751
|
+
const result = await g8.api.salesCoach.getInterviewByCode({ path: { code: "example" } });
|
|
752
|
+
```
|
|
753
|
+
|
|
754
|
+
---
|
|
755
|
+
|
|
756
|
+
<a id="op-getsalescoachleaderboard"></a>
|
|
757
|
+
|
|
758
|
+
### `g8.api.salesCoach.getSalesCoachLeaderboard(input?)`
|
|
759
|
+
|
|
760
|
+
**Get Sales Coach Leaderboard**
|
|
761
|
+
|
|
762
|
+
- HTTP: `GET /api/v1/sales-coach/leaderboard`
|
|
763
|
+
- operationId: `get_sales_coach_leaderboard_sales_coach_leaderboard_get` (also callable as `g8.api.call("get_sales_coach_leaderboard_sales_coach_leaderboard_get", input)`)
|
|
764
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
765
|
+
- API-key scope: `team:read`
|
|
766
|
+
|
|
767
|
+
The coaching leaderboard: every rep, ranked.
|
|
768
|
+
|
|
769
|
+
This is the module's own board, distinct from the CONFIGURABLE boards
|
|
770
|
+
under `/team/leaderboards` - it takes no configuration and no period.
|
|
771
|
+
|
|
772
|
+
**Input**: none.
|
|
773
|
+
|
|
774
|
+
**Returns** `ApiResponse_TeamListPayload_`: the envelope `{ data: TeamListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
775
|
+
|
|
776
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
777
|
+
|
|
778
|
+
`TeamListPayload` fields:
|
|
779
|
+
|
|
780
|
+
| Field | Type | Required | Description |
|
|
781
|
+
|---|---|---|---|
|
|
782
|
+
| `items` | `Array<unknown>` | no | |
|
|
783
|
+
|
|
784
|
+
**Example**
|
|
785
|
+
|
|
786
|
+
```ts
|
|
787
|
+
const result = await g8.api.salesCoach.getSalesCoachLeaderboard();
|
|
788
|
+
```
|
|
789
|
+
|
|
790
|
+
---
|
|
791
|
+
|
|
792
|
+
<a id="op-getteamactiveuserssummary"></a>
|
|
793
|
+
|
|
794
|
+
### `g8.api.salesCoach.getTeamActiveUsersSummary(input?)`
|
|
795
|
+
|
|
796
|
+
**Get Team Active Users Summary**
|
|
797
|
+
|
|
798
|
+
- HTTP: `GET /api/v1/sales-coach/team/active-users-summary`
|
|
799
|
+
- operationId: `get_team_active_users_summary_sales_coach_team_active_users_summary_get` (also callable as `g8.api.call("get_team_active_users_summary_sales_coach_team_active_users_summary_get", input)`)
|
|
800
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
801
|
+
- API-key scope: `team:read`
|
|
802
|
+
|
|
803
|
+
Who is active, and who can be put on a board.
|
|
804
|
+
|
|
805
|
+
**Input**: none.
|
|
806
|
+
|
|
807
|
+
**Returns** `ApiResponse_TeamPayload_`: the envelope `{ data: TeamPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
808
|
+
|
|
809
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
810
|
+
|
|
811
|
+
**Example**
|
|
812
|
+
|
|
813
|
+
```ts
|
|
814
|
+
const result = await g8.api.salesCoach.getTeamActiveUsersSummary();
|
|
815
|
+
```
|
|
816
|
+
|
|
817
|
+
---
|
|
818
|
+
|
|
819
|
+
<a id="op-getteambootstrap"></a>
|
|
820
|
+
|
|
821
|
+
### `g8.api.salesCoach.getTeamBootstrap(input?)`
|
|
822
|
+
|
|
823
|
+
**Get Team Bootstrap**
|
|
824
|
+
|
|
825
|
+
- HTTP: `GET /api/v1/sales-coach/team/bootstrap`
|
|
826
|
+
- operationId: `get_team_bootstrap_sales_coach_team_bootstrap_get` (also callable as `g8.api.call("get_team_bootstrap_sales_coach_team_bootstrap_get", input)`)
|
|
827
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
828
|
+
- API-key scope: `team:read`
|
|
829
|
+
|
|
830
|
+
Everything a Team HQ screen needs in ONE call.
|
|
831
|
+
|
|
832
|
+
The boards, the sets, the config and the first page of data together.
|
|
833
|
+
Built for a display that would otherwise make five round trips before it
|
|
834
|
+
can render anything, and it is the right call for a dashboard rebuilding
|
|
835
|
+
this rather than fetching each piece.
|
|
836
|
+
|
|
837
|
+
**Input**
|
|
838
|
+
|
|
839
|
+
| Field | Type | Required | Description |
|
|
840
|
+
|---|---|---|---|
|
|
841
|
+
| `query.period` | `string` | no | Window to score over. `today` is the app's default; the values a given org accepts come back in `visible_periods` from `GET /sales-coach/team/config`, because the set is configurable. default `"today"` |
|
|
842
|
+
| `query.lb` | `string \| null` | no | Leaderboard to open on. |
|
|
843
|
+
| `query.set` | `string \| null` | no | Rotation to open on. The wire name is `set`, matching the app's `?set=` query parameter; `set` is a Python builtin, so the handler parameter is `set_id` and the alias keeps the wire name identical to the app's. |
|
|
844
|
+
| `query.role` | `string \| null` | no | Legacy fallback when neither `lb` nor `set` is given. |
|
|
845
|
+
|
|
846
|
+
**Returns** `ApiResponse_TeamPayload_`: the envelope `{ data: TeamPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
847
|
+
|
|
848
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
849
|
+
|
|
850
|
+
**Example**
|
|
851
|
+
|
|
852
|
+
```ts
|
|
853
|
+
const result = await g8.api.salesCoach.getTeamBootstrap();
|
|
854
|
+
```
|
|
855
|
+
|
|
856
|
+
---
|
|
857
|
+
|
|
858
|
+
<a id="op-getteamconfig"></a>
|
|
859
|
+
|
|
860
|
+
### `g8.api.salesCoach.getTeamConfig(input?)`
|
|
861
|
+
|
|
862
|
+
**Get Team Config**
|
|
863
|
+
|
|
864
|
+
- HTTP: `GET /api/v1/sales-coach/team/config`
|
|
865
|
+
- operationId: `get_team_config_sales_coach_team_config_get` (also callable as `g8.api.call("get_team_config_sales_coach_team_config_get", input)`)
|
|
866
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
867
|
+
- API-key scope: `team:read`
|
|
868
|
+
|
|
869
|
+
Team Command Center settings: visible columns, periods, goals, rotation.
|
|
870
|
+
|
|
871
|
+
Read this before scoring anything: `visible_periods` is the set of values
|
|
872
|
+
the `period` query parameter accepts for THIS org.
|
|
873
|
+
|
|
874
|
+
**Input**: none.
|
|
875
|
+
|
|
876
|
+
**Returns** `ApiResponse_TeamPayload_`: the envelope `{ data: TeamPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
877
|
+
|
|
878
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
879
|
+
|
|
880
|
+
**Example**
|
|
881
|
+
|
|
882
|
+
```ts
|
|
883
|
+
const result = await g8.api.salesCoach.getTeamConfig();
|
|
884
|
+
```
|
|
885
|
+
|
|
886
|
+
---
|
|
887
|
+
|
|
888
|
+
<a id="op-getteamkpicatalog"></a>
|
|
889
|
+
|
|
890
|
+
### `g8.api.salesCoach.getTeamKpiCatalog(input?)`
|
|
891
|
+
|
|
892
|
+
**Get Team Kpi Catalog**
|
|
893
|
+
|
|
894
|
+
- HTTP: `GET /api/v1/sales-coach/team/kpi-catalog`
|
|
895
|
+
- operationId: `get_team_kpi_catalog_sales_coach_team_kpi_catalog_get` (also callable as `g8.api.call("get_team_kpi_catalog_sales_coach_team_kpi_catalog_get", input)`)
|
|
896
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
897
|
+
- API-key scope: `team:read`
|
|
898
|
+
|
|
899
|
+
Every KPI a leaderboard can be built from, with its default weight.
|
|
900
|
+
|
|
901
|
+
The source of the `id` values a leaderboard's `kpis` refer to - build a
|
|
902
|
+
board from anything else and it scores nothing.
|
|
903
|
+
|
|
904
|
+
**Input**: none.
|
|
905
|
+
|
|
906
|
+
**Returns** `ApiResponse_TeamListPayload_`: the envelope `{ data: TeamListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
907
|
+
|
|
908
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
909
|
+
|
|
910
|
+
`TeamListPayload` fields:
|
|
911
|
+
|
|
912
|
+
| Field | Type | Required | Description |
|
|
913
|
+
|---|---|---|---|
|
|
914
|
+
| `items` | `Array<unknown>` | no | |
|
|
915
|
+
|
|
916
|
+
**Example**
|
|
917
|
+
|
|
918
|
+
```ts
|
|
919
|
+
const result = await g8.api.salesCoach.getTeamKpiCatalog();
|
|
920
|
+
```
|
|
921
|
+
|
|
922
|
+
---
|
|
923
|
+
|
|
924
|
+
<a id="op-getteamleaderboarddata"></a>
|
|
925
|
+
|
|
926
|
+
### `g8.api.salesCoach.getTeamLeaderboardData(input)`
|
|
927
|
+
|
|
928
|
+
**Get Team Leaderboard Data**
|
|
929
|
+
|
|
930
|
+
- HTTP: `GET /api/v1/sales-coach/team/leaderboards/{lb_id}/data`
|
|
931
|
+
- operationId: `get_team_leaderboard_data_sales_coach_team_leaderboards__lb_id__data_get` (also callable as `g8.api.call("get_team_leaderboard_data_sales_coach_team_leaderboards__lb_id__data_get", input)`)
|
|
932
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
933
|
+
- API-key scope: `team:read`
|
|
934
|
+
|
|
935
|
+
The scores: one row per rep, one column per KPI on the board.
|
|
936
|
+
|
|
937
|
+
Open-shaped, because the columns are whichever KPIs the board is
|
|
938
|
+
configured with - including a customer's own. A closed model would drop
|
|
939
|
+
one, and a missing column reads as a rep having scored nothing.
|
|
940
|
+
|
|
941
|
+
**Input**
|
|
942
|
+
|
|
943
|
+
| Field | Type | Required | Description |
|
|
944
|
+
|---|---|---|---|
|
|
945
|
+
| `path.lb_id` | `string` | yes | Leaderboard id. |
|
|
946
|
+
| `query.period` | `string` | no | Window to score over. `today` is the app's default; the values a given org accepts come back in `visible_periods` from `GET /sales-coach/team/config`, because the set is configurable. default `"today"` |
|
|
947
|
+
|
|
948
|
+
**Returns** `ApiResponse_TeamPayload_`: the envelope `{ data: TeamPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
949
|
+
|
|
950
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
951
|
+
|
|
952
|
+
**Example**
|
|
953
|
+
|
|
954
|
+
```ts
|
|
955
|
+
const result = await g8.api.salesCoach.getTeamLeaderboardData({ path: { lb_id: "id" } });
|
|
956
|
+
```
|
|
957
|
+
|
|
958
|
+
---
|
|
959
|
+
|
|
960
|
+
<a id="op-getteamsetdata"></a>
|
|
961
|
+
|
|
962
|
+
### `g8.api.salesCoach.getTeamSetData(input)`
|
|
963
|
+
|
|
964
|
+
**Get Team Set Data**
|
|
965
|
+
|
|
966
|
+
- HTTP: `GET /api/v1/sales-coach/team/sets/{set_id}/data`
|
|
967
|
+
- operationId: `get_team_set_data_sales_coach_team_sets__set_id__data_get` (also callable as `g8.api.call("get_team_set_data_sales_coach_team_sets__set_id__data_get", input)`)
|
|
968
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
969
|
+
- API-key scope: `team:read`
|
|
970
|
+
|
|
971
|
+
Every board in the rotation, scored, in one call.
|
|
972
|
+
|
|
973
|
+
**Input**
|
|
974
|
+
|
|
975
|
+
| Field | Type | Required | Description |
|
|
976
|
+
|---|---|---|---|
|
|
977
|
+
| `path.set_id` | `string` | yes | Set id. |
|
|
978
|
+
| `query.period` | `string` | no | Window to score over. `today` is the app's default; the values a given org accepts come back in `visible_periods` from `GET /sales-coach/team/config`, because the set is configurable. default `"today"` |
|
|
979
|
+
|
|
980
|
+
**Returns** `ApiResponse_TeamPayload_`: the envelope `{ data: TeamPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
981
|
+
|
|
982
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
983
|
+
|
|
984
|
+
**Example**
|
|
985
|
+
|
|
986
|
+
```ts
|
|
987
|
+
const result = await g8.api.salesCoach.getTeamSetData({ path: { set_id: "id" } });
|
|
988
|
+
```
|
|
989
|
+
|
|
990
|
+
---
|
|
991
|
+
|
|
992
|
+
<a id="op-listcalls"></a>
|
|
993
|
+
|
|
994
|
+
### `g8.api.salesCoach.listCalls(input?)`
|
|
995
|
+
|
|
996
|
+
**List Calls**
|
|
997
|
+
|
|
998
|
+
- HTTP: `GET /api/v1/sales-coach/calls`
|
|
999
|
+
- operationId: `list_calls_sales_coach_calls_get` (also callable as `g8.api.call("list_calls_sales_coach_calls_get", input)`)
|
|
1000
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1001
|
+
- API-key scope: `team:read`
|
|
1002
|
+
|
|
1003
|
+
Practice calls, newest first, with their scores and transcript segments.
|
|
1004
|
+
|
|
1005
|
+
**Input**
|
|
1006
|
+
|
|
1007
|
+
| Field | Type | Required | Description |
|
|
1008
|
+
|---|---|---|---|
|
|
1009
|
+
| `query.email` | `string \| null` | no | Whose calls to read. Omit for the key owner's own. Naming SOMEBODY ELSE is manager-only and comes back 403 otherwise - calls carry transcripts and scores. |
|
|
1010
|
+
|
|
1011
|
+
**Returns** `ApiResponse_CoachListPayload_`: the envelope `{ data: CoachListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1012
|
+
|
|
1013
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1014
|
+
|
|
1015
|
+
`CoachListPayload` fields:
|
|
1016
|
+
|
|
1017
|
+
| Field | Type | Required | Description |
|
|
1018
|
+
|---|---|---|---|
|
|
1019
|
+
| `items` | `Array<unknown>` | no | |
|
|
1020
|
+
|
|
1021
|
+
**Example**
|
|
1022
|
+
|
|
1023
|
+
```ts
|
|
1024
|
+
const result = await g8.api.salesCoach.listCalls();
|
|
1025
|
+
```
|
|
1026
|
+
|
|
1027
|
+
---
|
|
1028
|
+
|
|
1029
|
+
<a id="op-listcoachcontactlists"></a>
|
|
1030
|
+
|
|
1031
|
+
### `g8.api.salesCoach.listCoachContactLists(input?)`
|
|
1032
|
+
|
|
1033
|
+
**List Coach Contact Lists**
|
|
1034
|
+
|
|
1035
|
+
- HTTP: `GET /api/v1/sales-coach/contact-lists`
|
|
1036
|
+
- operationId: `list_coach_contact_lists_sales_coach_contact_lists_get` (also callable as `g8.api.call("list_coach_contact_lists_sales_coach_contact_lists_get", input)`)
|
|
1037
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1038
|
+
- API-key scope: `team:read`
|
|
1039
|
+
|
|
1040
|
+
Audiences a practice call or interview round can draw a prospect from.
|
|
1041
|
+
|
|
1042
|
+
**Input**
|
|
1043
|
+
|
|
1044
|
+
| Field | Type | Required | Description |
|
|
1045
|
+
|---|---|---|---|
|
|
1046
|
+
| `query.only_tagged` | `boolean` | no | Only lists tagged for coaching, rather than every audience. default `false` |
|
|
1047
|
+
|
|
1048
|
+
**Returns** `ApiResponse_CoachListPayload_`: the envelope `{ data: CoachListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1049
|
+
|
|
1050
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1051
|
+
|
|
1052
|
+
`CoachListPayload` fields:
|
|
1053
|
+
|
|
1054
|
+
| Field | Type | Required | Description |
|
|
1055
|
+
|---|---|---|---|
|
|
1056
|
+
| `items` | `Array<unknown>` | no | |
|
|
1057
|
+
|
|
1058
|
+
**Example**
|
|
1059
|
+
|
|
1060
|
+
```ts
|
|
1061
|
+
const result = await g8.api.salesCoach.listCoachContactLists();
|
|
1062
|
+
```
|
|
1063
|
+
|
|
1064
|
+
---
|
|
1065
|
+
|
|
1066
|
+
<a id="op-listinterviewattempts"></a>
|
|
1067
|
+
|
|
1068
|
+
### `g8.api.salesCoach.listInterviewAttempts(input?)`
|
|
1069
|
+
|
|
1070
|
+
**List Interview Attempts**
|
|
1071
|
+
|
|
1072
|
+
- HTTP: `GET /api/v1/sales-coach/interview-attempts`
|
|
1073
|
+
- operationId: `list_interview_attempts_sales_coach_interview_attempts_get` (also callable as `g8.api.call("list_interview_attempts_sales_coach_interview_attempts_get", input)`)
|
|
1074
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1075
|
+
- API-key scope: `team:read`
|
|
1076
|
+
|
|
1077
|
+
Who sat an interview round, and against which call.
|
|
1078
|
+
|
|
1079
|
+
**Input**
|
|
1080
|
+
|
|
1081
|
+
| Field | Type | Required | Description |
|
|
1082
|
+
|---|---|---|---|
|
|
1083
|
+
| `query.call_id` | `string (uuid) \| null` | no | Only attempts made of this call. |
|
|
1084
|
+
| `query.member_id` | `string (uuid) \| null` | no | Only this member's attempts. |
|
|
1085
|
+
|
|
1086
|
+
**Returns** `ApiResponse_CoachListPayload_`: the envelope `{ data: CoachListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1087
|
+
|
|
1088
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1089
|
+
|
|
1090
|
+
`CoachListPayload` fields:
|
|
1091
|
+
|
|
1092
|
+
| Field | Type | Required | Description |
|
|
1093
|
+
|---|---|---|---|
|
|
1094
|
+
| `items` | `Array<unknown>` | no | |
|
|
1095
|
+
|
|
1096
|
+
**Example**
|
|
1097
|
+
|
|
1098
|
+
```ts
|
|
1099
|
+
const result = await g8.api.salesCoach.listInterviewAttempts();
|
|
1100
|
+
```
|
|
1101
|
+
|
|
1102
|
+
---
|
|
1103
|
+
|
|
1104
|
+
<a id="op-listinterviews"></a>
|
|
1105
|
+
|
|
1106
|
+
### `g8.api.salesCoach.listInterviews(input?)`
|
|
1107
|
+
|
|
1108
|
+
**List Interviews**
|
|
1109
|
+
|
|
1110
|
+
- HTTP: `GET /api/v1/sales-coach/interviews`
|
|
1111
|
+
- operationId: `list_interviews_sales_coach_interviews_get` (also callable as `g8.api.call("list_interviews_sales_coach_interviews_get", input)`)
|
|
1112
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1113
|
+
- API-key scope: `team:read`
|
|
1114
|
+
|
|
1115
|
+
Every interview round in the organisation.
|
|
1116
|
+
|
|
1117
|
+
**Input**: none.
|
|
1118
|
+
|
|
1119
|
+
**Returns** `ApiResponse_CoachListPayload_`: the envelope `{ data: CoachListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1120
|
+
|
|
1121
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1122
|
+
|
|
1123
|
+
`CoachListPayload` fields:
|
|
1124
|
+
|
|
1125
|
+
| Field | Type | Required | Description |
|
|
1126
|
+
|---|---|---|---|
|
|
1127
|
+
| `items` | `Array<unknown>` | no | |
|
|
1128
|
+
|
|
1129
|
+
**Example**
|
|
1130
|
+
|
|
1131
|
+
```ts
|
|
1132
|
+
const result = await g8.api.salesCoach.listInterviews();
|
|
1133
|
+
```
|
|
1134
|
+
|
|
1135
|
+
---
|
|
1136
|
+
|
|
1137
|
+
<a id="op-listteamleaderboards"></a>
|
|
1138
|
+
|
|
1139
|
+
### `g8.api.salesCoach.listTeamLeaderboards(input?)`
|
|
1140
|
+
|
|
1141
|
+
**List Team Leaderboards**
|
|
1142
|
+
|
|
1143
|
+
- HTTP: `GET /api/v1/sales-coach/team/leaderboards`
|
|
1144
|
+
- operationId: `list_team_leaderboards_sales_coach_team_leaderboards_get` (also callable as `g8.api.call("list_team_leaderboards_sales_coach_team_leaderboards_get", input)`)
|
|
1145
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1146
|
+
- API-key scope: `team:read`
|
|
1147
|
+
|
|
1148
|
+
Every configured leaderboard, including the ones the product ships.
|
|
1149
|
+
|
|
1150
|
+
**Input**: none.
|
|
1151
|
+
|
|
1152
|
+
**Returns** `ApiResponse_TeamListPayload_`: the envelope `{ data: TeamListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1153
|
+
|
|
1154
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1155
|
+
|
|
1156
|
+
`TeamListPayload` fields:
|
|
1157
|
+
|
|
1158
|
+
| Field | Type | Required | Description |
|
|
1159
|
+
|---|---|---|---|
|
|
1160
|
+
| `items` | `Array<unknown>` | no | |
|
|
1161
|
+
|
|
1162
|
+
**Example**
|
|
1163
|
+
|
|
1164
|
+
```ts
|
|
1165
|
+
const result = await g8.api.salesCoach.listTeamLeaderboards();
|
|
1166
|
+
```
|
|
1167
|
+
|
|
1168
|
+
---
|
|
1169
|
+
|
|
1170
|
+
<a id="op-listteamroles"></a>
|
|
1171
|
+
|
|
1172
|
+
### `g8.api.salesCoach.listTeamRoles(input?)`
|
|
1173
|
+
|
|
1174
|
+
**List Team Roles**
|
|
1175
|
+
|
|
1176
|
+
- HTTP: `GET /api/v1/sales-coach/team/roles`
|
|
1177
|
+
- operationId: `list_team_roles_sales_coach_team_roles_get` (also callable as `g8.api.call("list_team_roles_sales_coach_team_roles_get", input)`)
|
|
1178
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1179
|
+
- API-key scope: `team:read`
|
|
1180
|
+
|
|
1181
|
+
The Team HQ roles, and who holds them.
|
|
1182
|
+
|
|
1183
|
+
**Input**: none.
|
|
1184
|
+
|
|
1185
|
+
**Returns** `ApiResponse_TeamListPayload_`: the envelope `{ data: TeamListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1186
|
+
|
|
1187
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1188
|
+
|
|
1189
|
+
`TeamListPayload` fields:
|
|
1190
|
+
|
|
1191
|
+
| Field | Type | Required | Description |
|
|
1192
|
+
|---|---|---|---|
|
|
1193
|
+
| `items` | `Array<unknown>` | no | |
|
|
1194
|
+
|
|
1195
|
+
**Example**
|
|
1196
|
+
|
|
1197
|
+
```ts
|
|
1198
|
+
const result = await g8.api.salesCoach.listTeamRoles();
|
|
1199
|
+
```
|
|
1200
|
+
|
|
1201
|
+
---
|
|
1202
|
+
|
|
1203
|
+
<a id="op-listteamsets"></a>
|
|
1204
|
+
|
|
1205
|
+
### `g8.api.salesCoach.listTeamSets(input?)`
|
|
1206
|
+
|
|
1207
|
+
**List Team Sets**
|
|
1208
|
+
|
|
1209
|
+
- HTTP: `GET /api/v1/sales-coach/team/sets`
|
|
1210
|
+
- operationId: `list_team_sets_sales_coach_team_sets_get` (also callable as `g8.api.call("list_team_sets_sales_coach_team_sets_get", input)`)
|
|
1211
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1212
|
+
- API-key scope: `team:read`
|
|
1213
|
+
|
|
1214
|
+
Configured rotations.
|
|
1215
|
+
|
|
1216
|
+
**Input**: none.
|
|
1217
|
+
|
|
1218
|
+
**Returns** `ApiResponse_TeamListPayload_`: the envelope `{ data: TeamListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1219
|
+
|
|
1220
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1221
|
+
|
|
1222
|
+
`TeamListPayload` fields:
|
|
1223
|
+
|
|
1224
|
+
| Field | Type | Required | Description |
|
|
1225
|
+
|---|---|---|---|
|
|
1226
|
+
| `items` | `Array<unknown>` | no | |
|
|
1227
|
+
|
|
1228
|
+
**Example**
|
|
1229
|
+
|
|
1230
|
+
```ts
|
|
1231
|
+
const result = await g8.api.salesCoach.listTeamSets();
|
|
1232
|
+
```
|
|
1233
|
+
|
|
1234
|
+
---
|
|
1235
|
+
|
|
1236
|
+
<a id="op-searchcoachprospects"></a>
|
|
1237
|
+
|
|
1238
|
+
### `g8.api.salesCoach.searchCoachProspects(input)`
|
|
1239
|
+
|
|
1240
|
+
**Search Coach Prospects**
|
|
1241
|
+
|
|
1242
|
+
- HTTP: `GET /api/v1/sales-coach/prospects/search`
|
|
1243
|
+
- operationId: `search_coach_prospects_sales_coach_prospects_search_get` (also callable as `g8.api.call("search_coach_prospects_sales_coach_prospects_search_get", input)`)
|
|
1244
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1245
|
+
- API-key scope: `team:read`
|
|
1246
|
+
|
|
1247
|
+
Find the prospect the AI will play.
|
|
1248
|
+
|
|
1249
|
+
Paginated, because an audience is routinely larger than a picker: `offset`
|
|
1250
|
+
plus `limit` rather than a page number, matching the app.
|
|
1251
|
+
|
|
1252
|
+
**Input**
|
|
1253
|
+
|
|
1254
|
+
| Field | Type | Required | Description |
|
|
1255
|
+
|---|---|---|---|
|
|
1256
|
+
| `query.audience_id` | `string` | yes | Audience to search within. |
|
|
1257
|
+
| `query.q` | `string` | no | Free text over the prospect's name and company. default `""` |
|
|
1258
|
+
| `query.limit` | `integer` | no | default `50` |
|
|
1259
|
+
| `query.offset` | `integer` | no | default `0` |
|
|
1260
|
+
|
|
1261
|
+
**Returns** `ApiResponse_CoachListPayload_`: the envelope `{ data: CoachListPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1262
|
+
|
|
1263
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1264
|
+
|
|
1265
|
+
`CoachListPayload` fields:
|
|
1266
|
+
|
|
1267
|
+
| Field | Type | Required | Description |
|
|
1268
|
+
|---|---|---|---|
|
|
1269
|
+
| `items` | `Array<unknown>` | no | |
|
|
1270
|
+
|
|
1271
|
+
**Example**
|
|
1272
|
+
|
|
1273
|
+
```ts
|
|
1274
|
+
const result = await g8.api.salesCoach.searchCoachProspects({ query: { audience_id: "id" } });
|
|
1275
|
+
```
|
|
1276
|
+
|
|
1277
|
+
---
|
|
1278
|
+
|
|
1279
|
+
<a id="op-sendinterviewinvite"></a>
|
|
1280
|
+
|
|
1281
|
+
### `g8.api.salesCoach.sendInterviewInvite(input)`
|
|
1282
|
+
|
|
1283
|
+
**Send Interview Invite**
|
|
1284
|
+
|
|
1285
|
+
- HTTP: `POST /api/v1/sales-coach/interviews/{interview_id}/members/{member_id}/send-invite`
|
|
1286
|
+
- operationId: `send_interview_invite_sales_coach_interviews__interview_id__members__member_id__send_invite_post` (also callable as `g8.api.call("send_interview_invite_sales_coach_interviews__interview_id__members__member_id__send_invite_post", input)`)
|
|
1287
|
+
- Tier: `external`: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first
|
|
1288
|
+
- API-key scope: `team:run`
|
|
1289
|
+
|
|
1290
|
+
Send - or re-send - a member's invite email. THIS REACHES A REAL PERSON.
|
|
1291
|
+
|
|
1292
|
+
Tiered `external` rather than `write` for that reason: a customer can hand
|
|
1293
|
+
out "build interview rounds" without handing out "email my candidates".
|
|
1294
|
+
|
|
1295
|
+
**Input**
|
|
1296
|
+
|
|
1297
|
+
| Field | Type | Required | Description |
|
|
1298
|
+
|---|---|---|---|
|
|
1299
|
+
| `path.interview_id` | `string (uuid)` | yes | Interview round id (UUID). |
|
|
1300
|
+
| `path.member_id` | `string (uuid)` | yes | Member id (UUID). |
|
|
1301
|
+
|
|
1302
|
+
**Returns** `ApiResponse_CoachPayload_`: the envelope `{ data: CoachPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1303
|
+
|
|
1304
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1305
|
+
|
|
1306
|
+
**Example**
|
|
1307
|
+
|
|
1308
|
+
```ts
|
|
1309
|
+
// external: reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first.
|
|
1310
|
+
const result = await g8.api.salesCoach.sendInterviewInvite({
|
|
1311
|
+
path: {
|
|
1312
|
+
interview_id: "00000000-0000-0000-0000-000000000000",
|
|
1313
|
+
member_id: "00000000-0000-0000-0000-000000000000",
|
|
1314
|
+
},
|
|
1315
|
+
});
|
|
1316
|
+
```
|
|
1317
|
+
|
|
1318
|
+
---
|
|
1319
|
+
|
|
1320
|
+
<a id="op-updatecall"></a>
|
|
1321
|
+
|
|
1322
|
+
### `g8.api.salesCoach.updateCall(input)`
|
|
1323
|
+
|
|
1324
|
+
**Update Call**
|
|
1325
|
+
|
|
1326
|
+
- HTTP: `PUT /api/v1/sales-coach/calls/{call_id}`
|
|
1327
|
+
- operationId: `update_call_sales_coach_calls__call_id__put` (also callable as `g8.api.call("update_call_sales_coach_calls__call_id__put", input)`)
|
|
1328
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1329
|
+
- API-key scope: `team:write`
|
|
1330
|
+
|
|
1331
|
+
Amend a call record.
|
|
1332
|
+
|
|
1333
|
+
`final_score` is the number a leaderboard reads, so writing it here changes
|
|
1334
|
+
what the team ranking shows. Only the fields you send are written.
|
|
1335
|
+
|
|
1336
|
+
**Input**
|
|
1337
|
+
|
|
1338
|
+
| Field | Type | Required | Description |
|
|
1339
|
+
|---|---|---|---|
|
|
1340
|
+
| `path.call_id` | `string (uuid)` | yes | Call id (UUID). |
|
|
1341
|
+
| `body` | `UpdateCallRequest` | yes | Request body; fields below. |
|
|
1342
|
+
|
|
1343
|
+
Body fields (`UpdateCallRequest`):
|
|
1344
|
+
|
|
1345
|
+
| Field | Type | Required | Description |
|
|
1346
|
+
|---|---|---|---|
|
|
1347
|
+
| `body.audio_url` | `string \| null` | no | Where the recording lives. |
|
|
1348
|
+
| `body.call_status` | `string \| null` | no | New status for the call. |
|
|
1349
|
+
| `body.duration_ms` | `integer \| null` | no | Call length in milliseconds. |
|
|
1350
|
+
| `body.final_score` | `integer \| null` | no | Score for the call. |
|
|
1351
|
+
|
|
1352
|
+
**Returns** `ApiResponse_CoachPayload_`: the envelope `{ data: CoachPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1353
|
+
|
|
1354
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1355
|
+
|
|
1356
|
+
**Example**
|
|
1357
|
+
|
|
1358
|
+
```ts
|
|
1359
|
+
const result = await g8.api.salesCoach.updateCall({
|
|
1360
|
+
path: { call_id: "00000000-0000-0000-0000-000000000000" },
|
|
1361
|
+
body: {},
|
|
1362
|
+
});
|
|
1363
|
+
```
|
|
1364
|
+
|
|
1365
|
+
---
|
|
1366
|
+
|
|
1367
|
+
<a id="op-updateteamconfig"></a>
|
|
1368
|
+
|
|
1369
|
+
### `g8.api.salesCoach.updateTeamConfig(input)`
|
|
1370
|
+
|
|
1371
|
+
**Update Team Config**
|
|
1372
|
+
|
|
1373
|
+
- HTTP: `PUT /api/v1/sales-coach/team/config`
|
|
1374
|
+
- operationId: `update_team_config_sales_coach_team_config_put` (also callable as `g8.api.call("update_team_config_sales_coach_team_config_put", input)`)
|
|
1375
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1376
|
+
- API-key scope: `team:write`
|
|
1377
|
+
|
|
1378
|
+
Change Team Command Center settings. Team-floor management required.
|
|
1379
|
+
|
|
1380
|
+
The body is OPEN, mirroring the app's own model: this config is a JSONB bag
|
|
1381
|
+
that grows, and its DTO carries `extra="allow"` with a comment calling that
|
|
1382
|
+
an intentional deviation. Closing it here would reject a key the app
|
|
1383
|
+
itself stores.
|
|
1384
|
+
|
|
1385
|
+
**Input**
|
|
1386
|
+
|
|
1387
|
+
| Field | Type | Required | Description |
|
|
1388
|
+
|---|---|---|---|
|
|
1389
|
+
| `body` | `TeamConfigUpdateRequest` | yes | Request body; fields below. |
|
|
1390
|
+
|
|
1391
|
+
Body fields (`TeamConfigUpdateRequest`):
|
|
1392
|
+
|
|
1393
|
+
| Field | Type | Required | Description |
|
|
1394
|
+
|---|---|---|---|
|
|
1395
|
+
| `body.default_period` | `string \| null` | no | |
|
|
1396
|
+
| `body.goals` | `Record<string, Record<string, unknown>> \| null` | no | |
|
|
1397
|
+
| `body.team_command_center_enabled` | `boolean \| null` | no | |
|
|
1398
|
+
| `body.tv_rotation_seconds` | `integer \| null` | no | |
|
|
1399
|
+
| `body.visible_columns` | `Record<string, Array<string>> \| null` | no | |
|
|
1400
|
+
| `body.visible_periods` | `Array<string> \| null` | no | |
|
|
1401
|
+
|
|
1402
|
+
**Returns** `ApiResponse_TeamPayload_`: the envelope `{ data: TeamPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1403
|
+
|
|
1404
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1405
|
+
|
|
1406
|
+
**Example**
|
|
1407
|
+
|
|
1408
|
+
```ts
|
|
1409
|
+
const result = await g8.api.salesCoach.updateTeamConfig({ body: {} });
|
|
1410
|
+
```
|
|
1411
|
+
|
|
1412
|
+
---
|
|
1413
|
+
|
|
1414
|
+
<a id="op-updateteamleaderboard"></a>
|
|
1415
|
+
|
|
1416
|
+
### `g8.api.salesCoach.updateTeamLeaderboard(input)`
|
|
1417
|
+
|
|
1418
|
+
**Update Team Leaderboard**
|
|
1419
|
+
|
|
1420
|
+
- HTTP: `PUT /api/v1/sales-coach/team/leaderboards/{lb_id}`
|
|
1421
|
+
- operationId: `update_team_leaderboard_sales_coach_team_leaderboards__lb_id__put` (also callable as `g8.api.call("update_team_leaderboard_sales_coach_team_leaderboards__lb_id__put", input)`)
|
|
1422
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1423
|
+
- API-key scope: `team:write`
|
|
1424
|
+
|
|
1425
|
+
Replace a leaderboard's configuration.
|
|
1426
|
+
|
|
1427
|
+
A PUT, matching the app: the body is the board's new state, so a KPI you
|
|
1428
|
+
omit is REMOVED from the board rather than left alone.
|
|
1429
|
+
|
|
1430
|
+
**Input**
|
|
1431
|
+
|
|
1432
|
+
| Field | Type | Required | Description |
|
|
1433
|
+
|---|---|---|---|
|
|
1434
|
+
| `path.lb_id` | `string` | yes | Leaderboard id. |
|
|
1435
|
+
| `body` | `LeaderboardConfigRequest` | yes | Request body; fields below. |
|
|
1436
|
+
|
|
1437
|
+
Body fields (`LeaderboardConfigRequest`):
|
|
1438
|
+
|
|
1439
|
+
| Field | Type | Required | Description |
|
|
1440
|
+
|---|---|---|---|
|
|
1441
|
+
| `body.id` | `string` | yes | Caller-chosen id. Reusing one upserts, matching the app. |
|
|
1442
|
+
| `body.kpis` | `Array<LeaderboardKpi>` | yes | |
|
|
1443
|
+
| `body.name` | `string` | yes | |
|
|
1444
|
+
| `body.roles` | `Array<string>` | yes | Which team roles appear on this board. |
|
|
1445
|
+
| `body.goal` | `LeaderboardGoal \| null` | no | |
|
|
1446
|
+
| `body.is_system` | `boolean` | no | Marks a board the product ships rather than one a customer made. Accepted because the app's model has it; leave it False for your own boards. default `false` |
|
|
1447
|
+
|
|
1448
|
+
**Returns** `ApiResponse_TeamPayload_`: the envelope `{ data: TeamPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1449
|
+
|
|
1450
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1451
|
+
|
|
1452
|
+
**Example**
|
|
1453
|
+
|
|
1454
|
+
```ts
|
|
1455
|
+
const result = await g8.api.salesCoach.updateTeamLeaderboard({
|
|
1456
|
+
path: { lb_id: "id" },
|
|
1457
|
+
body: {
|
|
1458
|
+
id: "id",
|
|
1459
|
+
kpis: [{ id: "id", weight: 1 }],
|
|
1460
|
+
name: "Example",
|
|
1461
|
+
roles: ["example"],
|
|
1462
|
+
},
|
|
1463
|
+
});
|
|
1464
|
+
```
|
|
1465
|
+
|
|
1466
|
+
---
|
|
1467
|
+
|
|
1468
|
+
<a id="op-updateteamset"></a>
|
|
1469
|
+
|
|
1470
|
+
### `g8.api.salesCoach.updateTeamSet(input)`
|
|
1471
|
+
|
|
1472
|
+
**Update Team Set**
|
|
1473
|
+
|
|
1474
|
+
- HTTP: `PUT /api/v1/sales-coach/team/sets/{set_id}`
|
|
1475
|
+
- operationId: `update_team_set_sales_coach_team_sets__set_id__put` (also callable as `g8.api.call("update_team_set_sales_coach_team_sets__set_id__put", input)`)
|
|
1476
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1477
|
+
- API-key scope: `team:write`
|
|
1478
|
+
|
|
1479
|
+
Replace a rotation. A PUT: an omitted board leaves the rotation.
|
|
1480
|
+
|
|
1481
|
+
**Input**
|
|
1482
|
+
|
|
1483
|
+
| Field | Type | Required | Description |
|
|
1484
|
+
|---|---|---|---|
|
|
1485
|
+
| `path.set_id` | `string` | yes | Set id. |
|
|
1486
|
+
| `body` | `SetConfigRequest` | yes | Request body; fields below. |
|
|
1487
|
+
|
|
1488
|
+
Body fields (`SetConfigRequest`):
|
|
1489
|
+
|
|
1490
|
+
| Field | Type | Required | Description |
|
|
1491
|
+
|---|---|---|---|
|
|
1492
|
+
| `body.id` | `string` | yes | Caller-chosen id. |
|
|
1493
|
+
| `body.leaderboard_ids` | `Array<string>` | yes | The boards to rotate through, in order. |
|
|
1494
|
+
| `body.name` | `string` | yes | |
|
|
1495
|
+
| `body.audio_enabled` | `boolean` | no | Whether the display plays a sound on a change. default `false` |
|
|
1496
|
+
| `body.is_default` | `boolean` | no | default `false` |
|
|
1497
|
+
| `body.rotation_seconds` | `integer` | no | Seconds per board. The app's default is 30. default `30` |
|
|
1498
|
+
|
|
1499
|
+
**Returns** `ApiResponse_TeamPayload_`: the envelope `{ data: TeamPayload, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1500
|
+
|
|
1501
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1502
|
+
|
|
1503
|
+
**Example**
|
|
1504
|
+
|
|
1505
|
+
```ts
|
|
1506
|
+
const result = await g8.api.salesCoach.updateTeamSet({
|
|
1507
|
+
path: { set_id: "id" },
|
|
1508
|
+
body: { id: "id", leaderboard_ids: ["id"], name: "Example" },
|
|
1509
|
+
});
|
|
1510
|
+
```
|
|
1511
|
+
|
|
1512
|
+
---
|
|
1513
|
+
|
|
1514
|
+
## Referenced types
|
|
1515
|
+
|
|
1516
|
+
Named types that appear in the tables above. Full TypeScript definitions: `G8Contract.<Name>` (`import type { G8Contract } from "@graph8/sdk"`).
|
|
1517
|
+
|
|
1518
|
+
<a id="type-leaderboardgoal"></a>
|
|
1519
|
+
|
|
1520
|
+
### `LeaderboardGoal`
|
|
1521
|
+
|
|
1522
|
+
The target a leaderboard is measured against.
|
|
1523
|
+
|
|
1524
|
+
| Field | Type | Required | Description |
|
|
1525
|
+
|---|---|---|---|
|
|
1526
|
+
| `metric` | `string` | yes | |
|
|
1527
|
+
| `period` | `string` | yes | |
|
|
1528
|
+
| `target` | `number` | yes | |
|
|
1529
|
+
|
|
1530
|
+
<a id="type-leaderboardkpi"></a>
|
|
1531
|
+
|
|
1532
|
+
### `LeaderboardKpi`
|
|
1533
|
+
|
|
1534
|
+
One metric on a leaderboard, with its weight and visibility.
|
|
1535
|
+
|
|
1536
|
+
| Field | Type | Required | Description |
|
|
1537
|
+
|---|---|---|---|
|
|
1538
|
+
| `id` | `string` | yes | KPI id from `GET /sales-coach/team/kpi-catalog`. |
|
|
1539
|
+
| `weight` | `number` | yes | How much this KPI counts toward the ranking. |
|
|
1540
|
+
| `visible` | `boolean` | no | default `true` |
|