{"record":{"id":"75bfa2f5e44c361a","repo":"openai/openai-python","slug":"expected-a-non-empty-value-for-version-but-recei-75bfa2","errorCode":null,"errorMessage":"Expected a non-empty value for `version` but received {version!r}","messagePattern":"Expected a non-empty value for `version` but received (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"src/openai/resources/skills/versions/versions.py","lineNumber":155,"sourceCode":"    ) -> SkillVersion:\n        \"\"\"\n        Get a specific skill version.\n\n        Args:\n          version: The version number to retrieve.\n\n          extra_headers: Send extra headers\n\n          extra_query: Add additional query parameters to the request\n\n          extra_body: Add additional JSON properties to the request\n\n          timeout: Override the client-level default timeout for this request, in seconds\n        \"\"\"\n        if not skill_id:\n            raise ValueError(f\"Expected a non-empty value for `skill_id` but received {skill_id!r}\")\n        if not version:\n            raise ValueError(f\"Expected a non-empty value for `version` but received {version!r}\")\n        return self._get(\n            path_template(\"/skills/{skill_id}/versions/{version}\", skill_id=skill_id, version=version),\n            options=make_request_options(\n                extra_headers=extra_headers,\n                extra_query=extra_query,\n                extra_body=extra_body,\n                timeout=timeout,\n                security={\"bearer_auth\": True},\n            ),\n            cast_to=SkillVersion,\n        )\n\n    def list(\n        self,\n        skill_id: str,\n        *,\n        after: str | Omit = omit,\n        limit: int | Omit = omit,","sourceCodeStart":137,"sourceCodeEnd":173,"githubUrl":"https://github.com/openai/openai-python/blob/9917c6e28e66e90e1227b3d223c06a8c5441515a/src/openai/resources/skills/versions/versions.py#L137-L173","documentation":"Sync skill-version retrieval's second guard: version must be non-empty for GET /skills/{skill_id}/versions/{version}. Fires when skill_id is valid but version is empty/None, preventing an accidental request to the version-list path.","triggerScenarios":"Calling retrieve(skill_id=<valid>, version=\"\") — e.g. wanting the default version but passing an empty string rather than resolving it first.","commonSituations":"Passing version=\"\" as a 'just give me the default' convention that this API does not support; version lookups that return \"\" on not-found and are passed through unchecked.","solutions":["Resolve the concrete version first (skill.default_version or versions.list)","Treat empty version resolution as an error upstream","Use versions.list(skill_id=...) when you actually want the collection"],"exampleFix":"# before\nv = client.skills.versions.retrieve(sid, \"\")\n\n# after\nskill = client.skills.retrieve(sid)\nv = client.skills.versions.retrieve(sid, skill.default_version)","handlingStrategy":"validation","validationCode":"if not (isinstance(version, str) and version.strip()):\n    skill = client.skills.retrieve(skill_id)\n    version = skill.default_version\nv = client.skills.versions.retrieve(skill_id, version)","typeGuard":"def is_valid_version(value: object) -> bool:\n    return isinstance(value, str) and bool(value.strip())","tryCatchPattern":null,"preventionTips":["Resolve default versions from the skill object, never pass \"\"","Map not-found version lookups to explicit errors","Use versions.list() when the collection is what you need"],"tags":["skills","versions","validation","path-parameter","argument-error"],"backgroundTag":"required-parameter-missing","analyzedSha":"9917c6e28e66e90e1227b3d223c06a8c5441515a","analyzedAt":"2026-08-28T11:46:34.183Z","schemaVersion":2},"datasetVersion":"2026-08-28T16:17:29.566Z"}