README.md lists the exact paths for the operations you selected.
Python puts both clients on the same object: sdk.Linear is synchronous, sdk.AsyncLinear is not. Resources and methods are snake_case.
Two kinds of failure
ok: false means the provider replied and said no. Anything that stopped the call reaching that point is thrown instead, already typed:
So a real call site branches on
ok and catches around it:
ReconnectRequiredError is the one worth handling deliberately. It means a specific end user’s consent lapsed — not that your SDK token is bad. Start a replacement with sdk.auth.startConnectSession, and do not infer it from a bare 401.Per-call options
Anything about this call rather than the SDK goes in afused block: which end user to act as, which auth scheme to pick when a service declares several, and a page ceiling.
maxPages must sit strictly below the effective service policy — equality is rejected. You still get one aggregated result from one execution, so do not build a second page loop around it.
Streaming operations
An operation the provider streams comes back as an async iterable ondata, inside the same envelope.
streamIdleTimeoutMs and maxStreamDurationMs on the client.
Read the receipts
Every execution leaves a canonical receipt, whichever route made it.--status, --start, --end, --limit, and --offset.
sdk activity needs both app.read and audit.read. Use it rather than querying Engine GraphQL directly.
Calling it another way
Test from the CLI
sdk invoke for a smoke test or a CI gate — not for application code.Call over REST
One HTTP endpoint, for languages with no generated package.
Call a unified operation
One call across several services, with targets and per-service selectors.