feat: Apify API client for Rust (OpenAPI v2-2026-06-16T064758Z) - #1
Merged
Conversation
…6-16T064758Z Generated with openapi-generator 7.23.0 (rust/reqwest generator). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Develop the openapi-generator draft into a complete, idiomatic, fully OpenAPI-compliant Apify API client mirroring the canonical JS reference: resource-oriented client facade, replaceable HTTP backend, retries with exponential backoff, mandated User-Agent, convenience methods (call, wait_for_finish, pagination, log redirection, URL signing), versioning constants, integration + unit tests, doc examples, CI workflow, docs and CHANGELOG. Based on OpenAPI spec v2-2026-06-16T064758Z. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Percent-encode user-controlled URL path segments (KVS keys, request IDs, lock paths); fix User-Agent isAtHome to read APIFY_IS_AT_HOME; add missing spec query params (dataset outputFields/feedTitle/feedDescription, KVS keys collection/signature, request-queue cursor/filter, storage list unnamed/ownership, run list startedAfter/startedBefore); rework KVS get_record attachment handling; add simple-GET tests, webhook_dispatch get, actor-versions and env-vars CRUD tests, APIFY_API_URL path test, panic-safe cleanup; add CI fail-fast guard for missing APIFY_TOKEN. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Implement KeyValueStoreClient::get_records (GET .../records download-all ZIP, with collection/prefix/signature params), reachable on nested run/task default-store routes; document the redundant POST records alias as a JS-reference-parity omission. Fix integration test cleanup Drop guard runtime-handle deadlock and switch tests to multi_thread flavor. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…sion Fix RequestQueueRequestsIterator to feed nextCursor back as the cursor query param (was misrouted as exclusiveStartId, breaking pagination past page 1); add multi-page pagination test. Add signature param to dataset items list/download options. Add wait_for_finish to default_build for JS parity. Resolve real rustc version into User-Agent via build.rs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add charge idempotency-key header (RunChargeOptions), metamorph content_type (RunMetamorphOptions), resurrect max_items/ max_total_charge_usd/restart_on_error, run-list status array, and request-queue batchAddRequests client-side chunking (25/batch); make abort gracefully omittable; read both APIFY_IS_AT_HOME and isAtHome for User-Agent. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…run status Address external-reviewer documentation hints: - Document call/wait_for_finish wait_secs None vs Some(n) semantics (None = unbounded; Some = bounded, may return a non-terminal run) in rustdoc and docs. - Fix docs/actors.md to name ActorListOptions (was wrongly ListOptions) and clarify the per-resource list option types. - Document get_or_create's Option<&str> param with a named-create example. - Note that option structs are re-exported at the crate root; switch examples/iterate_store.rs to the short import path. - Document ActorRun.status known values; clarify actor-id forms in README. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a complete, idiomatic Apify API client for Rust, generated from the Apify OpenAPI specification
v2-2026-06-16T064758Zand developed into a fully-compliant client mirroring the canonicalapify-client-jsreference.Highlights
ApifyClient+ builder, with accessors for actors, builds, runs, tasks, datasets, key-value stores, request queues, schedules, webhooks, webhook dispatches, store, log, user, actor versions and env vars.HttpBackendtrait with a defaultReqwestBackend.User-Agentheader, retries with exponential backoff + jitter on 429/5xx/network, growing per-attempt timeouts, unified error handling.call, run/buildwait_for_finish, dataset push/list/download, KVS records +get_records, request-queue lock lifecycle + cursor pagination, log streaming/redirection, lazy store iteration, HMAC URL signing.CLIENT_VERSIONandAPI_SPEC_VERSION(v2-2026-06-16T064758Z).APIFY_TOKENsecret, fmt/clippy/build/test/doctest).Developed via the orchestrated
create-client/review-clientloop until the review gate passed with no open items.