From 253856b58a3aeb1920e5b39b01dcd1cd01073ea6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20Proch=C3=A1zka?= Date: Fri, 4 Sep 2026 20:14:09 +0000 Subject: [PATCH] feat: add Task.description; sync Rust client with Apify OpenAPI spec v2-2026-09-02T154542Z - Add Task::description, matching the spec's newly-documented task description field (already exposed untyped by the reference JS client). - Bump API_SPEC_VERSION to v2-2026-09-02T154542Z. - No other functional changes: the spec's other deltas over this window (nullable generalAccess on storages/runs, nullable ActorDefinition readme/input/changelog, optional UserPrivateInfo billing fields, task input accepting an array) fall through this client's generic extra map and require no code changes. --- CHANGELOG.md | 11 +++++++++++ Cargo.toml | 2 +- docs/tasks.md | 1 + src/models.rs | 5 +++++ src/version.rs | 2 +- tests/task.rs | 8 ++++++-- 6 files changed, 25 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e302dab..e692f27 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,17 @@ All notable changes to the Rust Apify API client are documented here. The format based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project adheres to [Semantic Versioning](https://semver.org/). +## [0.10.0] - 2026-09-04 + +### Added +- `Task::description`, matching the spec's newly-documented task `description` field (also + present on the reference JS client's `Task`). Previously only accessible untyped via + `Task::extra`. + +### Changed +- Bumped `API_SPEC_VERSION` to `v2-2026-09-02T154542Z`. +- Bumped crate version to `0.10.0`. + ## [0.9.1] - 2026-08-28 ### Changed diff --git a/Cargo.toml b/Cargo.toml index 455024e..1cc6e5d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "apify-client" -version = "0.9.1" +version = "0.10.0" authors = ["Apify Technologies "] description = "An official, but experimental, AI-generated and AI-maintained Rust client for the Apify API (https://apify.com)." license = "Apache-2.0" diff --git a/docs/tasks.md b/docs/tasks.md index ee3a80e..82a8b29 100644 --- a/docs/tasks.md +++ b/docs/tasks.md @@ -40,6 +40,7 @@ are preserved in `extra`. | `user_id` | `Option` | ID of the user who owns the task. | | `name` | `Option` | Technical name of the task, used in API paths. | | `title` | `Option` | Human-readable title shown in the UI. | +| `description` | `Option` | Human-readable description shown on the task's public landing page. Required (up to 400 characters), alongside `title` (3 to 63 characters), to publish the task. | | `created_at` | `Option>` | When the task was created. | | `modified_at` | `Option>` | When the task was last modified. | | `is_public` | `Option` | Whether the task is published on its public landing page. Derived from `public_config.published_at`; set it via `publish()`/`unpublish()` or `update()`. | diff --git a/src/models.rs b/src/models.rs index b12b7ba..519638a 100644 --- a/src/models.rs +++ b/src/models.rs @@ -165,6 +165,11 @@ pub struct Task { /// Human-readable title. #[serde(default)] pub title: Option, + /// Human-readable description shown on the task's public landing page. Required (up to 400 + /// characters), alongside `title` (3 to 63 characters), to [`publish`](crate::clients::task::TaskClient::publish) + /// the task. + #[serde(default)] + pub description: Option, /// When the task was created. #[serde(default)] pub created_at: Option>, diff --git a/src/version.rs b/src/version.rs index b484a69..33aef14 100644 --- a/src/version.rs +++ b/src/version.rs @@ -10,4 +10,4 @@ pub const CLIENT_VERSION: &str = env!("CARGO_PKG_VERSION"); /// and verified against. /// /// This corresponds to the `info.version` field of the Apify OpenAPI document. -pub const API_SPEC_VERSION: &str = "v2-2026-08-27T071624Z"; +pub const API_SPEC_VERSION: &str = "v2-2026-09-02T154542Z"; diff --git a/tests/task.rs b/tests/task.rs index 6ad2af7..75cfa6a 100644 --- a/tests/task.rs +++ b/tests/task.rs @@ -283,13 +283,17 @@ async fn task_crud_flow() { let input = task_client.get_input().await.expect("get input"); assert!(input.is_some()); - // Update (rename). + // Update (rename + set description). let renamed = common::unique_name("task-renamed"); let updated = task_client - .update(&json!({ "name": renamed })) + .update(&json!({ "name": renamed, "description": "Updated by task_crud_flow." })) .await .expect("update task"); assert_eq!(updated.name.as_deref(), Some(renamed.as_str())); + assert_eq!( + updated.description.as_deref(), + Some("Updated by task_crud_flow.") + ); // List its runs (likely empty, but the endpoint should respond). let runs = task_client