@graph8/sdk 0.303.0 → 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 +2220 -23
- package/dist/index.d.ts +2220 -23
- package/dist/index.js +64 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +64 -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 +2082 -20
- package/dist/react.d.ts +2082 -20
- package/dist/react.js +63 -2
- package/dist/react.js.map +1 -1
- package/dist/react.mjs +63 -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 +7 -3
- package/docs/api/appObjects.d.ts +3 -1
- package/docs/api/appObjects.md +2 -1
- package/docs/api/by-path.md +51 -0
- package/docs/api/dataPipelines.d.ts +149 -0
- package/docs/api/dataPipelines.md +232 -0
- package/docs/api/forms.d.ts +16 -0
- package/docs/api/forms.md +8 -0
- package/docs/api/objects.d.ts +705 -5
- package/docs/api/objects.md +1099 -14
- package/docs/api/ops.d.ts +1 -1
- package/docs/api/ops.md +1 -1
- package/docs/api/processLists.d.ts +247 -0
- package/docs/api/processLists.md +409 -0
- package/docs/api/quotes.d.ts +3 -1
- package/docs/api/quotes.md +7 -2
- package/docs/api/radar.d.ts +4 -0
- package/docs/api/radar.md +1 -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
|
|
|
@@ -26,26 +26,44 @@ Exact TypeScript types for every operation on this page, and every schema they u
|
|
|
26
26
|
| [`archiveObject`](#op-archiveobject) ★ | `DELETE /api/v1/objects/{object_slug}` | destructive | `objects:manage` | Archive Object |
|
|
27
27
|
| [`archiveObjectRecord`](#op-archiveobjectrecord) ★ | `DELETE /api/v1/objects/{object_slug}/records/{record_id}` | destructive | `objects:delete` | Archive Object Record |
|
|
28
28
|
| [`bulkUpdateObjectRecords`](#op-bulkupdateobjectrecords) | `PATCH /api/v1/objects/{object_slug}/records/bulk` | write | `objects:write` | Bulk Update Object Records |
|
|
29
|
+
| [`commitObjectCsvImport`](#op-commitobjectcsvimport) | `POST /api/v1/objects/{object_slug}/imports/csv/drafts/{draft_id}/commit` | write | `objects:write` | Commit Object Csv Import |
|
|
29
30
|
| [`createAttribute`](#op-createattribute) ★ | `POST /api/v1/objects/{object_slug}/attributes` | write | `objects:manage` | Create Attribute |
|
|
30
31
|
| [`createObject`](#op-createobject) ★ | `POST /api/v1/objects` | write | `objects:manage` | Create Object |
|
|
32
|
+
| [`createObjectCsvImport`](#op-createobjectcsvimport) | `POST /api/v1/objects/{object_slug}/imports/csv/drafts` | write | `objects:write` | Create Object Csv Import |
|
|
31
33
|
| [`createObjectRecord`](#op-createobjectrecord) ★ | `POST /api/v1/objects/{object_slug}/records` | write | `objects:write` | Create Object Record |
|
|
32
34
|
| [`createObjectRelationship`](#op-createobjectrelationship) | `POST /api/v1/objects/{object_slug}/records/{record_id}/relationships` | write | `objects:write` | Create Object Relationship |
|
|
35
|
+
| [`createObjectView`](#op-createobjectview) | `POST /api/v1/objects/{object_slug}/views` | write | `objects:write` | Create Object View |
|
|
36
|
+
| [`deleteObjectCsvImport`](#op-deleteobjectcsvimport) | `DELETE /api/v1/objects/{object_slug}/imports/csv/drafts/{draft_id}` | destructive | `objects:write` | Delete Object Csv Import |
|
|
33
37
|
| [`deleteObjectRelationship`](#op-deleteobjectrelationship) | `DELETE /api/v1/objects/{object_slug}/records/{record_id}/relationships/{relationship_id}` | destructive | `objects:write` | Delete Object Relationship |
|
|
38
|
+
| [`deleteObjectView`](#op-deleteobjectview) | `DELETE /api/v1/objects/{object_slug}/views/{view_id}` | destructive | `objects:delete` | Delete Object View |
|
|
39
|
+
| [`downloadObjectCsvImportErrors`](#op-downloadobjectcsvimporterrors) | `GET /api/v1/objects/{object_slug}/imports/csv/drafts/{draft_id}/errors` | read | `objects:write` | Download Object Csv Import Errors |
|
|
40
|
+
| [`exportObjectRecords`](#op-exportobjectrecords) | `POST /api/v1/objects/{object_slug}/exports` | write | `objects:export` | Export Object Records |
|
|
34
41
|
| [`getObject`](#op-getobject) ★ | `GET /api/v1/objects/{object_slug}` | read | `objects:read` | Get Object |
|
|
42
|
+
| [`getObjectCsvImport`](#op-getobjectcsvimport) | `GET /api/v1/objects/{object_slug}/imports/csv/drafts/{draft_id}` | read | `objects:write` | Get Object Csv Import |
|
|
35
43
|
| [`getObjectRecord`](#op-getobjectrecord) ★ | `GET /api/v1/objects/{object_slug}/records/{record_id}` | read | `objects:read` | Get Object Record |
|
|
36
44
|
| [`getObjectRecordChanges`](#op-getobjectrecordchanges) ★ | `GET /api/v1/objects/{object_slug}/records/{record_id}/changes` | read | `objects:read` | Get Object Record Changes |
|
|
37
45
|
| [`getObjectRecordHistory`](#op-getobjectrecordhistory) ★ | `GET /api/v1/objects/{object_slug}/records/{record_id}/history` | read | `objects:read` | Get Object Record History |
|
|
38
46
|
| [`getObjectRelationshipDefinitions`](#op-getobjectrelationshipdefinitions) | `GET /api/v1/objects/{object_slug}/relationships` | read | `objects:read` | Get Object Relationship Definitions |
|
|
39
47
|
| [`getObjectRelationships`](#op-getobjectrelationships) | `GET /api/v1/objects/{object_slug}/records/{record_id}/relationships` | read | `objects:read` | Get Object Relationships |
|
|
48
|
+
| [`inspectObjectCsvImport`](#op-inspectobjectcsvimport) | `POST /api/v1/objects/{object_slug}/imports/csv/inspect` | write | `objects:write` | Inspect Object Csv Import |
|
|
40
49
|
| [`listObjectAttributes`](#op-listobjectattributes) ★ | `GET /api/v1/objects/{object_slug}/attributes` | read | `objects:read` | List Object Attributes |
|
|
50
|
+
| [`listObjectCsvImports`](#op-listobjectcsvimports) | `GET /api/v1/objects/{object_slug}/imports/csv/drafts` | read | `objects:write` | List Object Csv Imports |
|
|
41
51
|
| [`listObjectRecords`](#op-listobjectrecords) ★ | `GET /api/v1/objects/{object_slug}/records` | read | `objects:read` | List Object Records |
|
|
52
|
+
| [`listObjectViews`](#op-listobjectviews) | `GET /api/v1/objects/{object_slug}/views` | read | `objects:read` | List Object Views |
|
|
42
53
|
| [`listObjects`](#op-listobjects) ★ | `GET /api/v1/objects` | read | `objects:read` | List Objects |
|
|
43
54
|
| [`mergeObjectRecords`](#op-mergeobjectrecords) | `POST /api/v1/objects/{object_slug}/records/merge` | write | `objects:write` | Merge Object Records |
|
|
55
|
+
| [`previewObjectCsvImport`](#op-previewobjectcsvimport) | `POST /api/v1/objects/{object_slug}/imports/csv/drafts/{draft_id}/preview` | write | `objects:write` | Preview Object Csv Import |
|
|
56
|
+
| [`queryObjectBoardGroups`](#op-queryobjectboardgroups) | `POST /api/v1/objects/{object_slug}/views/board/groups` | write | `objects:read` | Query Object Board Groups |
|
|
57
|
+
| [`queryObjectBoardRecords`](#op-queryobjectboardrecords) | `POST /api/v1/objects/{object_slug}/views/board/records` | write | `objects:read` | Query Object Board Records |
|
|
44
58
|
| [`restoreObjectRecord`](#op-restoreobjectrecord) ★ | `POST /api/v1/objects/{object_slug}/records/{record_id}/restore` | write | `objects:write` | Restore Object Record |
|
|
59
|
+
| [`setDefaultObjectView`](#op-setdefaultobjectview) | `PUT /api/v1/objects/{object_slug}/views/default` | write | `objects:write` | Set Default Object View |
|
|
45
60
|
| [`updateAttribute`](#op-updateattribute) ★ | `PATCH /api/v1/objects/{object_slug}/attributes/{attr_slug}` | write | `objects:manage` | Update Attribute |
|
|
46
61
|
| [`updateObject`](#op-updateobject) ★ | `PATCH /api/v1/objects/{object_slug}` | write | `objects:manage` | Update Object |
|
|
62
|
+
| [`updateObjectCsvImport`](#op-updateobjectcsvimport) | `PUT /api/v1/objects/{object_slug}/imports/csv/drafts/{draft_id}` | write | `objects:write` | Update Object Csv Import |
|
|
47
63
|
| [`updateObjectRecord`](#op-updateobjectrecord) ★ | `PATCH /api/v1/objects/{object_slug}/records/{record_id}` | write | `objects:write` | Update Object Record |
|
|
64
|
+
| [`updateObjectView`](#op-updateobjectview) | `PUT /api/v1/objects/{object_slug}/views/{view_id}` | write | `objects:write` | Update Object View |
|
|
48
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 |
|
|
49
67
|
|
|
50
68
|
---
|
|
51
69
|
|
|
@@ -61,7 +79,8 @@ Exact TypeScript types for every operation on this page, and every schema they u
|
|
|
61
79
|
- API-key scope: `objects:manage`
|
|
62
80
|
- ★ Hand-written: [`g8.objects.archiveAttribute()`](../sdk-clients.md#g8-objects-archiveattribute)
|
|
63
81
|
|
|
64
|
-
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.
|
|
65
84
|
|
|
66
85
|
**Input**
|
|
67
86
|
|
|
@@ -91,6 +110,7 @@ Other envelope fields: `pagination` (PaginationMeta).
|
|
|
91
110
|
| `is_system` | `boolean` | no | Whether this field is protected as a system attribute. default `false` |
|
|
92
111
|
| `is_unique` | `boolean` | no | No two active records may hold the same value for this attribute. A collision is rejected with `409 duplicate_active_value`. default `false` |
|
|
93
112
|
| `sort_order` | `integer` | no | Configured display order; equal values are ordered by API slug. default `0` |
|
|
113
|
+
| `visible_to_role_ids` | `Array<string> \| null` | no | Role ids that may see this field; null means every role. Owners and admins always see every field. A field hidden from the caller is absent from every response. Set it with PATCH on this attribute. |
|
|
94
114
|
|
|
95
115
|
**Example**
|
|
96
116
|
|
|
@@ -116,7 +136,8 @@ const result = await g8.api.objects.archiveAttribute({ path: { object_slug: "exa
|
|
|
116
136
|
|
|
117
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.
|
|
118
138
|
|
|
119
|
-
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.
|
|
120
141
|
|
|
121
142
|
**Input**
|
|
122
143
|
|
|
@@ -259,6 +280,80 @@ const result = await g8.api.objects.bulkUpdateObjectRecords({ path: { object_slu
|
|
|
259
280
|
|
|
260
281
|
---
|
|
261
282
|
|
|
283
|
+
<a id="op-commitobjectcsvimport"></a>
|
|
284
|
+
|
|
285
|
+
### `g8.api.objects.commitObjectCsvImport(input)`
|
|
286
|
+
|
|
287
|
+
**Commit Object Csv Import**
|
|
288
|
+
|
|
289
|
+
- HTTP: `POST /api/v1/objects/{object_slug}/imports/csv/drafts/{draft_id}/commit`
|
|
290
|
+
- operationId: `commit_object_csv_import_objects__object_slug__imports_csv_drafts__draft_id__commit_post` (also callable as `g8.api.call("commit_object_csv_import_objects__object_slug__imports_csv_drafts__draft_id__commit_post", input)`)
|
|
291
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
292
|
+
- API-key scope: `objects:write`
|
|
293
|
+
|
|
294
|
+
Commit one previewed page (at most 100 rows) in one transaction. Valid rows are imported; rows that do not validate
|
|
295
|
+
are skipped and listed in skipped_rows (download them from .../errors). Send the page's revision, offset, limit,
|
|
296
|
+
schema_fingerprint and every row's row_number, record_id and revision from the preview. created, updated and skipped
|
|
297
|
+
count this request; resending a committed page replays its receipts as already_imported and counts nothing twice. A
|
|
298
|
+
409 is never fixed by resending the same body: preview the page again.
|
|
299
|
+
|
|
300
|
+
**Input**
|
|
301
|
+
|
|
302
|
+
| Field | Type | Required | Description |
|
|
303
|
+
|---|---|---|---|
|
|
304
|
+
| `path.object_slug` | `string` | yes | |
|
|
305
|
+
| `path.draft_id` | `string (uuid)` | yes | |
|
|
306
|
+
| `body` | `ObjectImportCommit` | yes | Request body; fields below. |
|
|
307
|
+
|
|
308
|
+
Body fields (`ObjectImportCommit`):
|
|
309
|
+
|
|
310
|
+
| Field | Type | Required | Description |
|
|
311
|
+
|---|---|---|---|
|
|
312
|
+
| `body.expected` | `Array<ImportRowExpectation>` | yes | min items 1, max items 100 |
|
|
313
|
+
| `body.revision` | `integer` | yes | The draft revision this page was planned against min 1 |
|
|
314
|
+
| `body.schema_fingerprint` | `string` | yes | pattern `^[a-f0-9]{64}$` |
|
|
315
|
+
| `body.limit` | `integer` | no | default `100`, min 1, max 100 |
|
|
316
|
+
| `body.offset` | `integer` | no | default `0`, min 0, max 4999 |
|
|
317
|
+
|
|
318
|
+
**Returns** `ApiResponse_ObjectCsvReceipt_`: the envelope `{ data: ObjectCsvReceipt, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
319
|
+
|
|
320
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
321
|
+
|
|
322
|
+
`ObjectCsvReceipt` fields:
|
|
323
|
+
|
|
324
|
+
| Field | Type | Required | Description |
|
|
325
|
+
|---|---|---|---|
|
|
326
|
+
| `already_imported` | `integer` | yes | |
|
|
327
|
+
| `completed` | `integer` | yes | |
|
|
328
|
+
| `created` | `integer` | yes | |
|
|
329
|
+
| `error_file_available` | `boolean` | yes | |
|
|
330
|
+
| `error_rows` | `integer` | yes | |
|
|
331
|
+
| `rows` | `Array<ImportReceiptRow>` | yes | |
|
|
332
|
+
| `skipped` | `integer` | yes | |
|
|
333
|
+
| `status` | `"draft" \| "partial" \| "completed" \| "expired"` | yes | |
|
|
334
|
+
| `total` | `integer` | yes | |
|
|
335
|
+
| `updated` | `integer` | yes | |
|
|
336
|
+
| `replayed` | `boolean` | no | default `false` |
|
|
337
|
+
| `skipped_rows` | `Array<ImportSkippedRow>` | no | |
|
|
338
|
+
|
|
339
|
+
**Example**
|
|
340
|
+
|
|
341
|
+
```ts
|
|
342
|
+
const result = await g8.api.objects.commitObjectCsvImport({
|
|
343
|
+
path: {
|
|
344
|
+
object_slug: "example",
|
|
345
|
+
draft_id: "00000000-0000-0000-0000-000000000000",
|
|
346
|
+
},
|
|
347
|
+
body: {
|
|
348
|
+
expected: [{ row_number: 2 }],
|
|
349
|
+
revision: 1,
|
|
350
|
+
schema_fingerprint: "example",
|
|
351
|
+
},
|
|
352
|
+
});
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
262
357
|
<a id="op-createattribute"></a>
|
|
263
358
|
|
|
264
359
|
### `g8.api.objects.createAttribute(input)`
|
|
@@ -274,7 +369,9 @@ const result = await g8.api.objects.bulkUpdateObjectRecords({ path: { object_slu
|
|
|
274
369
|
|
|
275
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.
|
|
276
371
|
|
|
277
|
-
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.
|
|
278
375
|
|
|
279
376
|
**Input**
|
|
280
377
|
|
|
@@ -320,6 +417,7 @@ Other envelope fields: `pagination` (PaginationMeta).
|
|
|
320
417
|
| `is_system` | `boolean` | no | Whether this field is protected as a system attribute. default `false` |
|
|
321
418
|
| `is_unique` | `boolean` | no | No two active records may hold the same value for this attribute. A collision is rejected with `409 duplicate_active_value`. default `false` |
|
|
322
419
|
| `sort_order` | `integer` | no | Configured display order; equal values are ordered by API slug. default `0` |
|
|
420
|
+
| `visible_to_role_ids` | `Array<string> \| null` | no | Role ids that may see this field; null means every role. Owners and admins always see every field. A field hidden from the caller is absent from every response. Set it with PATCH on this attribute. |
|
|
323
421
|
|
|
324
422
|
**Example**
|
|
325
423
|
|
|
@@ -392,6 +490,73 @@ const result = await g8.api.objects.createObject({
|
|
|
392
490
|
|
|
393
491
|
---
|
|
394
492
|
|
|
493
|
+
<a id="op-createobjectcsvimport"></a>
|
|
494
|
+
|
|
495
|
+
### `g8.api.objects.createObjectCsvImport(input)`
|
|
496
|
+
|
|
497
|
+
**Create Object Csv Import**
|
|
498
|
+
|
|
499
|
+
- HTTP: `POST /api/v1/objects/{object_slug}/imports/csv/drafts`
|
|
500
|
+
- operationId: `create_object_csv_import_objects__object_slug__imports_csv_drafts_post` (also callable as `g8.api.call("create_object_csv_import_objects__object_slug__imports_csv_drafts_post", input)`)
|
|
501
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
502
|
+
- API-key scope: `objects:write`
|
|
503
|
+
|
|
504
|
+
Upload a CSV once with its column mapping (header to field slug), mode create or upsert, and matching field for upsert.
|
|
505
|
+
The file is stored with the import for 30 days or until every row is imported. Writes no records.
|
|
506
|
+
|
|
507
|
+
**Input**
|
|
508
|
+
|
|
509
|
+
| Field | Type | Required | Description |
|
|
510
|
+
|---|---|---|---|
|
|
511
|
+
| `path.object_slug` | `string` | yes | |
|
|
512
|
+
| `body` | `ObjectImportCreate` | yes | Request body; fields below. |
|
|
513
|
+
|
|
514
|
+
Body fields (`ObjectImportCreate`):
|
|
515
|
+
|
|
516
|
+
| Field | Type | Required | Description |
|
|
517
|
+
|---|---|---|---|
|
|
518
|
+
| `body.csv` | `string` | yes | min length 1, max length 2000000 |
|
|
519
|
+
| `body.filename` | `string` | yes | min length 1, max length 255 |
|
|
520
|
+
| `body.mapping` | `Record<string, string>` | no | |
|
|
521
|
+
| `body.matching_attribute` | `string \| null` | no | max length 100 |
|
|
522
|
+
| `body.mode` | `"create" \| "upsert"` | no | default `"create"` |
|
|
523
|
+
|
|
524
|
+
**Returns** `ApiResponse_ObjectImportDetail_`: the envelope `{ data: ObjectImportDetail, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
525
|
+
|
|
526
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
527
|
+
|
|
528
|
+
`ObjectImportDetail` fields:
|
|
529
|
+
|
|
530
|
+
| Field | Type | Required | Description |
|
|
531
|
+
|---|---|---|---|
|
|
532
|
+
| `completed` | `integer` | yes | |
|
|
533
|
+
| `created_at` | `string (date-time)` | yes | |
|
|
534
|
+
| `error_rows` | `integer` | yes | |
|
|
535
|
+
| `expires_at` | `string (date-time)` | yes | |
|
|
536
|
+
| `filename` | `string` | yes | |
|
|
537
|
+
| `headers` | `Array<string>` | yes | |
|
|
538
|
+
| `id` | `string (uuid)` | yes | |
|
|
539
|
+
| `owner_id` | `string` | yes | |
|
|
540
|
+
| `owner_type` | `"user" \| "api"` | yes | |
|
|
541
|
+
| `revision` | `integer` | yes | |
|
|
542
|
+
| `setup` | `ObjectImportSetup` | yes | |
|
|
543
|
+
| `source_available` | `boolean` | yes | |
|
|
544
|
+
| `status` | `"draft" \| "partial" \| "completed" \| "expired"` | yes | |
|
|
545
|
+
| `total` | `integer` | yes | |
|
|
546
|
+
| `updated_at` | `string (date-time)` | yes | |
|
|
547
|
+
| `sample` | `Array<Array<string>>` | no | First rows of the file while it is still stored |
|
|
548
|
+
|
|
549
|
+
**Example**
|
|
550
|
+
|
|
551
|
+
```ts
|
|
552
|
+
const result = await g8.api.objects.createObjectCsvImport({
|
|
553
|
+
path: { object_slug: "example" },
|
|
554
|
+
body: { csv: "example", filename: "Example" },
|
|
555
|
+
});
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
---
|
|
559
|
+
|
|
395
560
|
<a id="op-createobjectrecord"></a>
|
|
396
561
|
|
|
397
562
|
### `g8.api.objects.createObjectRecord(input)`
|
|
@@ -518,6 +683,104 @@ const result = await g8.api.objects.createObjectRelationship({
|
|
|
518
683
|
|
|
519
684
|
---
|
|
520
685
|
|
|
686
|
+
<a id="op-createobjectview"></a>
|
|
687
|
+
|
|
688
|
+
### `g8.api.objects.createObjectView(input)`
|
|
689
|
+
|
|
690
|
+
**Create Object View**
|
|
691
|
+
|
|
692
|
+
- HTTP: `POST /api/v1/objects/{object_slug}/views`
|
|
693
|
+
- operationId: `create_object_view_objects__object_slug__views_post` (also callable as `g8.api.call("create_object_view_objects__object_slug__views_post", input)`)
|
|
694
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
695
|
+
- API-key scope: `objects:write`
|
|
696
|
+
|
|
697
|
+
Save a private or shared view owned by this credential, without impersonating a human.
|
|
698
|
+
|
|
699
|
+
**Input**
|
|
700
|
+
|
|
701
|
+
| Field | Type | Required | Description |
|
|
702
|
+
|---|---|---|---|
|
|
703
|
+
| `path.object_slug` | `string` | yes | |
|
|
704
|
+
| `body` | `ObjectViewCreate` | yes | Request body; fields below. |
|
|
705
|
+
|
|
706
|
+
Body fields (`ObjectViewCreate`):
|
|
707
|
+
|
|
708
|
+
| Field | Type | Required | Description |
|
|
709
|
+
|---|---|---|---|
|
|
710
|
+
| `body.title` | `string` | yes | min length 1, max length 120 |
|
|
711
|
+
| `body.state` | `ObjectViewState` | no | |
|
|
712
|
+
| `body.visibility` | `Visibility` | no | default `"private"` |
|
|
713
|
+
|
|
714
|
+
**Returns** `ApiResponse_SavedViewResponse_`: the envelope `{ data: SavedViewResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
715
|
+
|
|
716
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
717
|
+
|
|
718
|
+
`SavedViewResponse` fields:
|
|
719
|
+
|
|
720
|
+
| Field | Type | Required | Description |
|
|
721
|
+
|---|---|---|---|
|
|
722
|
+
| `context_key` | `string \| null` | yes | |
|
|
723
|
+
| `created_at` | `string (date-time) \| null` | yes | |
|
|
724
|
+
| `created_by` | `string` | yes | |
|
|
725
|
+
| `description` | `string \| null` | yes | |
|
|
726
|
+
| `entity_type` | `EntityType` | yes | |
|
|
727
|
+
| `id` | `string (uuid)` | yes | |
|
|
728
|
+
| `is_default` | `boolean` | yes | |
|
|
729
|
+
| `is_owner` | `boolean` | yes | |
|
|
730
|
+
| `is_reusable` | `boolean` | yes | |
|
|
731
|
+
| `state` | `Record<string, unknown>` | yes | |
|
|
732
|
+
| `title` | `string` | yes | |
|
|
733
|
+
| `updated_at` | `string (date-time) \| null` | yes | |
|
|
734
|
+
| `visibility` | `Visibility` | yes | |
|
|
735
|
+
|
|
736
|
+
**Example**
|
|
737
|
+
|
|
738
|
+
```ts
|
|
739
|
+
const result = await g8.api.objects.createObjectView({ path: { object_slug: "example" }, body: { title: "Example" } });
|
|
740
|
+
```
|
|
741
|
+
|
|
742
|
+
---
|
|
743
|
+
|
|
744
|
+
<a id="op-deleteobjectcsvimport"></a>
|
|
745
|
+
|
|
746
|
+
### `g8.api.objects.deleteObjectCsvImport(input)`
|
|
747
|
+
|
|
748
|
+
**Delete Object Csv Import**
|
|
749
|
+
|
|
750
|
+
- HTTP: `DELETE /api/v1/objects/{object_slug}/imports/csv/drafts/{draft_id}`
|
|
751
|
+
- operationId: `delete_object_csv_import_objects__object_slug__imports_csv_drafts__draft_id__delete` (also callable as `g8.api.call("delete_object_csv_import_objects__object_slug__imports_csv_drafts__draft_id__delete", input)`)
|
|
752
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
753
|
+
- API-key scope: `objects:write`
|
|
754
|
+
|
|
755
|
+
Delete the stored file and setup. Records already imported, their history and import receipts are kept.
|
|
756
|
+
|
|
757
|
+
**Input**
|
|
758
|
+
|
|
759
|
+
| Field | Type | Required | Description |
|
|
760
|
+
|---|---|---|---|
|
|
761
|
+
| `path.object_slug` | `string` | yes | |
|
|
762
|
+
| `path.draft_id` | `string (uuid)` | yes | |
|
|
763
|
+
| `query.revision` | `integer` | yes | |
|
|
764
|
+
|
|
765
|
+
**Returns** `ApiResponse_dict_`: the envelope `{ data: Record<string, unknown>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
766
|
+
|
|
767
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
768
|
+
|
|
769
|
+
**Example**
|
|
770
|
+
|
|
771
|
+
```ts
|
|
772
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
773
|
+
const result = await g8.api.objects.deleteObjectCsvImport({
|
|
774
|
+
path: {
|
|
775
|
+
object_slug: "example",
|
|
776
|
+
draft_id: "00000000-0000-0000-0000-000000000000",
|
|
777
|
+
},
|
|
778
|
+
query: { revision: 1 },
|
|
779
|
+
});
|
|
780
|
+
```
|
|
781
|
+
|
|
782
|
+
---
|
|
783
|
+
|
|
521
784
|
<a id="op-deleteobjectrelationship"></a>
|
|
522
785
|
|
|
523
786
|
### `g8.api.objects.deleteObjectRelationship(input)`
|
|
@@ -589,6 +852,120 @@ const result = await g8.api.objects.deleteObjectRelationship({
|
|
|
589
852
|
|
|
590
853
|
---
|
|
591
854
|
|
|
855
|
+
<a id="op-deleteobjectview"></a>
|
|
856
|
+
|
|
857
|
+
### `g8.api.objects.deleteObjectView(input)`
|
|
858
|
+
|
|
859
|
+
**Delete Object View**
|
|
860
|
+
|
|
861
|
+
- HTTP: `DELETE /api/v1/objects/{object_slug}/views/{view_id}`
|
|
862
|
+
- operationId: `delete_object_view_objects__object_slug__views__view_id__delete` (also callable as `g8.api.call("delete_object_view_objects__object_slug__views__view_id__delete", input)`)
|
|
863
|
+
- Tier: `destructive`: deletes or archives data; confirm with a human before calling
|
|
864
|
+
- API-key scope: `objects:delete`
|
|
865
|
+
|
|
866
|
+
Delete a view owned by this credential. Does not delete records.
|
|
867
|
+
|
|
868
|
+
**Input**
|
|
869
|
+
|
|
870
|
+
| Field | Type | Required | Description |
|
|
871
|
+
|---|---|---|---|
|
|
872
|
+
| `path.object_slug` | `string` | yes | |
|
|
873
|
+
| `path.view_id` | `string (uuid)` | yes | |
|
|
874
|
+
|
|
875
|
+
**Returns** `ApiResponse_NoneType_`: the envelope `{ data: null, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
876
|
+
|
|
877
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
878
|
+
|
|
879
|
+
**Example**
|
|
880
|
+
|
|
881
|
+
```ts
|
|
882
|
+
// destructive: deletes or archives data; confirm with a human before calling.
|
|
883
|
+
const result = await g8.api.objects.deleteObjectView({
|
|
884
|
+
path: {
|
|
885
|
+
object_slug: "example",
|
|
886
|
+
view_id: "00000000-0000-0000-0000-000000000000",
|
|
887
|
+
},
|
|
888
|
+
});
|
|
889
|
+
```
|
|
890
|
+
|
|
891
|
+
---
|
|
892
|
+
|
|
893
|
+
<a id="op-downloadobjectcsvimporterrors"></a>
|
|
894
|
+
|
|
895
|
+
### `g8.api.objects.downloadObjectCsvImportErrors(input)`
|
|
896
|
+
|
|
897
|
+
**Download Object Csv Import Errors**
|
|
898
|
+
|
|
899
|
+
- HTTP: `GET /api/v1/objects/{object_slug}/imports/csv/drafts/{draft_id}/errors`
|
|
900
|
+
- operationId: `download_object_csv_import_errors_objects__object_slug__imports_csv_drafts__draft_id__errors_get` (also callable as `g8.api.call("download_object_csv_import_errors_objects__object_slug__imports_csv_drafts__draft_id__errors_get", input)`)
|
|
901
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
902
|
+
- API-key scope: `objects:write`
|
|
903
|
+
|
|
904
|
+
Download skipped and rejected rows as CSV. While the file is stored: the original columns plus row_number, column
|
|
905
|
+
and error, ready to fix and re-upload (cells are spreadsheet-safe). Afterwards: row_number, column and code only,
|
|
906
|
+
never values. Needs the same read grant as an export.
|
|
907
|
+
|
|
908
|
+
**Input**
|
|
909
|
+
|
|
910
|
+
| Field | Type | Required | Description |
|
|
911
|
+
|---|---|---|---|
|
|
912
|
+
| `path.object_slug` | `string` | yes | |
|
|
913
|
+
| `path.draft_id` | `string (uuid)` | yes | |
|
|
914
|
+
|
|
915
|
+
**Returns** `unknown`.
|
|
916
|
+
|
|
917
|
+
**Example**
|
|
918
|
+
|
|
919
|
+
```ts
|
|
920
|
+
const result = await g8.api.objects.downloadObjectCsvImportErrors({
|
|
921
|
+
path: {
|
|
922
|
+
object_slug: "example",
|
|
923
|
+
draft_id: "00000000-0000-0000-0000-000000000000",
|
|
924
|
+
},
|
|
925
|
+
});
|
|
926
|
+
```
|
|
927
|
+
|
|
928
|
+
---
|
|
929
|
+
|
|
930
|
+
<a id="op-exportobjectrecords"></a>
|
|
931
|
+
|
|
932
|
+
### `g8.api.objects.exportObjectRecords(input)`
|
|
933
|
+
|
|
934
|
+
**Export Object Records**
|
|
935
|
+
|
|
936
|
+
- HTTP: `POST /api/v1/objects/{object_slug}/exports`
|
|
937
|
+
- operationId: `export_object_records_objects__object_slug__exports_post` (also callable as `g8.api.call("export_object_records_objects__object_slug__exports_post", input)`)
|
|
938
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
939
|
+
- API-key scope: `objects:export`
|
|
940
|
+
|
|
941
|
+
Download every matching native custom record of a view (filters, search, sort, columns, archived scope) as CSV or
|
|
942
|
+
typed JSON. Explicit objects:read and objects:export scopes and the key's read grant are required and rechecked before
|
|
943
|
+
delivery. Maximum 256 MB and 120 seconds; no partial files. CSV is spreadsheet-safe. Not a workspace backup.
|
|
944
|
+
|
|
945
|
+
**Input**
|
|
946
|
+
|
|
947
|
+
| Field | Type | Required | Description |
|
|
948
|
+
|---|---|---|---|
|
|
949
|
+
| `path.object_slug` | `string` | yes | |
|
|
950
|
+
| `body` | `ObjectExportRequest` | yes | Request body; fields below. |
|
|
951
|
+
|
|
952
|
+
Body fields (`ObjectExportRequest`):
|
|
953
|
+
|
|
954
|
+
| Field | Type | Required | Description |
|
|
955
|
+
|---|---|---|---|
|
|
956
|
+
| `body.format` | `"csv" \| "json"` | no | default `"csv"` |
|
|
957
|
+
| `body.state` | `ObjectViewState` | no | |
|
|
958
|
+
|
|
959
|
+
**Returns** `string (binary)`.
|
|
960
|
+
|
|
961
|
+
**Example**
|
|
962
|
+
|
|
963
|
+
```ts
|
|
964
|
+
const result = await g8.api.objects.exportObjectRecords({ path: { object_slug: "example" }, body: {} });
|
|
965
|
+
```
|
|
966
|
+
|
|
967
|
+
---
|
|
968
|
+
|
|
592
969
|
<a id="op-getobject"></a>
|
|
593
970
|
|
|
594
971
|
### `g8.api.objects.getObject(input)`
|
|
@@ -637,6 +1014,64 @@ const result = await g8.api.objects.getObject({ path: { object_slug: "example" }
|
|
|
637
1014
|
|
|
638
1015
|
---
|
|
639
1016
|
|
|
1017
|
+
<a id="op-getobjectcsvimport"></a>
|
|
1018
|
+
|
|
1019
|
+
### `g8.api.objects.getObjectCsvImport(input)`
|
|
1020
|
+
|
|
1021
|
+
**Get Object Csv Import**
|
|
1022
|
+
|
|
1023
|
+
- HTTP: `GET /api/v1/objects/{object_slug}/imports/csv/drafts/{draft_id}`
|
|
1024
|
+
- operationId: `get_object_csv_import_objects__object_slug__imports_csv_drafts__draft_id__get` (also callable as `g8.api.call("get_object_csv_import_objects__object_slug__imports_csv_drafts__draft_id__get", input)`)
|
|
1025
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1026
|
+
- API-key scope: `objects:write`
|
|
1027
|
+
|
|
1028
|
+
Read one of this credential's imports: setup, headers, progress, status and up to five sample rows while the file is stored.
|
|
1029
|
+
|
|
1030
|
+
**Input**
|
|
1031
|
+
|
|
1032
|
+
| Field | Type | Required | Description |
|
|
1033
|
+
|---|---|---|---|
|
|
1034
|
+
| `path.object_slug` | `string` | yes | |
|
|
1035
|
+
| `path.draft_id` | `string (uuid)` | yes | |
|
|
1036
|
+
|
|
1037
|
+
**Returns** `ApiResponse_ObjectImportDetail_`: the envelope `{ data: ObjectImportDetail, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1038
|
+
|
|
1039
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1040
|
+
|
|
1041
|
+
`ObjectImportDetail` fields:
|
|
1042
|
+
|
|
1043
|
+
| Field | Type | Required | Description |
|
|
1044
|
+
|---|---|---|---|
|
|
1045
|
+
| `completed` | `integer` | yes | |
|
|
1046
|
+
| `created_at` | `string (date-time)` | yes | |
|
|
1047
|
+
| `error_rows` | `integer` | yes | |
|
|
1048
|
+
| `expires_at` | `string (date-time)` | yes | |
|
|
1049
|
+
| `filename` | `string` | yes | |
|
|
1050
|
+
| `headers` | `Array<string>` | yes | |
|
|
1051
|
+
| `id` | `string (uuid)` | yes | |
|
|
1052
|
+
| `owner_id` | `string` | yes | |
|
|
1053
|
+
| `owner_type` | `"user" \| "api"` | yes | |
|
|
1054
|
+
| `revision` | `integer` | yes | |
|
|
1055
|
+
| `setup` | `ObjectImportSetup` | yes | |
|
|
1056
|
+
| `source_available` | `boolean` | yes | |
|
|
1057
|
+
| `status` | `"draft" \| "partial" \| "completed" \| "expired"` | yes | |
|
|
1058
|
+
| `total` | `integer` | yes | |
|
|
1059
|
+
| `updated_at` | `string (date-time)` | yes | |
|
|
1060
|
+
| `sample` | `Array<Array<string>>` | no | First rows of the file while it is still stored |
|
|
1061
|
+
|
|
1062
|
+
**Example**
|
|
1063
|
+
|
|
1064
|
+
```ts
|
|
1065
|
+
const result = await g8.api.objects.getObjectCsvImport({
|
|
1066
|
+
path: {
|
|
1067
|
+
object_slug: "example",
|
|
1068
|
+
draft_id: "00000000-0000-0000-0000-000000000000",
|
|
1069
|
+
},
|
|
1070
|
+
});
|
|
1071
|
+
```
|
|
1072
|
+
|
|
1073
|
+
---
|
|
1074
|
+
|
|
640
1075
|
<a id="op-getobjectrecord"></a>
|
|
641
1076
|
|
|
642
1077
|
### `g8.api.objects.getObjectRecord(input)`
|
|
@@ -869,16 +1304,62 @@ const result = await g8.api.objects.getObjectRelationships({ path: { object_slug
|
|
|
869
1304
|
|
|
870
1305
|
---
|
|
871
1306
|
|
|
872
|
-
<a id="op-
|
|
1307
|
+
<a id="op-inspectobjectcsvimport"></a>
|
|
873
1308
|
|
|
874
|
-
### `g8.api.objects.
|
|
1309
|
+
### `g8.api.objects.inspectObjectCsvImport(input)`
|
|
875
1310
|
|
|
876
|
-
**
|
|
1311
|
+
**Inspect Object Csv Import**
|
|
877
1312
|
|
|
878
|
-
- HTTP: `
|
|
879
|
-
- operationId: `
|
|
880
|
-
- Tier: `
|
|
881
|
-
- API-key scope: `objects:
|
|
1313
|
+
- HTTP: `POST /api/v1/objects/{object_slug}/imports/csv/inspect`
|
|
1314
|
+
- operationId: `inspect_object_csv_import_objects__object_slug__imports_csv_inspect_post` (also callable as `g8.api.call("inspect_object_csv_import_objects__object_slug__imports_csv_inspect_post", input)`)
|
|
1315
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1316
|
+
- API-key scope: `objects:write`
|
|
1317
|
+
|
|
1318
|
+
Read a CSV's headers, five sample rows and row count. Nothing is stored or written. Maximum 2 MB, 5000 rows, 200 columns.
|
|
1319
|
+
|
|
1320
|
+
**Input**
|
|
1321
|
+
|
|
1322
|
+
| Field | Type | Required | Description |
|
|
1323
|
+
|---|---|---|---|
|
|
1324
|
+
| `path.object_slug` | `string` | yes | |
|
|
1325
|
+
| `body` | `ObjectCsvInspect` | yes | Request body; fields below. |
|
|
1326
|
+
|
|
1327
|
+
Body fields (`ObjectCsvInspect`):
|
|
1328
|
+
|
|
1329
|
+
| Field | Type | Required | Description |
|
|
1330
|
+
|---|---|---|---|
|
|
1331
|
+
| `body.csv` | `string` | yes | min length 1, max length 2000000 |
|
|
1332
|
+
|
|
1333
|
+
**Returns** `ApiResponse_ObjectCsvInspection_`: the envelope `{ data: ObjectCsvInspection, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1334
|
+
|
|
1335
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1336
|
+
|
|
1337
|
+
`ObjectCsvInspection` fields:
|
|
1338
|
+
|
|
1339
|
+
| Field | Type | Required | Description |
|
|
1340
|
+
|---|---|---|---|
|
|
1341
|
+
| `headers` | `Array<string>` | yes | |
|
|
1342
|
+
| `sample` | `Array<Array<string>>` | yes | |
|
|
1343
|
+
| `total` | `integer` | yes | |
|
|
1344
|
+
|
|
1345
|
+
**Example**
|
|
1346
|
+
|
|
1347
|
+
```ts
|
|
1348
|
+
const result = await g8.api.objects.inspectObjectCsvImport({ path: { object_slug: "example" }, body: { csv: "example" } });
|
|
1349
|
+
```
|
|
1350
|
+
|
|
1351
|
+
---
|
|
1352
|
+
|
|
1353
|
+
<a id="op-listobjectattributes"></a>
|
|
1354
|
+
|
|
1355
|
+
### `g8.api.objects.listObjectAttributes(input)`
|
|
1356
|
+
|
|
1357
|
+
**List Object Attributes**
|
|
1358
|
+
|
|
1359
|
+
- HTTP: `GET /api/v1/objects/{object_slug}/attributes`
|
|
1360
|
+
- operationId: `list_object_attributes_objects__object_slug__attributes_get` (also callable as `g8.api.call("list_object_attributes_objects__object_slug__attributes_get", input)`)
|
|
1361
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1362
|
+
- API-key scope: `objects:read`
|
|
882
1363
|
- Lifecycle: `preview` (may not be enabled for every org yet)
|
|
883
1364
|
- ★ Hand-written: [`g8.objects.listAttributes()`](../sdk-clients.md#g8-objects-listattributes)
|
|
884
1365
|
|
|
@@ -914,6 +1395,7 @@ Other envelope fields: `pagination` (PaginationMeta).
|
|
|
914
1395
|
| `is_system` | `boolean` | no | Whether this field is protected as a system attribute. default `false` |
|
|
915
1396
|
| `is_unique` | `boolean` | no | No two active records may hold the same value for this attribute. A collision is rejected with `409 duplicate_active_value`. default `false` |
|
|
916
1397
|
| `sort_order` | `integer` | no | Configured display order; equal values are ordered by API slug. default `0` |
|
|
1398
|
+
| `visible_to_role_ids` | `Array<string> \| null` | no | Role ids that may see this field; null means every role. Owners and admins always see every field. A field hidden from the caller is absent from every response. Set it with PATCH on this attribute. |
|
|
917
1399
|
|
|
918
1400
|
**Example**
|
|
919
1401
|
|
|
@@ -923,6 +1405,57 @@ const result = await g8.api.objects.listObjectAttributes({ path: { object_slug:
|
|
|
923
1405
|
|
|
924
1406
|
---
|
|
925
1407
|
|
|
1408
|
+
<a id="op-listobjectcsvimports"></a>
|
|
1409
|
+
|
|
1410
|
+
### `g8.api.objects.listObjectCsvImports(input)`
|
|
1411
|
+
|
|
1412
|
+
**List Object Csv Imports**
|
|
1413
|
+
|
|
1414
|
+
- HTTP: `GET /api/v1/objects/{object_slug}/imports/csv/drafts`
|
|
1415
|
+
- operationId: `list_object_csv_imports_objects__object_slug__imports_csv_drafts_get` (also callable as `g8.api.call("list_object_csv_imports_objects__object_slug__imports_csv_drafts_get", input)`)
|
|
1416
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1417
|
+
- API-key scope: `objects:write`
|
|
1418
|
+
|
|
1419
|
+
List this credential's CSV imports for the object, newest first. History only: no file contents or cell values.
|
|
1420
|
+
|
|
1421
|
+
**Input**
|
|
1422
|
+
|
|
1423
|
+
| Field | Type | Required | Description |
|
|
1424
|
+
|---|---|---|---|
|
|
1425
|
+
| `path.object_slug` | `string` | yes | |
|
|
1426
|
+
| `query.limit` | `integer` | no | default `25` |
|
|
1427
|
+
| `query.offset` | `integer` | no | default `0` |
|
|
1428
|
+
|
|
1429
|
+
**Returns** `ApiResponse_list_ObjectImportSummary__`: the envelope `{ data: Array<ObjectImportSummary>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1430
|
+
|
|
1431
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1432
|
+
|
|
1433
|
+
`ObjectImportSummary` fields:
|
|
1434
|
+
|
|
1435
|
+
| Field | Type | Required | Description |
|
|
1436
|
+
|---|---|---|---|
|
|
1437
|
+
| `completed` | `integer` | yes | |
|
|
1438
|
+
| `created_at` | `string (date-time)` | yes | |
|
|
1439
|
+
| `error_rows` | `integer` | yes | |
|
|
1440
|
+
| `expires_at` | `string (date-time)` | yes | |
|
|
1441
|
+
| `filename` | `string` | yes | |
|
|
1442
|
+
| `id` | `string (uuid)` | yes | |
|
|
1443
|
+
| `owner_id` | `string` | yes | |
|
|
1444
|
+
| `owner_type` | `"user" \| "api"` | yes | |
|
|
1445
|
+
| `revision` | `integer` | yes | |
|
|
1446
|
+
| `source_available` | `boolean` | yes | |
|
|
1447
|
+
| `status` | `"draft" \| "partial" \| "completed" \| "expired"` | yes | |
|
|
1448
|
+
| `total` | `integer` | yes | |
|
|
1449
|
+
| `updated_at` | `string (date-time)` | yes | |
|
|
1450
|
+
|
|
1451
|
+
**Example**
|
|
1452
|
+
|
|
1453
|
+
```ts
|
|
1454
|
+
const result = await g8.api.objects.listObjectCsvImports({ path: { object_slug: "example" } });
|
|
1455
|
+
```
|
|
1456
|
+
|
|
1457
|
+
---
|
|
1458
|
+
|
|
926
1459
|
<a id="op-listobjectrecords"></a>
|
|
927
1460
|
|
|
928
1461
|
### `g8.api.objects.listObjectRecords(input)`
|
|
@@ -977,6 +1510,55 @@ const result = await g8.api.objects.listObjectRecords({ path: { object_slug: "ex
|
|
|
977
1510
|
|
|
978
1511
|
---
|
|
979
1512
|
|
|
1513
|
+
<a id="op-listobjectviews"></a>
|
|
1514
|
+
|
|
1515
|
+
### `g8.api.objects.listObjectViews(input)`
|
|
1516
|
+
|
|
1517
|
+
**List Object Views**
|
|
1518
|
+
|
|
1519
|
+
- HTTP: `GET /api/v1/objects/{object_slug}/views`
|
|
1520
|
+
- operationId: `list_object_views_objects__object_slug__views_get` (also callable as `g8.api.call("list_object_views_objects__object_slug__views_get", input)`)
|
|
1521
|
+
- Tier: `read`: reads data; safe to call and to retry
|
|
1522
|
+
- API-key scope: `objects:read`
|
|
1523
|
+
|
|
1524
|
+
List this credential's private views and shared workspace views. Views never grant record access.
|
|
1525
|
+
|
|
1526
|
+
**Input**
|
|
1527
|
+
|
|
1528
|
+
| Field | Type | Required | Description |
|
|
1529
|
+
|---|---|---|---|
|
|
1530
|
+
| `path.object_slug` | `string` | yes | |
|
|
1531
|
+
|
|
1532
|
+
**Returns** `ApiResponse_list_SavedViewResponse__`: the envelope `{ data: Array<SavedViewResponse>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1533
|
+
|
|
1534
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1535
|
+
|
|
1536
|
+
`SavedViewResponse` fields:
|
|
1537
|
+
|
|
1538
|
+
| Field | Type | Required | Description |
|
|
1539
|
+
|---|---|---|---|
|
|
1540
|
+
| `context_key` | `string \| null` | yes | |
|
|
1541
|
+
| `created_at` | `string (date-time) \| null` | yes | |
|
|
1542
|
+
| `created_by` | `string` | yes | |
|
|
1543
|
+
| `description` | `string \| null` | yes | |
|
|
1544
|
+
| `entity_type` | `EntityType` | yes | |
|
|
1545
|
+
| `id` | `string (uuid)` | yes | |
|
|
1546
|
+
| `is_default` | `boolean` | yes | |
|
|
1547
|
+
| `is_owner` | `boolean` | yes | |
|
|
1548
|
+
| `is_reusable` | `boolean` | yes | |
|
|
1549
|
+
| `state` | `Record<string, unknown>` | yes | |
|
|
1550
|
+
| `title` | `string` | yes | |
|
|
1551
|
+
| `updated_at` | `string (date-time) \| null` | yes | |
|
|
1552
|
+
| `visibility` | `Visibility` | yes | |
|
|
1553
|
+
|
|
1554
|
+
**Example**
|
|
1555
|
+
|
|
1556
|
+
```ts
|
|
1557
|
+
const result = await g8.api.objects.listObjectViews({ path: { object_slug: "example" } });
|
|
1558
|
+
```
|
|
1559
|
+
|
|
1560
|
+
---
|
|
1561
|
+
|
|
980
1562
|
<a id="op-listobjects"></a>
|
|
981
1563
|
|
|
982
1564
|
### `g8.api.objects.listObjects(input?)`
|
|
@@ -1086,6 +1668,166 @@ const result = await g8.api.objects.mergeObjectRecords({
|
|
|
1086
1668
|
|
|
1087
1669
|
---
|
|
1088
1670
|
|
|
1671
|
+
<a id="op-previewobjectcsvimport"></a>
|
|
1672
|
+
|
|
1673
|
+
### `g8.api.objects.previewObjectCsvImport(input)`
|
|
1674
|
+
|
|
1675
|
+
**Preview Object Csv Import**
|
|
1676
|
+
|
|
1677
|
+
- HTTP: `POST /api/v1/objects/{object_slug}/imports/csv/drafts/{draft_id}/preview`
|
|
1678
|
+
- operationId: `preview_object_csv_import_objects__object_slug__imports_csv_drafts__draft_id__preview_post` (also callable as `g8.api.call("preview_object_csv_import_objects__object_slug__imports_csv_drafts__draft_id__preview_post", input)`)
|
|
1679
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1680
|
+
- API-key scope: `objects:write`
|
|
1681
|
+
|
|
1682
|
+
Preview up to 100 rows of the stored file: normalized values, errors, upsert matches and rows already imported.
|
|
1683
|
+
Writes no records. Empty cells are omitted; \N clears a field.
|
|
1684
|
+
|
|
1685
|
+
**Input**
|
|
1686
|
+
|
|
1687
|
+
| Field | Type | Required | Description |
|
|
1688
|
+
|---|---|---|---|
|
|
1689
|
+
| `path.object_slug` | `string` | yes | |
|
|
1690
|
+
| `path.draft_id` | `string (uuid)` | yes | |
|
|
1691
|
+
| `body` | `ImportPage` | yes | Request body; fields below. |
|
|
1692
|
+
|
|
1693
|
+
Body fields (`ImportPage`):
|
|
1694
|
+
|
|
1695
|
+
| Field | Type | Required | Description |
|
|
1696
|
+
|---|---|---|---|
|
|
1697
|
+
| `body.revision` | `integer` | yes | The draft revision this page was planned against min 1 |
|
|
1698
|
+
| `body.limit` | `integer` | no | default `100`, min 1, max 100 |
|
|
1699
|
+
| `body.offset` | `integer` | no | default `0`, min 0, max 4999 |
|
|
1700
|
+
|
|
1701
|
+
**Returns** `ApiResponse_ObjectCsvPreview_`: the envelope `{ data: ObjectCsvPreview, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1702
|
+
|
|
1703
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1704
|
+
|
|
1705
|
+
`ObjectCsvPreview` fields:
|
|
1706
|
+
|
|
1707
|
+
| Field | Type | Required | Description |
|
|
1708
|
+
|---|---|---|---|
|
|
1709
|
+
| `completed` | `integer` | yes | |
|
|
1710
|
+
| `next_offset` | `integer \| null` | yes | |
|
|
1711
|
+
| `rows` | `Array<ImportPreviewRow>` | yes | |
|
|
1712
|
+
| `schema_fingerprint` | `string` | yes | |
|
|
1713
|
+
| `total` | `integer` | yes | |
|
|
1714
|
+
|
|
1715
|
+
**Example**
|
|
1716
|
+
|
|
1717
|
+
```ts
|
|
1718
|
+
const result = await g8.api.objects.previewObjectCsvImport({
|
|
1719
|
+
path: {
|
|
1720
|
+
object_slug: "example",
|
|
1721
|
+
draft_id: "00000000-0000-0000-0000-000000000000",
|
|
1722
|
+
},
|
|
1723
|
+
body: { revision: 1 },
|
|
1724
|
+
});
|
|
1725
|
+
```
|
|
1726
|
+
|
|
1727
|
+
---
|
|
1728
|
+
|
|
1729
|
+
<a id="op-queryobjectboardgroups"></a>
|
|
1730
|
+
|
|
1731
|
+
### `g8.api.objects.queryObjectBoardGroups(input)`
|
|
1732
|
+
|
|
1733
|
+
**Query Object Board Groups**
|
|
1734
|
+
|
|
1735
|
+
- HTTP: `POST /api/v1/objects/{object_slug}/views/board/groups`
|
|
1736
|
+
- operationId: `query_object_board_groups_objects__object_slug__views_board_groups_post` (also callable as `g8.api.call("query_object_board_groups_objects__object_slug__views_board_groups_post", input)`)
|
|
1737
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1738
|
+
- API-key scope: `objects:read`
|
|
1739
|
+
|
|
1740
|
+
Read status groups and full filtered counts. This POST performs no writes.
|
|
1741
|
+
|
|
1742
|
+
**Input**
|
|
1743
|
+
|
|
1744
|
+
| Field | Type | Required | Description |
|
|
1745
|
+
|---|---|---|---|
|
|
1746
|
+
| `path.object_slug` | `string` | yes | |
|
|
1747
|
+
| `body` | `ObjectViewState` | yes | Request body; fields below. |
|
|
1748
|
+
|
|
1749
|
+
Body fields (`ObjectViewState`):
|
|
1750
|
+
|
|
1751
|
+
| Field | Type | Required | Description |
|
|
1752
|
+
|---|---|---|---|
|
|
1753
|
+
| `body.columns` | `Array<string> \| null` | no | max items 200 |
|
|
1754
|
+
| `body.filters` | `Array<RecordFilter>` | no | max items 10 |
|
|
1755
|
+
| `body.groupBy` | `string \| null` | no | |
|
|
1756
|
+
| `body.includeArchived` | `boolean` | no | default `false` |
|
|
1757
|
+
| `body.layout` | `"table" \| "board"` | no | default `"table"` |
|
|
1758
|
+
| `body.search` | `string` | no | default `""`, max length 200 |
|
|
1759
|
+
| `body.sortBy` | `string \| null` | no | |
|
|
1760
|
+
| `body.sortOrder` | `"asc" \| "desc"` | no | default `"desc"` |
|
|
1761
|
+
| `body.version` | `1` | no | default `1` |
|
|
1762
|
+
|
|
1763
|
+
**Returns** `ApiResponse_list_ObjectBoardGroup__`: the envelope `{ data: Array<ObjectBoardGroup>, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1764
|
+
|
|
1765
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1766
|
+
|
|
1767
|
+
`ObjectBoardGroup` fields:
|
|
1768
|
+
|
|
1769
|
+
| Field | Type | Required | Description |
|
|
1770
|
+
|---|---|---|---|
|
|
1771
|
+
| `label` | `string` | yes | |
|
|
1772
|
+
| `total` | `integer` | yes | |
|
|
1773
|
+
| `value` | `string \| null` | yes | |
|
|
1774
|
+
|
|
1775
|
+
**Example**
|
|
1776
|
+
|
|
1777
|
+
```ts
|
|
1778
|
+
const result = await g8.api.objects.queryObjectBoardGroups({ path: { object_slug: "example" }, body: {} });
|
|
1779
|
+
```
|
|
1780
|
+
|
|
1781
|
+
---
|
|
1782
|
+
|
|
1783
|
+
<a id="op-queryobjectboardrecords"></a>
|
|
1784
|
+
|
|
1785
|
+
### `g8.api.objects.queryObjectBoardRecords(input)`
|
|
1786
|
+
|
|
1787
|
+
**Query Object Board Records**
|
|
1788
|
+
|
|
1789
|
+
- HTTP: `POST /api/v1/objects/{object_slug}/views/board/records`
|
|
1790
|
+
- operationId: `query_object_board_records_objects__object_slug__views_board_records_post` (also callable as `g8.api.call("query_object_board_records_objects__object_slug__views_board_records_post", input)`)
|
|
1791
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1792
|
+
- API-key scope: `objects:read`
|
|
1793
|
+
|
|
1794
|
+
Read a bounded status page with current record revisions. This POST performs no writes.
|
|
1795
|
+
|
|
1796
|
+
**Input**
|
|
1797
|
+
|
|
1798
|
+
| Field | Type | Required | Description |
|
|
1799
|
+
|---|---|---|---|
|
|
1800
|
+
| `path.object_slug` | `string` | yes | |
|
|
1801
|
+
| `body` | `ObjectBoardPage` | yes | Request body; fields below. |
|
|
1802
|
+
|
|
1803
|
+
Body fields (`ObjectBoardPage`):
|
|
1804
|
+
|
|
1805
|
+
| Field | Type | Required | Description |
|
|
1806
|
+
|---|---|---|---|
|
|
1807
|
+
| `body.state` | `ObjectViewState` | yes | |
|
|
1808
|
+
| `body.group_value` | `string \| null` | no | max length 500 |
|
|
1809
|
+
| `body.limit` | `integer` | no | default `20`, min 1, max 50 |
|
|
1810
|
+
| `body.offset` | `integer` | no | default `0`, min 0, max 1000000 |
|
|
1811
|
+
|
|
1812
|
+
**Returns** `ApiResponse_RecordListResponse_`: the envelope `{ data: RecordListResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1813
|
+
|
|
1814
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1815
|
+
|
|
1816
|
+
`RecordListResponse` fields:
|
|
1817
|
+
|
|
1818
|
+
| Field | Type | Required | Description |
|
|
1819
|
+
|---|---|---|---|
|
|
1820
|
+
| `records` | `Array<RecordResponse>` | yes | |
|
|
1821
|
+
| `total` | `integer` | yes | |
|
|
1822
|
+
|
|
1823
|
+
**Example**
|
|
1824
|
+
|
|
1825
|
+
```ts
|
|
1826
|
+
const result = await g8.api.objects.queryObjectBoardRecords({ path: { object_slug: "example" }, body: { state: {} } });
|
|
1827
|
+
```
|
|
1828
|
+
|
|
1829
|
+
---
|
|
1830
|
+
|
|
1089
1831
|
<a id="op-restoreobjectrecord"></a>
|
|
1090
1832
|
|
|
1091
1833
|
### `g8.api.objects.restoreObjectRecord(input)`
|
|
@@ -1135,6 +1877,62 @@ const result = await g8.api.objects.restoreObjectRecord({ path: { object_slug: "
|
|
|
1135
1877
|
|
|
1136
1878
|
---
|
|
1137
1879
|
|
|
1880
|
+
<a id="op-setdefaultobjectview"></a>
|
|
1881
|
+
|
|
1882
|
+
### `g8.api.objects.setDefaultObjectView(input)`
|
|
1883
|
+
|
|
1884
|
+
**Set Default Object View**
|
|
1885
|
+
|
|
1886
|
+
- HTTP: `PUT /api/v1/objects/{object_slug}/views/default`
|
|
1887
|
+
- operationId: `set_default_object_view_objects__object_slug__views_default_put` (also callable as `g8.api.call("set_default_object_view_objects__object_slug__views_default_put", input)`)
|
|
1888
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
1889
|
+
- API-key scope: `objects:write`
|
|
1890
|
+
|
|
1891
|
+
Set or clear this credential's default within this object. Human defaults are unaffected.
|
|
1892
|
+
|
|
1893
|
+
**Input**
|
|
1894
|
+
|
|
1895
|
+
| Field | Type | Required | Description |
|
|
1896
|
+
|---|---|---|---|
|
|
1897
|
+
| `path.object_slug` | `string` | yes | |
|
|
1898
|
+
| `body` | `ObjectViewDefault` | yes | Request body; fields below. |
|
|
1899
|
+
|
|
1900
|
+
Body fields (`ObjectViewDefault`):
|
|
1901
|
+
|
|
1902
|
+
| Field | Type | Required | Description |
|
|
1903
|
+
|---|---|---|---|
|
|
1904
|
+
| `body.view_id` | `string (uuid) \| null` | no | |
|
|
1905
|
+
|
|
1906
|
+
**Returns** `ApiResponse_Union_SavedViewResponse__NoneType__`: the envelope `{ data: SavedViewResponse | null, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1907
|
+
|
|
1908
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
1909
|
+
|
|
1910
|
+
`data` fields:
|
|
1911
|
+
|
|
1912
|
+
| Field | Type | Required | Description |
|
|
1913
|
+
|---|---|---|---|
|
|
1914
|
+
| `context_key` | `string \| null` | yes | |
|
|
1915
|
+
| `created_at` | `string (date-time) \| null` | yes | |
|
|
1916
|
+
| `created_by` | `string` | yes | |
|
|
1917
|
+
| `description` | `string \| null` | yes | |
|
|
1918
|
+
| `entity_type` | `EntityType` | yes | |
|
|
1919
|
+
| `id` | `string (uuid)` | yes | |
|
|
1920
|
+
| `is_default` | `boolean` | yes | |
|
|
1921
|
+
| `is_owner` | `boolean` | yes | |
|
|
1922
|
+
| `is_reusable` | `boolean` | yes | |
|
|
1923
|
+
| `state` | `Record<string, unknown>` | yes | |
|
|
1924
|
+
| `title` | `string` | yes | |
|
|
1925
|
+
| `updated_at` | `string (date-time) \| null` | yes | |
|
|
1926
|
+
| `visibility` | `Visibility` | yes | |
|
|
1927
|
+
|
|
1928
|
+
**Example**
|
|
1929
|
+
|
|
1930
|
+
```ts
|
|
1931
|
+
const result = await g8.api.objects.setDefaultObjectView({ path: { object_slug: "example" }, body: {} });
|
|
1932
|
+
```
|
|
1933
|
+
|
|
1934
|
+
---
|
|
1935
|
+
|
|
1138
1936
|
<a id="op-updateattribute"></a>
|
|
1139
1937
|
|
|
1140
1938
|
### `g8.api.objects.updateAttribute(input)`
|
|
@@ -1147,7 +1945,8 @@ const result = await g8.api.objects.restoreObjectRecord({ path: { object_slug: "
|
|
|
1147
1945
|
- API-key scope: `objects:manage`
|
|
1148
1946
|
- ★ Hand-written: [`g8.objects.updateAttribute()`](../sdk-clients.md#g8-objects-updateattribute)
|
|
1149
1947
|
|
|
1150
|
-
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.
|
|
1151
1950
|
|
|
1152
1951
|
**Input**
|
|
1153
1952
|
|
|
@@ -1171,6 +1970,7 @@ Body fields (`AttributeUpdateRequest`):
|
|
|
1171
1970
|
| `body.is_unique` | `boolean \| null` | no | |
|
|
1172
1971
|
| `body.sort_order` | `integer \| null` | no | |
|
|
1173
1972
|
| `body.title` | `string \| null` | no | min length 1, max length 200 |
|
|
1973
|
+
| `body.visible_to_role_ids` | `Array<string (uuid)> \| null` | no | max items 100 |
|
|
1174
1974
|
|
|
1175
1975
|
**Returns** `ApiResponse_AttributeDefinitionResponse_`: the envelope `{ data: AttributeDefinitionResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
1176
1976
|
|
|
@@ -1193,6 +1993,7 @@ Other envelope fields: `pagination` (PaginationMeta).
|
|
|
1193
1993
|
| `is_system` | `boolean` | no | Whether this field is protected as a system attribute. default `false` |
|
|
1194
1994
|
| `is_unique` | `boolean` | no | No two active records may hold the same value for this attribute. A collision is rejected with `409 duplicate_active_value`. default `false` |
|
|
1195
1995
|
| `sort_order` | `integer` | no | Configured display order; equal values are ordered by API slug. default `0` |
|
|
1996
|
+
| `visible_to_role_ids` | `Array<string> \| null` | no | Role ids that may see this field; null means every role. Owners and admins always see every field. A field hidden from the caller is absent from every response. Set it with PATCH on this attribute. |
|
|
1196
1997
|
|
|
1197
1998
|
**Example**
|
|
1198
1999
|
|
|
@@ -1217,7 +2018,8 @@ const result = await g8.api.objects.updateAttribute({ path: { object_slug: "exam
|
|
|
1217
2018
|
|
|
1218
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.
|
|
1219
2020
|
|
|
1220
|
-
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.
|
|
1221
2023
|
|
|
1222
2024
|
**Input**
|
|
1223
2025
|
|
|
@@ -1262,6 +2064,77 @@ const result = await g8.api.objects.updateObject({ path: { object_slug: "example
|
|
|
1262
2064
|
|
|
1263
2065
|
---
|
|
1264
2066
|
|
|
2067
|
+
<a id="op-updateobjectcsvimport"></a>
|
|
2068
|
+
|
|
2069
|
+
### `g8.api.objects.updateObjectCsvImport(input)`
|
|
2070
|
+
|
|
2071
|
+
**Update Object Csv Import**
|
|
2072
|
+
|
|
2073
|
+
- HTTP: `PUT /api/v1/objects/{object_slug}/imports/csv/drafts/{draft_id}`
|
|
2074
|
+
- operationId: `update_object_csv_import_objects__object_slug__imports_csv_drafts__draft_id__put` (also callable as `g8.api.call("update_object_csv_import_objects__object_slug__imports_csv_drafts__draft_id__put", input)`)
|
|
2075
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
2076
|
+
- API-key scope: `objects:write`
|
|
2077
|
+
|
|
2078
|
+
Change the filename or setup. revision must be the import's current revision. The stored file never changes.
|
|
2079
|
+
|
|
2080
|
+
**Input**
|
|
2081
|
+
|
|
2082
|
+
| Field | Type | Required | Description |
|
|
2083
|
+
|---|---|---|---|
|
|
2084
|
+
| `path.object_slug` | `string` | yes | |
|
|
2085
|
+
| `path.draft_id` | `string (uuid)` | yes | |
|
|
2086
|
+
| `query.revision` | `integer` | yes | |
|
|
2087
|
+
| `body` | `ObjectImportUpdate` | yes | Request body; fields below. |
|
|
2088
|
+
|
|
2089
|
+
Body fields (`ObjectImportUpdate`):
|
|
2090
|
+
|
|
2091
|
+
| Field | Type | Required | Description |
|
|
2092
|
+
|---|---|---|---|
|
|
2093
|
+
| `body.filename` | `string` | yes | min length 1, max length 255 |
|
|
2094
|
+
| `body.mapping` | `Record<string, string>` | no | |
|
|
2095
|
+
| `body.matching_attribute` | `string \| null` | no | max length 100 |
|
|
2096
|
+
| `body.mode` | `"create" \| "upsert"` | no | default `"create"` |
|
|
2097
|
+
|
|
2098
|
+
**Returns** `ApiResponse_ObjectImportDetail_`: the envelope `{ data: ObjectImportDetail, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2099
|
+
|
|
2100
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2101
|
+
|
|
2102
|
+
`ObjectImportDetail` fields:
|
|
2103
|
+
|
|
2104
|
+
| Field | Type | Required | Description |
|
|
2105
|
+
|---|---|---|---|
|
|
2106
|
+
| `completed` | `integer` | yes | |
|
|
2107
|
+
| `created_at` | `string (date-time)` | yes | |
|
|
2108
|
+
| `error_rows` | `integer` | yes | |
|
|
2109
|
+
| `expires_at` | `string (date-time)` | yes | |
|
|
2110
|
+
| `filename` | `string` | yes | |
|
|
2111
|
+
| `headers` | `Array<string>` | yes | |
|
|
2112
|
+
| `id` | `string (uuid)` | yes | |
|
|
2113
|
+
| `owner_id` | `string` | yes | |
|
|
2114
|
+
| `owner_type` | `"user" \| "api"` | yes | |
|
|
2115
|
+
| `revision` | `integer` | yes | |
|
|
2116
|
+
| `setup` | `ObjectImportSetup` | yes | |
|
|
2117
|
+
| `source_available` | `boolean` | yes | |
|
|
2118
|
+
| `status` | `"draft" \| "partial" \| "completed" \| "expired"` | yes | |
|
|
2119
|
+
| `total` | `integer` | yes | |
|
|
2120
|
+
| `updated_at` | `string (date-time)` | yes | |
|
|
2121
|
+
| `sample` | `Array<Array<string>>` | no | First rows of the file while it is still stored |
|
|
2122
|
+
|
|
2123
|
+
**Example**
|
|
2124
|
+
|
|
2125
|
+
```ts
|
|
2126
|
+
const result = await g8.api.objects.updateObjectCsvImport({
|
|
2127
|
+
path: {
|
|
2128
|
+
object_slug: "example",
|
|
2129
|
+
draft_id: "00000000-0000-0000-0000-000000000000",
|
|
2130
|
+
},
|
|
2131
|
+
query: { revision: 1 },
|
|
2132
|
+
body: { filename: "Example" },
|
|
2133
|
+
});
|
|
2134
|
+
```
|
|
2135
|
+
|
|
2136
|
+
---
|
|
2137
|
+
|
|
1265
2138
|
<a id="op-updateobjectrecord"></a>
|
|
1266
2139
|
|
|
1267
2140
|
### `g8.api.objects.updateObjectRecord(input)`
|
|
@@ -1325,6 +2198,70 @@ const result = await g8.api.objects.updateObjectRecord({ path: { object_slug: "e
|
|
|
1325
2198
|
|
|
1326
2199
|
---
|
|
1327
2200
|
|
|
2201
|
+
<a id="op-updateobjectview"></a>
|
|
2202
|
+
|
|
2203
|
+
### `g8.api.objects.updateObjectView(input)`
|
|
2204
|
+
|
|
2205
|
+
**Update Object View**
|
|
2206
|
+
|
|
2207
|
+
- HTTP: `PUT /api/v1/objects/{object_slug}/views/{view_id}`
|
|
2208
|
+
- operationId: `update_object_view_objects__object_slug__views__view_id__put` (also callable as `g8.api.call("update_object_view_objects__object_slug__views__view_id__put", input)`)
|
|
2209
|
+
- Tier: `write`: creates or changes records; the SDK sends an Idempotency-Key and retries transient failures
|
|
2210
|
+
- API-key scope: `objects:write`
|
|
2211
|
+
|
|
2212
|
+
Rename or replace settings on a view owned by this credential.
|
|
2213
|
+
|
|
2214
|
+
**Input**
|
|
2215
|
+
|
|
2216
|
+
| Field | Type | Required | Description |
|
|
2217
|
+
|---|---|---|---|
|
|
2218
|
+
| `path.object_slug` | `string` | yes | |
|
|
2219
|
+
| `path.view_id` | `string (uuid)` | yes | |
|
|
2220
|
+
| `body` | `ObjectViewUpdate` | yes | Request body; fields below. |
|
|
2221
|
+
|
|
2222
|
+
Body fields (`ObjectViewUpdate`):
|
|
2223
|
+
|
|
2224
|
+
| Field | Type | Required | Description |
|
|
2225
|
+
|---|---|---|---|
|
|
2226
|
+
| `body.state` | `ObjectViewState \| null` | no | |
|
|
2227
|
+
| `body.title` | `string \| null` | no | min length 1, max length 120 |
|
|
2228
|
+
|
|
2229
|
+
**Returns** `ApiResponse_SavedViewResponse_`: the envelope `{ data: SavedViewResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
|
|
2230
|
+
|
|
2231
|
+
Other envelope fields: `pagination` (PaginationMeta).
|
|
2232
|
+
|
|
2233
|
+
`SavedViewResponse` fields:
|
|
2234
|
+
|
|
2235
|
+
| Field | Type | Required | Description |
|
|
2236
|
+
|---|---|---|---|
|
|
2237
|
+
| `context_key` | `string \| null` | yes | |
|
|
2238
|
+
| `created_at` | `string (date-time) \| null` | yes | |
|
|
2239
|
+
| `created_by` | `string` | yes | |
|
|
2240
|
+
| `description` | `string \| null` | yes | |
|
|
2241
|
+
| `entity_type` | `EntityType` | yes | |
|
|
2242
|
+
| `id` | `string (uuid)` | yes | |
|
|
2243
|
+
| `is_default` | `boolean` | yes | |
|
|
2244
|
+
| `is_owner` | `boolean` | yes | |
|
|
2245
|
+
| `is_reusable` | `boolean` | yes | |
|
|
2246
|
+
| `state` | `Record<string, unknown>` | yes | |
|
|
2247
|
+
| `title` | `string` | yes | |
|
|
2248
|
+
| `updated_at` | `string (date-time) \| null` | yes | |
|
|
2249
|
+
| `visibility` | `Visibility` | yes | |
|
|
2250
|
+
|
|
2251
|
+
**Example**
|
|
2252
|
+
|
|
2253
|
+
```ts
|
|
2254
|
+
const result = await g8.api.objects.updateObjectView({
|
|
2255
|
+
path: {
|
|
2256
|
+
object_slug: "example",
|
|
2257
|
+
view_id: "00000000-0000-0000-0000-000000000000",
|
|
2258
|
+
},
|
|
2259
|
+
body: {},
|
|
2260
|
+
});
|
|
2261
|
+
```
|
|
2262
|
+
|
|
2263
|
+
---
|
|
2264
|
+
|
|
1328
2265
|
<a id="op-upsertobjectrecord"></a>
|
|
1329
2266
|
|
|
1330
2267
|
### `g8.api.objects.upsertObjectRecord(input)`
|
|
@@ -1384,6 +2321,64 @@ const result = await g8.api.objects.upsertObjectRecord({
|
|
|
1384
2321
|
|
|
1385
2322
|
---
|
|
1386
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
|
+
|
|
1387
2382
|
## Referenced types
|
|
1388
2383
|
|
|
1389
2384
|
Named types that appear in the tables above. Full TypeScript definitions: `G8Contract.<Name>` (`import type { G8Contract } from "@graph8/sdk"`).
|
|
@@ -1397,6 +2392,7 @@ Configuration for specific attribute types.
|
|
|
1397
2392
|
| Field | Type | Required | Description |
|
|
1398
2393
|
|---|---|---|---|
|
|
1399
2394
|
| `currency_code` | `string \| null` | no | |
|
|
2395
|
+
| `formula` | `FormulaInput \| null` | no | |
|
|
1400
2396
|
| `max_value` | `integer \| null` | no | |
|
|
1401
2397
|
| `options` | `Array<Record<string, unknown>> \| null` | no | |
|
|
1402
2398
|
| `referenced_object` | `string \| null` | no | |
|
|
@@ -1410,14 +2406,95 @@ Valid attribute types for the Custom Objects type system.
|
|
|
1410
2406
|
|
|
1411
2407
|
Type: `"text" | "number" | "currency" | "date" | "timestamp" | "checkbox" | "select" | "status" | …`.
|
|
1412
2408
|
|
|
2409
|
+
<a id="type-entitytype"></a>
|
|
2410
|
+
|
|
2411
|
+
### `EntityType`
|
|
2412
|
+
|
|
2413
|
+
Which CRM grid the saved view applies to. Free-form string at the DB level (cb_saved_views.entity_type is VARCHAR(50)) to avoid a schema migration when we add deals/tasks/leads — but enforced as an enum at the API boundary so we don't accept typos. NEITHER A SUBSET NOR A SUPERSET OF ``FilterEntityType`` — see the invariant on that class, and the sibling docstring below, which states the same relationship from the other side. The two enums overlap on the four GRID values (``contacts``, ``companies``, ``deals``, ``leads``); ``FilterEntityType`` is a superset of THOSE and adds ``report``, while…
|
|
2414
|
+
|
|
2415
|
+
Type: `"custom_objects" | "contacts" | "companies" | "deals" | "leads" | "lists" | "contacts_view" | "companies_view" | …`.
|
|
2416
|
+
|
|
2417
|
+
<a id="type-importpreviewrow"></a>
|
|
2418
|
+
|
|
2419
|
+
### `ImportPreviewRow`
|
|
2420
|
+
|
|
2421
|
+
| Field | Type | Required | Description |
|
|
2422
|
+
|---|---|---|---|
|
|
2423
|
+
| `row_number` | `integer` | yes | min 2 |
|
|
2424
|
+
| `already_imported` | `boolean` | no | default `false` |
|
|
2425
|
+
| `errors` | `Array<Record<string, unknown>>` | no | |
|
|
2426
|
+
| `record_id` | `string (uuid) \| null` | no | |
|
|
2427
|
+
| `revision` | `integer \| null` | no | min 1 |
|
|
2428
|
+
| `values` | `Record<string, unknown>` | no | |
|
|
2429
|
+
|
|
2430
|
+
<a id="type-importreceiptrow"></a>
|
|
2431
|
+
|
|
2432
|
+
### `ImportReceiptRow`
|
|
2433
|
+
|
|
2434
|
+
| Field | Type | Required | Description |
|
|
2435
|
+
|---|---|---|---|
|
|
2436
|
+
| `action` | `"created" \| "updated"` | yes | |
|
|
2437
|
+
| `record_id` | `string (uuid)` | yes | |
|
|
2438
|
+
| `revision` | `integer` | yes | |
|
|
2439
|
+
| `row_number` | `integer` | yes | |
|
|
2440
|
+
| `replayed` | `boolean` | no | default `false` |
|
|
2441
|
+
|
|
2442
|
+
<a id="type-importrowexpectation"></a>
|
|
2443
|
+
|
|
2444
|
+
### `ImportRowExpectation`
|
|
2445
|
+
|
|
2446
|
+
| Field | Type | Required | Description |
|
|
2447
|
+
|---|---|---|---|
|
|
2448
|
+
| `row_number` | `integer` | yes | min 2 |
|
|
2449
|
+
| `record_id` | `string (uuid) \| null` | no | |
|
|
2450
|
+
| `revision` | `integer \| null` | no | min 1 |
|
|
2451
|
+
|
|
2452
|
+
<a id="type-importskippedrow"></a>
|
|
2453
|
+
|
|
2454
|
+
### `ImportSkippedRow`
|
|
2455
|
+
|
|
2456
|
+
A row this commit did not import; its errors are kept for the error file.
|
|
2457
|
+
|
|
2458
|
+
| Field | Type | Required | Description |
|
|
2459
|
+
|---|---|---|---|
|
|
2460
|
+
| `errors` | `Array<Record<string, unknown>>` | yes | |
|
|
2461
|
+
| `row_number` | `integer` | yes | |
|
|
2462
|
+
|
|
2463
|
+
<a id="type-objectimportsetup"></a>
|
|
2464
|
+
|
|
2465
|
+
### `ObjectImportSetup`
|
|
2466
|
+
|
|
2467
|
+
Column mapping (CSV header -> field slug) and match mode. May be incomplete while saved; preview and commit need an executable setup.
|
|
2468
|
+
|
|
2469
|
+
| Field | Type | Required | Description |
|
|
2470
|
+
|---|---|---|---|
|
|
2471
|
+
| `mapping` | `Record<string, string>` | no | |
|
|
2472
|
+
| `matching_attribute` | `string \| null` | no | max length 100 |
|
|
2473
|
+
| `mode` | `"create" \| "upsert"` | no | default `"create"` |
|
|
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
|
+
|
|
1413
2486
|
<a id="type-recordbulkupdatefailure"></a>
|
|
1414
2487
|
|
|
1415
2488
|
### `RecordBulkUpdateFailure`
|
|
1416
2489
|
|
|
2490
|
+
One record a bulk update did not change. ``error`` is the human message (kept for existing clients); ``code`` is stable for UIs to branch on: locked, archived, not_found, scope_changed, unique_conflict, invalid_value, constraint_violation or rejected; ``attribute_slug`` names the field when one field caused it.
|
|
2491
|
+
|
|
1417
2492
|
| Field | Type | Required | Description |
|
|
1418
2493
|
|---|---|---|---|
|
|
1419
2494
|
| `error` | `string` | yes | |
|
|
1420
2495
|
| `id` | `string (uuid)` | yes | |
|
|
2496
|
+
| `attribute_slug` | `string \| null` | no | |
|
|
2497
|
+
| `code` | `string` | no | default `"rejected"` |
|
|
1421
2498
|
|
|
1422
2499
|
<a id="type-recordfilter"></a>
|
|
1423
2500
|
|
|
@@ -1471,7 +2548,7 @@ One generation of one attribute's value. Values are TEMPORAL rather than mutable
|
|
|
1471
2548
|
|
|
1472
2549
|
| Field | Type | Required | Description |
|
|
1473
2550
|
|---|---|---|---|
|
|
1474
|
-
| `action` | `"created" \| "updated" \| "archived" \| "restored"` | yes | |
|
|
2551
|
+
| `action` | `"created" \| "updated" \| "archived" \| "restored" \| "recalculated"` | yes | |
|
|
1475
2552
|
| `actor_id` | `string \| null` | yes | |
|
|
1476
2553
|
| `actor_type` | `"user" \| "api" \| "app" \| "integration" \| "system"` | yes | |
|
|
1477
2554
|
| `changes` | `Record<string, RecordMutationValueChange>` | yes | |
|
|
@@ -1541,3 +2618,11 @@ Response for a record with its current attribute values.
|
|
|
1541
2618
|
| `target_label` | `string` | yes | |
|
|
1542
2619
|
| `target_many` | `boolean` | yes | |
|
|
1543
2620
|
| `target_object_definition_id` | `string (uuid) \| null` | yes | |
|
|
2621
|
+
|
|
2622
|
+
<a id="type-visibility"></a>
|
|
2623
|
+
|
|
2624
|
+
### `Visibility`
|
|
2625
|
+
|
|
2626
|
+
Who can apply a view. Only the creator can update or delete it.
|
|
2627
|
+
|
|
2628
|
+
Type: `"private" | "org"`.
|