Loading...
Loading...
Compare original and translation side by side
schemasschemas| Tool | Purpose |
|---|---|
| Discover which source types exist and what fields each needs |
| Validate credentials and list tables with available sync methods per table |
| Create the source — requires a |
| Postgres CDC pre-flight check (optional, only for Postgres CDC) |
| Check if a source supports webhooks and whether one has been registered |
| Register a webhook with the external service after source creation |
| Supply the signing secret manually when auto-registration failed |
| After creation, confirm the source is listed and see its initial status |
| See per-table sync status once the source is created |
| 工具名称 | 用途 |
|---|---|
| 发现存在哪些源类型,以及每种类型需要哪些字段 |
| 验证凭证,并列出每张表及其可用的同步方式 |
| 创建源——需要基于db-schema响应构建的 |
| Postgres CDC预检(可选,仅适用于Postgres CDC) |
| 检查源是否支持Webhook,以及是否已注册Webhook |
| 在源创建完成后,向外部服务注册Webhook |
| 当自动注册失败时,手动提供签名密钥 |
| 创建完成后,确认源已列出并查看其初始状态 |
| 源创建完成后,查看每张表的同步状态 |
external-data-sources-createschemas ┌────────────────────┐
│ 1. wizard │ What source types exist? What fields does each need?
└────────┬───────────┘
▼
┌────────────────────┐
│ 2. db-schema │ Validate creds. List tables + available sync methods per table.
└────────┬───────────┘
▼
┌────────────────────┐
│ 3. create │ Send source_type + credentials + schemas[] to actually create.
└────────────────────┘external-data-sources-createschemas ┌────────────────────┐
│ 1. wizard │ 有哪些源类型?每种类型需要哪些字段?
└────────┬───────────┘
▼
┌────────────────────┐
│ 2. db-schema │ 验证凭证。列出表格及每张表可用的同步方式。
└────────┬───────────┘
▼
┌────────────────────┐
│ 3. create │ 发送source_type + 凭证 + schemas[]来实际创建源。
└────────────────────┘external-data-sources-wizardname"Postgres""Stripe""Hubspot"labelcaptionfieldsnametyperequiredfeaturedunreleasedSourceunreleasedSource: truePostgresportexternal-data-sources-wizardname"Postgres""Stripe""Hubspot"labelcaptionfieldsnametyperequiredfeaturedunreleasedSourceunreleasedSource: truePostgresportexternal-data-sources-db-schemasource_typemessage{
"table": "orders",
"should_sync": false,
"rows": 1_250_000,
"incremental_available": true, # can do sync_type=incremental
"append_available": true, # can do sync_type=append
"cdc_available": true, # can do sync_type=cdc (null = not enabled for team)
"supports_webhooks": false, # can do sync_type=webhook for real-time push
"incremental_fields": [ # candidates: usually updated_at, created_at, id
{"field": "updated_at", "type": "datetime", "label": "updated_at", ...},
{"field": "created_at", "type": "datetime", ...},
{"field": "id", "type": "integer", ...}
],
"detected_primary_keys": ["id"],
"available_columns": [{"field": "id", "type": "integer", "nullable": false}, ...],
"description": "..."
}external-data-sources-db-schemasource_typemessage{
"table": "orders",
"should_sync": false,
"rows": 1_250_000,
"incremental_available": true, # 可使用sync_type=incremental
"append_available": true, # 可使用sync_type=append
"cdc_available": true, # 可使用sync_type=cdc (null = 团队未启用)
"supports_webhooks": false, # 可使用sync_type=webhook进行实时推送
"incremental_fields": [ # 候选字段:通常为updated_at、created_at、id
{"field": "updated_at", "type": "datetime", "label": "updated_at", ...},
{"field": "created_at", "type": "datetime", ...},
{"field": "id", "type": "integer", ...}
],
"detected_primary_keys": ["id"],
"available_columns": [{"field": "id", "type": "integer", "nullable": false}, ...],
"description": "..."
}full_refreshupdated_atmodified_atincrementalappendcdcsync_type: "webhook"supports_webhooks: trueincrementalappendcdcincremental_fieldincremental_fieldsupdated_atcreated_atincremental_field_typedatetimetimestampdateintegernumericobjectidprimary_key_columnsdetected_primary_keysfull_refreshupdated_atmodified_atincrementalappendcdcsupports_webhooks: truesync_type: "webhook"incrementalappendcdcincremental_fieldincremental_fieldsupdated_atcreated_atincremental_field_typedatetimetimestampdateintegernumericobjectidprimary_key_columnsdetected_primary_keysprefix{prefix}_{table_name}stripepostgrespostgres_prodpostgres_analyticsprefix{prefix}_{table_name}stripepostgrespostgres_prodpostgres_analyticsexternal-data-sources-create{
"source_type": "Postgres",
"prefix": "postgres_prod",
"payload": {
"host": "...",
"port": "5432",
"dbname": "...",
"user": "...",
"password": "...",
"schema": "public",
"schemas": [
{
"name": "orders",
"should_sync": true,
"sync_type": "incremental",
"incremental_field": "updated_at",
"incremental_field_type": "datetime",
"primary_key_columns": ["id"]
},
{
"name": "users",
"should_sync": true,
"sync_type": "full_refresh"
},
{
"name": "audit_log",
"should_sync": false
}
]
}
}schemasshould_sync: falseshould_sync: falsesync_typeshould_sync: trueincremental_fieldincremental_field_typesync_typeincrementalappendprimary_key_columnssync_typecdcidexternal-data-sources-create{
"source_type": "Postgres",
"prefix": "postgres_prod",
"payload": {
"host": "...",
"port": "5432",
"dbname": "...",
"user": "...",
"password": "...",
"schema": "public",
"schemas": [
{
"name": "orders",
"should_sync": true,
"sync_type": "incremental",
"incremental_field": "updated_at",
"incremental_field_type": "datetime",
"primary_key_columns": ["id"]
},
{
"name": "users",
"should_sync": true,
"sync_type": "full_refresh"
},
{
"name": "audit_log",
"should_sync": false
}
]
}
}schemasshould_sync: falseshould_sync: falseshould_sync: truesync_typesync_typeincrementalappendincremental_fieldincremental_field_typesync_typecdcprimary_key_columnsidsync_type: "webhook"sync_type: "webhook"external-data-sources-createsync_type: "webhook"should_sync: trueexternal-data-sources-webhook-info-retrieve({id})exists: trueexternal-data-sources-create-webhook-create({id})signing_secret{success, webhook_url, error}webhook_urlsuccess: falsewebhook_urlexternal-data-sources-update-webhook-inputs-create({id}, {inputs: {signing_secret: "whsec_..."}})external-data-sources-webhook-info-retrieve({id})exists: trueexternal_status.status: "enabled"errorinitial_sync_completesync_frequencyexternal-data-sources-createsync_type: "webhook"should_sync: trueexternal-data-sources-webhook-info-retrieve({id})exists: trueexternal-data-sources-create-webhook-create({id})signing_secret{success, webhook_url, error}webhook_urlsuccess: falsewebhook_urlexternal-data-sources-update-webhook-inputs-create({id}, {inputs: {signing_secret: "whsec_..."}})external-data-sources-webhook-info-retrieve({id})exists: trueexternal_status.status: "enabled"errorinitial_sync_completesync_frequencyexternal-data-schemas-listRunningCompletedSELECT * FROM {prefix}_{table_name} LIMIT 10external-data-schemas-listRunningCompletedSELECT * FROM {prefix}_{table_name} LIMIT 10external-data-sources-check-cdc-prerequisites-create{valid, errors[]}valid: falsesync_type: "cdc"primary_key_columnsexternal-data-sources-check-cdc-prerequisites-create{valid, errors[]}valid: falsesync_type: "cdc"primary_key_columnsErrorschemassync_type: "webhook"create-webhookWebhookSourcesync_frequency: "24hour"Errorschemasorderssync_type: "webhook"create-webhookWebhookSourcesync_frequency: "24hour"