Estou tentando editar uma especificação OpenAPI alterando todos os parâmetros para serem anuláveis. Uma definição de parâmetro se parece com isso:
{
"name": "foo",
"required": true,
"type": "string"
}
Eles estão contidos em um parameters
array que pode estar em qualquer lugar do documento. O que eu preciso é anexar "x-nullable": true
a qualquer parâmetro que contenha uma type
propriedade.
Dados de amostra:
{
"parameters": [
{"notype": "x"},
{"type": "x"}
],
"foo": {
"parameters": [
{"type": "y"}
]
},
"bar": {
"baz": {
"parameters": [
{"type": "z"}
]
}
}
}
Saída desejada:
{
"parameters": [
{"notype": "x"},
{
"type": "x",
"x-nullable": true
}
],
"foo": {
"parameters": [
{
"type": "y",
"x-nullable": true
}
]
},
"bar": {
"baz": {
"parameters": [
{
"type": "z",
"x-nullable": true
}
]
}
}
}
O mais próximo que consegui chegar foi isto :
.. | (.parameters[] | select(.type)) += {"x-nullable":true}
Ele altera com sucesso um dos itens no meu documento de teste, mas os resultados são inconsistentes e parecem ser baseados na estrutura que escolhi para dados de amostra.