Does Hawkular REST API have a swagger specification? - swagger

The documentation subtitle for
www.hawkular.org/docs/rest/rest-metrics.html
is "Auto-generated swagger documentation"
I can't find the swagger specification file in either JSON or YAML format, in the site or the repo.
Does one exist for either hawkular-metrics or hawkular-alerts?
Is this a useful way to generate an interface for a Hawkular service. Or is there a better way?

Related

how to generate html from swagger yaml file [duplicate]

There are only ugly HTML pages as download (HTML, HTML2 and dynamic all ugly), but the site, eg. edited https://app.swaggerhub.com/apis/{user}/{project}/{version}
(and many others!) offers pretty HTML interface... How to download this pretty HTML?
Complete and autonomous HTML code (file or zip of files).
I have a good and valid swagger.yaml or swagger.json file of my API, so another solution is to run a open sourse (plug and play!) tool with my API-description file.
The pretty:
The ugly:
The "pretty interface" on your screenshot is Swagger UI. It's free and open-source. There's a demo at http://petstore.swagger.io, where you can load your own YAML/JSON files from an URL and see how they would be rendered.
To use Swagger UI locally:
Go to https://github.com/swagger-api/swagger-ui and download the repository as ZIP:
Edit the dist\index.html file and change the line
url: "http://petstore.swagger.io/v2/swagger.json",
to the URL of your Swagger .json or .yaml file, e.g.
url: "http://api.mysite.com/swagger.json",
(Optional) Add/change other configuration parameters in the SwaggerUIBundle initialization code in dist\index.html.
Open the dist\index.html file in your browser to preview your API docs.
Note: If the spec does not load or "try it out" does not work, you probably need to enable CORS on the your server. See https://github.com/swagger-api/swagger-ui/blob/master/docs/usage/cors.md and https://enable-cors.org.
Upload the files from the dist folder somewhere to your server - and now you have pretty API docs too!
Alternatively, SwaggerHub (which you mentioned) provides cloud hosting for Swagger specs among other things, and has Swagger UI integrated. You can import your Swagger .json/.yaml files there and have your API docs hosted on SwaggerHub. A free plan is available.
Thanks to #tleyden at swagger-ui/issues for good clues!
Use the index and assets folder of this project, https://github.com/okfn-brasil/swagger-ui-html

Combine multiple swagger files

I was provided Swagger 2.0 json files for a RESTful API my project is using. The provider does not have SDK, so I'm using the Swagger files to generate a starting point to use for integrating with the service. It's split into 50+ files, grouped by collections of endpoints. How would I combine these into a single JSON or YAML file that conforms to the spec so I can generate SDK for all endpoints at once?
You can use a python script to read the contents of each json file and append them to one single json file. Swagger will read each field and render the ui to display all of the files on a single page.

Can the swagger editor online take a YAML url as input through the address bar?

I want to access https://editor.swagger.io/ but need the YAML file to be preloaded based on a URL parameter.
So if I want to view https://github.com/OAI/OpenAPI-Specification/blob/master/examples/v3.0/petstore.yaml, I should be able to provide this as an input to swagger editor accessible over the internet.
Is this possible?
Yes, Swagger Editor supports the url parameter:
https://editor.swagger.io/?url=https://raw.githubusercontent.com/OAI/OpenAPI-Specification/master/examples/v3.0/petstore.yaml
Note that to load OpenAPI files from GitHub/GitLab/Bitbucket/etc., you need to specify the "raw" file link.
Also, for this to work, the server where the YAML/JSON file is hosted must use HTTPS and support CORS (i.e. allow cross-domain calls from editor.swagger.io).

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#!:
The version is api version: v1.
There is no "Export" button that I can see. So how do I export it?
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.
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.
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.
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,
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/#
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
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/#
The JSON may also be inlined in the document, specifically for Swagger version 2.0. If you haven't found anything after walking through #Helen's answer give this a try:
View Page Source
Search for "swagger" or "spec"
If you see a <script type="application/json"> tag with something similar to the following in it, this is effectively your swagger.json content. Copy everything inside of the <script> tags and save into a file named swagger.json and you should be good to go.
<script id="swagger-data" type="application/json">
{"spec":{"definitions":{},"info":{},"paths":{},"schemes":[],"swagger":"2.0"}}
</script>
I'm using Django Rest Framework (so pip package django-rest-swagger==2.2.0) and the above answers weren't really sufficient. There were two options:
1) View the page source with developer tools. When I hit my http://localhost:8000/docs/ endpoint, I see:
The docs/ endpoint was configured in Django, so it may be different for you. When digging into the details of that, I can go to the Response tab (in Chrome) and scroll down to find the actual JSON. It's the value in window.drsSpec
2) The alternative (and perhaps easier) approach is to add ?format=openapi to my endpoint, as suggested in https://github.com/marcgibbons/django-rest-swagger/issues/590
This will directly spit out the JSON you need. I imported it into Postman by changing the swagger field to openapi which seems a little hacky but it worked 🤷🏻‍♂️
for
Swashbuckel.aspnet.core(5.5.0)
try
services.AddControllers()
.AddJsonOptions(options =>
options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()));
I tried this for a Web API core Project
you have to be using
System.Text.Json.Serialization;
Visit http://localhost:49846/swagger/docs/v1
The above URL will return JSON. Save the JSON as swagger.json
Please replace the port number with your port number.
This could be achieved using JUnit test case in compile time, follow https://github.com/springfox/springfox/issues/1959 for more details.

Choose a tools to documents REST API

I actually use Doxygen to document my php REST application and I just discover Apiary & Swagger witch seem to be good tools to document API...I want to know if there is a way to generate documentation automatically using one of this tools (apiary or swagger ) based on the code comments?
Using swagger-php you can generate the documentation automatically from a collection of php scripts documented using annotations.
Swagger-PHP is decently documented here: http://zircote.com/swagger-php/
A working example can be found on github: https://github.com/zircote/swagger-php/tree/master/Examples/Petstore
Regarding the generation of the json file containing the documentation check my answer here: https://stackoverflow.com/a/31178997/2853903

Resources