Skip to content

feat!: port apify-client-js v3 changes and sync with Apify OpenAPI spec v2-2026-10-29T100357Z - #34

Merged
Pijukatel merged 11 commits into
masterfrom
claude/youthful-franklin-2ekm9p
Nov 2, 2026
Merged

Pijukatel merged 11 commits into
masterfrom
claude/youthful-franklin-2ekm9p

Conversation

@Pijukatel

@Pijukatel Pijukatel commented Oct 30, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

The reference client's v3 branch was merged into its master without PRs to master. This PR ports the merged PRs that targeted v3 in apify/apify-client-js (#995–#1090) to the Rust client. It also syncs the client with OpenAPI spec v2-2026-10-29T100357Z (apify-docs #3115, #3117, #3118, #3125, #3130) and apify-client-js #1176 and #1178. The crate version goes to 0.15.0 (breaking).

Ported from v3

  • Timeout tiers (Short/Medium/Long/NoTimeout/Custom), builder options, and with_timeout on every resource client (#1046).
  • Configurable request-body compressors (HttpCompressor, Brotli/Gzip) and default headers (#1065, #1058).
  • Any 404 resolves to None only for id-named clients. Chained clients return it as an error (#1042).
  • Id, record-key and request-id validation and percent-encoding (#1011).
  • push_items accepts only an object or an array of objects (#1066). batch_add_requests serializes each request once (#1051).
  • Typed, normalized URL fields (#1045).
  • Log redirection with StreamedLog, LogSink and LogRedirect. call redirects the run log by default.
  • Replica-lag wait in the listing tests (#1090).
  • Already present before this PR: /v2 base URL (#1077), pagination past filtered pages (#1044), skipping compression for compressed types (#1053), error bodies of streamed requests (#1055).
  • Not ported because they are JS-specific: ESM, zod validation and generated schemas, runtime independence, Node/pnpm/dependency bumps, docs-site layout, and AbortSignal (dropping a future cancels the request in Rust).

Spec sync

  • New query parameters: deployment on run lists, includeInputSchema on the Store list, and download on logs.
  • UserClient::limits, monthly_usage and update_limits now work for any user id.

Safety fixes found in review

  • call and TaskClient::call no longer abort and retry a slow start, which could start a second paid run. start and build do not retry a transport timeout.
  • wait_for_finish(Some(n)) bounds each poll.
  • Internal helpers are now pub(crate).
  • ApifyClient::stats() and RunClient::iterate_dataset_items were added.

The CHANGELOG lists every breaking change.

claude added 11 commits October 30, 2026 08:44
…ec v2-2026-10-29T100357Z

Adds timeout tiers with per-client overrides, configurable compressors and default headers,
ambiguous-404 handling, path-segment validation, push_items shape check and the new spec query
parameters.
Adds statistics, do-not-retry-on-timeout for non-idempotent calls, the request queue timeout cap,
typed normalized URL fields and the remaining reference tiers; keeps the deprecated
exclusiveStartId and the reference gzip quality.
Adds RunClient::iterate_dataset_items, carries the last_run filters into chained clients, keeps a
zero timeout local to its client and rejects zero timeout tiers.
Rejects desc in iterate_dataset_items, keeps the last_run filters in public storage URLs and
documents the zero timeout rule of the builder.
Start and poll `call` without a client-side timeout, do not retry timed-out run and build
starts, add log redirection (StreamedLog, LogSink, ActorCallOptions::log), bound polls of a
finite wait, add TaskStartOptions, make internals crate-private, and add the missing live tests.
@Pijukatel Pijukatel added adhoc Ad-hoc unplanned task added during the sprint. t-tooling Issues with this label are in the ownership of the tooling team. labels Oct 30, 2026 — with Claude
@apify-service-account apify-service-account added the tested Temporary label used only programatically for some analytics. label Oct 30, 2026
@Pijukatel
Pijukatel merged commit c9fa766 into master Nov 2, 2026
2 of 7 checks passed
@Pijukatel
Pijukatel deleted the claude/youthful-franklin-2ekm9p branch November 2, 2026 12:53
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