openapi-generators / openapi-generators/openapi-python-client
Inline oneOf variants with properties/required fail: "Invalid property in union"
Ninguém assumiu esta issue ainda.
- Linguagem predominante
- Python
- Estrelas
- 2k
- Forks
- 293
- Merge médio
- 34min
- PRs com merge (30d)
- 1
Descrição
Description
When a schema uses oneOf with inline object variants (each having properties and required but no $ref), the generator fails with:
Invalid property in union <property_name>
This happens regardless of whether anyOf or oneOf is used. The issue is that the generator cannot process inline discriminated union variants that define their own properties — it expects $ref pointers to named component schemas.
Minimal Reproduction
openapi: "3.0.3"
info:
title: Test
version: "1.0"
paths: {}
components:
schemas:
MyModel:
type: object
properties:
rules:
type: array
items:
type: object
oneOf:
- properties:
rule_type:
type: string
enum: ["type_a"]
value_a:
type: string
required: ["rule_type", "value_a"]
- properties:
rule_type:
type: string
enum: ["type_b"]
value_b:
type: integer
required: ["rule_type", "value_b"]
$ openapi-python-client generate --path spec.yaml
Unable to process schema /components/schemas/MyModel:
Invalid property in union rules_item
Workaround
Extracting each variant into a named component schema and using $ref works:
components:
schemas:
RuleTypeA:
type: object
properties:
rule_type:
type: string
enum: ["type_a"]
value_a:
type: string
required: ["rule_type", "value_a"]
RuleTypeB:
type: object
properties:
rule_type:
type: string
enum: ["type_b"]
value_b:
type: integer
required: ["rule_type", "value_b"]
MyModel:
type: object
properties:
rules:
type: array
items:
oneOf:
- $ref: "#/components/schemas/RuleTypeA"
- $ref: "#/components/schemas/RuleTypeB"
Related
- #868 — similar "Invalid property in union" error with
anyOf/allOfcombinations - Both inline
oneOfandanyOfvariants trigger the same failure
Version
- openapi-python-client: 0.28.2
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Direção de pesquisa
Comece executando openapi-python-client generate --path spec.yaml com a reprodução mínima e rastreie o processamento de uniões de schema que reporta Invalid property in union. Como nenhum arquivo-fonte ou caminho de teste é indicado na issue, localize primeiro o tratamento existente para variantes oneOf/anyOf baseadas em $ref. O trabalho estará concluído quando variantes inline com properties e required forem geradas com sucesso, enquanto o workaround documentado com $ref continuar funcionando.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- python
- Domínio
- tooling
- Tipo de issue
- Bug
- Dificuldade
- 3/5
- Tempo estimado
- 1-2 dias
- Status de atividade
- Pouca atividade
- Clareza
- Razoavelmente clara
- Facilidade para iniciantes
- 52/100