@graph8/sdk 0.308.1 → 0.358.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 +81 -0
- package/blocks/README.md +32 -0
- package/blocks/_foundation/README.md +78 -0
- package/blocks/_foundation/block.json +79 -0
- package/blocks/_foundation/components/api-error.tsx +62 -0
- package/blocks/_foundation/components/confirm-spend-dialog.tsx +142 -0
- package/blocks/_foundation/components/empty-state.tsx +24 -0
- package/blocks/_foundation/hooks/use-g8-mutation.ts +88 -0
- package/blocks/_foundation/hooks/use-g8-query.ts +87 -0
- package/blocks/_foundation/hooks/use-job-poll.ts +130 -0
- package/blocks/_foundation/hooks/use-paginated.ts +105 -0
- package/blocks/_foundation/lib/g8-client.ts +128 -0
- package/blocks/_foundation/recipes/verify-proxy-key.ts +18 -0
- package/blocks/_foundation/server/proxy.ts +233 -0
- package/blocks/_foundation/server/route.ts +30 -0
- package/blocks/agents/README.md +133 -0
- package/blocks/agents/block.json +223 -0
- package/blocks/agents/components/agent-builder.tsx +199 -0
- package/blocks/agents/components/agent-knowledge-panel.tsx +144 -0
- package/blocks/agents/components/agent-runs.tsx +175 -0
- package/blocks/agents/components/agent-skills-panel.tsx +126 -0
- package/blocks/agents/components/agent-test-console.tsx +175 -0
- package/blocks/agents/lib/agent-types.ts +114 -0
- package/blocks/agents/recipes/create-agent-and-attach-skill.ts +50 -0
- package/blocks/agents/recipes/run-and-follow-agent-run.ts +46 -0
- package/blocks/agents/recipes/test-agent-before-activating.ts +36 -0
- package/blocks/analytics/README.md +73 -0
- package/blocks/analytics/block.json +178 -0
- package/blocks/analytics/components/funnel-chart.tsx +79 -0
- package/blocks/analytics/components/kpi-tiles.tsx +74 -0
- package/blocks/analytics/components/leaderboard.tsx +86 -0
- package/blocks/analytics/components/report-builder.tsx +200 -0
- package/blocks/analytics/hooks/use-report.ts +26 -0
- package/blocks/analytics/lib/analytics-types.ts +108 -0
- package/blocks/analytics/lib/use-debounced.ts +16 -0
- package/blocks/analytics/recipes/01-weekly-outbound-report.ts +32 -0
- package/blocks/analytics/recipes/02-revenue-snapshot.ts +22 -0
- package/blocks/analytics/recipes/03-saved-report.ts +30 -0
- package/blocks/appointments/README.md +80 -0
- package/blocks/appointments/block.json +218 -0
- package/blocks/appointments/components/availability-editor.tsx +192 -0
- package/blocks/appointments/components/booking-page.tsx +154 -0
- package/blocks/appointments/components/event-type-editor.tsx +214 -0
- package/blocks/appointments/components/meeting-detail.tsx +147 -0
- package/blocks/appointments/components/meeting-list.tsx +148 -0
- package/blocks/appointments/hooks/use-available-slots.ts +29 -0
- package/blocks/appointments/hooks/use-schedules.ts +18 -0
- package/blocks/appointments/lib/appointments-types.ts +159 -0
- package/blocks/appointments/lib/idempotency.ts +30 -0
- package/blocks/appointments/recipes/01-create-event-type-and-hours.ts +27 -0
- package/blocks/appointments/recipes/02-find-slots-and-book.ts +34 -0
- package/blocks/appointments/recipes/03-bookings-digest.ts +22 -0
- package/blocks/appointments/recipes/04-calendar-invite.ts +21 -0
- package/blocks/block.schema.json +130 -0
- package/blocks/block.types.ts +109 -0
- package/blocks/campaigns/README.md +118 -0
- package/blocks/campaigns/block.json +361 -0
- package/blocks/campaigns/components/campaign-assets.tsx +180 -0
- package/blocks/campaigns/components/campaign-audience-step.tsx +91 -0
- package/blocks/campaigns/components/campaign-launch-step.tsx +147 -0
- package/blocks/campaigns/components/campaign-list.tsx +120 -0
- package/blocks/campaigns/components/campaign-metrics.tsx +93 -0
- package/blocks/campaigns/components/campaign-select.tsx +52 -0
- package/blocks/campaigns/components/campaign-sequence-step.tsx +158 -0
- package/blocks/campaigns/components/campaign-wizard.tsx +238 -0
- package/blocks/campaigns/components/form-field.tsx +29 -0
- package/blocks/campaigns/components/icp-editor.tsx +230 -0
- package/blocks/campaigns/components/persona-editor.tsx +210 -0
- package/blocks/campaigns/hooks/use-company-profile.ts +34 -0
- package/blocks/campaigns/lib/campaigns-utils.ts +155 -0
- package/blocks/campaigns/recipes/attach-audience-and-launch.ts +33 -0
- package/blocks/campaigns/recipes/campaign-report.ts +22 -0
- package/blocks/campaigns/recipes/generate-ideas-and-create-campaign.ts +51 -0
- package/blocks/campaigns/recipes/set-up-icp-and-personas.ts +37 -0
- package/blocks/coach/README.md +93 -0
- package/blocks/coach/block.json +125 -0
- package/blocks/coach/components/call-scorecard.tsx +126 -0
- package/blocks/coach/components/coaching-feed.tsx +140 -0
- package/blocks/coach/lib/coach-types.ts +116 -0
- package/blocks/coach/recipes/read-a-scorecard.ts +27 -0
- package/blocks/coach/recipes/weekly-coaching-digest.ts +53 -0
- package/blocks/copilot/README.md +99 -0
- package/blocks/copilot/block.json +151 -0
- package/blocks/copilot/components/copilot-memory.tsx +87 -0
- package/blocks/copilot/components/copilot-panel.tsx +189 -0
- package/blocks/copilot/components/copilot-team-chat.tsx +111 -0
- package/blocks/copilot/lib/copilot-types.ts +111 -0
- package/blocks/copilot/recipes/ask-the-copilot.ts +35 -0
- package/blocks/copilot/recipes/post-in-a-work-channel.ts +33 -0
- package/blocks/copilot/recipes/remember-and-recall.ts +19 -0
- package/blocks/crm/README.md +122 -0
- package/blocks/crm/block.json +378 -0
- package/blocks/crm/components/activity-timeline.tsx +99 -0
- package/blocks/crm/components/company-detail.tsx +118 -0
- package/blocks/crm/components/company-table.tsx +173 -0
- package/blocks/crm/components/contact-detail.tsx +135 -0
- package/blocks/crm/components/contact-table.tsx +217 -0
- package/blocks/crm/components/dedupe-review.tsx +164 -0
- package/blocks/crm/components/import-wizard.tsx +193 -0
- package/blocks/crm/components/notes-panel.tsx +112 -0
- package/blocks/crm/components/record-form.tsx +191 -0
- package/blocks/crm/components/task-list.tsx +107 -0
- package/blocks/crm/hooks/use-custom-fields.ts +18 -0
- package/blocks/crm/hooks/use-debounced.ts +13 -0
- package/blocks/crm/hooks/use-page-query.ts +52 -0
- package/blocks/crm/lib/crm-types.ts +136 -0
- package/blocks/crm/recipes/custom-fields-and-values.ts +28 -0
- package/blocks/crm/recipes/dedupe-and-merge.ts +30 -0
- package/blocks/crm/recipes/notes-tasks-and-activity.ts +23 -0
- package/blocks/crm/recipes/upsert-contact-with-company.ts +33 -0
- package/blocks/deals/README.md +78 -0
- package/blocks/deals/block.json +198 -0
- package/blocks/deals/components/deal-detail.tsx +134 -0
- package/blocks/deals/components/forecast-view.tsx +112 -0
- package/blocks/deals/components/pipeline-board.tsx +142 -0
- package/blocks/deals/components/stage-editor.tsx +96 -0
- package/blocks/deals/hooks/use-pipeline-deals.ts +67 -0
- package/blocks/deals/hooks/use-pipelines.ts +19 -0
- package/blocks/deals/lib/deals-types.ts +128 -0
- package/blocks/deals/recipes/01-create-deal-and-advance.ts +32 -0
- package/blocks/deals/recipes/02-pipeline-report.ts +35 -0
- package/blocks/deals/recipes/03-stale-deals-sweep.ts +20 -0
- package/blocks/dialer/README.md +114 -0
- package/blocks/dialer/block.json +260 -0
- package/blocks/dialer/components/call-log.tsx +78 -0
- package/blocks/dialer/components/call-queue.tsx +188 -0
- package/blocks/dialer/components/dialer-workspace.tsx +47 -0
- package/blocks/dialer/components/disposition-panel.tsx +75 -0
- package/blocks/dialer/components/live-calls-table.tsx +107 -0
- package/blocks/dialer/components/session-start-form.tsx +111 -0
- package/blocks/dialer/components/softphone.tsx +122 -0
- package/blocks/dialer/components/transcript-viewer.tsx +82 -0
- package/blocks/dialer/hooks/use-dialer-numbers.ts +19 -0
- package/blocks/dialer/hooks/use-dialer-session.ts +68 -0
- package/blocks/dialer/hooks/use-dispositions.ts +29 -0
- package/blocks/dialer/lib/dialer-types.ts +158 -0
- package/blocks/dialer/lib/softphone-transport.ts +67 -0
- package/blocks/dialer/lib/twilio-transport.ts +74 -0
- package/blocks/dialer/recipes/01-create-session-and-dial.ts +39 -0
- package/blocks/dialer/recipes/02-disposition-calls.ts +26 -0
- package/blocks/dialer/recipes/03-review-a-call.ts +23 -0
- package/blocks/enrichment/README.md +105 -0
- package/blocks/enrichment/block.json +204 -0
- package/blocks/enrichment/components/bulk-enrich-panel.tsx +205 -0
- package/blocks/enrichment/components/email-verify-badge.tsx +82 -0
- package/blocks/enrichment/components/enrich-button.tsx +136 -0
- package/blocks/enrichment/components/waterfall-config.tsx +127 -0
- package/blocks/enrichment/hooks/use-providers.ts +18 -0
- package/blocks/enrichment/lib/enrichment-types.ts +104 -0
- package/blocks/enrichment/recipes/bulk-enrich-and-poll.ts +41 -0
- package/blocks/enrichment/recipes/lookup-and-verify.ts +25 -0
- package/blocks/enrichment/recipes/waterfall-pipeline.ts +26 -0
- package/blocks/forms/README.md +112 -0
- package/blocks/forms/block.json +200 -0
- package/blocks/forms/components/form-builder.tsx +150 -0
- package/blocks/forms/components/form-embed.tsx +103 -0
- package/blocks/forms/components/form-mapping-editor.tsx +125 -0
- package/blocks/forms/components/site-audit-panel.tsx +73 -0
- package/blocks/forms/components/submissions-table.tsx +158 -0
- package/blocks/forms/lib/form-types.ts +127 -0
- package/blocks/forms/recipes/install-snippet-and-form.ts +21 -0
- package/blocks/forms/recipes/retry-failed-deliveries.ts +26 -0
- package/blocks/forms/recipes/route-form-to-list.ts +44 -0
- package/blocks/inbox/README.md +72 -0
- package/blocks/inbox/block.json +194 -0
- package/blocks/inbox/components/inbox-list.tsx +156 -0
- package/blocks/inbox/components/inbox-screen.tsx +49 -0
- package/blocks/inbox/components/reply-composer.tsx +183 -0
- package/blocks/inbox/components/tag-and-assign.tsx +189 -0
- package/blocks/inbox/components/thread-badge.tsx +17 -0
- package/blocks/inbox/components/thread-view.tsx +108 -0
- package/blocks/inbox/hooks/use-inbox-thread.ts +24 -0
- package/blocks/inbox/hooks/use-inbox-threads.ts +40 -0
- package/blocks/inbox/lib/idempotency.ts +30 -0
- package/blocks/inbox/lib/inbox-types.ts +100 -0
- package/blocks/inbox/recipes/01-triage-and-reply.ts +43 -0
- package/blocks/inbox/recipes/02-tag-and-assign.ts +31 -0
- package/blocks/inbox/recipes/03-hot-contacts-digest.ts +16 -0
- package/blocks/integrations/README.md +75 -0
- package/blocks/integrations/block.json +172 -0
- package/blocks/integrations/components/integration-list.tsx +165 -0
- package/blocks/integrations/components/sync-status.tsx +223 -0
- package/blocks/integrations/components/webhook-manager.tsx +300 -0
- package/blocks/integrations/lib/integrations-utils.ts +62 -0
- package/blocks/integrations/recipes/crm-sync-health.ts +19 -0
- package/blocks/integrations/recipes/push-contacts-to-crm.ts +20 -0
- package/blocks/integrations/recipes/register-webhook.ts +18 -0
- package/blocks/integrations/recipes/verify-webhook-route.ts +33 -0
- package/blocks/intent/README.md +57 -0
- package/blocks/intent/block.json +138 -0
- package/blocks/intent/components/account-intent-score.tsx +91 -0
- package/blocks/intent/components/intent-feed.tsx +215 -0
- package/blocks/intent/components/intent-keyword-manager.tsx +331 -0
- package/blocks/intent/hooks/use-account-intent.ts +46 -0
- package/blocks/intent/lib/intent-utils.ts +95 -0
- package/blocks/intent/recipes/rank-intent-accounts.ts +36 -0
- package/blocks/intent/recipes/track-competitor-domain.ts +23 -0
- package/blocks/intent/recipes/who-visited-url.ts +18 -0
- package/blocks/lifecycle/README.md +79 -0
- package/blocks/lifecycle/block.json +198 -0
- package/blocks/lifecycle/components/churn-list.tsx +92 -0
- package/blocks/lifecycle/components/customer-table.tsx +119 -0
- package/blocks/lifecycle/components/lead-queue.tsx +127 -0
- package/blocks/lifecycle/components/lifecycle-board.tsx +102 -0
- package/blocks/lifecycle/components/stage-move-dialog.tsx +75 -0
- package/blocks/lifecycle/hooks/use-debounced.ts +13 -0
- package/blocks/lifecycle/hooks/use-lifecycle-stages.ts +27 -0
- package/blocks/lifecycle/lib/lifecycle.ts +99 -0
- package/blocks/lifecycle/recipes/customer-brief.ts +23 -0
- package/blocks/lifecycle/recipes/move-company-stage.ts +17 -0
- package/blocks/lifecycle/recipes/read-lifecycle-board.ts +21 -0
- package/blocks/lifecycle/recipes/unlock-stage-contacts.ts +25 -0
- package/blocks/lists/README.md +96 -0
- package/blocks/lists/block.json +166 -0
- package/blocks/lists/components/add-to-list-button.tsx +111 -0
- package/blocks/lists/components/list-picker.tsx +94 -0
- package/blocks/lists/components/list-table.tsx +160 -0
- package/blocks/lists/components/suppression-manager.tsx +153 -0
- package/blocks/lists/recipes/create-list-and-add-contacts.ts +35 -0
- package/blocks/lists/recipes/refresh-and-check-lists.ts +21 -0
- package/blocks/lists/recipes/suppress-and-reinstate.ts +30 -0
- package/blocks/mailboxes/README.md +71 -0
- package/blocks/mailboxes/block.json +187 -0
- package/blocks/mailboxes/components/connect-mailbox.tsx +284 -0
- package/blocks/mailboxes/components/domain-purchase.tsx +271 -0
- package/blocks/mailboxes/components/mailbox-list.tsx +185 -0
- package/blocks/mailboxes/components/warmup-health.tsx +232 -0
- package/blocks/mailboxes/lib/mailboxes-utils.ts +69 -0
- package/blocks/mailboxes/recipes/buy-domain-and-mailboxes.ts +64 -0
- package/blocks/mailboxes/recipes/connect-imap-mailbox.ts +38 -0
- package/blocks/mailboxes/recipes/is-it-safe-to-send.ts +17 -0
- package/blocks/mailboxes/recipes/warmup-report.ts +31 -0
- package/blocks/newsletter/README.md +122 -0
- package/blocks/newsletter/block.json +224 -0
- package/blocks/newsletter/components/issue-form.tsx +124 -0
- package/blocks/newsletter/components/issue-scheduler.tsx +152 -0
- package/blocks/newsletter/components/newsletter-editor.tsx +131 -0
- package/blocks/newsletter/components/newsletter-stats.tsx +93 -0
- package/blocks/newsletter/components/subscriber-table.tsx +173 -0
- package/blocks/newsletter/lib/newsletter-types.ts +97 -0
- package/blocks/newsletter/recipes/create-newsletter-and-draft-issue.ts +27 -0
- package/blocks/newsletter/recipes/import-audience-and-send.ts +43 -0
- package/blocks/newsletter/recipes/issue-performance-report.ts +26 -0
- package/blocks/nurture/README.md +110 -0
- package/blocks/nurture/block.json +191 -0
- package/blocks/nurture/components/nurture-builder.tsx +114 -0
- package/blocks/nurture/components/nurture-enroll.tsx +107 -0
- package/blocks/nurture/components/nurture-form.tsx +120 -0
- package/blocks/nurture/components/nurture-stats.tsx +81 -0
- package/blocks/nurture/lib/nurture-types.ts +109 -0
- package/blocks/nurture/recipes/create-a-nurture.ts +34 -0
- package/blocks/nurture/recipes/enroll-contacts-and-launch.ts +24 -0
- package/blocks/nurture/recipes/nurture-health-check.ts +28 -0
- package/blocks/objects/README.md +120 -0
- package/blocks/objects/block.json +243 -0
- package/blocks/objects/components/attribute-field-input.tsx +82 -0
- package/blocks/objects/components/attribute-form-dialog.tsx +159 -0
- package/blocks/objects/components/object-not-found.tsx +34 -0
- package/blocks/objects/components/object-record-detail.tsx +143 -0
- package/blocks/objects/components/object-schema-editor.tsx +197 -0
- package/blocks/objects/components/object-table.tsx +130 -0
- package/blocks/objects/components/record-form-dialog.tsx +112 -0
- package/blocks/objects/components/record-roles-panel.tsx +106 -0
- package/blocks/objects/hooks/use-object-schema.ts +36 -0
- package/blocks/objects/lib/object-types.ts +214 -0
- package/blocks/objects/recipes/define-object-and-add-records.ts +24 -0
- package/blocks/objects/recipes/update-audit-and-archive-records.ts +39 -0
- package/blocks/objects/recipes/upsert-records-from-your-system.ts +30 -0
- package/blocks/pages/README.md +104 -0
- package/blocks/pages/block.json +223 -0
- package/blocks/pages/components/brand-kit-editor.tsx +152 -0
- package/blocks/pages/components/content-library.tsx +163 -0
- package/blocks/pages/components/page-editor.tsx +253 -0
- package/blocks/pages/components/page-list.tsx +159 -0
- package/blocks/pages/components/seo-report.tsx +159 -0
- package/blocks/pages/lib/studio.ts +77 -0
- package/blocks/pages/recipes/audit-site-seo.ts +28 -0
- package/blocks/pages/recipes/create-and-publish-page.ts +26 -0
- package/blocks/pages/recipes/edit-page-section.ts +25 -0
- package/blocks/pages/recipes/refresh-brand-kit.ts +22 -0
- package/blocks/quotes/README.md +79 -0
- package/blocks/quotes/block.json +183 -0
- package/blocks/quotes/components/product-picker.tsx +80 -0
- package/blocks/quotes/components/quote-builder.tsx +195 -0
- package/blocks/quotes/components/quote-list.tsx +79 -0
- package/blocks/quotes/components/quote-viewer.tsx +135 -0
- package/blocks/quotes/components/signature-status.tsx +77 -0
- package/blocks/quotes/hooks/use-debounced.ts +13 -0
- package/blocks/quotes/lib/quotes.ts +142 -0
- package/blocks/quotes/recipes/create-and-send-quote.ts +44 -0
- package/blocks/quotes/recipes/revise-sent-quote.ts +18 -0
- package/blocks/quotes/recipes/track-quote-signature.ts +22 -0
- package/blocks/radar/README.md +106 -0
- package/blocks/radar/block.json +189 -0
- package/blocks/radar/components/competitor-battle-card.tsx +53 -0
- package/blocks/radar/components/competitor-tracker.tsx +158 -0
- package/blocks/radar/components/radar-overview.tsx +67 -0
- package/blocks/radar/components/radar-report.tsx +86 -0
- package/blocks/radar/hooks/use-competitors.ts +23 -0
- package/blocks/radar/lib/radar-types.ts +124 -0
- package/blocks/radar/recipes/battle-card.ts +28 -0
- package/blocks/radar/recipes/deep-dive-report.ts +32 -0
- package/blocks/radar/recipes/marketing-snapshot.ts +18 -0
- package/blocks/radar/recipes/track-and-scan.ts +39 -0
- package/blocks/search/README.md +129 -0
- package/blocks/search/block.json +185 -0
- package/blocks/search/components/filter-builder.tsx +149 -0
- package/blocks/search/components/prospect-results.tsx +175 -0
- package/blocks/search/components/save-to-list-dialog.tsx +135 -0
- package/blocks/search/components/saved-searches.tsx +95 -0
- package/blocks/search/hooks/use-filter-options.ts +41 -0
- package/blocks/search/lib/search-types.ts +149 -0
- package/blocks/search/recipes/explore-filter-values.ts +27 -0
- package/blocks/search/recipes/saved-searches.ts +34 -0
- package/blocks/search/recipes/search-and-save-to-list.ts +37 -0
- package/blocks/sequencer/README.md +87 -0
- package/blocks/sequencer/block.json +214 -0
- package/blocks/sequencer/components/enroll-dialog.tsx +93 -0
- package/blocks/sequencer/components/sequence-builder.tsx +306 -0
- package/blocks/sequencer/components/sequence-list.tsx +200 -0
- package/blocks/sequencer/components/sequence-stats.tsx +256 -0
- package/blocks/sequencer/components/step-editor.tsx +213 -0
- package/blocks/sequencer/lib/sequencer-utils.ts +168 -0
- package/blocks/sequencer/recipes/create-multichannel-sequence.ts +51 -0
- package/blocks/sequencer/recipes/launch-and-enroll.ts +44 -0
- package/blocks/sequencer/recipes/pause-when-unsafe.ts +30 -0
- package/blocks/sequencer/recipes/sequence-report.ts +22 -0
- package/blocks/social-ads/README.md +128 -0
- package/blocks/social-ads/block.json +256 -0
- package/blocks/social-ads/components/ad-campaign-list.tsx +136 -0
- package/blocks/social-ads/components/audience-sync.tsx +150 -0
- package/blocks/social-ads/components/creative-gallery.tsx +121 -0
- package/blocks/social-ads/components/post-composer.tsx +122 -0
- package/blocks/social-ads/components/social-post-list.tsx +116 -0
- package/blocks/social-ads/hooks/use-social-accounts.ts +16 -0
- package/blocks/social-ads/lib/social-ads-types.ts +167 -0
- package/blocks/social-ads/recipes/creative-to-gallery.ts +41 -0
- package/blocks/social-ads/recipes/schedule-post.ts +51 -0
- package/blocks/social-ads/recipes/sync-audience-and-launch.ts +41 -0
- package/blocks/visitors/README.md +56 -0
- package/blocks/visitors/block.json +139 -0
- package/blocks/visitors/components/snippet-install.tsx +169 -0
- package/blocks/visitors/components/traffic-chart.tsx +156 -0
- package/blocks/visitors/components/visitor-company-card.tsx +92 -0
- package/blocks/visitors/components/visitor-feed.tsx +157 -0
- package/blocks/visitors/lib/visitors-utils.ts +78 -0
- package/blocks/visitors/recipes/check-snippet-installed.ts +24 -0
- package/blocks/visitors/recipes/recent-company-visits.ts +27 -0
- package/blocks/visitors/recipes/traffic-summary.ts +24 -0
- package/blocks/webchat/README.md +87 -0
- package/blocks/webchat/block.json +134 -0
- package/blocks/webchat/components/chat-widget-config.tsx +160 -0
- package/blocks/webchat/components/conversation-list.tsx +74 -0
- package/blocks/webchat/lib/webchat-types.ts +83 -0
- package/blocks/webchat/recipes/create-bot-and-style-widget.ts +24 -0
- package/blocks/webchat/recipes/list-chat-visitors.ts +24 -0
- package/blocks/workbench/README.md +135 -0
- package/blocks/workbench/block.json +259 -0
- package/blocks/workbench/components/column-recipe-editor.tsx +183 -0
- package/blocks/workbench/components/run-progress.tsx +132 -0
- package/blocks/workbench/components/workbench-add-rows.tsx +100 -0
- package/blocks/workbench/components/workbench-grid.tsx +159 -0
- package/blocks/workbench/components/workbench-row-actions.tsx +102 -0
- package/blocks/workbench/components/workbench-table-list.tsx +105 -0
- package/blocks/workbench/hooks/use-workbench-table.ts +30 -0
- package/blocks/workbench/lib/waterfall-presets.ts +119 -0
- package/blocks/workbench/lib/workbench-types.ts +191 -0
- package/blocks/workbench/recipes/build-enriched-table.ts +65 -0
- package/blocks/workbench/recipes/import-from-search.ts +42 -0
- package/blocks/workbench/recipes/scrape-into-table.ts +36 -0
- package/blocks/workbench/recipes/waterfall-column.ts +55 -0
- package/blocks/workflows/README.md +100 -0
- package/blocks/workflows/block.json +188 -0
- package/blocks/workflows/components/run-history.tsx +136 -0
- package/blocks/workflows/components/trigger-config.tsx +134 -0
- package/blocks/workflows/components/workflow-editor.tsx +142 -0
- package/blocks/workflows/components/workflow-list.tsx +153 -0
- package/blocks/workflows/hooks/use-workflow.ts +51 -0
- package/blocks/workflows/lib/graph.ts +187 -0
- package/blocks/workflows/recipes/create-workflow.ts +35 -0
- package/blocks/workflows/recipes/find-failed-runs.ts +15 -0
- package/blocks/workflows/recipes/run-workflow-and-wait.ts +32 -0
- package/blocks/workflows/recipes/set-trigger.ts +22 -0
- package/dist/cli.js +5330 -29
- package/dist/index.browser.js +7740 -0
- package/dist/index.browser.js.map +1 -0
- package/dist/index.browser.mjs +7717 -0
- package/dist/index.browser.mjs.map +1 -0
- package/dist/index.d.mts +1462 -23
- package/dist/index.d.ts +1462 -23
- package/dist/index.js +42 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +42 -3
- package/dist/index.mjs.map +1 -1
- package/dist/react.browser.js +7598 -0
- package/dist/react.browser.js.map +1 -0
- package/dist/react.browser.mjs +7568 -0
- package/dist/react.browser.mjs.map +1 -0
- package/dist/react.d.mts +1362 -20
- package/dist/react.d.ts +1362 -20
- package/dist/react.js +41 -2
- package/dist/react.js.map +1 -1
- package/dist/react.mjs +41 -2
- package/dist/react.mjs.map +1 -1
- package/dist/types/agentSetup.d.ts +6 -6
- package/dist/types/blocks/add.d.ts +53 -0
- package/dist/types/blocks/create.d.ts +46 -0
- package/dist/types/blocks/doctor.d.ts +26 -0
- package/dist/types/blocks/registry.d.ts +134 -0
- package/dist/types/cli.d.ts +16 -0
- package/dist/types/core.d.ts +1 -1
- package/dist/types/crypto-browser.d.ts +2 -0
- package/dist/types/crypto-node.d.ts +6 -0
- package/dist/types/react.d.ts +1 -1
- package/dist/types/version.d.ts +2 -2
- package/dist/types/webhooks.d.ts +2 -2
- package/dist/ui/index.d.mts +54 -0
- package/dist/ui/index.d.ts +54 -0
- package/dist/ui/index.js +105 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/index.mjs +44 -0
- package/dist/ui/index.mjs.map +1 -0
- package/dist/ui/lib/compose-refs.d.mts +19 -0
- package/dist/ui/lib/compose-refs.d.ts +19 -0
- package/dist/ui/lib/compose-refs.js +76 -0
- package/dist/ui/lib/compose-refs.js.map +1 -0
- package/dist/ui/lib/compose-refs.mjs +41 -0
- package/dist/ui/lib/compose-refs.mjs.map +1 -0
- package/dist/ui/lib/use-mobile.d.mts +4 -0
- package/dist/ui/lib/use-mobile.d.ts +4 -0
- package/dist/ui/lib/use-mobile.js +57 -0
- package/dist/ui/lib/use-mobile.js.map +1 -0
- package/dist/ui/lib/use-mobile.mjs +22 -0
- package/dist/ui/lib/use-mobile.mjs.map +1 -0
- package/dist/ui/lib/utils.d.mts +10 -0
- package/dist/ui/lib/utils.d.ts +10 -0
- package/dist/ui/lib/utils.js +33 -0
- package/dist/ui/lib/utils.js.map +1 -0
- package/dist/ui/lib/utils.mjs +9 -0
- package/dist/ui/lib/utils.mjs.map +1 -0
- package/dist/ui/primitives/alert-dialog.d.mts +22 -0
- package/dist/ui/primitives/alert-dialog.d.ts +22 -0
- package/dist/ui/primitives/alert-dialog.js +163 -0
- package/dist/ui/primitives/alert-dialog.js.map +1 -0
- package/dist/ui/primitives/alert-dialog.mjs +119 -0
- package/dist/ui/primitives/alert-dialog.mjs.map +1 -0
- package/dist/ui/primitives/avatar.d.mts +8 -0
- package/dist/ui/primitives/avatar.d.ts +8 -0
- package/dist/ui/primitives/avatar.js +91 -0
- package/dist/ui/primitives/avatar.js.map +1 -0
- package/dist/ui/primitives/avatar.mjs +55 -0
- package/dist/ui/primitives/avatar.mjs.map +1 -0
- package/dist/ui/primitives/breadcrumb.d.mts +13 -0
- package/dist/ui/primitives/breadcrumb.d.ts +13 -0
- package/dist/ui/primitives/breadcrumb.js +127 -0
- package/dist/ui/primitives/breadcrumb.js.map +1 -0
- package/dist/ui/primitives/breadcrumb.mjs +97 -0
- package/dist/ui/primitives/breadcrumb.mjs.map +1 -0
- package/dist/ui/primitives/button.d.mts +15 -0
- package/dist/ui/primitives/button.d.ts +15 -0
- package/dist/ui/primitives/button.js +91 -0
- package/dist/ui/primitives/button.js.map +1 -0
- package/dist/ui/primitives/button.mjs +56 -0
- package/dist/ui/primitives/button.mjs.map +1 -0
- package/dist/ui/primitives/card.d.mts +10 -0
- package/dist/ui/primitives/card.d.ts +10 -0
- package/dist/ui/primitives/card.js +101 -0
- package/dist/ui/primitives/card.js.map +1 -0
- package/dist/ui/primitives/card.mjs +62 -0
- package/dist/ui/primitives/card.mjs.map +1 -0
- package/dist/ui/primitives/carousel.d.mts +45 -0
- package/dist/ui/primitives/carousel.d.ts +45 -0
- package/dist/ui/primitives/carousel.js +300 -0
- package/dist/ui/primitives/carousel.js.map +1 -0
- package/dist/ui/primitives/carousel.mjs +261 -0
- package/dist/ui/primitives/carousel.mjs.map +1 -0
- package/dist/ui/primitives/chart.d.mts +68 -0
- package/dist/ui/primitives/chart.d.ts +68 -0
- package/dist/ui/primitives/chart.js +280 -0
- package/dist/ui/primitives/chart.js.map +1 -0
- package/dist/ui/primitives/chart.mjs +241 -0
- package/dist/ui/primitives/chart.mjs.map +1 -0
- package/dist/ui/primitives/collapsible.d.mts +8 -0
- package/dist/ui/primitives/collapsible.d.ts +8 -0
- package/dist/ui/primitives/collapsible.js +72 -0
- package/dist/ui/primitives/collapsible.js.map +1 -0
- package/dist/ui/primitives/collapsible.mjs +36 -0
- package/dist/ui/primitives/collapsible.mjs.map +1 -0
- package/dist/ui/primitives/context-menu.d.mts +29 -0
- package/dist/ui/primitives/context-menu.d.ts +29 -0
- package/dist/ui/primitives/context-menu.js +203 -0
- package/dist/ui/primitives/context-menu.js.map +1 -0
- package/dist/ui/primitives/context-menu.mjs +155 -0
- package/dist/ui/primitives/context-menu.mjs.map +1 -0
- package/dist/ui/primitives/dialog.d.mts +26 -0
- package/dist/ui/primitives/dialog.d.ts +26 -0
- package/dist/ui/primitives/dialog.js +192 -0
- package/dist/ui/primitives/dialog.js.map +1 -0
- package/dist/ui/primitives/dialog.mjs +148 -0
- package/dist/ui/primitives/dialog.mjs.map +1 -0
- package/dist/ui/primitives/drawer.d.mts +26 -0
- package/dist/ui/primitives/drawer.d.ts +26 -0
- package/dist/ui/primitives/drawer.js +146 -0
- package/dist/ui/primitives/drawer.js.map +1 -0
- package/dist/ui/primitives/drawer.mjs +103 -0
- package/dist/ui/primitives/drawer.mjs.map +1 -0
- package/dist/ui/primitives/input.d.mts +5 -0
- package/dist/ui/primitives/input.d.ts +5 -0
- package/dist/ui/primitives/input.js +46 -0
- package/dist/ui/primitives/input.js.map +1 -0
- package/dist/ui/primitives/input.mjs +22 -0
- package/dist/ui/primitives/input.mjs.map +1 -0
- package/dist/ui/primitives/item.d.mts +27 -0
- package/dist/ui/primitives/item.d.ts +27 -0
- package/dist/ui/primitives/item.js +221 -0
- package/dist/ui/primitives/item.js.map +1 -0
- package/dist/ui/primitives/item.mjs +188 -0
- package/dist/ui/primitives/item.mjs.map +1 -0
- package/dist/ui/primitives/kbd.d.mts +15 -0
- package/dist/ui/primitives/kbd.d.ts +15 -0
- package/dist/ui/primitives/kbd.js +45 -0
- package/dist/ui/primitives/kbd.js.map +1 -0
- package/dist/ui/primitives/kbd.mjs +21 -0
- package/dist/ui/primitives/kbd.mjs.map +1 -0
- package/dist/ui/primitives/label.d.mts +6 -0
- package/dist/ui/primitives/label.d.ts +6 -0
- package/dist/ui/primitives/label.js +55 -0
- package/dist/ui/primitives/label.js.map +1 -0
- package/dist/ui/primitives/label.mjs +21 -0
- package/dist/ui/primitives/label.mjs.map +1 -0
- package/dist/ui/primitives/resizable.d.mts +10 -0
- package/dist/ui/primitives/resizable.d.ts +10 -0
- package/dist/ui/primitives/resizable.js +68 -0
- package/dist/ui/primitives/resizable.js.map +1 -0
- package/dist/ui/primitives/resizable.mjs +42 -0
- package/dist/ui/primitives/resizable.mjs.map +1 -0
- package/dist/ui/primitives/save-status.d.mts +31 -0
- package/dist/ui/primitives/save-status.d.ts +31 -0
- package/dist/ui/primitives/save-status.js +150 -0
- package/dist/ui/primitives/save-status.js.map +1 -0
- package/dist/ui/primitives/save-status.mjs +126 -0
- package/dist/ui/primitives/save-status.mjs.map +1 -0
- package/dist/ui/primitives/separator.d.mts +6 -0
- package/dist/ui/primitives/separator.d.ts +6 -0
- package/dist/ui/primitives/separator.js +62 -0
- package/dist/ui/primitives/separator.js.map +1 -0
- package/dist/ui/primitives/separator.mjs +28 -0
- package/dist/ui/primitives/separator.mjs.map +1 -0
- package/dist/ui/primitives/sheet.d.mts +16 -0
- package/dist/ui/primitives/sheet.d.ts +16 -0
- package/dist/ui/primitives/sheet.js +170 -0
- package/dist/ui/primitives/sheet.js.map +1 -0
- package/dist/ui/primitives/sheet.mjs +129 -0
- package/dist/ui/primitives/sheet.mjs.map +1 -0
- package/dist/ui/primitives/sidebar.d.mts +74 -0
- package/dist/ui/primitives/sidebar.d.ts +74 -0
- package/dist/ui/primitives/sidebar.js +697 -0
- package/dist/ui/primitives/sidebar.js.map +1 -0
- package/dist/ui/primitives/sidebar.mjs +651 -0
- package/dist/ui/primitives/sidebar.mjs.map +1 -0
- package/dist/ui/primitives/skeleton.d.mts +5 -0
- package/dist/ui/primitives/skeleton.d.ts +5 -0
- package/dist/ui/primitives/skeleton.js +40 -0
- package/dist/ui/primitives/skeleton.js.map +1 -0
- package/dist/ui/primitives/skeleton.mjs +16 -0
- package/dist/ui/primitives/skeleton.mjs.map +1 -0
- package/dist/ui/primitives/slider.d.mts +20 -0
- package/dist/ui/primitives/slider.d.ts +20 -0
- package/dist/ui/primitives/slider.js +112 -0
- package/dist/ui/primitives/slider.js.map +1 -0
- package/dist/ui/primitives/slider.mjs +78 -0
- package/dist/ui/primitives/slider.mjs.map +1 -0
- package/dist/ui/primitives/sortable.d.mts +50 -0
- package/dist/ui/primitives/sortable.d.ts +50 -0
- package/dist/ui/primitives/sortable.js +456 -0
- package/dist/ui/primitives/sortable.js.map +1 -0
- package/dist/ui/primitives/sortable.mjs +435 -0
- package/dist/ui/primitives/sortable.mjs.map +1 -0
- package/dist/ui/primitives/switch.d.mts +6 -0
- package/dist/ui/primitives/switch.d.ts +6 -0
- package/dist/ui/primitives/switch.js +67 -0
- package/dist/ui/primitives/switch.js.map +1 -0
- package/dist/ui/primitives/switch.mjs +33 -0
- package/dist/ui/primitives/switch.mjs.map +1 -0
- package/dist/ui/primitives/table.d.mts +12 -0
- package/dist/ui/primitives/table.d.ts +12 -0
- package/dist/ui/primitives/table.js +130 -0
- package/dist/ui/primitives/table.js.map +1 -0
- package/dist/ui/primitives/table.mjs +89 -0
- package/dist/ui/primitives/table.mjs.map +1 -0
- package/dist/ui/primitives/tabs.d.mts +9 -0
- package/dist/ui/primitives/tabs.d.ts +9 -0
- package/dist/ui/primitives/tabs.js +86 -0
- package/dist/ui/primitives/tabs.js.map +1 -0
- package/dist/ui/primitives/tabs.mjs +49 -0
- package/dist/ui/primitives/tabs.mjs.map +1 -0
- package/dist/ui/primitives/textarea.d.mts +5 -0
- package/dist/ui/primitives/textarea.d.ts +5 -0
- package/dist/ui/primitives/textarea.js +43 -0
- package/dist/ui/primitives/textarea.js.map +1 -0
- package/dist/ui/primitives/textarea.mjs +19 -0
- package/dist/ui/primitives/textarea.mjs.map +1 -0
- package/dist/ui/primitives/tooltip.d.mts +9 -0
- package/dist/ui/primitives/tooltip.d.ts +9 -0
- package/dist/ui/primitives/tooltip.js +94 -0
- package/dist/ui/primitives/tooltip.js.map +1 -0
- package/dist/ui/primitives/tooltip.mjs +57 -0
- package/dist/ui/primitives/tooltip.mjs.map +1 -0
- package/docs/agents.md +72 -29
- package/docs/api/README.md +6 -3
- package/docs/api/appObjects.d.ts +1 -1
- package/docs/api/appObjects.md +1 -1
- package/docs/api/by-path.md +29 -0
- package/docs/api/enrichment.d.ts +18 -0
- package/docs/api/enrichment.md +25 -4
- package/docs/api/objects.d.ts +72 -5
- package/docs/api/objects.md +84 -7
- package/docs/api/processLists.d.ts +247 -0
- package/docs/api/processLists.md +409 -0
- package/docs/api/reports.d.ts +476 -0
- package/docs/api/reports.md +539 -0
- package/docs/api/revenueLifecycle.d.ts +3 -1
- package/docs/api/revenueLifecycle.md +12 -2
- package/docs/api/scheduleBuy.d.ts +12 -8
- package/docs/api/scheduleBuy.md +13 -10
- package/docs/api/seo.d.ts +407 -4
- package/docs/api/seo.md +506 -2
- package/docs/api/workflows.md +46 -2
- package/docs/api/workspaceBackup.d.ts +324 -0
- package/docs/api/workspaceBackup.md +427 -0
- package/package.json +174 -5
- package/stacks/6sense.json +46 -0
- package/stacks/README.md +20 -0
- package/stacks/apollo.json +128 -0
- package/stacks/clay.json +59 -0
- package/stacks/gong.json +72 -0
- package/stacks/hubspot.json +162 -0
- package/stacks/intercom.json +53 -0
- package/stacks/mailchimp.json +71 -0
- package/stacks/outreach.json +86 -0
- package/stacks/salesforce.json +94 -0
- package/stacks/stack.schema.json +32 -0
- package/stacks/starter.json +22 -0
- package/styles/styles.css +2 -0
- package/styles/theme.css +181 -0
- package/styles/tokens.css +284 -0
- package/templates/next-app/README.md.tmpl +35 -0
- package/templates/next-app/_pages/redirect-page.tsx.tmpl +5 -0
- package/templates/next-app/_pages/route-page.tsx.tmpl +9 -0
- package/templates/next-app/app/globals.css.tmpl +8 -0
- package/templates/next-app/app/layout.tsx.tmpl +19 -0
- package/templates/next-app/components/app-shell.tsx.tmpl +34 -0
- package/templates/next-app/dot-env.local.example.tmpl +6 -0
- package/templates/next-app/dot-gitignore.tmpl +7 -0
- package/templates/next-app/lib/nav.ts.tmpl +2 -0
- package/templates/next-app/next.config.mjs.tmpl +4 -0
- package/templates/next-app/package.json.tmpl +25 -0
- package/templates/next-app/postcss.config.mjs.tmpl +4 -0
- package/templates/next-app/tsconfig.json.tmpl +21 -0
|
@@ -0,0 +1,539 @@
|
|
|
1
|
+
<!-- Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. -->
|
|
2
|
+
|
|
3
|
+
# `g8.api.reports`: Reports
|
|
4
|
+
|
|
5
|
+
7 operations (2 read, 4 write, 1 destructive).
|
|
6
|
+
|
|
7
|
+
No hand-written client covers this area. Call it through `g8.api.reports.*` 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: [reports.d.ts](reports.d.ts).
|
|
20
|
+
|
|
21
|
+
## Operations
|
|
22
|
+
|
|
23
|
+
| Call | HTTP | Tier | Scope | Summary |
|
|
24
|
+
|---|---|---|---|---|
|
|
25
|
+
| [`archiveObjectReportApi`](#op-archiveobjectreportapi) | `DELETE /api/v1/reports/{report_id}` | destructive | `objects:delete` | Archive Object Report Api |
|
|
26
|
+
| [`createObjectReportApi`](#op-createobjectreportapi) | `POST /api/v1/reports` | write | `objects:write` | Create Object Report Api |
|
|
27
|
+
| [`executeObjectReportApi`](#op-executeobjectreportapi) | `POST /api/v1/reports/{report_id}/execute` | write | `objects:read` | Execute Object Report Api |
|
|
28
|
+
| [`getObjectReportApi`](#op-getobjectreportapi) | `GET /api/v1/reports/{report_id}` | read | `objects:read` | Get Object Report Api |
|
|
29
|
+
| [`listObjectReportsApi`](#op-listobjectreportsapi) | `GET /api/v1/reports` | read | `objects:read` | List Object Reports Api |
|
|
30
|
+
| [`previewObjectReportApi`](#op-previewobjectreportapi) | `POST /api/v1/reports/preview` | write | `objects:read` | Preview Object Report Api |
|
|
31
|
+
| [`updateObjectReportApi`](#op-updateobjectreportapi) | `PATCH /api/v1/reports/{report_id}` | write | `objects:write` | Update Object Report Api |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
<a id="op-archiveobjectreportapi"></a>
|
|
36
|
+
|
|
37
|
+
### `g8.api.reports.archiveObjectReportApi(input)`
|
|
38
|
+
|
|
39
|
+
**Archive Object Report Api**
|
|
40
|
+
|
|
41
|
+
- HTTP: `DELETE /api/v1/reports/{report_id}`
|
|
42
|
+
- operationId: `archive_object_report_api_reports__report_id__delete` (also callable as `g8.api.call("archive_object_report_api_reports__report_id__delete", input)`)
|
|
43
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
44
|
+
- API-key scope: `objects:delete`
|
|
45
|
+
|
|
46
|
+
Delete (archive) a report this credential owns. Does not touch the source's records.
|
|
47
|
+
|
|
48
|
+
**Input**
|
|
49
|
+
|
|
50
|
+
| Field | Type | Required | Description |
|
|
51
|
+
|---|---|---|---|
|
|
52
|
+
| `path.report_id` | `string (uuid)` | yes | |
|
|
53
|
+
|
|
54
|
+
**Returns** `ApiResponse_NoneType_`: the envelope `{ data: null, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
55
|
+
|
|
56
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
57
|
+
|
|
58
|
+
**Example**
|
|
59
|
+
|
|
60
|
+
```ts
|
|
61
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
62
|
+
const result = await g8.api.reports.archiveObjectReportApi({ path: { report_id: "00000000-0000-0000-0000-000000000000" } });
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
<a id="op-createobjectreportapi"></a>
|
|
68
|
+
|
|
69
|
+
### `g8.api.reports.createObjectReportApi(input)`
|
|
70
|
+
|
|
71
|
+
**Create Object Report Api**
|
|
72
|
+
|
|
73
|
+
- HTTP: `POST /api/v1/reports`
|
|
74
|
+
- operationId: `create_object_report_api_reports_post` (also callable as `g8.api.call("create_object_report_api_reports_post", input)`)
|
|
75
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
76
|
+
- API-key scope: `objects:write`
|
|
77
|
+
|
|
78
|
+
Save a report owned by this credential. Private by default; a shared one (``visibility: "org"``) needs
|
|
79
|
+
``objects:manage`` and current Admin access. Fields the credential cannot see are unknown to it.
|
|
80
|
+
|
|
81
|
+
**Input**
|
|
82
|
+
|
|
83
|
+
| Field | Type | Required | Description |
|
|
84
|
+
|---|---|---|---|
|
|
85
|
+
| `body` | `ReportCreate` | yes | Request body; fields below. |
|
|
86
|
+
|
|
87
|
+
Body fields (`ReportCreate`):
|
|
88
|
+
|
|
89
|
+
| Field | Type | Required | Description |
|
|
90
|
+
|---|---|---|---|
|
|
91
|
+
| `body.chart_type` | `"table" \| "bar" \| "line" \| "funnel" \| "stage_over_time" \| "time_in_stage"` | yes | |
|
|
92
|
+
| `body.config` | `ReportConfig` | yes | |
|
|
93
|
+
| `body.object_slug` | `string` | yes | min length 1, max length 100 |
|
|
94
|
+
| `body.title` | `string` | yes | min length 1, max length 200 |
|
|
95
|
+
| `body.description` | `string \| null` | no | max length 2000 |
|
|
96
|
+
| `body.visibility` | `"private" \| "org"` | no | default `"private"` |
|
|
97
|
+
|
|
98
|
+
**Returns** `ApiResponse_ReportDefinitionResponse_`: the envelope `{ data: ReportDefinitionResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
99
|
+
|
|
100
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
101
|
+
|
|
102
|
+
`ReportDefinitionResponse` fields:
|
|
103
|
+
|
|
104
|
+
| Field | Type | Required | Description |
|
|
105
|
+
|---|---|---|---|
|
|
106
|
+
| `can_delete` | `boolean` | yes | |
|
|
107
|
+
| `can_edit` | `boolean` | yes | |
|
|
108
|
+
| `chart_type` | `"table" \| "bar" \| "line" \| "funnel" \| "stage_over_time" \| "time_in_stage"` | yes | |
|
|
109
|
+
| `config` | `Record<string, unknown>` | yes | |
|
|
110
|
+
| `created_at` | `string (date-time)` | yes | |
|
|
111
|
+
| `id` | `string (uuid)` | yes | |
|
|
112
|
+
| `is_owner` | `boolean` | yes | |
|
|
113
|
+
| `owner` | `ReportOwner` | yes | |
|
|
114
|
+
| `revision` | `integer` | yes | |
|
|
115
|
+
| `source` | `ReportSource` | yes | |
|
|
116
|
+
| `title` | `string` | yes | |
|
|
117
|
+
| `updated_at` | `string (date-time)` | yes | |
|
|
118
|
+
| `visibility` | `"private" \| "org"` | yes | |
|
|
119
|
+
| `description` | `string \| null` | no | |
|
|
120
|
+
| `restricted` | `Array<RestrictedComponent>` | no | |
|
|
121
|
+
| `restricted_count` | `integer` | no | default `0` |
|
|
122
|
+
|
|
123
|
+
**Example**
|
|
124
|
+
|
|
125
|
+
```ts
|
|
126
|
+
const result = await g8.api.reports.createObjectReportApi({
|
|
127
|
+
body: {
|
|
128
|
+
chart_type: "table",
|
|
129
|
+
config: {},
|
|
130
|
+
object_slug: "example",
|
|
131
|
+
title: "Example",
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
<a id="op-executeobjectreportapi"></a>
|
|
139
|
+
|
|
140
|
+
### `g8.api.reports.executeObjectReportApi(input)`
|
|
141
|
+
|
|
142
|
+
**Execute Object Report Api**
|
|
143
|
+
|
|
144
|
+
- HTTP: `POST /api/v1/reports/{report_id}/execute`
|
|
145
|
+
- operationId: `execute_object_report_api_reports__report_id__execute_post` (also callable as `g8.api.call("execute_object_report_api_reports__report_id__execute_post", input)`)
|
|
146
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
147
|
+
- API-key scope: `objects:read`
|
|
148
|
+
|
|
149
|
+
Run a saved report as this credential, now or as of a past date; with ``drilldown`` open the records behind a
|
|
150
|
+
number. A source that was archived is a 409; a config the schema no longer fits is a 422; over 10 s is a 504.
|
|
151
|
+
|
|
152
|
+
**Input**
|
|
153
|
+
|
|
154
|
+
| Field | Type | Required | Description |
|
|
155
|
+
|---|---|---|---|
|
|
156
|
+
| `path.report_id` | `string (uuid)` | yes | |
|
|
157
|
+
| `body` | `ReportRun` | yes | Request body; fields below. |
|
|
158
|
+
|
|
159
|
+
Body fields (`ReportRun`):
|
|
160
|
+
|
|
161
|
+
| Field | Type | Required | Description |
|
|
162
|
+
|---|---|---|---|
|
|
163
|
+
| `body.as_of` | `string (date) \| null` | no | |
|
|
164
|
+
| `body.drilldown` | `DrilldownRequest \| null` | no | |
|
|
165
|
+
|
|
166
|
+
**Returns** `ReportRunApiResponse`: the envelope `{ data: ReportResult | DrilldownResult, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
167
|
+
|
|
168
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
169
|
+
|
|
170
|
+
**Example**
|
|
171
|
+
|
|
172
|
+
```ts
|
|
173
|
+
const result = await g8.api.reports.executeObjectReportApi({
|
|
174
|
+
path: { report_id: "00000000-0000-0000-0000-000000000000" },
|
|
175
|
+
body: {},
|
|
176
|
+
});
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
<a id="op-getobjectreportapi"></a>
|
|
182
|
+
|
|
183
|
+
### `g8.api.reports.getObjectReportApi(input)`
|
|
184
|
+
|
|
185
|
+
**Get Object Report Api**
|
|
186
|
+
|
|
187
|
+
- HTTP: `GET /api/v1/reports/{report_id}`
|
|
188
|
+
- operationId: `get_object_report_api_reports__report_id__get` (also callable as `g8.api.call("get_object_report_api_reports__report_id__get", input)`)
|
|
189
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
190
|
+
- API-key scope: `objects:read`
|
|
191
|
+
|
|
192
|
+
One report. A part of it this credential cannot see comes back as ``{"id": ..., "restricted": true}``.
|
|
193
|
+
|
|
194
|
+
**Input**
|
|
195
|
+
|
|
196
|
+
| Field | Type | Required | Description |
|
|
197
|
+
|---|---|---|---|
|
|
198
|
+
| `path.report_id` | `string (uuid)` | yes | |
|
|
199
|
+
|
|
200
|
+
**Returns** `ApiResponse_ReportDefinitionResponse_`: the envelope `{ data: ReportDefinitionResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
201
|
+
|
|
202
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
203
|
+
|
|
204
|
+
`ReportDefinitionResponse` fields:
|
|
205
|
+
|
|
206
|
+
| Field | Type | Required | Description |
|
|
207
|
+
|---|---|---|---|
|
|
208
|
+
| `can_delete` | `boolean` | yes | |
|
|
209
|
+
| `can_edit` | `boolean` | yes | |
|
|
210
|
+
| `chart_type` | `"table" \| "bar" \| "line" \| "funnel" \| "stage_over_time" \| "time_in_stage"` | yes | |
|
|
211
|
+
| `config` | `Record<string, unknown>` | yes | |
|
|
212
|
+
| `created_at` | `string (date-time)` | yes | |
|
|
213
|
+
| `id` | `string (uuid)` | yes | |
|
|
214
|
+
| `is_owner` | `boolean` | yes | |
|
|
215
|
+
| `owner` | `ReportOwner` | yes | |
|
|
216
|
+
| `revision` | `integer` | yes | |
|
|
217
|
+
| `source` | `ReportSource` | yes | |
|
|
218
|
+
| `title` | `string` | yes | |
|
|
219
|
+
| `updated_at` | `string (date-time)` | yes | |
|
|
220
|
+
| `visibility` | `"private" \| "org"` | yes | |
|
|
221
|
+
| `description` | `string \| null` | no | |
|
|
222
|
+
| `restricted` | `Array<RestrictedComponent>` | no | |
|
|
223
|
+
| `restricted_count` | `integer` | no | default `0` |
|
|
224
|
+
|
|
225
|
+
**Example**
|
|
226
|
+
|
|
227
|
+
```ts
|
|
228
|
+
const result = await g8.api.reports.getObjectReportApi({ path: { report_id: "00000000-0000-0000-0000-000000000000" } });
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
<a id="op-listobjectreportsapi"></a>
|
|
234
|
+
|
|
235
|
+
### `g8.api.reports.listObjectReportsApi(input?)`
|
|
236
|
+
|
|
237
|
+
**List Object Reports Api**
|
|
238
|
+
|
|
239
|
+
- HTTP: `GET /api/v1/reports`
|
|
240
|
+
- operationId: `list_object_reports_api_reports_get` (also callable as `g8.api.call("list_object_reports_api_reports_get", input)`)
|
|
241
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
242
|
+
- API-key scope: `objects:read`
|
|
243
|
+
|
|
244
|
+
List the reports this credential may open: its own, and shared ones whose source it can read. ``owner=me``
|
|
245
|
+
narrows to this credential's. ``can_share`` says whether it may save a shared report.
|
|
246
|
+
|
|
247
|
+
**Input**
|
|
248
|
+
|
|
249
|
+
| Field | Type | Required | Description |
|
|
250
|
+
|---|---|---|---|
|
|
251
|
+
| `query.object_slug` | `string \| null` | no | |
|
|
252
|
+
| `query.owner` | `string \| null` | no | |
|
|
253
|
+
| `query.visibility` | `string \| null` | no | |
|
|
254
|
+
| `query.limit` | `integer` | no | default `50` |
|
|
255
|
+
| `query.offset` | `integer` | no | default `0` |
|
|
256
|
+
|
|
257
|
+
**Returns** `ApiResponse_ReportListResponse_`: the envelope `{ data: ReportListResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
258
|
+
|
|
259
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
260
|
+
|
|
261
|
+
`ReportListResponse` fields:
|
|
262
|
+
|
|
263
|
+
| Field | Type | Required | Description |
|
|
264
|
+
|---|---|---|---|
|
|
265
|
+
| `can_share` | `boolean` | yes | |
|
|
266
|
+
| `reports` | `Array<ReportDefinitionResponse>` | yes | |
|
|
267
|
+
| `total` | `integer` | yes | |
|
|
268
|
+
|
|
269
|
+
**Example**
|
|
270
|
+
|
|
271
|
+
```ts
|
|
272
|
+
const result = await g8.api.reports.listObjectReportsApi();
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
<a id="op-previewobjectreportapi"></a>
|
|
278
|
+
|
|
279
|
+
### `g8.api.reports.previewObjectReportApi(input)`
|
|
280
|
+
|
|
281
|
+
**Preview Object Report Api**
|
|
282
|
+
|
|
283
|
+
- HTTP: `POST /api/v1/reports/preview`
|
|
284
|
+
- operationId: `preview_object_report_api_reports_preview_post` (also callable as `g8.api.call("preview_object_report_api_reports_preview_post", input)`)
|
|
285
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
286
|
+
- API-key scope: `objects:read`
|
|
287
|
+
|
|
288
|
+
Run an unsaved report with this credential's own access and a 10 second budget (nothing partial is returned).
|
|
289
|
+
|
|
290
|
+
**Input**
|
|
291
|
+
|
|
292
|
+
| Field | Type | Required | Description |
|
|
293
|
+
|---|---|---|---|
|
|
294
|
+
| `body` | `ReportPreview` | yes | Request body; fields below. |
|
|
295
|
+
|
|
296
|
+
Body fields (`ReportPreview`):
|
|
297
|
+
|
|
298
|
+
| Field | Type | Required | Description |
|
|
299
|
+
|---|---|---|---|
|
|
300
|
+
| `body.chart_type` | `"table" \| "bar" \| "line" \| "funnel" \| "stage_over_time" \| "time_in_stage"` | yes | |
|
|
301
|
+
| `body.config` | `ReportConfig` | yes | |
|
|
302
|
+
| `body.object_slug` | `string` | yes | min length 1, max length 100 |
|
|
303
|
+
| `body.as_of` | `string (date) \| null` | no | |
|
|
304
|
+
|
|
305
|
+
**Returns** `ApiResponse_ReportResult_`: the envelope `{ data: ReportResult, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
306
|
+
|
|
307
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
308
|
+
|
|
309
|
+
`ReportResult` fields:
|
|
310
|
+
|
|
311
|
+
| Field | Type | Required | Description |
|
|
312
|
+
|---|---|---|---|
|
|
313
|
+
| `chart_type` | `"table" \| "bar" \| "line" \| "funnel" \| "stage_over_time" \| "time_in_stage"` | yes | |
|
|
314
|
+
| `source` | `ReportSource` | yes | |
|
|
315
|
+
| `timezone` | `string` | yes | |
|
|
316
|
+
| `as_of` | `AsOf \| null` | no | |
|
|
317
|
+
| `chart_limit` | `integer` | no | default `20` |
|
|
318
|
+
| `chart_other` | `ChartOther \| null` | no | |
|
|
319
|
+
| `chart_truncated` | `boolean` | no | default `false` |
|
|
320
|
+
| `columns` | `Array<ResultColumn>` | no | |
|
|
321
|
+
| `disclosures` | `Array<string>` | no | |
|
|
322
|
+
| `gaps` | `Array<GapNote>` | no | |
|
|
323
|
+
| `history_supported` | `boolean` | no | default `true` |
|
|
324
|
+
| `kind` | `"result"` | no | default `"result"` |
|
|
325
|
+
| `restricted` | `Array<RestrictedComponent>` | no | |
|
|
326
|
+
| `row_limit` | `integer` | no | default `500` |
|
|
327
|
+
| `rows` | `Array<ResultRow>` | no | |
|
|
328
|
+
| `status` | `"ok" \| "restricted"` | no | default `"ok"` |
|
|
329
|
+
| `total_base_records` | `integer` | no | default `0` |
|
|
330
|
+
| `total_groups` | `integer` | no | default `0` |
|
|
331
|
+
| `totals` | `ResultTotals \| null` | no | |
|
|
332
|
+
| `truncated` | `boolean` | no | default `false` |
|
|
333
|
+
|
|
334
|
+
**Example**
|
|
335
|
+
|
|
336
|
+
```ts
|
|
337
|
+
const result = await g8.api.reports.previewObjectReportApi({ body: { chart_type: "table", config: {}, object_slug: "example" } });
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
---
|
|
341
|
+
|
|
342
|
+
<a id="op-updateobjectreportapi"></a>
|
|
343
|
+
|
|
344
|
+
### `g8.api.reports.updateObjectReportApi(input)`
|
|
345
|
+
|
|
346
|
+
**Update Object Report Api**
|
|
347
|
+
|
|
348
|
+
- HTTP: `PATCH /api/v1/reports/{report_id}`
|
|
349
|
+
- operationId: `update_object_report_api_reports__report_id__patch` (also callable as `g8.api.call("update_object_report_api_reports__report_id__patch", input)`)
|
|
350
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
351
|
+
- API-key scope: `objects:write`
|
|
352
|
+
|
|
353
|
+
Edit a report this credential owns. ``expected_revision`` guards a concurrent edit (409).
|
|
354
|
+
|
|
355
|
+
**Input**
|
|
356
|
+
|
|
357
|
+
| Field | Type | Required | Description |
|
|
358
|
+
|---|---|---|---|
|
|
359
|
+
| `path.report_id` | `string (uuid)` | yes | |
|
|
360
|
+
| `body` | `ReportUpdate` | yes | Request body; fields below. |
|
|
361
|
+
|
|
362
|
+
Body fields (`ReportUpdate`):
|
|
363
|
+
|
|
364
|
+
| Field | Type | Required | Description |
|
|
365
|
+
|---|---|---|---|
|
|
366
|
+
| `body.chart_type` | `"table" \| "bar" \| "line" \| "funnel" \| "stage_over_time" \| "time_in_stage" \| null` | no | |
|
|
367
|
+
| `body.config` | `ReportConfig \| null` | no | |
|
|
368
|
+
| `body.description` | `string \| null` | no | max length 2000 |
|
|
369
|
+
| `body.expected_revision` | `integer \| null` | no | min 1 |
|
|
370
|
+
| `body.title` | `string \| null` | no | min length 1, max length 200 |
|
|
371
|
+
| `body.visibility` | `"private" \| "org" \| null` | no | |
|
|
372
|
+
|
|
373
|
+
**Returns** `ApiResponse_ReportDefinitionResponse_`: the envelope `{ data: ReportDefinitionResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
374
|
+
|
|
375
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
376
|
+
|
|
377
|
+
`ReportDefinitionResponse` fields:
|
|
378
|
+
|
|
379
|
+
| Field | Type | Required | Description |
|
|
380
|
+
|---|---|---|---|
|
|
381
|
+
| `can_delete` | `boolean` | yes | |
|
|
382
|
+
| `can_edit` | `boolean` | yes | |
|
|
383
|
+
| `chart_type` | `"table" \| "bar" \| "line" \| "funnel" \| "stage_over_time" \| "time_in_stage"` | yes | |
|
|
384
|
+
| `config` | `Record<string, unknown>` | yes | |
|
|
385
|
+
| `created_at` | `string (date-time)` | yes | |
|
|
386
|
+
| `id` | `string (uuid)` | yes | |
|
|
387
|
+
| `is_owner` | `boolean` | yes | |
|
|
388
|
+
| `owner` | `ReportOwner` | yes | |
|
|
389
|
+
| `revision` | `integer` | yes | |
|
|
390
|
+
| `source` | `ReportSource` | yes | |
|
|
391
|
+
| `title` | `string` | yes | |
|
|
392
|
+
| `updated_at` | `string (date-time)` | yes | |
|
|
393
|
+
| `visibility` | `"private" \| "org"` | yes | |
|
|
394
|
+
| `description` | `string \| null` | no | |
|
|
395
|
+
| `restricted` | `Array<RestrictedComponent>` | no | |
|
|
396
|
+
| `restricted_count` | `integer` | no | default `0` |
|
|
397
|
+
|
|
398
|
+
**Example**
|
|
399
|
+
|
|
400
|
+
```ts
|
|
401
|
+
const result = await g8.api.reports.updateObjectReportApi({
|
|
402
|
+
path: { report_id: "00000000-0000-0000-0000-000000000000" },
|
|
403
|
+
body: {},
|
|
404
|
+
});
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
---
|
|
408
|
+
|
|
409
|
+
## Referenced types
|
|
410
|
+
|
|
411
|
+
Named types that appear in the tables above. Full TypeScript definitions: `G8Contract.<Name>` (`import type { G8Contract } from "@graph8/sdk"`).
|
|
412
|
+
|
|
413
|
+
<a id="type-asof"></a>
|
|
414
|
+
|
|
415
|
+
### `AsOf`
|
|
416
|
+
|
|
417
|
+
| Field | Type | Required | Description |
|
|
418
|
+
|---|---|---|---|
|
|
419
|
+
| `date` | `string (date)` | yes | |
|
|
420
|
+
| `instant` | `string (date-time)` | yes | |
|
|
421
|
+
| `timezone` | `string` | yes | |
|
|
422
|
+
|
|
423
|
+
<a id="type-chartother"></a>
|
|
424
|
+
|
|
425
|
+
### `ChartOther`
|
|
426
|
+
|
|
427
|
+
What the chart folds into "Other": every group beyond ``chart_limit``. Only additive measures (count, sum, related_count) are filled in; an average, minimum or maximum cannot be folded and is None.
|
|
428
|
+
|
|
429
|
+
| Field | Type | Required | Description |
|
|
430
|
+
|---|---|---|---|
|
|
431
|
+
| `group_count` | `integer` | yes | |
|
|
432
|
+
| `measures` | `Record<string, number \| integer \| null>` | yes | |
|
|
433
|
+
| `record_count` | `integer` | yes | |
|
|
434
|
+
|
|
435
|
+
<a id="type-drilldownrequest"></a>
|
|
436
|
+
|
|
437
|
+
### `DrilldownRequest`
|
|
438
|
+
|
|
439
|
+
Open the records behind one number: ``target`` is a result row's ``drilldown``, echoed back unchanged.
|
|
440
|
+
|
|
441
|
+
| Field | Type | Required | Description |
|
|
442
|
+
|---|---|---|---|
|
|
443
|
+
| `target` | `GroupTarget \| StageTarget \| SnapshotTarget \| AllTarget` | yes | |
|
|
444
|
+
| `after_record_id` | `string (uuid) \| null` | no | |
|
|
445
|
+
| `limit` | `integer` | no | default `50`, min 1, max 200 |
|
|
446
|
+
|
|
447
|
+
<a id="type-gapnote"></a>
|
|
448
|
+
|
|
449
|
+
### `GapNote`
|
|
450
|
+
|
|
451
|
+
| Field | Type | Required | Description |
|
|
452
|
+
|---|---|---|---|
|
|
453
|
+
| `component` | `string` | yes | |
|
|
454
|
+
| `records` | `integer` | yes | |
|
|
455
|
+
| `kind` | `"no_history"` | no | default `"no_history"` |
|
|
456
|
+
|
|
457
|
+
<a id="type-reportconfig"></a>
|
|
458
|
+
|
|
459
|
+
### `ReportConfig`
|
|
460
|
+
|
|
461
|
+
What a report computes. ``timezone`` (an IANA name) fixes how dates are bucketed and what "end of day" means; when absent the organization's time zone applies (never the server's).
|
|
462
|
+
|
|
463
|
+
| Field | Type | Required | Description |
|
|
464
|
+
|---|---|---|---|
|
|
465
|
+
| `filters` | `Array<ReportFilter>` | no | max items 10 |
|
|
466
|
+
| `group_by` | `Array<ReportGroupBy>` | no | max items 3 |
|
|
467
|
+
| `measures` | `Array<ReportMeasure>` | no | max items 10 |
|
|
468
|
+
| `range` | `ReportRange \| null` | no | |
|
|
469
|
+
| `stage` | `ReportStage \| null` | no | |
|
|
470
|
+
| `timezone` | `string \| null` | no | max length 64 |
|
|
471
|
+
|
|
472
|
+
<a id="type-reportowner"></a>
|
|
473
|
+
|
|
474
|
+
### `ReportOwner`
|
|
475
|
+
|
|
476
|
+
| Field | Type | Required | Description |
|
|
477
|
+
|---|---|---|---|
|
|
478
|
+
| `id` | `string \| null` | no | |
|
|
479
|
+
| `is_you` | `boolean` | no | default `false` |
|
|
480
|
+
| `name` | `string \| null` | no | |
|
|
481
|
+
|
|
482
|
+
<a id="type-reportsource"></a>
|
|
483
|
+
|
|
484
|
+
### `ReportSource`
|
|
485
|
+
|
|
486
|
+
| Field | Type | Required | Description |
|
|
487
|
+
|---|---|---|---|
|
|
488
|
+
| `kind` | `"object" \| "process_list"` | yes | |
|
|
489
|
+
| `plural_noun` | `string` | yes | |
|
|
490
|
+
| `singular_noun` | `string` | yes | |
|
|
491
|
+
| `slug` | `string` | yes | |
|
|
492
|
+
| `is_archived` | `boolean` | no | default `false` |
|
|
493
|
+
|
|
494
|
+
<a id="type-restrictedcomponent"></a>
|
|
495
|
+
|
|
496
|
+
### `RestrictedComponent`
|
|
497
|
+
|
|
498
|
+
A part of a report the viewer may not see. Hidden means ABSENT: it carries no title, no object name, no type and no reason, only its position id (``m0`` the first measure, ``g0`` the first group-by, ``f0`` the first filter, ``stage`` the stage field), so a client can lock that slot in place.
|
|
499
|
+
|
|
500
|
+
| Field | Type | Required | Description |
|
|
501
|
+
|---|---|---|---|
|
|
502
|
+
| `id` | `string` | yes | |
|
|
503
|
+
| `restricted` | `true` | no | default `true` |
|
|
504
|
+
|
|
505
|
+
<a id="type-resultcolumn"></a>
|
|
506
|
+
|
|
507
|
+
### `ResultColumn`
|
|
508
|
+
|
|
509
|
+
| Field | Type | Required | Description |
|
|
510
|
+
|---|---|---|---|
|
|
511
|
+
| `id` | `string` | yes | |
|
|
512
|
+
| `kind` | `"group_by" \| "measure" \| "stage" \| "gap"` | yes | |
|
|
513
|
+
| `grain` | `"day" \| "week" \| "month" \| "quarter" \| "year" \| null` | no | |
|
|
514
|
+
| `label` | `string \| null` | no | |
|
|
515
|
+
| `restricted` | `boolean` | no | default `false` |
|
|
516
|
+
| `value_type` | `string \| null` | no | |
|
|
517
|
+
|
|
518
|
+
<a id="type-resultrow"></a>
|
|
519
|
+
|
|
520
|
+
### `ResultRow`
|
|
521
|
+
|
|
522
|
+
| Field | Type | Required | Description |
|
|
523
|
+
|---|---|---|---|
|
|
524
|
+
| `drilldown` | `GroupTarget \| StageTarget \| SnapshotTarget \| AllTarget` | yes | |
|
|
525
|
+
| `key` | `string` | yes | |
|
|
526
|
+
| `group` | `Array<GroupValue>` | no | |
|
|
527
|
+
| `measures` | `Record<string, number \| integer \| null>` | no | |
|
|
528
|
+
| `partial` | `boolean` | no | default `false` |
|
|
529
|
+
| `record_count` | `integer` | no | default `0` |
|
|
530
|
+
| `unstaged` | `Record<string, integer>` | no | |
|
|
531
|
+
|
|
532
|
+
<a id="type-resulttotals"></a>
|
|
533
|
+
|
|
534
|
+
### `ResultTotals`
|
|
535
|
+
|
|
536
|
+
| Field | Type | Required | Description |
|
|
537
|
+
|---|---|---|---|
|
|
538
|
+
| `record_count` | `integer` | yes | |
|
|
539
|
+
| `measures` | `Record<string, number \| integer \| null>` | no | |
|
|
@@ -153,7 +153,9 @@ export interface LifecycleRecordItem {
|
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
export interface LifecycleStageMoveRequest {
|
|
156
|
-
/**
|
|
156
|
+
/** Confirm a move to Customers of a company with no subscription (or a contact with no company or whose company has none). Without it such a move is refused with 409 and detail.code 'customers_without_subscription'. */
|
|
157
|
+
confirm_without_subscription?: boolean;
|
|
158
|
+
/** Run every check the move runs (record exists, stage known, Customers/Churned guards, the no-subscription confirmation) and return the would-be transition without writing anything. */
|
|
157
159
|
dry_run?: boolean;
|
|
158
160
|
/** Destination lifecycle slug, e.g. 'suspects', 'leads', 'trials', 'customers', 'churned'. Case and surrounding whitespace are ignored, and a stage's display name is accepted too. */
|
|
159
161
|
target_slug: string;
|
|
@@ -191,6 +191,10 @@ with a 400 unless the company is or was a customer. `target_slug` ignores
|
|
|
191
191
|
case and surrounding whitespace. `dry_run: true` runs every check and
|
|
192
192
|
returns the would-be transition without writing anything.
|
|
193
193
|
|
|
194
|
+
A move to `customers` of a company with no subscription at all is a 409
|
|
195
|
+
(`detail.code` 'customers_without_subscription', `detail.message` names the
|
|
196
|
+
company) unless `confirm_without_subscription: true` is sent (R3-30).
|
|
197
|
+
|
|
194
198
|
**Input**
|
|
195
199
|
|
|
196
200
|
| Field | Type | Required | Description |
|
|
@@ -203,7 +207,8 @@ Body fields (`LifecycleStageMoveRequest`):
|
|
|
203
207
|
| Field | Type | Required | Description |
|
|
204
208
|
|---|---|---|---|
|
|
205
209
|
| `body.target_slug` | `string` | yes | Destination lifecycle slug, e.g. 'suspects', 'leads', 'trials', 'customers', 'churned'. Case and surrounding whitespace are ignored, and a stage's display name is accepted too. |
|
|
206
|
-
| `body.
|
|
210
|
+
| `body.confirm_without_subscription` | `boolean` | no | Confirm a move to Customers of a company with no subscription (or a contact with no company or whose company has none). Without it such a move is refused with 409 and detail.code 'customers_without_subscription'. default `false` |
|
|
211
|
+
| `body.dry_run` | `boolean` | no | Run every check the move runs (record exists, stage known, Customers/Churned guards, the no-subscription confirmation) and return the would-be transition without writing anything. default `false` |
|
|
207
212
|
|
|
208
213
|
**Returns** `ApiResponse_LifecycleStageMoveResponse_`: the envelope `{ data: LifecycleStageMoveResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
209
214
|
|
|
@@ -247,6 +252,10 @@ yet, which is common for Suspects-stage contacts), and records the same
|
|
|
247
252
|
audit trail the in-app Move-Stage dialog's contact mode does. Returns no
|
|
248
253
|
contact PII (see the module docstring) — only the status transition.
|
|
249
254
|
|
|
255
|
+
A move to `customers` of a contact with no company, or whose company has no
|
|
256
|
+
subscription, is a 409 (`detail.code` 'customers_without_subscription')
|
|
257
|
+
unless `confirm_without_subscription: true` is sent (R3-31).
|
|
258
|
+
|
|
250
259
|
**Input**
|
|
251
260
|
|
|
252
261
|
| Field | Type | Required | Description |
|
|
@@ -259,7 +268,8 @@ Body fields (`LifecycleStageMoveRequest`):
|
|
|
259
268
|
| Field | Type | Required | Description |
|
|
260
269
|
|---|---|---|---|
|
|
261
270
|
| `body.target_slug` | `string` | yes | Destination lifecycle slug, e.g. 'suspects', 'leads', 'trials', 'customers', 'churned'. Case and surrounding whitespace are ignored, and a stage's display name is accepted too. |
|
|
262
|
-
| `body.
|
|
271
|
+
| `body.confirm_without_subscription` | `boolean` | no | Confirm a move to Customers of a company with no subscription (or a contact with no company or whose company has none). Without it such a move is refused with 409 and detail.code 'customers_without_subscription'. default `false` |
|
|
272
|
+
| `body.dry_run` | `boolean` | no | Run every check the move runs (record exists, stage known, Customers/Churned guards, the no-subscription confirmation) and return the would-be transition without writing anything. default `false` |
|
|
263
273
|
|
|
264
274
|
**Returns** `ApiResponse_LifecycleStageMoveResponse_`: the envelope `{ data: LifecycleStageMoveResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
265
275
|
|
|
@@ -245,10 +245,10 @@ export interface ScheduleBuyDomainSuggestRequest {
|
|
|
245
245
|
/**
|
|
246
246
|
* Create and LOCK a staggered buying plan. PLACES REAL CREDIT HOLDS.
|
|
247
247
|
*
|
|
248
|
-
* Mirrors the app's ``CreatePlanRequest`` field for field, including
|
|
249
|
-
*
|
|
250
|
-
* ``
|
|
251
|
-
*
|
|
248
|
+
* Mirrors the app's ``CreatePlanRequest`` field for field, including the
|
|
249
|
+
* rule that new plans require ``persona_ids``. Manual ``registrants`` /
|
|
250
|
+
* ``mailbox_aliases`` are still parsed so a legacy payload 422s here
|
|
251
|
+
* rather than inside the proxy.
|
|
252
252
|
*/
|
|
253
253
|
export interface ScheduleBuyPlanRequest {
|
|
254
254
|
/** Sends per mailbox per day */
|
|
@@ -261,15 +261,15 @@ export interface ScheduleBuyPlanRequest {
|
|
|
261
261
|
domains_per_batch?: number;
|
|
262
262
|
/** Idle mailboxes you already hold, from /suggest */
|
|
263
263
|
idle_mailboxes_snapshot: number;
|
|
264
|
-
/**
|
|
264
|
+
/** Not accepted for new plans. Use persona_ids. */
|
|
265
265
|
mailbox_aliases?: Array<Record<string, unknown>>;
|
|
266
266
|
/** Mailboxes bought on each domain */
|
|
267
267
|
mailboxes_per_domain?: number;
|
|
268
|
-
/** Sender
|
|
268
|
+
/** Sender identity IDs. At least one is required to start a schedule. */
|
|
269
269
|
persona_ids?: Array<number> | null;
|
|
270
|
-
/**
|
|
270
|
+
/** Not accepted for new plans. Use persona_ids. */
|
|
271
271
|
registrants?: Array<Record<string, unknown>>;
|
|
272
|
-
/** Adopt these owned
|
|
272
|
+
/** Adopt these owned domains instead of buying. Each must have fewer live mailboxes than mailboxes_per_domain; the plan tops it up and holds credits for exactly the missing ones */
|
|
273
273
|
reuse_domains?: Array<string> | null;
|
|
274
274
|
/** Sending days assumed per month */
|
|
275
275
|
sending_days_per_month?: number;
|
|
@@ -292,6 +292,10 @@ export interface ScheduleBuySuggestRequest {
|
|
|
292
292
|
domains_per_batch?: number;
|
|
293
293
|
/** Mailboxes bought on each domain */
|
|
294
294
|
mailboxes_per_domain?: number;
|
|
295
|
+
/** Price a REUSE plan over this many owned domains instead */
|
|
296
|
+
reuse_domain_count?: number | null;
|
|
297
|
+
/** With reuse_domain_count: the total mailboxes those domains are missing (each domain: mailboxes_per_domain minus its live mailboxes). Omitted, every domain is priced as empty */
|
|
298
|
+
reuse_missing_mailboxes?: number | null;
|
|
295
299
|
/** Sending days assumed per month */
|
|
296
300
|
sending_days_per_month?: number;
|
|
297
301
|
/** Contacts you intend to reach per month */
|