Take this for example:
[Obsolete("Please use /Auth/Register instead")]
Swaggers UI shows its Obsolte but doesnt show the message, so is it possible to have the message inside the attribute show in the Swagger UI? (Without having to change library like this post says) Im using Swashbuckle.AspNetCore (Default with ASP.NET) v6.3 (OpenAPI / Swagger v2.0, v3.0)
Related
When i add an Obsolete attribute to a controller action swagger correctly shows the endpoint as Deprecated in the UI but it dosn't show the Message. For example.
[Obsolete("This endpoint will no longer be supported. Use /api/somepath instead")]
Is it possible to see this message in swagger ui?
Edit
We are using Swashbuckle for integration with ASP.net Web Api
We have a .NET core 1.1 webapi project. We have two controller files and I've been able to generate separate swagger JSON files for each controller by decorating methods with GroupName.
When I browser the swagger UI (/swagger) I see that it has a drop down on top right corner that allows us to select the group.
Our requirement is to have a separate URL itself for swagger UI (not just JSON file) so that we can send a URL dedicated to a controller to our customers that doesn't confuse them. Is there a way to tell swashbuckle/swagger UI to use a specific URL for given JSON file/group name?
I tried checking if there's any query string parameter that swagger UI uses on change of dropdown but unfortunately it uses referer http header...
Yes swagger-ui has the url param that does exactly that.
Here are a few examples:
http://petstore.swagger.io/?url=http://heldersepu.github.io/hs-scripts/swagger/4134_swagger.json
http://offleaseonly.azurewebsites.net/swagger/ui/index?url=https://raw.githubusercontent.com/oasis-tcs/odata-openapi/master/examples/People.openapi3.json
http://swagger-net-test.azurewebsites.net/swagger/ui/index?url=http://heldersepu.github.io/hs-scripts/swagger/DiegoGuidi.json
There is an internal Liberty swagger-ui and it is working fine for me, but actually we need to make our own swagger layout, I mean putting our logo and our company name ... etc.
This is what we get when calling https://localhost:9443/ibm/api/docs with basic swagger-ui
But when we use the browser url and paste https://localhost:9443/ibm/api/docs we got the json content for our services
This is how it working with ibm liberty swagger-ui
And this how we need to show it to our clients
Currently there's no way to alter the "look & feel" of the built-in Liberty Swagger UI, but there is a Request For Enhancement that you can vote for: https://www.ibm.com/developerworks/rfe/execute?use_case=viewRfe&CR_ID=87860
If you want to have your own Swagger UI totally independent of Liberty's UI, you can still pull from /ibm/api/docs like your first screenshot showed - the only thing you're missing is to setup CORS support on that Liberty instance, so that your custom Swagger UI is allowed to call it.
Here's the doc for setting up CORS in Liberty: https://www.ibm.com/support/knowledgecenter/SSEQTP_8.5.5/com.ibm.websphere.wlp.doc/ae/twlp_webcontainer_cors_config.html?cp=SSEQTP_8.5.5%2F1-8-1-1-21-1
Main sample from the link:
<cors domain="/ibm/api/collective"
allowedOrigins="https://alice.com:8090"
allowedMethods="GET, DELETE, POST"
allowedHeaders="accept, MyRequestHeader1"
exposeHeaders="MyResponseHeader1"
allowCredentials="true"
maxAge="3600" />
We have a .NET solution with 2 projects:
ASP.NET MVC Portal project
OWIN Host API project (with custom
controller selector)
We are trying to expose a public documentation to a few API controllers in the OWIN-based API project
We would like to show the Swagger UI from the Portal project for controllers in the API project
So far, all attempts have not been successful. When adding Swagger UI to the Portal project, it only wants to show documentation about controllers in the Portal project, not from the API project.
When adding Swagger UI to the API project (not preferred solution), it doesn't work at all, probably because of the custom controller selector
However, I think I'm missing something obvious as this feels like a very basic configuration setting that we're missing
Swagger UI is only a set a static file rendering OpenAPI (fka. Swagger) Specification files. These specification files can be produced by an application or simply manually written.
You could modify the original Swagger UI to create your own version and replace the URL field (on top near the Authorize button) by a drop list pointing to your 2 different applications producing OpenAPI (fka. Swagger) specification.
I have downloaded and browsed to the Swagger-UI dist/index.html file and it has loaded the sample Petstore APIs. However, I am not able to figure out how some features are functioning and hence not able to bring that to my own definition.
The sample Petstore shows a "VALID {...}" button at the bottom right hand side. However I don't see that when I navigate to my own API definitions. How do I enable it?
When I look up the petstore API specifications being rendered by Swagger-UI http://petstore.swagger.io/v2/swagger.jsonI am not able to figure out how are they plugging in the section below the Swagger Petstore description.
Contact the developer
This is a mailto link with an email address and subject line
Find out more about Swagger http://swagger.io doesn't show up either in the petstore json definition or the one that I am using.
Where is the sample picking this up from?
When I use the Swagger editor, it interprets the specification in a different way - most significantly showcasing the terms of use and license information appropriately. Does Swagger-UI not support those properties? Do I need to enable something in Swagger-UI to make them appear?
You need to be using the latest version of Swagger, Swagger Core 1.5 at least, to have these neat features in your own Swagger project.
The UI at version > 2.0 comes with the schema validation (the VALID button on the bottom of the page) built-in.
2+3. The Info object contains all the information needed for rendering Contact the developer, license and "More Info" links by the UI.