Skip to content

feat: sync Rust client with Apify OpenAPI spec v2-2026-10-08T073338Z - #29

Merged
Pijukatel merged 2 commits into
masterfrom
claude/youthful-franklin-gg8tp4
Oct 12, 2026
Merged

Pijukatel merged 2 commits into
masterfrom
claude/youthful-franklin-gg8tp4

Conversation

@Pijukatel

@Pijukatel Pijukatel commented Oct 9, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Syncs the Rust client from OpenAPI spec v2-2026-10-01T153946Z to v2-2026-10-08T073338Z (apify/apify-docs#3043, #3044, #3042) and ports the Rust-relevant changes from the reference apify-client-js batch (apify/apify-client-js#1091, #1125, #1122, #1121, #1123, #1124, #1107, #1137, #1105).

  • ActorStartOptions::wait_for_resources (new WaitForResources enum) on ActorClient/TaskClient start/call: retries a run start every 10s while the API rejects it with actor-memory-limit-exceeded/concurrent-runs-limit-exceeded (apify-client-js#1091).
  • Fixed ListIterator (every collection's iterate()/iterate_items()) to stop paging on an empty page rather than a page's reported total, so a listing that grows mid-iteration (e.g. a dataset a running Actor keeps pushing to) is read to the end. DatasetClient::iterate_items also now advances by the x-apify-pagination-count scanned-row count rather than items.len() when a filter/unwind makes them differ (apify-client-js#1125).
  • Fixed wait_for_finish to stop polling a run/build ID that keeps 404ing once a 3-second grace period elapses (reset by any successful fetch), instead of polling forever when wait_secs is None (apify-client-js#1124).

JS PRs #1122 (drop top-level restartOnError) and #1121 (narrow unwind to string[]) needed no Rust change: update() is already fully generic with no struct to narrow, and unwind has always been Option<Vec<String>>. #1107 (rename generated models to match spec schema titles) doesn't apply either — Rust's models aren't generated 1:1 from the spec. #1123/#1105 (StreamedLog stream-reopen/stop-hang fixes) patch bugs in JS's own internal log-streaming class; Rust's LogClient::stream/stream_with_options returns a plain Stream with no equivalent internal state to patch. The spec's new Profile.readme field (#3043) needs no code change — it's already reachable through the existing flatten-to-extra model pattern, and #3044 is a pure schema-title/file rename with no wire-format change.

Tests added/updated in src/clients/pagination.rs and tests/unit_http.rs (8 new cases covering wait_for_resources and the two wait_for_finish/pagination fixes, plus 7 updated/added pagination unit tests). Docs (docs/actors.md, docs/runs.md, docs/builds.md, docs/README.md) and CHANGELOG.md updated. Crate version bumped 0.11.0 → 0.12.0 (minor, new API surface).

claude added 2 commits October 9, 2026 13:26
…-10-08T073338Z

Adds ActorStartOptions::wait_for_resources (ActorClient/TaskClient start/call retry
run starts rejected for lack of memory or a concurrent-run slot), matching JS #1091.

Fixes ListIterator (every collection's iterate()/iterate_items()) to stop paging on
an empty page rather than a page's reported `total`, so a listing that grows during
iteration (e.g. a dataset a running Actor keeps pushing to) is read to the end;
dataset item iteration also now advances by the x-apify-pagination-count scanned
count rather than items.len() when a filter/unwind makes them differ. Matches JS #1125.

Fixes wait_for_finish to stop polling a run/build ID that keeps 404ing once a
3-second grace period elapses, instead of polling forever when wait_secs is None.
Matches JS #1124's waitForFinish() fix.

Reviewed and found not applicable to this client's architecture: JS #1122/#1121
(Rust's update()/unwind are already narrower than what those PRs restrict JS to),
#1107 (no generated-model layer for a schema-title rename to propagate into), and
#1123/#1105 (StreamedLog-internal bugs with no corresponding surface in Rust's
plain Stream-returning log API). docs PR #3043's new Profile.readme field needs no
code change (already reachable via the existing flatten-to-extra model pattern).

Bumps API_SPEC_VERSION to v2-2026-10-08T073338Z and crate version to 0.12.0.
The comment on the `x-apify-pagination-total` fallback still described the
old total-driven/short-page termination logic this PR's own ListIterator
change removed. Re-describe the fallback as informational-only.
@Pijukatel Pijukatel added adhoc Ad-hoc unplanned task added during the sprint. tested Temporary label used only programatically for some analytics. t-tooling Issues with this label are in the ownership of the tooling team. labels Oct 9, 2026 — with Claude
@Pijukatel Pijukatel changed the title feat: sync Rust client with Apify OpenAPI spec v2-2026-10-08T073338Z feat: sync Rust client with Apify OpenAPI spec v2-2026-10-08T073338Z Oct 12, 2026
@Pijukatel Pijukatel changed the title feat: sync Rust client with Apify OpenAPI spec v2-2026-10-08T073338Z feat: sync Rust client with Apify OpenAPI spec v2-2026-10-08T073338Z Oct 12, 2026
@Pijukatel
Pijukatel merged commit e10da48 into master Oct 12, 2026
6 of 12 checks passed
@Pijukatel
Pijukatel deleted the claude/youthful-franklin-gg8tp4 branch October 12, 2026 12:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

adhoc Ad-hoc unplanned task added during the sprint. t-tooling Issues with this label are in the ownership of the tooling team. tested Temporary label used only programatically for some analytics.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants