massive-com / massive-com/client-js

API/docs feedback: snapshot day/min zero-filled as unset (not documented)

Open
#303 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
273
Forks
74
Avg merge
7h 58m
Merged PRs (30d)
11

Description

Context

This is product/API + docs feedback for the Massive REST stocks snapshot (not an SDK bug). Filing here per Massive’s data-discrepancy guidance (support email + GitHub). Also emailed support@massive.com.

Summary

After the documented daily snapshot clear (3:30 AM EST), GET /v2/snapshot/locale/us/markets/stocks/tickers/{ticker} often returns day and min objects with all numeric fields set to 0 and updated: 0 when there is no current session activity, instead of omitting those objects (or using JSON null).

This is surprising because:

  1. Single ticker snapshot docs never document 0 as “unset”
  2. Aggregates / missing aggregates KB omit bars when there are no eligible trades
  3. In the same snapshot payload, lastTrade / lastQuote are omitted when unavailable

Clients using nullish coalescing (??) treat 0 as a real price and never fall through.

Repro

  • Endpoint: GET /v2/snapshot/locale/us/markets/stocks/tickers/CHKP
  • Observed: 2026-08-10T11:42:00Z (US premarket)
  • request_id: 13acbb2342e8b650464494f4099af50a
  • status: OK
{
  "ticker": {
    "ticker": "CHKP",
    "todaysChangePerc": 0,
    "todaysChange": 0,
    "updated": 0,
    "day": { "o": 0, "h": 0, "l": 0, "c": 0, "v": 0, "vw": 0 },
    "min": { "av": 0, "t": 0, "n": 0, "o": 0, "h": 0, "l": 0, "c": 0, "v": 0, "vw": 0 },
    "prevDay": {
      "o": 126.15, "h": 127.84, "l": 124.43, "c": 127.82,
      "v": 582977.1251, "vw": 126.9216
    }
  },
  "status": "OK",
  "request_id": "13acbb2342e8b650464494f4099af50a"
}

Liquid names with premarket prints (e.g. NVDA) populate min.c with a real price while day.* can still be zero before RTH — so zeros act as sentinels for “no bar yet,” not as a $0 trade.

Request

  1. Document that snapshot day/min numeric zeros (and updated: 0) mean “no current session aggregate,” not a traded price of $0.
  2. Prefer omitting empty day/min (or null) for consistency with aggregates and omitted lastTrade/lastQuote.
  3. If zero-fill must stay for compatibility, call it out explicitly in the snapshot docs.

Thanks!
John Solly (github@jsolly.com)

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the linked single-ticker snapshot documentation and compare its semantics with the linked missing-aggregates knowledge-base article and the reported JSON response. Document whether zero-filled day/min fields and updated: 0 indicate no current aggregate, and record the chosen omission or null behavior when the API decision is settled.

Written by the indexing model from the issue text.

Assessment

Domain
api, documentation
Issue type
Documentation
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.