From a1cdce6deac08b261d2fe834526175ebc639bf45 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 10 Aug 2026 09:08:45 +0000 Subject: [PATCH 1/3] fix(openapi): allow null in ActorNotice enum Error: {"errorCode":"enum.openapi.validation","message":"must be equal to one of the allowed values: NONE, RESIDENTIAL_PROXY_REQUIRED, UNDER_MAINTENANCE","path":"/response/data/items/N/notice"} on GET /v2/store and {"path":"/response/data/notice"} on GET /v2/actors/{actorId} Files: apify-api/openapi/components/schemas/actors/ActorNotice.yaml:5 Root cause: The schema declares type [string, "null"] but the enum lists only the three string values. In JSON Schema (OpenAPI 3.1) enum is exhaustive, so a null instance fails validation unless null is listed in the enum. The API returns notice: null for store items and actor objects - the store pipeline stores notice as "actor.notice ?? null" and the store item type is "notice: string | null". Reference: https://github.com/apify/apify-core/tree/6a88dd05c766a3cf0ddbdab00730f539b77302b9/src/packages/actor-server/src/recombee/recombee_store_sync.ts#L555 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_011mKWCZYL49Ay9Mzj2AeV2e --- apify-api/openapi/components/schemas/actors/ActorNotice.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/apify-api/openapi/components/schemas/actors/ActorNotice.yaml b/apify-api/openapi/components/schemas/actors/ActorNotice.yaml index 5966379f0c..b759b28532 100644 --- a/apify-api/openapi/components/schemas/actors/ActorNotice.yaml +++ b/apify-api/openapi/components/schemas/actors/ActorNotice.yaml @@ -6,4 +6,5 @@ enum: - NONE - RESIDENTIAL_PROXY_REQUIRED - UNDER_MAINTENANCE + - null examples: [UNDER_MAINTENANCE] From 7cd6e919cc2cbce5f64949a31161e7d54389e511 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 10 Aug 2026 09:08:56 +0000 Subject: [PATCH 2/3] fix(openapi): drop uri format from store item pictureUrl Error: {"errorCode":"format.openapi.validation","message":"must match format \"uri\"","path":"/response/data/items/N/pictureUrl"} on GET /v2/store Files: apify-api/openapi/components/schemas/store/StoreListActor.yaml:37 Root cause: Actor.pictureUrl is a free-form string in apify-core (type String, max 300 chars, no URI validation), and the store search response rewrites it through the image proxy only when the value is truthy - an empty or malformed legacy value is passed through verbatim, so the response cannot guarantee RFC 3986 uri format. Reference: https://github.com/apify/apify-core/tree/6a88dd05c766a3cf0ddbdab00730f539b77302b9/src/packages/actor/src/actors/actors.both.ts#L673 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_011mKWCZYL49Ay9Mzj2AeV2e --- apify-api/openapi/components/schemas/store/StoreListActor.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/apify-api/openapi/components/schemas/store/StoreListActor.yaml b/apify-api/openapi/components/schemas/store/StoreListActor.yaml index 4164e3e5bc..c605346f64 100644 --- a/apify-api/openapi/components/schemas/store/StoreListActor.yaml +++ b/apify-api/openapi/components/schemas/store/StoreListActor.yaml @@ -36,7 +36,6 @@ properties: $ref: ../actors/ActorNotice.yaml pictureUrl: type: [string, "null"] - format: uri examples: ["https://..."] userPictureUrl: type: [string, "null"] From 86cb62db896b5cfdb25ffca84c9077c32f8ee1d1 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 10 Aug 2026 09:08:56 +0000 Subject: [PATCH 3/3] fix(openapi): add 401 response to GET /v2/users/{userId} Error: {"message":"no schema defined for status code '401' in the openapi spec","path":"/v2/users/{userId}"} on GET /v2/users/{userId} (statusCode 401) Files: apify-api/openapi/paths/users/users@{userId}.yaml:30 Root cause: The endpoint requires no authentication, but the global authentication middleware validates any token that is provided. A request carrying an invalid token is rejected with 401 user-or-token-not-found before the handler runs, so the operation can return 401 even though it is otherwise public. Reference: https://github.com/apify/apify-core/tree/6a88dd05c766a3cf0ddbdab00730f539b77302b9/src/api/src/middleware/authentication.ts#L95 Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_011mKWCZYL49Ay9Mzj2AeV2e --- apify-api/openapi/paths/users/users@{userId}.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apify-api/openapi/paths/users/users@{userId}.yaml b/apify-api/openapi/paths/users/users@{userId}.yaml index 59aed94547..1e794a1e99 100644 --- a/apify-api/openapi/paths/users/users@{userId}.yaml +++ b/apify-api/openapi/paths/users/users@{userId}.yaml @@ -27,6 +27,8 @@ get: $ref: ../../components/schemas/users/PublicUserDataResponse.yaml "400": $ref: ../../components/responses/BadRequest.yaml + "401": + $ref: ../../components/responses/Unauthorized.yaml "404": $ref: ../../components/responses/NotFound.yaml "405":