Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to export swagger.json (or yaml)

How can I export a Swagger definition file? It should be a JSON or YAML file, e.g. swagger.json or swagger.yaml.

Let's say I have an endpoint looking like http://example.com//swagger/ui/index#!:

enter image description here

The version is api version: v1.

There is no "Export" button that I can see. So how do I export it?

like image 734
sashoalm Avatar asked Jan 30 '18 15:01

sashoalm


People also ask

How do I export swagger json?

If you don't see the url or if url is a code expression, open the browser dev tools, switch to the Network tab and disable caching. Then refresh the page and search for the API definition file ( swagger. json , swagger. yaml , api-docs or similar) among HTTP requests.

How do I export swagger?

Export to SwaggerHub To export a REST service definition in the Swagger 2.0 or OpenAPI 3.0 format: Right-click the service in the Navigator panel and select Publish to SwaggerHub. Click the image to enlarge it. SwaggerHub cloud service users: https://api.swaggerhub.com (default value).

Is swagger a json or YAML?

Swagger definitions can be written in JSON or YAML.

How do I convert swagger to YAML?

Go to http://editor.swagger.io/#/ On the top left corner, select File-> Import File... Point to the local Swagger JSON file you exported in step #1 to open in the Swagger Editor. Select Generate Client -> Swagger YAML option from the menu.


2 Answers

The URL of the API definiton is displayed in the top bar of Swagger UI – in your example it's

/v2/api-docs?group=full-petstore-api

So the full URL appears to be

http://localhost:8080/v2/api-docs?group=full-petstore-api

In newer versions of Swagger UI, the link to the API definition is often displayed below the API title, so you can right-click the link and Save As.

Link to API definition in Swagger UI 3.x


If your Swagger UI does not have a visible link to the API definition, view the page source and look for the url parameter, such as:

const ui = SwaggerUIBundle({
  url: "https://petstore.swagger.io/v2/swagger.json",     // <-------
  dom_id: '#swagger-ui',

If you don't see the url or if url is a code expression, open the browser dev tools, switch to the Network tab and disable caching. Then refresh the page and search for the API definition file (swagger.json, swagger.yaml, api-docs or similar) among HTTP requests. You can filter by XHR to narrow down the list.

Finding the Swagger file on the Network tab of browser dev tools


Another way to find the actual url is to use the browser console and evaluate one of the following values, depending on your UI version:

  • Swagger UI 3.x:

    ui.getConfigs().url
    
  • Swagger UI 2.x:

    swaggerUi.api.url
    


Sometimes the OpenAPI definition may be embedded within a .js file – in this case take this file and strip out the extra parts.

OpenAPI definition embedded in a JavaScript file

like image 105
Helen Avatar answered Oct 16 '22 14:10

Helen


Though it's already been answered and it's the correct one, I thought I shall post the much detailed version of it.. Hope this helps,

  1. If you do have the swagger json file which you feed to the swagger UI, then to generate .yaml file just click on the below link copy-paste your json in the editor and download the yaml file. This is a straight forward method

link : https://editor.swagger.io/#

  1. Now the second way where you don't have any swagger json file then the following steps should help,

Open the swagger ui, inspect (Shift+Ctrl+i), refresh the page and you will get the tabs like below

enter image description here

Choose XHR or All tab under Network tab, check for the file api-doc?group=* and click subtab response. *Now copy the content of ap-doc?group.** file and use the same editor link to convert to yaml file

link : https://editor.swagger.io/#

like image 21
Yashaswi N P Avatar answered Oct 16 '22 15:10

Yashaswi N P