Skip to content

Stream data and list topics for a session without a time range - #207

Merged
Mo-Elshenawy1 merged 3 commits into
mainfrom
claude/exciting-cori-o7rsiy-stream-topics
Nov 6, 2026
Merged

Mo-Elshenawy1 merged 3 commits into
mainfrom
claude/exciting-cori-o7rsiy-stream-topics

Conversation

@Mo-Elshenawy1

Copy link
Copy Markdown
Contributor

Changelog

Streaming data and listing topics by session no longer require a time range, and topics without a schema no longer raise an error.

Docs

None

Description

The v1 API needs start and end on /data/stream only when querying by device; a session, recording or episode identifies the data on its own. /data/topics doesn't say either way, and the API applies the same device-only rule. The client required a range for session queries too.

  • download_data, iter_messages and get_topics now require start and end only with device_id or device_name.
  • get_topics(include_schemas=True) returns "schema": None for a topic the API sends without a schema, which the spec allows, instead of raising.

Compatibility: the range error message changed, from "unless using episode_id, recording_id, or recording_key" to "when using device_id or device_name". Calls that used to succeed behave the same.

Validated with black, flake8, pyright, and pytest on Python 3.8: 206 passed. The new and updated tests are in tests/test_client.py, tests/test_data.py and tests/test_episodes.py. The ROS and stream-message tests can't install their dependencies in my environment, so CI covers those.

BeforeAfter

client.get_topics(session_id="ses_1") raised RuntimeError: start and end must be provided unless using episode_id, recording_id, or recording_key.

It returns the session's topics.


Generated by Claude Code

`download_data`, `iter_messages`, and `get_topics` no longer require
`start` and `end` when querying by session, matching the API, which
needs a time range only when querying by device. A range is still
required with `device_id` or `device_name`.

`get_topics(include_schemas=True)` now returns `None` for a topic's
`schema` when the API omits it instead of raising.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012yf4xszPJuZbmsVHpZeUGr
@linear-code

linear-code Bot commented Nov 5, 2026 •

Copy link
Copy Markdown

BFCK-402

DC-2076

foxglove-beefcake[bot]

This comment was marked as outdated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012yf4xszPJuZbmsVHpZeUGr

@foxglove-beefcake foxglove-beefcake Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Risk: moderate. The change relaxes argument validation in public SDK methods, so calls that failed in the client before now reach the API.

@Mo-Elshenawy1
Mo-Elshenawy1 merged commit 3a70522 into main Nov 6, 2026
1 of 2 checks passed
@Mo-Elshenawy1
Mo-Elshenawy1 deleted the claude/exciting-cori-o7rsiy-stream-topics branch November 6, 2026 20:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants