下载 OpenAPI 规范:
所有接口都使用 Bearer API Key。数据上报方使用限定到来源的 ingest:{source} Key;Dashboard 和其他只读消费者使用独立的 query:read Key。入库 Key 不能查询数据,查询 Key 也不能写入数据。
PUBLISHED 或终态失败。只有原子发布成功后,来源游标才会推进。revision: latest,并保留响应中的数字 data_revision。十进制数在 HTTP 中编码为字符串。缺失值保持为 null,绝不改写为零。日期与时间口径必须遵循各 Dataset 描述。
为一个来源、数据流和数据范围创建 OPEN 状态的 Sync Run。使用相同幂等键和指纹重试时返回已有运行;同一幂等键对应不同指纹时返回冲突。
| source required | string Enum: "qianchuan" "shipinhao" "material" "control_plane" "execution" "economics" | ||||||||||
| stream required | string Enum: "account_state" "product_state" "plan_state" "plan_material_binding" "plan_daily_performance" "material_daily_performance" "promotion_order_lifecycle" "long_term_plan_state" "long_term_plan_daily" "business_material" "platform_material_registry" "strategy_registry" "allocation_state" "strategy_binding" "sku_economics_policy" | ||||||||||
| source_scope_id required | string [ 1 .. 256 ] characters | ||||||||||
| mode required | string Enum: "incremental" "reconciliation" "repair" "backfill" "bootstrap" | ||||||||||
| schema_version required | string non-empty | ||||||||||
| cursor_before required | object or null | ||||||||||
required | object (Coverage) | ||||||||||
| |||||||||||
| idempotency_key required | string [ 1 .. 256 ] characters | ||||||||||
| run_id required | string <uuid> | ||||||||||
| state required | string Enum: "OPEN" "PROCESSING" "PUBLISHED" "REJECTED" "ABORTED" "EXPIRED" | ||||||||||
| source required | string Enum: "qianchuan" "shipinhao" "material" "control_plane" "execution" "economics" | ||||||||||
| stream required | string Enum: "account_state" "product_state" "plan_state" "plan_material_binding" "plan_daily_performance" "material_daily_performance" "promotion_order_lifecycle" "long_term_plan_state" "long_term_plan_daily" "business_material" "platform_material_registry" "strategy_registry" "allocation_state" "strategy_binding" "sku_economics_policy" | ||||||||||
| schema_version required | string | ||||||||||
| expires_at required | string <date-time> | ||||||||||
| data_revision | string or null^[0-9]+$ | ||||||||||
| cursor_after | object or null | ||||||||||
ErrorEnvelope (object) or null | |||||||||||
Any of
| |||||||||||
required | object | ||||||||||
| |||||||||||
| run_id required | string <uuid> | ||||||||||
| state required | string Enum: "OPEN" "PROCESSING" "PUBLISHED" "REJECTED" "ABORTED" "EXPIRED" | ||||||||||
| source required | string Enum: "qianchuan" "shipinhao" "material" "control_plane" "execution" "economics" | ||||||||||
| stream required | string Enum: "account_state" "product_state" "plan_state" "plan_material_binding" "plan_daily_performance" "material_daily_performance" "promotion_order_lifecycle" "long_term_plan_state" "long_term_plan_daily" "business_material" "platform_material_registry" "strategy_registry" "allocation_state" "strategy_binding" "sku_economics_policy" | ||||||||||
| schema_version required | string | ||||||||||
| expires_at required | string <date-time> | ||||||||||
| data_revision | string or null^[0-9]+$ | ||||||||||
| cursor_after | object or null | ||||||||||
ErrorEnvelope (object) or null | |||||||||||
Any of
| |||||||||||
required | object | ||||||||||
| |||||||||||
{- "source": "qianchuan",
- "stream": "plan_daily_performance",
- "source_scope_id": "shop_demo:advertiser_demo",
- "mode": "incremental",
- "schema_version": "qianchuan.plan-daily.v1",
- "cursor_before": {
- "window_end": "2026-08-04"
}, - "coverage": {
- "time_basis": "acquisition_date_natural_day",
- "timezone": "Asia/Shanghai",
- "window_start": "2026-07-06",
- "window_end": "2026-08-04",
- "completeness": "complete_replacement"
}, - "idempotency_key": "qc:advertiser_demo:20260805T010000Z"
}{- "run_id": "dded282c-8ebd-44cf-8ba5-9a234973d1ec",
- "state": "OPEN",
- "source": "qianchuan",
- "stream": "account_state",
- "schema_version": "string",
- "expires_at": "2019-08-24T14:15:22Z",
- "data_revision": "string",
- "cursor_after": { },
- "error": {
- "code": "string",
- "message": "string",
- "request_id": "string",
- "details": { },
- "retry_after_seconds": 0
}, - "limits": {
- "max_batch_records": 1000,
- "max_batch_bytes": 5242880,
- "max_run_batches": 200,
- "max_run_records": 200000,
- "max_run_bytes": 262144000
}
}使用严格的来源 Schema 校验记录信封,并暂存一个按内容寻址的批次。使用相同 sequence 和 payload hash 重试时幂等成功;同一 sequence 对应不同内容时拒绝写入。
| run_id required | string <uuid> |
| sequence required | integer [ 1 .. 200 ] |
| sequence required | integer [ 1 .. 200 ] | ||||||||||||||||||
| record_count required | integer [ 0 .. 1000 ] | ||||||||||||||||||
| payload_sha256 required | string^[0-9a-f]{64}$ | ||||||||||||||||||
required | Array of objects (record_envelope_schema) <= 1000 items | ||||||||||||||||||
Array (<= 1000 items)
| |||||||||||||||||||
{- "sequence": 1,
- "record_count": 1000,
- "payload_sha256": "string",
- "records": [
- {
- "source": "qianchuan",
- "stream": "account_state",
- "source_record_id": "string",
- "operation": "upsert",
- "event_time": "string",
- "source_updated_at": "2019-08-24T14:15:22Z",
- "observed_at": "2019-08-24T14:15:22Z",
- "schema_version": "string",
- "payload": { }
}
]
}{- "code": "string",
- "message": "string",
- "request_id": "string",
- "details": { },
- "retry_after_seconds": 0
}冻结完整批次集合,并将运行推进到 PROCESSING。Canonical 事实、Mart、游标推进和已发布 data revision 会在同一个事务中原子可见。
| run_id required | string <uuid> |
| expected_batch_count required | integer [ 0 .. 200 ] |
| expected_record_count required | integer [ 0 .. 200000 ] |
| run_payload_sha256 required | string^[0-9a-f]{64}$ |
| cursor_after required | object or null |
| run_id required | string <uuid> | ||||||||||
| state required | string Enum: "OPEN" "PROCESSING" "PUBLISHED" "REJECTED" "ABORTED" "EXPIRED" | ||||||||||
| source required | string Enum: "qianchuan" "shipinhao" "material" "control_plane" "execution" "economics" | ||||||||||
| stream required | string Enum: "account_state" "product_state" "plan_state" "plan_material_binding" "plan_daily_performance" "material_daily_performance" "promotion_order_lifecycle" "long_term_plan_state" "long_term_plan_daily" "business_material" "platform_material_registry" "strategy_registry" "allocation_state" "strategy_binding" "sku_economics_policy" | ||||||||||
| schema_version required | string | ||||||||||
| expires_at required | string <date-time> | ||||||||||
| data_revision | string or null^[0-9]+$ | ||||||||||
| cursor_after | object or null | ||||||||||
ErrorEnvelope (object) or null | |||||||||||
Any of
| |||||||||||
required | object | ||||||||||
| |||||||||||
{- "expected_batch_count": 200,
- "expected_record_count": 200000,
- "run_payload_sha256": "string",
- "cursor_after": { }
}{- "run_id": "dded282c-8ebd-44cf-8ba5-9a234973d1ec",
- "state": "OPEN",
- "source": "qianchuan",
- "stream": "account_state",
- "schema_version": "string",
- "expires_at": "2019-08-24T14:15:22Z",
- "data_revision": "string",
- "cursor_after": { },
- "error": {
- "code": "string",
- "message": "string",
- "request_id": "string",
- "details": { },
- "retry_after_seconds": 0
}, - "limits": {
- "max_batch_records": 1000,
- "max_batch_bytes": 5242880,
- "max_run_batches": 200,
- "max_run_records": 200000,
- "max_run_bytes": 262144000
}
}停止尚未提交的运行并释放暂存数据。对终态运行重复调用时幂等返回;该操作不会回滚已经发布的数据。
| run_id required | string <uuid> |
| run_id required | string <uuid> | ||||||||||
| state required | string Enum: "OPEN" "PROCESSING" "PUBLISHED" "REJECTED" "ABORTED" "EXPIRED" | ||||||||||
| source required | string Enum: "qianchuan" "shipinhao" "material" "control_plane" "execution" "economics" | ||||||||||
| stream required | string Enum: "account_state" "product_state" "plan_state" "plan_material_binding" "plan_daily_performance" "material_daily_performance" "promotion_order_lifecycle" "long_term_plan_state" "long_term_plan_daily" "business_material" "platform_material_registry" "strategy_registry" "allocation_state" "strategy_binding" "sku_economics_policy" | ||||||||||
| schema_version required | string | ||||||||||
| expires_at required | string <date-time> | ||||||||||
| data_revision | string or null^[0-9]+$ | ||||||||||
| cursor_after | object or null | ||||||||||
ErrorEnvelope (object) or null | |||||||||||
Any of
| |||||||||||
required | object | ||||||||||
| |||||||||||
{- "run_id": "dded282c-8ebd-44cf-8ba5-9a234973d1ec",
- "state": "OPEN",
- "source": "qianchuan",
- "stream": "account_state",
- "schema_version": "string",
- "expires_at": "2019-08-24T14:15:22Z",
- "data_revision": "string",
- "cursor_after": { },
- "error": {
- "code": "string",
- "message": "string",
- "request_id": "string",
- "details": { },
- "retry_after_seconds": 0
}, - "limits": {
- "max_batch_records": 1000,
- "max_batch_bytes": 5242880,
- "max_run_batches": 200,
- "max_run_records": 200000,
- "max_run_bytes": 262144000
}
}返回调用方拥有的 Sync Run 当前生命周期状态、终态错误、已发布 data revision 和游标结果。
| run_id required | string <uuid> |
| run_id required | string <uuid> | ||||||||||
| state required | string Enum: "OPEN" "PROCESSING" "PUBLISHED" "REJECTED" "ABORTED" "EXPIRED" | ||||||||||
| source required | string Enum: "qianchuan" "shipinhao" "material" "control_plane" "execution" "economics" | ||||||||||
| stream required | string Enum: "account_state" "product_state" "plan_state" "plan_material_binding" "plan_daily_performance" "material_daily_performance" "promotion_order_lifecycle" "long_term_plan_state" "long_term_plan_daily" "business_material" "platform_material_registry" "strategy_registry" "allocation_state" "strategy_binding" "sku_economics_policy" | ||||||||||
| schema_version required | string | ||||||||||
| expires_at required | string <date-time> | ||||||||||
| data_revision | string or null^[0-9]+$ | ||||||||||
| cursor_after | object or null | ||||||||||
ErrorEnvelope (object) or null | |||||||||||
Any of
| |||||||||||
required | object | ||||||||||
| |||||||||||
{- "run_id": "dded282c-8ebd-44cf-8ba5-9a234973d1ec",
- "state": "OPEN",
- "source": "qianchuan",
- "stream": "account_state",
- "schema_version": "string",
- "expires_at": "2019-08-24T14:15:22Z",
- "data_revision": "string",
- "cursor_after": { },
- "error": {
- "code": "string",
- "message": "string",
- "request_id": "string",
- "details": { },
- "retry_after_seconds": 0
}, - "limits": {
- "max_batch_records": 1000,
- "max_batch_bytes": 5242880,
- "max_run_batches": 200,
- "max_run_records": 200000,
- "max_run_bytes": 262144000
}
}返回所有公开 Dataset 的描述,包括数据粒度、字段、指标、维度、时间语义、聚合方式和支持的过滤条件。
required | Array of objects (DatasetDescriptor) | ||||||||||||||||||
Array
| |||||||||||||||||||
{- "datasets": [
- {
- "dataset": "string",
- "schema_version": 1,
- "grain": [
- "string"
], - "default_time_field": "string",
- "dimensions": [
- "string"
], - "metrics": [
- "string"
], - "fields": [
- {
- "name": "string",
- "role": "dimension",
- "type": "string",
- "unit": "string",
- "time_basis": "acquisition_date_natural_day",
- "timezone": "Asia/Shanghai",
- "actuality": "actual",
- "nullable": true,
- "null_semantics": "string",
- "allowed_aggregations": [
- "sum"
]
}
], - "supported_filters": [
- "eq"
], - "max_time_range_days": 0
}
]
}返回一个 Dataset 的权威查询合同。客户端应根据该描述构建查询,不应硬编码数据库列。
| dataset_id required | string |
| dataset required | string | ||||||||||||||||||||
| schema_version required | integer >= 1 | ||||||||||||||||||||
| grain required | Array of strings | ||||||||||||||||||||
| default_time_field required | string or null | ||||||||||||||||||||
| dimensions required | Array of strings | ||||||||||||||||||||
| metrics required | Array of strings | ||||||||||||||||||||
required | Array of objects (FieldDescriptor) | ||||||||||||||||||||
Array
| |||||||||||||||||||||
| supported_filters required | Array of strings Items Enum: "eq" "in" "between" | ||||||||||||||||||||
| max_time_range_days required | integer or null | ||||||||||||||||||||
{- "dataset": "string",
- "schema_version": 1,
- "grain": [
- "string"
], - "default_time_field": "string",
- "dimensions": [
- "string"
], - "metrics": [
- "string"
], - "fields": [
- {
- "name": "string",
- "role": "dimension",
- "type": "string",
- "unit": "string",
- "time_basis": "acquisition_date_natural_day",
- "timezone": "Asia/Shanghai",
- "actuality": "actual",
- "nullable": true,
- "null_semantics": "string",
- "allowed_aggregations": [
- "sum"
]
}
], - "supported_filters": [
- "eq"
], - "max_time_range_days": 0
}按已知来源、数据范围和 Dataset 组合,返回最近发布 revision、观察时间、新鲜度和覆盖状态。
required | Array of objects (SourceFreshness) | ||||||
Array
| |||||||
{- "sources": [
- {
- "source": "string",
- "data_revision": "string",
- "scopes": [
- {
- "source_scope_id": "string",
- "last_observed_at": "2019-08-24T14:15:22Z",
- "last_published_at": "2019-08-24T14:15:22Z",
- "freshness_status": "fresh"
}
]
}
]
}返回一个已知数据源的新鲜度和覆盖详情。来源采集周期与平台处理延迟是两个独立指标。
| source required | string |
| source required | string | ||||||||
| data_revision required | string or null^[0-9]+$ | ||||||||
required | Array of objects (SourceScopeFreshness) | ||||||||
Array
| |||||||||
{- "source": "string",
- "data_revision": "string",
- "scopes": [
- {
- "source_scope_id": "string",
- "last_observed_at": "2019-08-24T14:15:22Z",
- "last_published_at": "2019-08-24T14:15:22Z",
- "freshness_status": "fresh"
}
]
}执行受字段白名单约束的分组、总计或明细查询。dimensions: [] 表示由服务端计算总计;metrics: [] 表示查询明细行。首次使用 revision: latest,后续查询和游标翻页固定使用响应中的数字 revision。
| dataset required | string | ||||||
required | "latest" (any) or string | ||||||
One of any ("latest") | |||||||
| dimensions required | Array of strings unique | ||||||
| metrics required | Array of strings unique | ||||||
Array of objects (Filter) | |||||||
Array
| |||||||
object (TimeRange) | |||||||
| |||||||
Array of objects (Sort) | |||||||
Array
| |||||||
| limit | integer [ 1 .. 1000 ] Default: 200 | ||||||
| cursor | string or null | ||||||
| contract_version required | any Value: "growth-data-platform.query.v1" | ||||||||
| dataset required | string | ||||||||
| schema_version required | integer | ||||||||
| data_revision required | string^[0-9]+$ | ||||||||
required | Array of objects (QueryItem) | ||||||||
Array
| |||||||||
| next_cursor required | string or null | ||||||||
required | Array of objects (QueryFreshness) | ||||||||
Array
| |||||||||
required | object (QueryCoverage) | ||||||||
| |||||||||
| warnings required | Array of objects | ||||||||
{- "dataset": "strategy_daily",
- "revision": "latest",
- "dimensions": [
- "event_date",
- "platform",
- "strategy_id",
- "time_basis"
], - "metrics": [
- "actual_spend_cny",
- "expected_final_contribution_profit_cny"
], - "filters": [
- {
- "field": "platform",
- "op": "in",
- "value": [
- "qianchuan"
]
}
], - "time_range": {
- "start": "2026-08-01",
- "end": "2026-08-05"
}, - "order_by": [
- {
- "field": "event_date",
- "direction": "asc"
}
], - "limit": 200
}{- "contract_version": "growth-data-platform.query.v1",
- "dataset": "strategy_daily",
- "schema_version": 1,
- "data_revision": "42",
- "items": [
- {
- "event_date": "2026-08-04",
- "platform": "qianchuan",
- "strategy_id": "strategy_demo_01",
- "time_basis": "acquisition_date_natural_day",
- "actual_spend_cny": "123.45",
- "expected_final_contribution_profit_cny": "51.20",
- "metric_status": {
- "actual_spend_cny": {
- "status": "known",
- "actuality": "actual"
}, - "expected_final_contribution_profit_cny": {
- "status": "partial",
- "actuality": "estimated",
- "reason_code": "COHORT_NOT_MATURE"
}
}
}
], - "next_cursor": null,
- "freshness": [
- {
- "source": "qianchuan",
- "observed_at": "2026-08-05T01:00:00Z",
- "status": "fresh"
}
], - "coverage": {
- "status": "complete",
- "covered_object_count": 3,
- "expected_object_count": 3,
- "reason_code": null
}, - "warnings": [ ]
}