Relationship · API tierv1.0
C2C Supply-Chain Construct Data
The observed company-to-company supply-chain edge table for A-share quant — disclosed + bid channels, point-in-time explicit on every row. Daily refresh, S3 + signed-URL API.
01
Specifications
Delivery format and the operational guarantees behind it.
- Format
- Apache Parquet · Snappy compressed
- Refresh
- Daily · T+1 by 07:00 SGT
- SLA
- 99.5% · T+1 18:00 SGT fallback
- Universe
- A-shares · SH + SZ + KC + CYB
- Dimension
- Relationship
02
The Data Itself
Live sample rows and every field's meaning, computed from the served data. The integrity strip arrives with this product's audit battery.
The dictionary is public below. Live sample rows need a sign-in — go to the Sandbox.
Every field, with its type and meaning.
| Field | Type | Description |
|---|---|---|
| edge_id* | string | Stable edge identity built from the source record and both tickers. The latest row per edge_id is the current state. |
| source* | string | Observation channel: disclosed (mandatory top-customer/supplier filing) or bid (procurement award).disclosedbid |
| relation_type* | string | trade for the disclosed channel; procurement_award for the bid channel.tradeprocurement_award |
| supplier_ts* | string · ts_code | seller (focal) listco, NNNNNN.SH/.SZ/.BJ |
| customer_ts* | string · ts_code | buyer listco |
| relation_value_cny* | double · CNY | ownership-adjusted: raw value x supplier_own_ratio x customer_own_ratio |
| raw_value_cny | double · CNY | pre-adjustment source value (bid awards may lack a parsed price) |
| balance_value_cny | double · CNY | ownership-adjusted ending balance — disclosed channel only |
| supplier_own_ratio* | double · ratio | listco ownership of the seller party (1.0 = the listco itself); rare >1 source anomalies carried as-delivered |
| customer_own_ratio* | double · ratio | listco ownership of the buyer party (1.0 = the listco itself). |
| supplier_resolution* | string | How the seller resolved to a listco: direct (it is the listco) or affiliate_rollup (rolled up from a subsidiary).directaffiliate_rollup |
| customer_resolution* | string | How the buyer resolved to a listco: direct or affiliate_rollup.directaffiliate_rollup |
| raw_supplier_id | string | ChinaScope entity id of the party as disclosed |
| raw_customer_id | string | ChinaScope entity id of the buyer party as disclosed. |
| raw_supplier_name | string | bid channel only (disclosed source carries ids) |
| raw_customer_name | string | Buyer party name as recorded (bid channel only; the disclosed source carries ids). |
| source_record_id* | string | the underlying disclosure record / bid id — audit trail to the raw feed |
| source_rpt_date* | date | reporting period (disclosed) / award date (bid) |
| source_publish_date* | date | when the edge became public — filing publish date or award announcement |
| source_basis* | string | which publish basis applied; rpt_proxy = rpt+30d fallback where no filing date resolvedfiling_publishrpt_proxyaward_announcement |
| eff_date* | date | The point-in-time contract, equal to source_publish_date plus pit_buffer_days. Always filter on this column, never on partition dates. |
| pit_buffer_days* | int32 | the buffer baked into eff_date (product default 30) |
| operation* | string | CDC flag as delivered upstreamAUD |
| ingestion_date* | date | when the source record arrived (live) / its publish-basis day (backfill) |
| data_vintage* | string | ownership-mapping snapshot (YYYYMMDD) used to resolve the edge |
03
Frequently Asked Questions
- When is each day's data available?
- Data for trade day T is published by 07:00 Asia/Shanghai on T+1, contingent on ChinaScope's upstream delivery. If upstream runs late, fallback delivery is T+1 18:00 SGT.
- What happens if ChinaScope is delayed?
- The API's manifest endpoint exposes a field (green/yellow/red). When red, calls for the current day return 404 with an header and ETA. Buyers can poll the manifest until status flips green.
- How do I read the data?
- Via signed S3 URLs issued by api.numinor.io/construct-data/v1. Bearer-token authenticated; one API key per subscription, rotatable from your account page.
- Can I cancel anytime?
- Yes — Stripe Customer Portal access from your account page. Cancellations take effect at the end of the current billing period; no refunds for unused time per Tom's 2026-05-28 policy.