inverseOperationIds removes schema properties named after HTTP methods (e.g. head)
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 76/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- javascript
Direzione di ricerca
Inizia dalla logica di openapiFilter per il passaggio «Inverse operationIds without operationIds» e riproduci il problema con il documento OpenAPI fornito. Controlla la profondità di attraversamento utilizzata per le chiavi sotto paths, quindi verifica che il filtraggio di createPull conservi le proprietà dello schema head, base e get rimuovendo comunque l’operazione interessata. Dettaglio
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
inverseOperationIds removes schema properties whose names are HTTP methods (head, get, post, …) when those properties are in inline schemas under paths, such as request bodies. The operation itself is kept, but it loses the properties.
This hit a real API: GitHub's "create a pull request" request body has a required head property, and inverseOperationIds: ['pulls/create'] strips it.
Reproduction (openapi-format 1.33.7, Node 24):
import { openapiFilter } from 'openapi-format';
const doc = {
openapi: '3.0.3',
info: { title: 't', version: '1' },
paths: {
'/pulls': {
post: {
operationId: 'createPull',
requestBody: {
content: {
'application/json': {
schema: {
type: 'object',
properties: {
head: { type: 'string' },
base: { type: 'string' },
get: { type: 'string' },
},
},
},
},
},
responses: { 201: { description: 'Created' } },
},
},
},
};
const { data } = await openapiFilter(doc, {
filterSet: { inverseOperationIds: ['createPull'] },
});
console.log(
Object.keys(data.paths['/pulls'].post.requestBody.content['application/json'].schema.properties),
);
Expected: [ 'head', 'base', 'get' ]
Actual: [ 'base' ]
With filterSet: {} or { unusedComponents: ['schemas'] }, all three properties are kept.
Likely cause: in openapiFilter, the "Inverse operationIds without operationIds" step removes any node under paths whose key is in httpVerbs and that has no operationId:
inverseFilterProps.length > 0 &&
this.path[0] === 'paths' &&
node.operationId === undefined &&
httpVerbs.includes(this.key)
It doesn't check depth, so it also matches schema properties inside operations. Restricting it to operation objects (for example this.path.length === 3, which is paths → path → method) should fix it.
- Lingua principale
- JavaScript
- Stelle
- 177
- Fork
- 30
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di thim81/openapi-format
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 76/100
thim81/openapi-format#239 · 1 commento ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 25/100
thim81/openapi-format#237 · 1 commento ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
thim81/openapi-format#232 · 3 commenti ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
thim81/openapi-format#196 · 3 commenti ·
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
thim81/openapi-format#169 · 2 commenti ·
Tutte le issue di thim81/openapi-format
Issue simili
-
Mend: dependency security vulnerability untriaged
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
opensearch-project/security-dashboards-plugin#2543 ·
I maintainer di solito rispondono entro 1 giorno
-
[quality] refresh-radar-reports.yml runs on ubuntu-latest while every other job pins ubuntu-24.04Apertaagent/quality hive/hosted-available-lke648397-260827-5n31 quality testing
Difficoltà 1/5 1-3 ore Idoneità per principianti 90/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
godotengine/godot-website#1432 ·
-
Add: Mooz RetroApertachannels:add check:passed
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
I maintainer di solito rispondono entro 1 giorno