Skip to content

docs: bring the prose in line with what the Python and Rust SDKs do on main - #107

Merged
JosteinGj merged 3 commits into
masterfrom
docs/sync-with-sdk-main
Oct 1, 2026
Merged

JosteinGj merged 3 commits into
masterfrom
docs/sync-with-sdk-main

Conversation

@JosteinGj

Copy link
Copy Markdown
Contributor

An audit of every reference page and guide against dataplatform-rust-sdk main (ef6336b), and the api where a claim is server-side.

The examples were already right: every Python name and keyword argument the docs use exists in the built SDK (671 calls checked against inspect.signature), and all 161 Java and Rust examples compile. What had drifted was the prose.

What changed

  • Default page size: Python and Rust return up to 1000 rows when no limit is set, not 100 (events, filters, subscriptions).
  • Subscriptions: the filter sends every criterion and the cursor; the documented Python signature is replaced with the real one.
  • Typed update echo: resource, asset and function updates echo typed nodes in Python and Rust, not flat Resources.
  • Coverage: Python and Rust have the assets service; neither has a relation update form or a policy service; events.list() is documented (oldest first, no cursor).
  • Stale behaviour:
    • subType/status sorts page.
    • Sort order is compared case-insensitively, and the first recognised property wins.
    • Cursors carry no version tag; the example cursors are re-encoded.
    • The 64-character source limit on event update is gone.
    • id is an exact criterion, not a pattern.
    • 408 is spooled.
    • The buffered ingest path sends one request at a time.
    • Every refusal is a typed problem document.
  • Files: the trash keeps external ids and records deletedAt (deleted_at in Python and Rust). An upload's external id defaults to the file name, verbatim (SDK 811b093).
  • Async client: AsyncDataHubClient lacks only the binary ingest calls.
  • Guides:
    • fetch_related walks edges in both directions, so the correlate-alarms intersection includes both pumps.
    • Re-raising an event with the same external id stores a second event.
    • An MCP time-series delete purges its datapoints, and deleting a data set that still has members fails.

Left out on purpose

Checks

  • Structure, API-surface and coverage tiers: 336 passed.
  • Compile tier: 161 passed (Java and Rust).
  • Live Python tier against a local stack: 285 passed and 35 failed. All 35 fail identically on unmodified master; they are being investigated separately.

🤖 Generated with Claude Code

JosteinGj and others added 3 commits September 30, 2026 14:52
…n main

An audit of every reference page and guide against dataplatform-rust-sdk main
(and the api where a claim is server-side). The examples already compiled and
every Python call already matched its signature; what had drifted was the prose.

- Default filter limit for Python and Rust is 1000, not 100 (events, filters,
  subscriptions); the subscription filter now sends every criterion and the cursor.
- Resource, asset and function update echoes are typed in Python and Rust, not
  flat Resources; Python and Rust have the assets service; neither has a
  relation update form or a policy service.
- Cursors no longer carry a version tag; example cursors re-encoded.
- subType/status sorts page now; a sort order is compared case-insensitively and
  the first recognised property wins.
- events.list is documented (oldest first, no cursor); the 64-character update
  limit on source is gone; the distinct-value endpoints are eventually consistent.
- id is an exact numeric criterion, not a pattern.
- 408 is spooled; the buffered path sends one request at a time.
- AsyncDataHubClient lacks only the binary ingest calls.
- Every refusal is a typed problem document now; the trash keeps external ids
  and records deletedAt.
- fetch_related walks edges in both directions, so correlate-alarms' intersection
  includes both pumps; re-raising an event with the same external id stores a
  second event; an MCP time-series delete purges its datapoints, and a data-set
  delete with members fails.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: jgjesdal <jostein@intellistream.ai>
SDK main (811b093) dropped the client-side snake-casing of the default external id
and gained INode.deleted_at, following the api's verbatim file ids and deletedAt trash.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: jgjesdal <jostein@intellistream.ai>
Found by the live Python tier; each was a mistake in the page, not the platform.

- tutorial: step 1 never imported intellistream_datahub_sdk, which step 2 uses.
- events: the lookup example used uuid without importing it.
- datasets: the lookup read a data set id that does not exist; it now reads
  the id of the one it just looked up.
- Python TimeSeries defaults value_type to bigint, so twelve series that are
  written decimals now say value_type="float"; the three that said "numeric",
  which Python cannot create, say "float" too.
- construction, medical-devices, aerospace: the demo-data block created nodes
  that step 1 then creates again, a 409 for anyone following the page.
- data-cleaning-lineage: fetch_related walks edges both ways, so the forward
  impact walk now follows the returned edges' direction itself.

Plans: events and resources now supply what a reader carries in from an earlier
example, and events drops an [expect] its own delete example contradicts.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: jgjesdal <jostein@intellistream.ai>
@JosteinGj
JosteinGj merged commit dd2f564 into master Oct 1, 2026
4 checks passed
@JosteinGj
JosteinGj deleted the docs/sync-with-sdk-main branch October 1, 2026 09:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant