Skip to content

feat: Apify API client for Go (OpenAPI v2-2026-06-16T064758Z) - #1

Merged
Pijukatel merged 5 commits into
masterfrom
claude/vibrant-fermi-1ting1
Jun 19, 2026
Merged

feat: Apify API client for Go (OpenAPI v2-2026-06-16T064758Z)#1
Pijukatel merged 5 commits into
masterfrom
claude/vibrant-fermi-1ting1

Conversation

@Pijukatel

@Pijukatel Pijukatel commented Jun 18, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds a complete, idiomatic Apify API client for Go, generated from the Apify OpenAPI specification v2-2026-06-16T064758Z and developed into a fully-compliant client mirroring the canonical apify-client-js reference and the Rust sibling.

Highlights

  • Resource-oriented client (package apify, stdlib-only, zero third-party deps), with functional-options ApifyClient and accessors for actors (+versions, env vars), builds, runs, tasks, datasets, key-value stores, request queues, schedules, webhooks, webhook dispatches, store, log, and user.
  • Replaceable HTTP transport: HTTPBackend interface with a default implementation.
  • Cross-cutting parity with JS/Rust: Bearer auth, mandated User-Agent header, retries on 429/5xx/network with randomized exponential backoff, growing-but-capped per-attempt timeouts, unified error handling, charge idempotency-key safety on retries.
  • Convenience methods: actor/task Call, run/build WaitForFinish (finite-bounded, polls through transient 404s), dataset push/list/download, KVS records, request-queue lock lifecycle + batch chunking + lazy iteration, log streaming/redirection, lazy store iteration, HMAC URL signing.
  • Versioning constants: CLIENT_VERSION and API_SPEC_VERSION (v2-2026-06-16T064758Z).
  • Tests: offline unit tests (mock backend) + live integration tests per resource (env-driven, parallel-safe, isolated) + 7 runnable doc examples each with a CI smoke test.
  • CI: Go-path-filtered workflow (PR→master + manual dispatch, APIFY_TOKEN secret guard, gofmt/vet/golangci-lint/build/test).
  • Docs + CHANGELOG.

Developed via the orchestrated create-client / review-client loop until the review gate passed with no open items.

claude added 3 commits June 18, 2026 16:23
…16T064758Z

Generated with openapi-generator 7.23.0 (go 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 (package apify, stdlib-only) mirroring
the canonical JS reference and the Rust sibling: resource-oriented client,
replaceable HTTP backend, retries with exponential backoff, mandated
User-Agent, convenience methods (call, wait, 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>
Fix waitForFinish indefinite-wait 404 hang (finite default budget, poll
through 404s on a pure time bound, descriptive error on never-appearing
resource); read both APIFY_IS_AT_HOME and isAtHome for User-Agent; add
golangci-lint to CI with .golangci.yml; make Abort gracefully omittable;
document browser-info/tools scope omission; doc/nit fixes.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The .golangci.yml uses the v2 config schema; the v6 action installed a
v1.x binary that rejects it (additional properties version/default).
Pin the v7 action + v2.5.0 to match local tooling.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Pijukatel Pijukatel added the adhoc Ad-hoc unplanned task added during the sprint. label Jun 19, 2026
@Pijukatel Pijukatel added this to the v0 milestone Jun 19, 2026
@github-actions github-actions Bot added t-tooling Issues with this label are in the ownership of the tooling team. tested Temporary label used only programatically for some analytics. labels Jun 19, 2026
Address external-reviewer documentation hints:
- Export apify.Ptr[T](v T) *T so doc snippets compile when copy-pasted;
  switch docs and the create_build_run_actor example to apify.Ptr.
- Document PaginationList[T] fields and the Total-lag-after-write quirk.
- Enumerate the DownloadItemsFormat constants (incl. the previously
  omitted FormatJSONL).
- Note that NewClient does not auto-read APIFY_TOKEN.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@Pijukatel
Pijukatel merged commit 7196f89 into master Jun 19, 2026
2 checks passed
@Pijukatel
Pijukatel deleted the claude/vibrant-fermi-1ting1 branch July 8, 2026 09:46
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