thingsboard-developers

Details

diff --git a/application/src/main/java/org/thingsboard/server/config/SwaggerConfiguration.java b/application/src/main/java/org/thingsboard/server/config/SwaggerConfiguration.java
index 59e97b7..2a1bc46 100644
--- a/application/src/main/java/org/thingsboard/server/config/SwaggerConfiguration.java
+++ b/application/src/main/java/org/thingsboard/server/config/SwaggerConfiguration.java
@@ -15,11 +15,15 @@
  */
 package org.thingsboard.server.config;
 
+import com.fasterxml.classmate.ResolvedType;
+import com.fasterxml.classmate.TypeResolver;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.google.common.base.Predicate;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.thingsboard.server.common.data.security.Authority;
 import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.schema.AlternateTypeRule;
 import springfox.documentation.service.*;
 import springfox.documentation.spi.DocumentationType;
 import springfox.documentation.spi.service.contexts.SecurityContext;
@@ -27,18 +31,33 @@ import springfox.documentation.spring.web.plugins.Docket;
 
 import java.util.List;
 
+import static com.google.common.base.Predicates.and;
+import static com.google.common.base.Predicates.not;
 import static com.google.common.collect.Lists.newArrayList;
+import static springfox.documentation.builders.PathSelectors.regex;
 
 @Configuration
 public class SwaggerConfiguration {
 
       @Bean
       public Docket thingsboardApi() {
+          TypeResolver typeResolver = new TypeResolver();
+          final ResolvedType jsonNodeType =
+                  typeResolver.resolve(
+                          JsonNode.class);
+          final ResolvedType stringType =
+                  typeResolver.resolve(
+                          String.class);
+
             return new Docket(DocumentationType.SWAGGER_2)
                     .groupName("thingsboard")
                     .apiInfo(apiInfo())
+                    .alternateTypeRules(
+                        new AlternateTypeRule(
+                                jsonNodeType,
+                                stringType))
                     .select()
-                    .paths(PathSelectors.any())
+                    .paths(apiPaths())
                     .build()
                     .securitySchemes(newArrayList(jwtTokenKey()))
                     .securityContexts(newArrayList(securityContext()));
@@ -51,10 +70,21 @@ public class SwaggerConfiguration {
       private SecurityContext securityContext() {
             return SecurityContext.builder()
                     .securityReferences(defaultAuth())
-                    .forPaths(PathSelectors.regex("/api.*"))
+                    .forPaths(securityPaths())
                     .build();
       }
 
+      private Predicate<String> apiPaths() {
+           return regex("/api.*");
+      }
+
+      private Predicate<String> securityPaths() {
+           return and(
+                    regex("/api.*"),
+                    not(regex("/api/noauth.*"))
+           );
+      }
+
       List<SecurityReference> defaultAuth() {
             AuthorizationScope[] authorizationScopes = new AuthorizationScope[3];
             authorizationScopes[0] = new AuthorizationScope(Authority.SYS_ADMIN.name(), "System administrator");
@@ -67,7 +97,7 @@ public class SwaggerConfiguration {
       private ApiInfo apiInfo() {
             return new ApiInfoBuilder()
                 .title("Thingsboard REST API")
-                .description("For instructions how to authorize requests please visit <a href='http://thingsboard.io/docs/rest-auth'>Documentation page</a>")
+                .description("For instructions how to authorize requests please visit <a href='http://thingsboard.io/docs/reference/rest-api/'>REST API documentation page</a>.")
                 .contact(new Contact("Thingsboard team", "http://thingsboard.io", "info@thingsboard.io"))
                 .license("Apache License Version 2.0")
                 .licenseUrl("https://github.com/thingsboard/thingsboard/blob/master/LICENSE")
diff --git a/application/src/main/java/org/thingsboard/server/controller/AdminController.java b/application/src/main/java/org/thingsboard/server/controller/AdminController.java
index e97885d..cace783 100644
--- a/application/src/main/java/org/thingsboard/server/controller/AdminController.java
+++ b/application/src/main/java/org/thingsboard/server/controller/AdminController.java
@@ -15,7 +15,6 @@
  */
 package org.thingsboard.server.controller;
 
-import io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -46,18 +45,6 @@ public class AdminController extends BaseController {
     }
 
     @PreAuthorize("hasAuthority('SYS_ADMIN')")
-    @ApiOperation(
-            value = "Save admin settings", notes = "Saves admin settings",
-            response = AdminSettings.class,
-            authorizations = {
-                    @Authorization(value = "X-Authorization", scopes = {
-                            @AuthorizationScope(scope = "SYS_ADMIN", description = "")
-                    })})
-    @ApiResponses(value = {
-            @ApiResponse(code = 200, response = AdminSettings.class, message = "Admin settings successfully updated"),
-            @ApiResponse(code = 400, message = "Invalid admin settings payload supplied"),
-            @ApiResponse(code = 404, message = "Admin settings not found")}
-    )
     @RequestMapping(value = "/settings", method = RequestMethod.POST)
     @ResponseBody 
     public AdminSettings saveAdminSettings(@RequestBody AdminSettings adminSettings) throws ThingsboardException {
diff --git a/application/src/main/java/org/thingsboard/server/controller/RuleController.java b/application/src/main/java/org/thingsboard/server/controller/RuleController.java
index a21f5dc..3c04619 100644
--- a/application/src/main/java/org/thingsboard/server/controller/RuleController.java
+++ b/application/src/main/java/org/thingsboard/server/controller/RuleController.java
@@ -15,9 +15,6 @@
  */
 package org.thingsboard.server.controller;
 
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiResponse;
-import io.swagger.annotations.ApiResponses;
 import org.springframework.http.HttpStatus;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -37,12 +34,6 @@ import java.util.List;
 @RequestMapping("/api")
 public class RuleController extends BaseController {
 
-    @ApiOperation(value = "getRuleById", nickname = "Get Rule By ID")
-    @ApiResponses(value = {
-                        @ApiResponse(code = 200, message = "Success", response = RuleMetaData.class),
-                        @ApiResponse(code = 401, message = "Unauthorized"),
-                        @ApiResponse(code = 403, message = "Forbidden"),
-                        @ApiResponse(code = 404, message = "Not Found")})
     @PreAuthorize("hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN')")
     @RequestMapping(value = "/rule/{ruleId}", method = RequestMethod.GET)
     @ResponseBody