docs(developer-hub): add Symbology & Reference Data page#3820
docs(developer-hub): add Symbology & Reference Data page#3820aditya520 wants to merge 4 commits into
Conversation
Document the Pyth Pro symbol metadata served by /v1/symbols, including a full field reference (identity, classification, pricing/quality, scheduling) and a dedicated futures section for the new chain_id, expiration_pattern, and availability_pattern fields. Also rename the "Symbols List API" nav entry to "Symbology and Reference Data API" and cross-link the new page from futures-terminology, price-feed-ids, and the REST API reference. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
5 Skipped Deployments
|
🤖 llms.txt Content ReviewAnalyzed documentation changes — no updates to curated content required. Products reviewed:
Files analyzed |
…ology page chain_id, expiration_pattern, and availability_pattern are not yet in the public /v1/symbols response (verified 0/3341 on 2026-06-23). Remove their table rows and the Futures metadata section (incl. month-code table and worked example) until the backend exposes them. The page now documents only fields present in the live API; the Futures & derivatives table keeps expiration_time and corporate_actions. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
| | ---------------- | --------- | -------------------------------------------------------------------------------------------------------------------- | | ||
| | `exponent` | `i16` | Decimal exponent: `actual_price = mantissa × 10^exponent`. Same meaning as in the price payload. | | ||
| | `min_publishers` | `u16` | Minimum number of publishers required for the feed to produce a price. | | ||
| | `min_channel` | `string` | Lowest-latency channel the feed supports: `real_time`, `fixed_rate@50ms`, or `fixed_rate@200ms`. You must subscribe at or above this channel. | |
There was a problem hiding this comment.
🟡 min_channel possible values list omits fixed_rate@1ms
The new documentation states min_channel can be one of real_time, fixed_rate@50ms, or fixed_rate@200ms, but the codebase explicitly handles fixed_rate@1ms as a valid min_channel value returned by the API. At src/components/PriceFeedIdsProTable/index.tsx:25-26, a normalizeChannelId function maps fixed_rate@1ms to real_time for display, which means fixed_rate@1ms is a value the API can return. The documentation should either list fixed_rate@1ms as a possible value, or note that it is treated as equivalent to real_time.
| | `min_channel` | `string` | Lowest-latency channel the feed supports: `real_time`, `fixed_rate@50ms`, or `fixed_rate@200ms`. You must subscribe at or above this channel. | | |
| | `min_channel` | `string` | Lowest-latency channel the feed supports: `real_time`, `fixed_rate@1ms`, `fixed_rate@50ms`, or `fixed_rate@200ms`. You must subscribe at or above this channel. | |
Was this helpful? React with 👍 or 👎 to provide feedback.
| | ---------------- | --------- | -------------------------------------------------------------------------------------------------------------------- | | ||
| | `exponent` | `i16` | Decimal exponent: `actual_price = mantissa × 10^exponent`. Same meaning as in the price payload. | | ||
| | `min_publishers` | `u16` | Minimum number of publishers required for the feed to produce a price. | | ||
| | `min_channel` | `string` | Lowest-latency channel the feed supports: `real_time`, `fixed_rate@50ms`, or `fixed_rate@200ms`. You must subscribe at or above this channel. | |
There was a problem hiding this comment.
🚩 Channel list in rest.mdx includes fixed_rate@1ms but CHANNELS array in UI component does not
The channel field in rest.mdx:30 lists 5 values including fixed_rate@1ms, but the CHANNELS array in PriceFeedIdsProTable/index.tsx:18-23 only has 4 entries (no fixed_rate@1ms). The normalizeChannelId function at src/components/PriceFeedIdsProTable/index.tsx:25-26 bridges this gap by mapping fixed_rate@1ms → real_time. This pre-existing inconsistency (not introduced by this PR) means fixed_rate@1ms is a valid subscription channel but may be treated as equivalent to real_time in display/reference contexts. The new symbology-reference page inherits this ambiguity in its min_channel description.
Was this helpful? React with 👍 or 👎 to provide feedback.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 239f1f093c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| | `name` | `string` | Short symbol name, e.g. `BTCUSD`. For futures this includes the month/year code, e.g. `EMH6`. | | ||
| | `symbol` | `string` | Fully-qualified Pyth symbol, e.g. `Crypto.BTC/USD` or `Equity.US.EMH6/USD`. Encodes asset class, optional region, root, and quote currency. | | ||
| | `description` | `string` | Human-readable description, e.g. `BITCOIN / US DOLLAR`. | | ||
| | `hermes_id` | `string` | Hex feed ID used by Pyth Core / Hermes for the same underlying, where one exists. | |
There was a problem hiding this comment.
For feeds that do not have a Pyth Core/Hermes counterpart, this field is null rather than always a string: the MCP client for the same /v1/symbols response validates it as z.string().nullable() in apps/mcp/src/clients/types.ts:15, and the fixtures include hermes_id: null. Since this page is the field reference and adjacent optional fields are explicitly marked nullable, consumers following it can reject valid catalog rows; please document hermes_id as nullable when absent.
Useful? React with 👍 / 👎.
| | ---------------- | --------- | -------------------------------------------------------------------------------------------------------------------- | | ||
| | `exponent` | `i16` | Decimal exponent: `actual_price = mantissa × 10^exponent`. Same meaning as in the price payload. | | ||
| | `min_publishers` | `u16` | Minimum number of publishers required for the feed to produce a price. | | ||
| | `min_channel` | `string` | Lowest-latency channel the feed supports: `real_time`, `fixed_rate@50ms`, or `fixed_rate@200ms`. You must subscribe at or above this channel. | |
There was a problem hiding this comment.
Include
fixed_rate@1000ms as a minimum channel
When a feed is only available at the 1s tier, min_channel can be fixed_rate@1000ms: the Developer Hub price-feed table includes that tier in CHANNELS and has a dedicated legend entry for it in apps/developer-hub/src/components/PriceFeedIdsProTable/index.tsx:18-22,93-94. Omitting it from this exhaustive field reference tells integrators that a valid catalog value is invalid, so the list should include fixed_rate@1000ms as well.
Useful? React with 👍 / 👎.
hermes_id is null for feeds without a Pyth Core/Hermes counterpart (401 of 3341 feeds, ~12%, in the live /v1/symbols response). Document it as `string?` with an explicit null note, matching the nasdaq_symbol/cmc_id convention on the same page. Addresses Codex review feedback on PR #3820. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
What
Adds a Symbology & Reference Data docs page for Pyth Pro documenting the symbol metadata served by
/v1/symbols, requested in #market-data (Yaser, P0).New page:
content/docs/price-feeds/pro/symbology-reference.mdx/v1/symbolsfield reference, grouped: identity & naming, classification, pricing & quality, scheduling, futures & derivatives.schedulevsmarket_session_schedulevsmarket_sessions.expiration_timeandcorporate_actions.Nav + cross-links:
Symbols List APInav entry toSymbology and Reference Data APIinpro/meta.jsonand added the new page under Resources.futures-terminology.mdx,price-feed-ids.mdx, andapi/rest.mdx.Deferred to a follow-up
chain_id/expiration_pattern/availability_patternwere dropped from this PR. They are not yet in the public/v1/symbolsresponse (verified 0/3341 on 2026-06-23; backend exposure is Tejas's P0). The page now documents only fields present in the live API. The futures pattern fields, along with their Futures metadata section (month-code legend + worked E-mini S&P example), will be re-added once the backend exposes them.pyth-lazer-0.dourolabs.app/docsare a separate spec/backend change.Verification
Dev server renders the page (200). The Futures & derivatives table now shows only
expiration_timeandcorporate_actions; the renamed and new nav entries are present.meta.jsonis valid JSON.🤖 Generated with Claude Code