From b0b8f31237921847fb2956835e54ac3c43cb840b Mon Sep 17 00:00:00 2001 From: Josef Prochazka Date: Tue, 30 Jun 2026 14:09:30 +0200 Subject: [PATCH 1/3] Fix store atcor list errors --- .../openapi/components/schemas/store/StoreListActor.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/apify-api/openapi/components/schemas/store/StoreListActor.yaml b/apify-api/openapi/components/schemas/store/StoreListActor.yaml index ee1208e4a2..ade68f9da5 100644 --- a/apify-api/openapi/components/schemas/store/StoreListActor.yaml +++ b/apify-api/openapi/components/schemas/store/StoreListActor.yaml @@ -4,8 +4,6 @@ required: - title - name - username - - userFullName - - description - stats - currentPricingInfo type: object @@ -26,7 +24,7 @@ properties: type: string examples: [Jane H. Doe] description: - type: string + type: [string, "null"] examples: [My public actor!] categories: type: array From 0cdf88881cc3f84d9ee0326d6fbea1316bdadca6 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 30 Jun 2026 12:43:27 +0000 Subject: [PATCH 2/3] fix(openapi): allow null buildTag and reduced /users/me response Error: Response OpenAPI validation error {"url":"/v2/actors/{actorId}","method":"GET","statusCode":200,"errors":[{"message":"must be string","path":"/response/data/versions/{n}/buildTag"}]} (also GET/POST/PUT .../versions and GET .../versions/{versionNumber}); and {"url":"/v2/users/me","method":"GET","statusCode":200,"errors":[{"message":"must have required property 'id'|'email'|'createdAt'|'profile'|plan.*"}]} Files: apify-api/openapi/components/schemas/actors/Version.yaml:28; apify-api/openapi/components/schemas/users/UserPrivateInfo.yaml:2; apify-api/openapi/components/schemas/users/Plan.yaml:2 Root cause: (1) Actor version endpoints return buildTag:null for versions created without a tag, but Version.yaml declared buildTag as a non-nullable string. (2) When /v2/users/me is accessed from an Actor run, the handler removes id, email, profile, createdAt and the full plan object, then re-adds plan containing only availableProxyGroups; the spec marked all of those as required. Reference: https://github.com/apify/apify-core/tree/db6c2e4b52c836e0bb45b2e22384c59b66024726/tests/integration/tests/actor/actors.openapi_response_validation.js#L44 ; https://github.com/apify/apify-core/tree/db6c2e4b52c836e0bb45b2e22384c59b66024726/src/api/src/routes/users/user.ts#L43 Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Pz7UXgVxtFoCPJXQyfqR33 --- .../components/schemas/actors/Version.yaml | 4 ++-- .../openapi/components/schemas/users/Plan.yaml | 18 ------------------ .../schemas/users/UserPrivateInfo.yaml | 4 ---- 3 files changed, 2 insertions(+), 24 deletions(-) diff --git a/apify-api/openapi/components/schemas/actors/Version.yaml b/apify-api/openapi/components/schemas/actors/Version.yaml index 60854403e7..ded5169247 100644 --- a/apify-api/openapi/components/schemas/actors/Version.yaml +++ b/apify-api/openapi/components/schemas/actors/Version.yaml @@ -26,9 +26,9 @@ properties: examples: [false] description: Whether to inject the environment variables at build time. buildTag: - type: string + type: [string, "null"] examples: [latest] - description: The tag name to apply to a successful build of this version. + description: The tag name to apply to a successful build of this version. Can be `null` when the version has no build tag. sourceFiles: $ref: ./VersionSourceFiles.yaml description: Applies when the `sourceType` is `SOURCE_FILES`. Represents the Actor's diff --git a/apify-api/openapi/components/schemas/users/Plan.yaml b/apify-api/openapi/components/schemas/users/Plan.yaml index 0e3c9bd4cb..d811eb30f0 100644 --- a/apify-api/openapi/components/schemas/users/Plan.yaml +++ b/apify-api/openapi/components/schemas/users/Plan.yaml @@ -1,24 +1,6 @@ title: Plan required: - - id - - description - - isEnabled - - monthlyBasePriceUsd - - monthlyUsageCreditsUsd - - enabledPlatformFeatures - - maxMonthlyUsageUsd - - maxActorMemoryGbytes - - maxMonthlyActorComputeUnits - - maxMonthlyResidentialProxyGbytes - - maxMonthlyProxySerps - - maxMonthlyExternalDataTransferGbytes - - maxActorCount - - maxActorTaskCount - - dataRetentionDays - availableProxyGroups - - teamAccountSeatCount - - supportLevel - - availableAddOns type: object properties: id: diff --git a/apify-api/openapi/components/schemas/users/UserPrivateInfo.yaml b/apify-api/openapi/components/schemas/users/UserPrivateInfo.yaml index f0ca851990..4443cc5d8d 100644 --- a/apify-api/openapi/components/schemas/users/UserPrivateInfo.yaml +++ b/apify-api/openapi/components/schemas/users/UserPrivateInfo.yaml @@ -1,13 +1,9 @@ title: UserPrivateInfo required: - - id - username - - profile - - email - proxy - plan - effectivePlatformFeatures - - createdAt - isPaying type: object properties: From 3f7e9226fbfdd7a4bc7dc3a1a3672c527675897b Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 30 Jun 2026 14:20:49 +0000 Subject: [PATCH 3/3] fix(openapi): allow null userFullName on store Actor listings Error: Response OpenAPI validation error {"url":"/v2/store","method":"GET","statusCode":200,"errors":[{"message":"must be string","errorCode":"type.openapi.validation","path":"/response/data/items/{n}/userFullName"}]} Files: apify-api/openapi/components/schemas/store/StoreListActor.yaml:24 Root cause: The store index sets userFullName to null when the Actor owner has no public profile, so the GET /v2/store response can return userFullName: null. The schema typed it as a non-nullable string. Changed to type: [string, "null"], matching the description field set in the same code path. Reference: https://github.com/apify/apify-core/tree/db6c2e4b52c836e0bb45b2e22384c59b66024726/src/packages/actor-server/src/actors/actors_store_index.server.ts#L368 Co-Authored-By: Claude Opus 4.8 Claude-Session: https://claude.ai/code/session_01Pz7UXgVxtFoCPJXQyfqR33 --- apify-api/openapi/components/schemas/store/StoreListActor.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apify-api/openapi/components/schemas/store/StoreListActor.yaml b/apify-api/openapi/components/schemas/store/StoreListActor.yaml index ade68f9da5..5b4505c5e1 100644 --- a/apify-api/openapi/components/schemas/store/StoreListActor.yaml +++ b/apify-api/openapi/components/schemas/store/StoreListActor.yaml @@ -21,7 +21,7 @@ properties: type: string examples: [jane35] userFullName: - type: string + type: [string, "null"] examples: [Jane H. Doe] description: type: [string, "null"]