@graph8/sdk 0.308.1 → 0.357.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 +1440 -21
- package/dist/index.d.ts +1440 -21
- 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 +1340 -18
- package/dist/react.d.ts +1340 -18
- 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/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/scheduleBuy.d.ts +12 -8
- package/docs/api/scheduleBuy.md +13 -10
- package/docs/api/seo.d.ts +406 -3
- package/docs/api/seo.md +505 -1
- 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
package/docs/api/objects.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# `g8.api.objects`: Objects
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
42 operations (14 read, 22 write, 6 destructive).
|
|
6
6
|
|
|
7
7
|
18 of these also have a hand-written method (`g8.objects`), marked **★** below. Prefer the hand-written method when one exists: it unwraps the `data` envelope and takes friendlier arguments. See [../sdk-clients.md](../sdk-clients.md).
|
|
8
8
|
|
|
@@ -63,6 +63,7 @@ Exact TypeScript types for every operation on this page, and every schema they u
|
|
|
63
63
|
| [`updateObjectRecord`](#op-updateobjectrecord) ★ | `PATCH /api/v1/objects/{object_slug}/records/{record_id}` | write | `objects:write` | Update Object Record |
|
|
64
64
|
| [`updateObjectView`](#op-updateobjectview) | `PUT /api/v1/objects/{object_slug}/views/{view_id}` | write | `objects:write` | Update Object View |
|
|
65
65
|
| [`upsertObjectRecord`](#op-upsertobjectrecord) ★ | `POST /api/v1/objects/{object_slug}/records/upsert` | write | `objects:write` | Upsert Object Record |
|
|
66
|
+
| [`validateFormula`](#op-validateformula) | `POST /api/v1/objects/{object_slug}/attributes/formula/validate` | read | `objects:read` | Validate Formula |
|
|
66
67
|
|
|
67
68
|
---
|
|
68
69
|
|
|
@@ -78,7 +79,8 @@ Exact TypeScript types for every operation on this page, and every schema they u
|
|
|
78
79
|
- API-key scope: `objects:manage`
|
|
79
80
|
- ★ Hand-written: [`g8.objects.archiveAttribute()`](../sdk-clients.md#g8-objects-archiveattribute)
|
|
80
81
|
|
|
81
|
-
Archive a custom field, retaining its values. Restore with PATCH is_archived=false.
|
|
82
|
+
Archive a custom field, retaining its values. Restore with PATCH is_archived=false. Refused (409
|
|
83
|
+
`formula_dependency`) while a computed field reads it, with every dependent the credential may see.
|
|
82
84
|
|
|
83
85
|
**Input**
|
|
84
86
|
|
|
@@ -134,7 +136,8 @@ const result = await g8.api.objects.archiveAttribute({ path: { object_slug: "exa
|
|
|
134
136
|
|
|
135
137
|
PREVIEW. This endpoint is deployed but gated: it returns 404 unless the hosted app platform is enabled for your organization. It is published here so the contract describes the whole surface, not so it can be called today.
|
|
136
138
|
|
|
137
|
-
Archive a custom object without deleting data; restore with PATCH is_archived=false.
|
|
139
|
+
Archive a custom object without deleting data; restore with PATCH is_archived=false. Refused (409
|
|
140
|
+
`formula_dependency`) while a computed field elsewhere reads it, naming every dependent the credential may see.
|
|
138
141
|
|
|
139
142
|
**Input**
|
|
140
143
|
|
|
@@ -366,7 +369,9 @@ const result = await g8.api.objects.commitObjectCsvImport({
|
|
|
366
369
|
|
|
367
370
|
PREVIEW. This endpoint is deployed but gated: it returns 404 unless the hosted app platform is enabled for your organization. It is published here so the contract describes the whole surface, not so it can be called today.
|
|
368
371
|
|
|
369
|
-
Create a typed CRM field. Requires objects:manage and current Admin access.
|
|
372
|
+
Create a typed CRM field. Requires objects:manage and current Admin access. A computed field is checked against
|
|
373
|
+
the schema the credential may see (an admin key included): a field it cannot see or an object it cannot read is
|
|
374
|
+
`unknown_field` / `unknown_relationship` (422), exactly as validate answers.
|
|
370
375
|
|
|
371
376
|
**Input**
|
|
372
377
|
|
|
@@ -1940,7 +1945,8 @@ const result = await g8.api.objects.setDefaultObjectView({ path: { object_slug:
|
|
|
1940
1945
|
- API-key scope: `objects:manage`
|
|
1941
1946
|
- ★ Hand-written: [`g8.objects.updateAttribute()`](../sdk-clients.md#g8-objects-updateattribute)
|
|
1942
1947
|
|
|
1943
|
-
Edit or restore a field; omitted values remain unchanged. Type and slug are immutable.
|
|
1948
|
+
Edit or restore a field; omitted values remain unchanged. Type and slug are immutable. A change that would
|
|
1949
|
+
break a computed field is refused (409 `formula_dependency`) with every dependent the credential may see.
|
|
1944
1950
|
|
|
1945
1951
|
**Input**
|
|
1946
1952
|
|
|
@@ -2012,7 +2018,8 @@ const result = await g8.api.objects.updateAttribute({ path: { object_slug: "exam
|
|
|
2012
2018
|
|
|
2013
2019
|
PREVIEW. This endpoint is deployed but gated: it returns 404 unless the hosted app platform is enabled for your organization. It is published here so the contract describes the whole surface, not so it can be called today.
|
|
2014
2020
|
|
|
2015
|
-
Rename, archive or restore a custom object while retaining its slug and data.
|
|
2021
|
+
Rename, archive or restore a custom object while retaining its slug and data. Archiving is refused (409
|
|
2022
|
+
`formula_dependency`) while a computed field elsewhere reads it, naming every dependent the credential may see.
|
|
2016
2023
|
|
|
2017
2024
|
**Input**
|
|
2018
2025
|
|
|
@@ -2314,6 +2321,64 @@ const result = await g8.api.objects.upsertObjectRecord({
|
|
|
2314
2321
|
|
|
2315
2322
|
---
|
|
2316
2323
|
|
|
2324
|
+
<a id="op-validateformula"></a>
|
|
2325
|
+
|
|
2326
|
+
### `g8.api.objects.validateFormula(input)`
|
|
2327
|
+
|
|
2328
|
+
**Validate Formula**
|
|
2329
|
+
|
|
2330
|
+
- HTTP: `POST /api/v1/objects/{object_slug}/attributes/formula/validate`
|
|
2331
|
+
- operationId: `validate_formula_objects__object_slug__attributes_formula_validate_post` (also callable as `g8.api.call("validate_formula_objects__object_slug__attributes_formula_validate_post", input)`)
|
|
2332
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
2333
|
+
- API-key scope: `objects:read`
|
|
2334
|
+
|
|
2335
|
+
Dry-run type-check and cycle-check of a typed formula expression, optionally evaluated on one record.
|
|
2336
|
+
Nothing is stored. Read-only (`objects:read`) despite the POST verb: the expression travels in the body. The
|
|
2337
|
+
check uses YOUR view of the schema: a field you cannot see or an object you cannot read is unknown, and a preview
|
|
2338
|
+
that names one is `valid: false` with `unknown_field` (200), exactly like a name that does not exist. An admin key
|
|
2339
|
+
is held to the same object grants: API keys never bypass them.
|
|
2340
|
+
|
|
2341
|
+
**Input**
|
|
2342
|
+
|
|
2343
|
+
| Field | Type | Required | Description |
|
|
2344
|
+
|---|---|---|---|
|
|
2345
|
+
| `path.object_slug` | `string` | yes | |
|
|
2346
|
+
| `body` | `FormulaValidateRequest` | yes | Request body; fields below. |
|
|
2347
|
+
|
|
2348
|
+
Body fields (`FormulaValidateRequest`):
|
|
2349
|
+
|
|
2350
|
+
| Field | Type | Required | Description |
|
|
2351
|
+
|---|---|---|---|
|
|
2352
|
+
| `body.expression` | `Record<string, unknown>` | yes | The typed JSON expression (a node tree; a rollup is a `rollup` node). |
|
|
2353
|
+
| `body.attribute_slug` | `string \| null` | no | Slug of the computed field being EDITED (checked against its own place in the dependency graph); omit for a new one. max length 100 |
|
|
2354
|
+
| `body.preview_record_id` | `string \| null` | no | Evaluate the expression against this record's current values. max length 64 |
|
|
2355
|
+
|
|
2356
|
+
**Returns** `ApiResponse_FormulaValidateResponse_`: the envelope `{ data: FormulaValidateResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2357
|
+
|
|
2358
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2359
|
+
|
|
2360
|
+
`FormulaValidateResponse` fields:
|
|
2361
|
+
|
|
2362
|
+
| Field | Type | Required | Description |
|
|
2363
|
+
|---|---|---|---|
|
|
2364
|
+
| `valid` | `boolean` | yes | |
|
|
2365
|
+
| `currency_code` | `string \| null` | no | |
|
|
2366
|
+
| `depends_on` | `Array<Record<string, unknown>>` | no | |
|
|
2367
|
+
| `errors` | `Array<Record<string, unknown>>` | no | Field-level problems (`reason` is a stable code). |
|
|
2368
|
+
| `preview_error` | `string \| null` | no | Why the preview record could not be evaluated (a code, never a value). |
|
|
2369
|
+
| `preview_rollups` | `Array<PreviewRollup>` | no | With a preview record: one entry per rollup in the expression, counted over the records the caller may read. |
|
|
2370
|
+
| `preview_value` | `unknown` | no | |
|
|
2371
|
+
| `referenced_object_slugs` | `Array<string>` | no | |
|
|
2372
|
+
| `result_type` | `string \| null` | no | number, currency, text, checkbox, date or timestamp. |
|
|
2373
|
+
|
|
2374
|
+
**Example**
|
|
2375
|
+
|
|
2376
|
+
```ts
|
|
2377
|
+
const result = await g8.api.objects.validateFormula({ path: { object_slug: "example" }, body: { expression: {} } });
|
|
2378
|
+
```
|
|
2379
|
+
|
|
2380
|
+
---
|
|
2381
|
+
|
|
2317
2382
|
## Referenced types
|
|
2318
2383
|
|
|
2319
2384
|
Named types that appear in the tables above. Full TypeScript definitions: `G8Contract.<Name>` (`import type { G8Contract } from "@graph8/sdk"`).
|
|
@@ -2327,6 +2392,7 @@ Configuration for specific attribute types.
|
|
|
2327
2392
|
| Field | Type | Required | Description |
|
|
2328
2393
|
|---|---|---|---|
|
|
2329
2394
|
| `currency_code` | `string \| null` | no | |
|
|
2395
|
+
| `formula` | `FormulaInput \| null` | no | |
|
|
2330
2396
|
| `max_value` | `integer \| null` | no | |
|
|
2331
2397
|
| `options` | `Array<Record<string, unknown>> \| null` | no | |
|
|
2332
2398
|
| `referenced_object` | `string \| null` | no | |
|
|
@@ -2406,6 +2472,17 @@ Column mapping (CSV header -> field slug) and match mode. May be incomplete whil
|
|
|
2406
2472
|
| `matching_attribute` | `string \| null` | no | max length 100 |
|
|
2407
2473
|
| `mode` | `"create" \| "upsert"` | no | default `"create"` |
|
|
2408
2474
|
|
|
2475
|
+
<a id="type-previewrollup"></a>
|
|
2476
|
+
|
|
2477
|
+
### `PreviewRollup`
|
|
2478
|
+
|
|
2479
|
+
How many linked records one rollup of a previewed expression counted.
|
|
2480
|
+
|
|
2481
|
+
| Field | Type | Required | Description |
|
|
2482
|
+
|---|---|---|---|
|
|
2483
|
+
| `matched_count` | `integer` | yes | Linked records the rollup counted for the preview record (the ones its filters keep). |
|
|
2484
|
+
| `node_path` | `string` | yes | Where the rollup sits in the expression: `$` is the root, `$.left`, `$.args[1]`, `$.then_branch`. |
|
|
2485
|
+
|
|
2409
2486
|
<a id="type-recordbulkupdatefailure"></a>
|
|
2410
2487
|
|
|
2411
2488
|
### `RecordBulkUpdateFailure`
|
|
@@ -2471,7 +2548,7 @@ One generation of one attribute's value. Values are TEMPORAL rather than mutable
|
|
|
2471
2548
|
|
|
2472
2549
|
| Field | Type | Required | Description |
|
|
2473
2550
|
|---|---|---|---|
|
|
2474
|
-
| `action` | `"created" \| "updated" \| "archived" \| "restored"` | yes | |
|
|
2551
|
+
| `action` | `"created" \| "updated" \| "archived" \| "restored" \| "recalculated"` | yes | |
|
|
2475
2552
|
| `actor_id` | `string \| null` | yes | |
|
|
2476
2553
|
| `actor_type` | `"user" \| "api" \| "app" \| "integration" \| "system"` | yes | |
|
|
2477
2554
|
| `changes` | `Record<string, RecordMutationValueChange>` | yes | |
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/* Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. */
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Types for `g8.api.processLists` (Process Lists): 6 operations.
|
|
5
|
+
*
|
|
6
|
+
* For reading. In code, import from the package instead:
|
|
7
|
+
* import type { ApiInput, ApiOutput, G8Contract } from "@graph8/sdk";
|
|
8
|
+
* type In = ApiInput<"archive_process_list_api_process_lists__slug__delete">;
|
|
9
|
+
*
|
|
10
|
+
* Reference with examples: processLists.md
|
|
11
|
+
*/
|
|
12
|
+
/* eslint-disable */
|
|
13
|
+
|
|
14
|
+
/** `g8.api.processLists.<member>` -> the operationId it calls. */
|
|
15
|
+
export interface ProcessListsMembers {
|
|
16
|
+
archiveProcessListApi: "archive_process_list_api_process_lists__slug__delete";
|
|
17
|
+
createProcessListApi: "create_process_list_api_process_lists_post";
|
|
18
|
+
createProcessListEntryApi: "create_process_list_entry_api_process_lists__slug__entries_post";
|
|
19
|
+
getProcessListApi: "get_process_list_api_process_lists__slug__get";
|
|
20
|
+
listProcessListsApi: "list_process_lists_api_process_lists_get";
|
|
21
|
+
updateProcessListApi: "update_process_list_api_process_lists__slug__patch";
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/** Input and output of every `g8.api.processLists` operation, keyed by operationId. */
|
|
25
|
+
export interface ProcessListsOperations {
|
|
26
|
+
/**
|
|
27
|
+
* DELETE /process-lists/{slug}
|
|
28
|
+
* Archive Process List Api
|
|
29
|
+
* tier: destructive · scope: objects:manage
|
|
30
|
+
*/
|
|
31
|
+
archive_process_list_api_process_lists__slug__delete: {
|
|
32
|
+
input: {
|
|
33
|
+
path: {
|
|
34
|
+
slug: string;
|
|
35
|
+
};
|
|
36
|
+
headers?: {
|
|
37
|
+
"X-Target-Org-Id"?: string | null;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
output: ApiResponse_ProcessListResponse_;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* POST /process-lists
|
|
44
|
+
* Create Process List Api
|
|
45
|
+
* tier: write · scope: objects:manage
|
|
46
|
+
*/
|
|
47
|
+
create_process_list_api_process_lists_post: {
|
|
48
|
+
input: {
|
|
49
|
+
headers?: {
|
|
50
|
+
"X-Target-Org-Id"?: string | null;
|
|
51
|
+
};
|
|
52
|
+
body: ProcessListCreate;
|
|
53
|
+
};
|
|
54
|
+
output: ApiResponse_ProcessListResponse_;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* POST /process-lists/{slug}/entries
|
|
58
|
+
* Create Process List Entry Api
|
|
59
|
+
* tier: write · scope: objects:write
|
|
60
|
+
*/
|
|
61
|
+
create_process_list_entry_api_process_lists__slug__entries_post: {
|
|
62
|
+
input: {
|
|
63
|
+
path: {
|
|
64
|
+
slug: string;
|
|
65
|
+
};
|
|
66
|
+
headers?: {
|
|
67
|
+
"X-Target-Org-Id"?: string | null;
|
|
68
|
+
};
|
|
69
|
+
body: ProcessListEntryCreate;
|
|
70
|
+
};
|
|
71
|
+
output: ApiResponse_ProcessListEntryResponse_;
|
|
72
|
+
};
|
|
73
|
+
/**
|
|
74
|
+
* GET /process-lists/{slug}
|
|
75
|
+
* Get Process List Api
|
|
76
|
+
* tier: read · scope: objects:read
|
|
77
|
+
*/
|
|
78
|
+
get_process_list_api_process_lists__slug__get: {
|
|
79
|
+
input: {
|
|
80
|
+
path: {
|
|
81
|
+
slug: string;
|
|
82
|
+
};
|
|
83
|
+
headers?: {
|
|
84
|
+
"X-Target-Org-Id"?: string | null;
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
output: ApiResponse_ProcessListResponse_;
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* GET /process-lists
|
|
91
|
+
* List Process Lists Api
|
|
92
|
+
* tier: read · scope: objects:read
|
|
93
|
+
*/
|
|
94
|
+
list_process_lists_api_process_lists_get: {
|
|
95
|
+
input: {
|
|
96
|
+
query?: {
|
|
97
|
+
include_archived?: boolean;
|
|
98
|
+
};
|
|
99
|
+
headers?: {
|
|
100
|
+
"X-Target-Org-Id"?: string | null;
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
output: ApiResponse_ProcessListListResponse_;
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* PATCH /process-lists/{slug}
|
|
107
|
+
* Update Process List Api
|
|
108
|
+
* tier: write · scope: objects:manage
|
|
109
|
+
*/
|
|
110
|
+
update_process_list_api_process_lists__slug__patch: {
|
|
111
|
+
input: {
|
|
112
|
+
path: {
|
|
113
|
+
slug: string;
|
|
114
|
+
};
|
|
115
|
+
headers?: {
|
|
116
|
+
"X-Target-Org-Id"?: string | null;
|
|
117
|
+
};
|
|
118
|
+
body: ProcessListUpdate;
|
|
119
|
+
};
|
|
120
|
+
output: ApiResponse_ProcessListResponse_;
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// 13 schemas referenced above (the same as G8Contract.<Name>).
|
|
125
|
+
|
|
126
|
+
export interface ApiResponse_ProcessListEntryResponse_ {
|
|
127
|
+
data: ProcessListEntryResponse;
|
|
128
|
+
pagination?: PaginationMeta | null;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export interface ApiResponse_ProcessListListResponse_ {
|
|
132
|
+
data: ProcessListListResponse;
|
|
133
|
+
pagination?: PaginationMeta | null;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
export interface ApiResponse_ProcessListResponse_ {
|
|
137
|
+
data: ProcessListResponse;
|
|
138
|
+
pagination?: PaginationMeta | null;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
export interface PaginationMeta {
|
|
142
|
+
/** Whether there are more pages */
|
|
143
|
+
has_next: boolean;
|
|
144
|
+
/** Items per page */
|
|
145
|
+
limit: number;
|
|
146
|
+
/** Opaque cursor for the next page; null when there are no more items. Pass it back as the `cursor` query param to fetch the following page without computing page numbers. */
|
|
147
|
+
next_cursor?: string | null;
|
|
148
|
+
/** Search endpoints only: plain-language notes about the result, e.g. that more records match than can be paged, or that a reversed `between` range was put in order. */
|
|
149
|
+
notes?: Array<string> | null;
|
|
150
|
+
/** Current page number (1-indexed) */
|
|
151
|
+
page: number;
|
|
152
|
+
/** Total number of items */
|
|
153
|
+
total: number;
|
|
154
|
+
/** Search endpoints only: how many records really match, when known. Can be larger than `total`, which is capped at the 10,000 results that can be paged. For company search this is a distinct-company estimate. Null when unknown; absent outside search. */
|
|
155
|
+
total_available?: number | null;
|
|
156
|
+
/** Search endpoints only: true when more records match than `total` shows (the result set is larger than the 10,000 results that can be paged). Absent outside search. */
|
|
157
|
+
total_is_lower_bound?: boolean | null;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export interface ProcessListCreate {
|
|
161
|
+
api_slug: string;
|
|
162
|
+
description?: string | null;
|
|
163
|
+
entries_label: string;
|
|
164
|
+
icon?: ("box" | "briefcase" | "building" | "calendar" | "flag" | "folder" | "globe" | "heart" | "layers" | "package" | "target" | "users") | null;
|
|
165
|
+
parent: RelationshipTarget;
|
|
166
|
+
parent_label: string;
|
|
167
|
+
plural_noun: string;
|
|
168
|
+
singular_noun: string;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Create one entry (a record of the list's object) and link it to its parent, atomically.
|
|
173
|
+
*
|
|
174
|
+
* The parent KIND is not repeated: the list's own relationship definition fixes it.
|
|
175
|
+
*/
|
|
176
|
+
export interface ProcessListEntryCreate {
|
|
177
|
+
expected_parent_revision?: number | null;
|
|
178
|
+
idempotency_key?: string | null;
|
|
179
|
+
parent_record_id: string;
|
|
180
|
+
values?: Record<string, unknown>;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
export interface ProcessListEntryResponse {
|
|
184
|
+
parent: ProcessListParentSummary;
|
|
185
|
+
record: RecordResponse;
|
|
186
|
+
relationship_id: string;
|
|
187
|
+
replayed?: boolean;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
export interface ProcessListListResponse {
|
|
191
|
+
process_lists: Array<ProcessListResponse>;
|
|
192
|
+
total: number;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
export interface ProcessListParentSummary {
|
|
196
|
+
kind: "custom" | "contacts" | "companies" | "deals";
|
|
197
|
+
label?: string | null;
|
|
198
|
+
object_slug?: string | null;
|
|
199
|
+
record_id: string;
|
|
200
|
+
revision?: number | null;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
export interface ProcessListResponse {
|
|
204
|
+
api_slug: string;
|
|
205
|
+
created_at: string;
|
|
206
|
+
description?: string | null;
|
|
207
|
+
display_attribute_slug?: string | null;
|
|
208
|
+
entries_label: string;
|
|
209
|
+
icon?: string | null;
|
|
210
|
+
id: string;
|
|
211
|
+
is_archived: boolean;
|
|
212
|
+
parent_kind: "custom" | "contacts" | "companies" | "deals";
|
|
213
|
+
parent_label: string;
|
|
214
|
+
parent_object_id?: string | null;
|
|
215
|
+
parent_object_slug?: string | null;
|
|
216
|
+
parent_relationship_definition_id: string;
|
|
217
|
+
plural_noun: string;
|
|
218
|
+
singular_noun: string;
|
|
219
|
+
updated_at: string;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/** Rename, describe or archive a list. The parent binding is never accepted here. */
|
|
223
|
+
export interface ProcessListUpdate {
|
|
224
|
+
description?: string | null;
|
|
225
|
+
display_attribute_slug?: string | null;
|
|
226
|
+
icon?: ("box" | "briefcase" | "building" | "calendar" | "flag" | "folder" | "globe" | "heart" | "layers" | "package" | "target" | "users") | null;
|
|
227
|
+
is_archived?: boolean | null;
|
|
228
|
+
plural_noun?: string | null;
|
|
229
|
+
singular_noun?: string | null;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/** Response for a record with its current attribute values. */
|
|
233
|
+
export interface RecordResponse {
|
|
234
|
+
created_at: string;
|
|
235
|
+
id: string;
|
|
236
|
+
is_archived: boolean;
|
|
237
|
+
object_definition_id: string;
|
|
238
|
+
organization_id: string;
|
|
239
|
+
revision?: number;
|
|
240
|
+
updated_at: string;
|
|
241
|
+
values: Record<string, unknown>;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
export interface RelationshipTarget {
|
|
245
|
+
kind: "custom" | "contacts" | "companies" | "deals";
|
|
246
|
+
object_id?: string | null;
|
|
247
|
+
}
|