{"id":81060,"date":"2018-08-24T22:00:50","date_gmt":"2018-08-24T19:00:50","guid":{"rendered":"https:\/\/www.javacodegeeks.com\/?p=81060"},"modified":"2018-08-24T19:33:40","modified_gmt":"2018-08-24T16:33:40","slug":"swagger-ui-microprofile-openapi","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2018\/08\/swagger-ui-microprofile-openapi.html","title":{"rendered":"Swagger UI on MicroProfile OpenAPI"},"content":{"rendered":"<p><a href=\"https:\/\/github.com\/eclipse\/microprofile-open-api\">MicroProfile OpenApi<\/a> gives us a standardized way to describe our <a href=\"https:\/\/en.wikipedia.org\/wiki\/Java_API_for_RESTful_Web_Services\">JAX-RS<\/a> API\u2019s using <a href=\"https:\/\/www.openapis.org\/\">OpenApi<\/a> 3. If you have used <a href=\"https:\/\/github.com\/swagger-api\/swagger-core\/wiki\/swagger-core-jax-rs-project-setup-1.5.x\">swagger-jaxrs<\/a> and <a href=\"https:\/\/github.com\/swagger-api\/swagger-core\/wiki\/annotations-1.5.x\">swagger-annotations<\/a> before, this will feel very familiar to you as OpenApi is built on the Swagger base.<\/p>\n<p><em>On Nov. 5, 2015, SmartBear in conjunction with 3Scale, Apigee, Capital One, Google, IBM, Intuit, Microsoft, PayPal, and Restlet announced the formation of the Open API Initiative, an open source project under the Linux Foundation. As part of the formation of the OAI, SmartBear donated the Swagger specification to the Linux Foundation, meaning that the OpenAPI Specification is semantically identical to the specification formerly known as the Swagger 2.0 specification<\/em> &#8211; <a href=\"https:\/\/www.openapis.org\/faq#OAIFAQ-History\">www.openapis.org\/faq<\/a><\/p>\n<h2>Quick overview<\/h2>\n<h3>Application<\/h3>\n<p>Firstly, in your class that extends <code>javax.ws.rs.core.Application<\/code>, add the header information about your API:<\/p>\n<pre class=\"brush:java; wrap-lines:false\">@ApplicationPath(\"\/api\")\r\n    @OpenAPIDefinition(info = @Info(\r\n            title = \"Example application\", \r\n            version = \"1.0.0\", \r\n            contact = @Contact(\r\n                    name = \"Phillip Kruger\", \r\n                    email = \"phillip.kruger@phillip-kruger.com\",\r\n                    url = \"http:\/\/www.phillip-kruger.com\")\r\n            ),\r\n            servers = {\r\n                @Server(url = \"\/example\",description = \"localhost\")\r\n            }\r\n    )\r\n    public class ApplicationConfig extends Application {\r\n\r\n    }<\/pre>\n<p>(see full example <a href=\"https:\/\/github.com\/phillip-kruger\/microprofile-extensions\/blob\/master\/example\/src\/main\/java\/com\/github\/phillipkruger\/microprofileextentions\/example\/ApplicationConfig.java\">here<\/a>)<\/p>\n<h3>Service<\/h3>\n<p>Then in your service(s), add the annotations describing your service:<\/p>\n<ul>\n<li><code>@Tag<\/code><\/li>\n<li><code>@Operation<\/code><\/li>\n<li><code>@APIResponse<\/code><\/li>\n<li>etc.<\/li>\n<\/ul>\n<p>example:<\/p>\n<pre class=\"brush:java; wrap-lines:false\">@RequestScoped\r\n    @Path(\"\/config\")\r\n    @Tag(name = \"Config Retrieval service\", description = \"Get the value for a certain config\")\r\n    public class ConfigRetrievalService {\r\n\r\n        @Inject\r\n        private Config config;\r\n\r\n        @GET @Path(\"\/{key}\")\r\n        @Operation(description = \"Get the value for this key\")\r\n        @APIResponses({\r\n            @APIResponse(responseCode = \"200\", description = \"Successful, returning the value\")\r\n        })\r\n        @Produces(MediaType.TEXT_PLAIN)\r\n        public Response getConfigValue(@PathParam(\"key\") String key) {\r\n            String value = config.getValue(key, String.class);\r\n            log.log(Level.INFO, \"{0} = {1}\", new Object[]{key, value});\r\n\r\n\r\n            return Response.ok(value).build();\r\n        }\r\n\r\n    }<\/pre>\n<p>(see the full example <a href=\"https:\/\/github.com\/phillip-kruger\/microprofile-extensions\/blob\/master\/example\/src\/main\/java\/com\/github\/phillipkruger\/microprofileextentions\/example\/ConfigRetrievalService.java\">here<\/a>, and another (fuller) example <a href=\"https:\/\/github.com\/phillip-kruger\/microprofile-demo\/blob\/master\/membership\/src\/main\/java\/com\/github\/phillipkruger\/membership\/MembershipService.java\">here<\/a>)<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<h3>Getting the openapi yaml<\/h3>\n<p>Now if you run your application, you can go to <code>\/openapi<\/code> to get the yaml:<\/p>\n<pre class=\"brush:xml; wrap-lines:false\">openapi: 3.0.0\r\n    info:\r\n      title: Example application\r\n      contact:\r\n        name: Phillip Kruger\r\n        url: http:\/\/www.phillip-kruger.com\r\n        email: phillip.kruger@phillip-kruger.com\r\n      version: 1.0.0\r\n    servers:\r\n    - url: \/example\r\n      description: localhost\r\n    tags:\r\n    - name: Simulate some exeption\r\n      description: Create some exception\r\n    - name: Config Retrieval service\r\n      description: Get the value for a certain config\r\n    paths:\r\n      \/api\/config\/{key}:\r\n        get:\r\n          tags:\r\n          - Config Retrieval service\r\n          description: Get the value for this key\r\n          operationId: getConfigValue\r\n          parameters:\r\n          - name: key\r\n            in: path\r\n            required: true\r\n            style: simple\r\n            schema:\r\n              type: string\r\n          responses:\r\n            200:\r\n              description: Successful, returning the value\r\n      \/api\/exception:\r\n        get:\r\n          tags:\r\n          - Simulate some exeption\r\n          description: Throw an exeption\r\n          operationId: doSomething\r\n          responses:\r\n            412:\r\n              description: You made a mistake\r\n    components: {}<\/pre>\n<h3>Adding Swagger UI<\/h3>\n<p>Above is a quick overview of MicroProfile OpenAPI. Read more about it here:<\/p>\n<ul>\n<li><a href=\"http:\/\/download.eclipse.org\/microprofile\/microprofile-open-api-1.0\/microprofile-openapi-spec.html\">Specification<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/eclipse\/microprofile-open-api\">Github<\/a><\/li>\n<\/ul>\n<p>The latest <a href=\"https:\/\/swagger.io\/tools\/swagger-ui\/\">Swagger UI<\/a> works on OpenAPI, and you can manually add it to your project (see <a href=\"https:\/\/www.kodnito.com\/posts\/documenting-rest-api-using-microprofile-openapi-swagger-ui-payara-micro\/\">this great post<\/a> by <a href=\"https:\/\/twitter.com\/cicekhayri\">Hayri Cicek\u200f<\/a>) , or you can use <a href=\"https:\/\/github.com\/phillip-kruger\/microprofile-extensions\/tree\/master\/openapi-ext\">this<\/a> useful library that will add it automatically:<\/p>\n<p>In your <code>pom.xml<\/code>:<\/p>\n<pre class=\"brush:xml; wrap-lines:false\">&lt;dependency&gt;\r\n        &lt;groupId&gt;com.github.phillip-kruger.microprofile-extensions&lt;\/groupId&gt;\r\n        &lt;artifactId&gt;openapi-ext&lt;\/artifactId&gt;\r\n        &lt;version&gt;1.0.9&lt;\/version&gt;\r\n    &lt;\/dependency&gt;<\/pre>\n<p>This will pull in Swagger UI via <a href=\"http:\/\/webjars.org\/\">webjars<\/a> and generate the <code>index.html<\/code> from a template that you can configure using <a href=\"https:\/\/github.com\/eclipse\/microprofile-config\">MicroProfile Config API<\/a>.<\/p>\n<p>Just adding the above will already give you the default UI, example:<\/p>\n<p>http:\/\/localhost:8080\/example\/api\/openapi-ui\/<\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/vanilla.png\"><img decoding=\"async\" class=\"aligncenter wp-image-81080\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/vanilla.png\" alt=\"Swagger UI\" width=\"820\" height=\"445\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/vanilla.png 1235w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/vanilla-300x163.png 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/vanilla-768x417.png 768w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/vanilla-1024x556.png 1024w\" sizes=\"(max-width: 820px) 100vw, 820px\" \/><\/a><\/p>\n<h3>Personalize your UI<\/h3>\n<p>Using the Config API you can Personalize the UI. Here are the config keys you can use:<\/p>\n<ul>\n<li><strong>openapi-ui.copyrightBy<\/strong> &#8211; Adds a name to the copyright in the footer. Defaults to none.<\/li>\n<li><strong>openapi-ui.copyrightYear<\/strong> &#8211; Adds the copyright year. Defaults to current year.<\/li>\n<li><strong>openapi-ui.title<\/strong> &#8211; Adds the title in the window. Defaults to \u201cMicroProfile &#8211; Open API\u201d.<\/li>\n<li><strong>openapi-ui.serverInfo<\/strong> &#8211; Adds info on the server. Defaults to the system server info.<\/li>\n<li><strong>openapi-ui.contextRoot<\/strong> &#8211; Adds the context root. Defaults to the current value.<\/li>\n<li><strong>openapi-ui.swaggerUiTheme<\/strong> &#8211; Use a theme from swagger-ui-themes. Defaults to \u201cflattop\u201d.<\/li>\n<li><strong>openapi-ui.swaggerHeaderVisibility<\/strong> &#8211; Show\/hide the swagger logo header. Defaults to \u201cvisible\u201d.<\/li>\n<li><strong>openapi-ui.exploreFormVisibility<\/strong> &#8211; Show\/hide the explore form. Defaults to \u201chidden\u201d.<\/li>\n<li><strong>openapi-ui.serverVisibility<\/strong> &#8211; Show\/hide the server selection. Defaults to \u201chidden\u201d.<\/li>\n<li><strong>openapi-ui.createdWithVisibility<\/strong> &#8211; Show\/hide the created with footer. Defaults to \u201cvisible\u201d.<\/li>\n<\/ul>\n<p>Example: Adding this to <code>META-INF\/microprofile.properties<\/code><\/p>\n<pre class=\"brush:java; wrap-lines:false\">openapi-ui.copyrightBy=Phillip Kruger\r\n    openapi-ui.title=My awesome services\r\n    openapi-ui.swaggerHeaderVisibility=hidden\r\n    openapi-ui.serverVisibility=visible<\/pre>\n<p>will change the UI:<\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/configured1.png\"><img decoding=\"async\" class=\"aligncenter wp-image-81081\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/configured1.png\" alt=\"Swagger UI\" width=\"820\" height=\"443\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/configured1.png 1229w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/configured1-300x162.png 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/configured1-768x415.png 768w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/configured1-1024x553.png 1024w\" sizes=\"(max-width: 820px) 100vw, 820px\" \/><\/a><\/p>\n<h4>Theme<\/h4>\n<p>The default UI uses the flattop theme from <a href=\"http:\/\/meostrander.com\/swagger-ui-themes\/\">swagger-ui-themes<\/a>, but you can also change that:<\/p>\n<pre class=\"brush:java; wrap-lines:false\">openapi-ui.swaggerUiTheme=monokai<\/pre>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/configured2.png\"><img decoding=\"async\" class=\"aligncenter wp-image-81082\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/configured2.png\" alt=\"Swagger UI\" width=\"820\" height=\"443\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/configured2.png 1236w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/configured2-300x162.png 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/configured2-768x415.png 768w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/configured2-1024x553.png 1024w\" sizes=\"(max-width: 820px) 100vw, 820px\" \/><\/a><\/p>\n<h4>Logo<\/h4>\n<p>Lastly, you can change the logo to your company logo by including a file named <code>openapi.png<\/code> in <code>\/src\/main\/resources\/<\/code>:<\/p>\n<p><a href=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/configured3.png\"><img decoding=\"async\" class=\"aligncenter wp-image-81083\" src=\"http:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/configured3.png\" alt=\"Swagger UI\" width=\"820\" height=\"474\" srcset=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/configured3.png 1291w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/configured3-300x174.png 300w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/configured3-768x444.png 768w, https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2018\/08\/configured3-1024x593.png 1024w\" sizes=\"(max-width: 820px) 100vw, 820px\" \/><\/a><\/p>\n<h3>Apiee<\/h3>\n<p>For application servers that do not have MicroProfile, see <a href=\"https:\/\/github.com\/phillip-kruger\/apiee\">Apiee<\/a><\/p>\n<div class=\"attribution\">\n<table>\n<tbody>\n<tr>\n<td>Published on Java Code Geeks with permission by Phillip Kr\u00fcger, partner at our <a href=\"\/\/www.javacodegeeks.com\/join-us\/jcg\/\" target=\"_blank\" rel=\"noopener\">JCG program<\/a>. See the original article here: <a href=\"https:\/\/www.phillip-kruger.com\/post\/microprofile_openapi_swaggerui\/\" target=\"_blank\" rel=\"noopener\">Swagger UI on MicroProfile OpenAPI<\/a><\/p>\n<p>Opinions expressed by Java Code Geeks contributors are their own.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>MicroProfile OpenApi gives us a standardized way to describe our JAX-RS API\u2019s using OpenApi 3. If you have used swagger-jaxrs and swagger-annotations before, this will feel very familiar to you as OpenApi is built on the Swagger base. On Nov. 5, 2015, SmartBear in conjunction with 3Scale, Apigee, Capital One, Google, IBM, Intuit, Microsoft, PayPal, &hellip;<\/p>\n","protected":false},"author":10628,"featured_media":112,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[1731,1029,1796],"class_list":["post-81060","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-microprofile","tag-swagger","tag-swagger-ui"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Swagger UI on MicroProfile OpenAPI - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"Interested to learn more about swagger UI ? Check our article where we use MicroProfile OpenApi to gives us a standardized way to describe our JAX-RS API\u2019s!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.javacodegeeks.com\/2018\/08\/swagger-ui-microprofile-openapi.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Swagger UI on MicroProfile OpenAPI - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"Interested to learn more about swagger UI ? Check our article where we use MicroProfile OpenApi to gives us a standardized way to describe our JAX-RS API\u2019s!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2018\/08\/swagger-ui-microprofile-openapi.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2018-08-24T19:00:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Phillip Kruger\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Phillip Kruger\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/08\\\/swagger-ui-microprofile-openapi.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/08\\\/swagger-ui-microprofile-openapi.html\"},\"author\":{\"name\":\"Phillip Kruger\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/f24087666e9c716ac25d6c5aceff9a6a\"},\"headline\":\"Swagger UI on MicroProfile OpenAPI\",\"datePublished\":\"2018-08-24T19:00:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/08\\\/swagger-ui-microprofile-openapi.html\"},\"wordCount\":503,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/08\\\/swagger-ui-microprofile-openapi.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"keywords\":[\"MicroProfile\",\"Swagger\",\"Swagger UI\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/08\\\/swagger-ui-microprofile-openapi.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/08\\\/swagger-ui-microprofile-openapi.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/08\\\/swagger-ui-microprofile-openapi.html\",\"name\":\"Swagger UI on MicroProfile OpenAPI - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/08\\\/swagger-ui-microprofile-openapi.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/08\\\/swagger-ui-microprofile-openapi.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"datePublished\":\"2018-08-24T19:00:50+00:00\",\"description\":\"Interested to learn more about swagger UI ? Check our article where we use MicroProfile OpenApi to gives us a standardized way to describe our JAX-RS API\u2019s!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/08\\\/swagger-ui-microprofile-openapi.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/08\\\/swagger-ui-microprofile-openapi.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/08\\\/swagger-ui-microprofile-openapi.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/enterprise-java-logo.jpg\",\"width\":150,\"height\":150,\"caption\":\"java-interview-questions-answers\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2018\\\/08\\\/swagger-ui-microprofile-openapi.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/enterprise-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Swagger UI on MicroProfile OpenAPI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/f24087666e9c716ac25d6c5aceff9a6a\",\"name\":\"Phillip Kruger\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/38e989af8597679e556461deb73f4044c27d0228a28f9971d2ac37794b1b8603?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/38e989af8597679e556461deb73f4044c27d0228a28f9971d2ac37794b1b8603?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/38e989af8597679e556461deb73f4044c27d0228a28f9971d2ac37794b1b8603?s=96&d=mm&r=g\",\"caption\":\"Phillip Kruger\"},\"description\":\"Phillip is a software developer and a systems architect who knacks for solving problems. He has a passion for clean code and evolutionary architecture. He blogs about all technical things.\",\"sameAs\":[\"https:\\\/\\\/www.phillip-kruger.com\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/phillipkruger\\\/\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/phillip-kruger\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Swagger UI on MicroProfile OpenAPI - Java Code Geeks","description":"Interested to learn more about swagger UI ? Check our article where we use MicroProfile OpenApi to gives us a standardized way to describe our JAX-RS API\u2019s!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.javacodegeeks.com\/2018\/08\/swagger-ui-microprofile-openapi.html","og_locale":"en_US","og_type":"article","og_title":"Swagger UI on MicroProfile OpenAPI - Java Code Geeks","og_description":"Interested to learn more about swagger UI ? Check our article where we use MicroProfile OpenApi to gives us a standardized way to describe our JAX-RS API\u2019s!","og_url":"https:\/\/www.javacodegeeks.com\/2018\/08\/swagger-ui-microprofile-openapi.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2018-08-24T19:00:50+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","type":"image\/jpeg"}],"author":"Phillip Kruger","twitter_card":"summary_large_image","twitter_creator":"@javacodegeeks","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Phillip Kruger","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2018\/08\/swagger-ui-microprofile-openapi.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/08\/swagger-ui-microprofile-openapi.html"},"author":{"name":"Phillip Kruger","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/f24087666e9c716ac25d6c5aceff9a6a"},"headline":"Swagger UI on MicroProfile OpenAPI","datePublished":"2018-08-24T19:00:50+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/08\/swagger-ui-microprofile-openapi.html"},"wordCount":503,"commentCount":0,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/08\/swagger-ui-microprofile-openapi.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","keywords":["MicroProfile","Swagger","Swagger UI"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2018\/08\/swagger-ui-microprofile-openapi.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2018\/08\/swagger-ui-microprofile-openapi.html","url":"https:\/\/www.javacodegeeks.com\/2018\/08\/swagger-ui-microprofile-openapi.html","name":"Swagger UI on MicroProfile OpenAPI - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/08\/swagger-ui-microprofile-openapi.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/08\/swagger-ui-microprofile-openapi.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","datePublished":"2018-08-24T19:00:50+00:00","description":"Interested to learn more about swagger UI ? Check our article where we use MicroProfile OpenApi to gives us a standardized way to describe our JAX-RS API\u2019s!","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2018\/08\/swagger-ui-microprofile-openapi.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2018\/08\/swagger-ui-microprofile-openapi.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2018\/08\/swagger-ui-microprofile-openapi.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/enterprise-java-logo.jpg","width":150,"height":150,"caption":"java-interview-questions-answers"},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2018\/08\/swagger-ui-microprofile-openapi.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/enterprise-java"},{"@type":"ListItem","position":4,"name":"Swagger UI on MicroProfile OpenAPI"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/f24087666e9c716ac25d6c5aceff9a6a","name":"Phillip Kruger","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/38e989af8597679e556461deb73f4044c27d0228a28f9971d2ac37794b1b8603?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/38e989af8597679e556461deb73f4044c27d0228a28f9971d2ac37794b1b8603?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/38e989af8597679e556461deb73f4044c27d0228a28f9971d2ac37794b1b8603?s=96&d=mm&r=g","caption":"Phillip Kruger"},"description":"Phillip is a software developer and a systems architect who knacks for solving problems. He has a passion for clean code and evolutionary architecture. He blogs about all technical things.","sameAs":["https:\/\/www.phillip-kruger.com\/","https:\/\/www.linkedin.com\/in\/phillipkruger\/"],"url":"https:\/\/www.javacodegeeks.com\/author\/phillip-kruger"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/81060","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/10628"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=81060"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/81060\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/112"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=81060"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=81060"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=81060"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}