Saltar al contenido

Analizador de calidad de OpenAPI

OpenAPI Linter

Revisa un documento OpenAPI en busca de respuestas que faltan, esquemas sin usar, referencias que no apuntan a nada y los demás defectos que rompen los generadores de código.

Comprueba un documento OpenAPI 3.0 o 3.1 en busca de las cosas que rompen los generadores de código, hacen que las bibliotecas cliente mientan, o que la especificación simplemente exige. Las reglas están escritas a mano y listadas en la página: problemas, no preferencias de estilo.

🔒 Se ejecuta por completo en tu navegadoropenapilintapiquality

Documento OpenAPI

Suelta un openapi.yaml

Se lee solo en esta pestaña.

24 hallazgos

  • errorschema-array-itemscomponents.schemas.Order.items

    `type: array` sin `items`.

  • errorpath-param-undeclaredGET /orders/{orderId}

    `{orderId}` en la ruta no está declarado como parámetro.

  • errorresponse-descriptionGET /orders/{orderId}

    La respuesta `200` no tiene description.

  • errorschema-array-itemsGET /orders/{orderId} responses["200"].content["application/json"].items

    `type: array` sin `items`.

  • errorinfo-missinginfo

    No hay `info.version`. Es la versión de la API, no la de OpenAPI.

  • erroroperation-id-duplicatePOST /orders/{orderId}

    El operationId `getOrder` también está en GET /orders/{orderId}.

  • errorpath-param-requiredPOST /orders/{orderId}

    El parámetro `in: path` `id` no tiene `required: true`.

  • errorpath-param-undeclaredPOST /orders/{orderId}

    `{orderId}` en la ruta no está declarado como parámetro.

  • errorpath-param-unusedPOST /orders/{orderId}

    El parámetro `in: path` `id` no aparece en la ruta.

  • advertenciapath-trailing-slash/orders/

    Esta ruta termina en `/`.

  • advertenciaschema-unusedcomponents.schemas.Customer

    Nada referencia este esquema.

  • advertenciaoperation-id-missingGET /orders/

    No hay operationId.

  • advertenciaresponse-errorGET /orders/

    No hay respuesta 4xx.

  • advertenciadescription-missingGET /orders/{orderId}

    No hay ni summary ni description.

  • advertenciaresponse-errorGET /orders/{orderId}

    No hay respuesta 4xx.

  • advertenciadescription-missingPOST /orders/{orderId}

    No hay ni summary ni description.

  • advertenciaresponse-errorPOST /orders/{orderId}

    No hay respuesta 4xx.

  • advertenciaresponse-successPOST /orders/{orderId}

    No hay respuesta 2xx ni 3xx.

  • notatag-missingGET /orders/

    No hay etiqueta.

  • notatag-missingGET /orders/{orderId}

    No hay etiqueta.

  • notaparameter-descriptionPOST /orders/{orderId}

    El parámetro `id` no tiene description.

  • notaresponse-default-onlyPOST /orders/{orderId}

    La única respuesta es `default`.

  • notatag-missingPOST /orders/{orderId}

    No hay etiqueta.

  • notaservers-missingservers

    No hay ningún servidor listado, así que la URL base es `/`.

OpenAPI

3.0.3

Operaciones

3

Errores

9

Advertencias

9

Notas

6

Un conjunto de reglas escrito a mano. Detecta lo que hace tropezar a un generador de código, lo que hace mentir a una biblioteca cliente y lo que la especificación realmente exige — problemas, no preferencias. No carga conjuntos de reglas de Spectral.

Acepta documentos de OpenAPI 3.0 y 3.1 en JSON o YAML. Swagger 2.0 hay que subirlo a 3 primero. Un `$ref` dentro del documento se sigue; uno que apunta a otro archivo no se puede comprobar y se reporta como nota.

Para ver qué cambió entre dos versiones, usa Comparar cambios de OpenAPI.

Cómo se usa

  1. Pega el documento

    JSON o YAML, 3.0 o 3.1. Se analiza en esta pestaña; no se sube nada.

  2. Empieza por los errores

    Cada hallazgo lleva el id de la regla y la ubicación exacta en el documento. Los errores son cosas que realmente van a salir mal; las advertencias son cosas que normalmente saldrán mal.

  3. Lee la lista de reglas cuando un hallazgo te sorprenda

    Cada regla está escrita con su severidad y por qué existe, así que un hallazgo con el que no estás de acuerdo es al menos un argumento que puedes leer.

Preguntas frecuentes

¿Puede cargar mi conjunto de reglas de Spectral?

No. Esto es un conjunto de reglas fijo y escrito a mano, elegido por problemas y no por estilo de la casa. Si tienes una configuración de Spectral, Spectral es la herramienta que la respetará.

No lee mi archivo Swagger 2.0.

Correcto: 2.0 es una forma de documento distinta, no un 3.0 un poco más viejo, y la mitad de las reglas no aplicarían. Conviértelo primero; `swagger2openapi` es la vía habitual.

No siguió mi `$ref` externo.

Un `$ref` dentro del documento se resuelve; uno que apunta a otro archivo significaría descargar desde una ruta que solo tiene tu máquina. Se informa como una nota para que sepas que la comprobación fue incompleta y no limpia.

¿Por qué un `operationId` ausente es una advertencia?

Porque los generadores lo usan para nombrar la función que emiten para esa operación. Sin uno obtienes un nombre derivado de la ruta y el método, que cambia en cuanto cambia la ruta: un renombrado en tu API se convierte en un renombrado en cada cliente.

Puede recibir de

Después

Estas aceptan lo que produce esta herramienta, así que el resultado puede pasar directamente.