thingsboard-developers

Merge pull request #4 from ashvayka/feature/TB-50 TB-50:

12/5/2016 1:04:44 PM

Details

application/pom.xml 36(+22 -14)

diff --git a/application/pom.xml b/application/pom.xml
index d75ece1..9d099ac 100644
--- a/application/pom.xml
+++ b/application/pom.xml
@@ -21,9 +21,9 @@
     <parent>
         <groupId>org.thingsboard</groupId>
         <version>0.0.1-SNAPSHOT</version>
-        <artifactId>server</artifactId>
+        <artifactId>thingsboard</artifactId>
     </parent>
-    <groupId>org.thingsboard.server</groupId>
+    <groupId>org.thingsboard</groupId>
     <artifactId>application</artifactId>
     <packaging>jar</packaging>
 
@@ -47,35 +47,35 @@
             <classifier>linux-x86_64</classifier>
         </dependency>
         <dependency>
-            <groupId>org.thingsboard.server</groupId>
+            <groupId>org.thingsboard</groupId>
             <artifactId>extensions-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.thingsboard.server</groupId>
+            <groupId>org.thingsboard</groupId>
             <artifactId>extensions-core</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.thingsboard.server.common</groupId>
+            <groupId>org.thingsboard.common</groupId>
             <artifactId>transport</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.thingsboard.server.transport</groupId>
+            <groupId>org.thingsboard.transport</groupId>
             <artifactId>http</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.thingsboard.server.transport</groupId>
+            <groupId>org.thingsboard.transport</groupId>
             <artifactId>coap</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.thingsboard.server.transport</groupId>
+            <groupId>org.thingsboard.transport</groupId>
             <artifactId>mqtt</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.thingsboard.server</groupId>
+            <groupId>org.thingsboard</groupId>
             <artifactId>dao</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.thingsboard.server</groupId>
+            <groupId>org.thingsboard</groupId>
             <artifactId>dao</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
@@ -97,7 +97,7 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.thingsboard.server</groupId>
+            <groupId>org.thingsboard</groupId>
             <artifactId>ui</artifactId>
             <version>${project.version}</version>
             <scope>runtime</scope>
@@ -212,6 +212,14 @@
             <groupId>io.grpc</groupId>
             <artifactId>grpc-stub</artifactId>
         </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+        </dependency>
     </dependencies>
 
     <build>
@@ -325,17 +333,17 @@
                             <outputDirectory>${project.build.directory}/extensions</outputDirectory>
                             <artifactItems>
                                 <artifactItem>
-                                    <groupId>org.thingsboard.server.extensions</groupId>
+                                    <groupId>org.thingsboard.extensions</groupId>
                                     <artifactId>extension-rabbitmq</artifactId>
                                     <classifier>extension</classifier>
                                 </artifactItem>
                                 <artifactItem>
-                                    <groupId>org.thingsboard.server.extensions</groupId>
+                                    <groupId>org.thingsboard.extensions</groupId>
                                     <artifactId>extension-rest-api-call</artifactId>
                                     <classifier>extension</classifier>
                                 </artifactItem>
                                 <artifactItem>
-                                    <groupId>org.thingsboard.server.extensions</groupId>
+                                    <groupId>org.thingsboard.extensions</groupId>
                                     <artifactId>extension-kafka</artifactId>
                                     <classifier>extension</classifier>
                                 </artifactItem>
diff --git a/application/src/main/java/org/thingsboard/server/config/SwaggerConfiguration.java b/application/src/main/java/org/thingsboard/server/config/SwaggerConfiguration.java
new file mode 100644
index 0000000..59e97b7
--- /dev/null
+++ b/application/src/main/java/org/thingsboard/server/config/SwaggerConfiguration.java
@@ -0,0 +1,78 @@
+/**
+ * Copyright © 2016 The Thingsboard Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.thingsboard.server.config;
+
+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.service.*;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spi.service.contexts.SecurityContext;
+import springfox.documentation.spring.web.plugins.Docket;
+
+import java.util.List;
+
+import static com.google.common.collect.Lists.newArrayList;
+
+@Configuration
+public class SwaggerConfiguration {
+
+      @Bean
+      public Docket thingsboardApi() {
+            return new Docket(DocumentationType.SWAGGER_2)
+                    .groupName("thingsboard")
+                    .apiInfo(apiInfo())
+                    .select()
+                    .paths(PathSelectors.any())
+                    .build()
+                    .securitySchemes(newArrayList(jwtTokenKey()))
+                    .securityContexts(newArrayList(securityContext()));
+      }
+
+      private ApiKey jwtTokenKey() {
+            return new ApiKey("X-Authorization", "JWT token", "header");
+      }
+
+      private SecurityContext securityContext() {
+            return SecurityContext.builder()
+                    .securityReferences(defaultAuth())
+                    .forPaths(PathSelectors.regex("/api.*"))
+                    .build();
+      }
+
+      List<SecurityReference> defaultAuth() {
+            AuthorizationScope[] authorizationScopes = new AuthorizationScope[3];
+            authorizationScopes[0] = new AuthorizationScope(Authority.SYS_ADMIN.name(), "System administrator");
+            authorizationScopes[1] = new AuthorizationScope(Authority.TENANT_ADMIN.name(), "Tenant administrator");
+            authorizationScopes[2] = new AuthorizationScope(Authority.CUSTOMER_USER.name(), "Customer");
+            return newArrayList(
+                    new SecurityReference("X-Authorization", authorizationScopes));
+      }
+
+      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>")
+                .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")
+                .version("2.0")
+                .build();
+      }
+
+}
diff --git a/application/src/main/java/org/thingsboard/server/config/ThingsboardSecurityConfiguration.java b/application/src/main/java/org/thingsboard/server/config/ThingsboardSecurityConfiguration.java
index ec6ca81..7ae4604 100644
--- a/application/src/main/java/org/thingsboard/server/config/ThingsboardSecurityConfiguration.java
+++ b/application/src/main/java/org/thingsboard/server/config/ThingsboardSecurityConfiguration.java
@@ -53,10 +53,11 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt
     public static final String JWT_TOKEN_HEADER_PARAM = "X-Authorization";
     public static final String JWT_TOKEN_QUERY_PARAM = "token";
 
+    public static final String WEBJARS_ENTRY_POINT = "/webjars/**";
     public static final String DEVICE_API_ENTRY_POINT = "/api/v1/**";
     public static final String FORM_BASED_LOGIN_ENTRY_POINT = "/api/auth/login";
     public static final String TOKEN_REFRESH_ENTRY_POINT = "/api/auth/token";
-    public static final String[] NON_TOKEN_BASED_AUTH_ENTRY_POINTS = new String[] {"/index.html", "/static/**", "/api/noauth/**"};
+    public static final String[] NON_TOKEN_BASED_AUTH_ENTRY_POINTS = new String[] {"/index.html", "/static/**", "/api/noauth/**", "/webjars/**"};
     public static final String TOKEN_BASED_AUTH_ENTRY_POINT = "/api/**";
     public static final String WS_TOKEN_BASED_AUTH_ENTRY_POINT = "/api/ws/**";
 
@@ -89,7 +90,7 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt
     @Bean
     protected JwtTokenAuthenticationProcessingFilter buildJwtTokenAuthenticationProcessingFilter() throws Exception {
         List<String> pathsToSkip = new ArrayList(Arrays.asList(NON_TOKEN_BASED_AUTH_ENTRY_POINTS));
-        pathsToSkip.addAll(Arrays.asList(WS_TOKEN_BASED_AUTH_ENTRY_POINT, TOKEN_REFRESH_ENTRY_POINT, FORM_BASED_LOGIN_ENTRY_POINT, DEVICE_API_ENTRY_POINT));
+        pathsToSkip.addAll(Arrays.asList(WS_TOKEN_BASED_AUTH_ENTRY_POINT, TOKEN_REFRESH_ENTRY_POINT, FORM_BASED_LOGIN_ENTRY_POINT, DEVICE_API_ENTRY_POINT, WEBJARS_ENTRY_POINT));
         SkipPathRequestMatcher matcher = new SkipPathRequestMatcher(pathsToSkip, TOKEN_BASED_AUTH_ENTRY_POINT);
         JwtTokenAuthenticationProcessingFilter filter
                 = new JwtTokenAuthenticationProcessingFilter(failureHandler, jwtHeaderTokenExtractor, matcher);
@@ -142,6 +143,7 @@ public class ThingsboardSecurityConfiguration extends WebSecurityConfigurerAdapt
                 .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                 .and()
                 .authorizeRequests()
+                .antMatchers(WEBJARS_ENTRY_POINT).permitAll() // Webjars
                 .antMatchers(DEVICE_API_ENTRY_POINT).permitAll() // Device HTTP Transport API
                 .antMatchers(FORM_BASED_LOGIN_ENTRY_POINT).permitAll() // Login end-point
                 .antMatchers(TOKEN_REFRESH_ENTRY_POINT).permitAll() // Token refresh end-point
diff --git a/application/src/main/java/org/thingsboard/server/config/WebConfig.java b/application/src/main/java/org/thingsboard/server/config/WebConfig.java
index 3a2234a..02d8cfc 100644
--- a/application/src/main/java/org/thingsboard/server/config/WebConfig.java
+++ b/application/src/main/java/org/thingsboard/server/config/WebConfig.java
@@ -21,7 +21,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 @Controller
 public class WebConfig {
 
-    @RequestMapping(value = "/{path:^(?!api$)(?!static$)[^\\.]*}/**")
+    @RequestMapping(value = "/{path:^(?!api$)(?!static$)(?!webjars$)[^\\.]*}/**")
     public String redirect() {
         return "forward:/index.html";
     }
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 cace783..e97885d 100644
--- a/application/src/main/java/org/thingsboard/server/controller/AdminController.java
+++ b/application/src/main/java/org/thingsboard/server/controller/AdminController.java
@@ -15,6 +15,7 @@
  */
 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.*;
@@ -45,6 +46,18 @@ 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 3c04619..a21f5dc 100644
--- a/application/src/main/java/org/thingsboard/server/controller/RuleController.java
+++ b/application/src/main/java/org/thingsboard/server/controller/RuleController.java
@@ -15,6 +15,9 @@
  */
 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.*;
@@ -34,6 +37,12 @@ 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
diff --git a/application/src/main/java/org/thingsboard/server/ThingsboardServerApplication.java b/application/src/main/java/org/thingsboard/server/ThingsboardServerApplication.java
index f082824..9f1bce3 100644
--- a/application/src/main/java/org/thingsboard/server/ThingsboardServerApplication.java
+++ b/application/src/main/java/org/thingsboard/server/ThingsboardServerApplication.java
@@ -19,11 +19,13 @@ import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.context.annotation.ComponentScan;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
 
 import java.util.Arrays;
 
 @EnableAutoConfiguration
 @SpringBootApplication
+@EnableSwagger2
 @ComponentScan({"org.thingsboard.server"})
 public class ThingsboardServerApplication {
 
diff --git a/common/data/pom.xml b/common/data/pom.xml
index b458ef1..08de1a4 100644
--- a/common/data/pom.xml
+++ b/common/data/pom.xml
@@ -19,11 +19,11 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>org.thingsboard.server</groupId>
+        <groupId>org.thingsboard</groupId>
         <version>0.0.1-SNAPSHOT</version>
         <artifactId>common</artifactId>
     </parent>
-    <groupId>org.thingsboard.server.common</groupId>
+    <groupId>org.thingsboard.common</groupId>
     <artifactId>data</artifactId>
     <packaging>jar</packaging>
 
diff --git a/common/message/pom.xml b/common/message/pom.xml
index be14928..5d433d1 100644
--- a/common/message/pom.xml
+++ b/common/message/pom.xml
@@ -19,11 +19,11 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>org.thingsboard.server</groupId>
+        <groupId>org.thingsboard</groupId>
         <version>0.0.1-SNAPSHOT</version>
         <artifactId>common</artifactId>
     </parent>
-    <groupId>org.thingsboard.server.common</groupId>
+    <groupId>org.thingsboard.common</groupId>
     <artifactId>message</artifactId>
     <packaging>jar</packaging>
 
@@ -37,7 +37,7 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.thingsboard.server.common</groupId>
+            <groupId>org.thingsboard.common</groupId>
             <artifactId>data</artifactId>
         </dependency>
         <dependency>

common/pom.xml 4(+2 -2)

diff --git a/common/pom.xml b/common/pom.xml
index 97ff8ab..7a21a46 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -21,9 +21,9 @@
     <parent>
         <groupId>org.thingsboard</groupId>
         <version>0.0.1-SNAPSHOT</version>
-        <artifactId>server</artifactId>
+        <artifactId>thingsboard</artifactId>
     </parent>
-    <groupId>org.thingsboard.server</groupId>
+    <groupId>org.thingsboard</groupId>
     <artifactId>common</artifactId>
     <packaging>pom</packaging>
 
diff --git a/common/transport/pom.xml b/common/transport/pom.xml
index e57d3d7..198d1e7 100644
--- a/common/transport/pom.xml
+++ b/common/transport/pom.xml
@@ -19,11 +19,11 @@
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>org.thingsboard.server</groupId>
+        <groupId>org.thingsboard</groupId>
         <version>0.0.1-SNAPSHOT</version>
         <artifactId>common</artifactId>
     </parent>
-    <groupId>org.thingsboard.server.common</groupId>
+    <groupId>org.thingsboard.common</groupId>
     <artifactId>transport</artifactId>
     <packaging>jar</packaging>
 
@@ -37,11 +37,11 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.thingsboard.server.common</groupId>
+            <groupId>org.thingsboard.common</groupId>
             <artifactId>data</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.thingsboard.server.common</groupId>
+            <groupId>org.thingsboard.common</groupId>
             <artifactId>message</artifactId>
         </dependency>
         <dependency>

dao/pom.xml 6(+3 -3)

diff --git a/dao/pom.xml b/dao/pom.xml
index f9f0d56..2a2aa83 100644
--- a/dao/pom.xml
+++ b/dao/pom.xml
@@ -21,9 +21,9 @@
     <parent>
         <groupId>org.thingsboard</groupId>
         <version>0.0.1-SNAPSHOT</version>
-        <artifactId>server</artifactId>
+        <artifactId>thingsboard</artifactId>
     </parent>
-    <groupId>org.thingsboard.server</groupId>
+    <groupId>org.thingsboard</groupId>
     <artifactId>dao</artifactId>
     <packaging>jar</packaging>
 
@@ -37,7 +37,7 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.thingsboard.server.common</groupId>
+            <groupId>org.thingsboard.common</groupId>
             <artifactId>data</artifactId>
         </dependency>    
         <dependency>
diff --git a/extensions/extension-kafka/pom.xml b/extensions/extension-kafka/pom.xml
index 23a5e4b..27132c2 100644
--- a/extensions/extension-kafka/pom.xml
+++ b/extensions/extension-kafka/pom.xml
@@ -21,11 +21,11 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>org.thingsboard.server</groupId>
+        <groupId>org.thingsboard</groupId>
         <version>0.0.1-SNAPSHOT</version>
         <artifactId>extensions</artifactId>
     </parent>
-    <groupId>org.thingsboard.server.extensions</groupId>
+    <groupId>org.thingsboard.extensions</groupId>
     <artifactId>extension-kafka</artifactId>
     <packaging>jar</packaging>
 
@@ -49,12 +49,12 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.thingsboard.server</groupId>
+            <groupId>org.thingsboard</groupId>
             <artifactId>extensions-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.thingsboard.server</groupId>
+            <groupId>org.thingsboard</groupId>
             <artifactId>extensions-core</artifactId>
             <scope>provided</scope>
         </dependency>
diff --git a/extensions/extension-rabbitmq/pom.xml b/extensions/extension-rabbitmq/pom.xml
index f2456c5..4f8ea38 100644
--- a/extensions/extension-rabbitmq/pom.xml
+++ b/extensions/extension-rabbitmq/pom.xml
@@ -19,11 +19,11 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>org.thingsboard.server</groupId>
+        <groupId>org.thingsboard</groupId>
         <version>0.0.1-SNAPSHOT</version>
         <artifactId>extensions</artifactId>
     </parent>
-    <groupId>org.thingsboard.server.extensions</groupId>
+    <groupId>org.thingsboard.extensions</groupId>
     <artifactId>extension-rabbitmq</artifactId>
     <packaging>jar</packaging>
 
@@ -41,12 +41,12 @@
             <artifactId>amqp-client</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.thingsboard.server</groupId>
+            <groupId>org.thingsboard</groupId>
             <artifactId>extensions-api</artifactId>
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.thingsboard.server</groupId>
+            <groupId>org.thingsboard</groupId>
             <artifactId>extensions-core</artifactId>
             <scope>provided</scope>
         </dependency>
diff --git a/extensions/extension-rest-api-call/pom.xml b/extensions/extension-rest-api-call/pom.xml
index 175d736..0214197 100644
--- a/extensions/extension-rest-api-call/pom.xml
+++ b/extensions/extension-rest-api-call/pom.xml
@@ -21,11 +21,11 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>org.thingsboard.server</groupId>
+        <groupId>org.thingsboard</groupId>
         <version>0.0.1-SNAPSHOT</version>
         <artifactId>extensions</artifactId>
     </parent>
-    <groupId>org.thingsboard.server.extensions</groupId>
+    <groupId>org.thingsboard.extensions</groupId>
     <artifactId>extension-rest-api-call</artifactId>
     <packaging>jar</packaging>
 
@@ -49,7 +49,7 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.thingsboard.server</groupId>
+            <groupId>org.thingsboard</groupId>
             <artifactId>extensions-api</artifactId>
             <scope>provided</scope>
         </dependency>
@@ -59,7 +59,7 @@
             <scope>provided</scope>
         </dependency>
         <dependency>
-            <groupId>org.thingsboard.server</groupId>
+            <groupId>org.thingsboard</groupId>
             <artifactId>extensions-core</artifactId>
             <scope>provided</scope>
         </dependency>
diff --git a/extensions/pom.xml b/extensions/pom.xml
index 8609ea7..1fcc5d9 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -21,9 +21,9 @@
     <parent>
         <groupId>org.thingsboard</groupId>
         <version>0.0.1-SNAPSHOT</version>
-        <artifactId>server</artifactId>
+        <artifactId>thingsboard</artifactId>
     </parent>
-    <groupId>org.thingsboard.server</groupId>
+    <groupId>org.thingsboard</groupId>
     <artifactId>extensions</artifactId>
     <packaging>pom</packaging>
 
diff --git a/extensions-api/pom.xml b/extensions-api/pom.xml
index 4af3de3..c8b9ede 100644
--- a/extensions-api/pom.xml
+++ b/extensions-api/pom.xml
@@ -21,9 +21,9 @@
     <parent>
         <groupId>org.thingsboard</groupId>
         <version>0.0.1-SNAPSHOT</version>
-        <artifactId>server</artifactId>
+        <artifactId>thingsboard</artifactId>
     </parent>
-    <groupId>org.thingsboard.server</groupId>
+    <groupId>org.thingsboard</groupId>
     <artifactId>extensions-api</artifactId>
     <packaging>jar</packaging>
 
@@ -37,11 +37,11 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.thingsboard.server.common</groupId>
+            <groupId>org.thingsboard.common</groupId>
             <artifactId>data</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.thingsboard.server.common</groupId>
+            <groupId>org.thingsboard.common</groupId>
             <artifactId>message</artifactId>
         </dependency>
         <dependency>
diff --git a/extensions-core/pom.xml b/extensions-core/pom.xml
index b2e2d18..61b2833 100644
--- a/extensions-core/pom.xml
+++ b/extensions-core/pom.xml
@@ -21,9 +21,9 @@
     <parent>
         <groupId>org.thingsboard</groupId>
         <version>0.0.1-SNAPSHOT</version>
-        <artifactId>server</artifactId>
+        <artifactId>thingsboard</artifactId>
     </parent>
-    <groupId>org.thingsboard.server</groupId>
+    <groupId>org.thingsboard</groupId>
     <artifactId>extensions-core</artifactId>
     <packaging>jar</packaging>
 
@@ -37,7 +37,7 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.thingsboard.server</groupId>
+            <groupId>org.thingsboard</groupId>
             <artifactId>extensions-api</artifactId>
             <scope>provided</scope>
         </dependency>

pom.xml 37(+24 -13)

diff --git a/pom.xml b/pom.xml
index 488de00..bd1faae 100755
--- a/pom.xml
+++ b/pom.xml
@@ -68,6 +68,7 @@
         <hazelcast-zookeeper.version>3.6.1</hazelcast-zookeeper.version>
         <surfire.version>2.19.1</surfire.version>
         <jar-plugin.version>3.0.2</jar-plugin.version>
+        <springfox-swagger.version>2.6.1</springfox-swagger.version>
     </properties>
 
     <modules>
@@ -301,70 +302,70 @@
     <dependencyManagement>
         <dependencies>
             <dependency>
-                <groupId>org.thingsboard.server</groupId>
+                <groupId>org.thingsboard</groupId>
                 <artifactId>extensions-api</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
-                <groupId>org.thingsboard.server</groupId>
+                <groupId>org.thingsboard</groupId>
                 <artifactId>extensions-core</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
-                <groupId>org.thingsboard.server.extensions</groupId>
+                <groupId>org.thingsboard.extensions</groupId>
                 <artifactId>extension-rabbitmq</artifactId>
                 <classifier>extension</classifier>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
-                <groupId>org.thingsboard.server.extensions</groupId>
+                <groupId>org.thingsboard.extensions</groupId>
                 <artifactId>extension-rest-api-call</artifactId>
                 <classifier>extension</classifier>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
-                <groupId>org.thingsboard.server.extensions</groupId>
+                <groupId>org.thingsboard.extensions</groupId>
                 <artifactId>extension-kafka</artifactId>
                 <classifier>extension</classifier>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
-                <groupId>org.thingsboard.server.common</groupId>
+                <groupId>org.thingsboard.common</groupId>
                 <artifactId>data</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
-                <groupId>org.thingsboard.server.common</groupId>
+                <groupId>org.thingsboard.common</groupId>
                 <artifactId>message</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
-                <groupId>org.thingsboard.server.common</groupId>
+                <groupId>org.thingsboard.common</groupId>
                 <artifactId>transport</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
-                <groupId>org.thingsboard.server.transport</groupId>
+                <groupId>org.thingsboard.transport</groupId>
                 <artifactId>http</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
-                <groupId>org.thingsboard.server.transport</groupId>
+                <groupId>org.thingsboard.transport</groupId>
                 <artifactId>coap</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
-                <groupId>org.thingsboard.server.transport</groupId>
+                <groupId>org.thingsboard.transport</groupId>
                 <artifactId>mqtt</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
-                <groupId>org.thingsboard.server</groupId>
+                <groupId>org.thingsboard</groupId>
                 <artifactId>dao</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
-                <groupId>org.thingsboard.server</groupId>
+                <groupId>org.thingsboard</groupId>
                 <artifactId>dao</artifactId>
                 <version>${project.version}</version>
                 <type>test-jar</type>
@@ -672,6 +673,16 @@
                 <artifactId>hazelcast</artifactId>
                 <version>${hazelcast.version}</version>
             </dependency>
+            <dependency>
+                <groupId>io.springfox</groupId>
+                <artifactId>springfox-swagger-ui</artifactId>
+                <version>${springfox-swagger.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.springfox</groupId>
+                <artifactId>springfox-swagger2</artifactId>
+                <version>${springfox-swagger.version}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 

tools/pom.xml 6(+3 -3)

diff --git a/tools/pom.xml b/tools/pom.xml
index f022ac5..0eb68df 100644
--- a/tools/pom.xml
+++ b/tools/pom.xml
@@ -21,9 +21,9 @@
     <parent>
         <groupId>org.thingsboard</groupId>
         <version>0.0.1-SNAPSHOT</version>
-        <artifactId>server</artifactId>
+        <artifactId>thingsboard</artifactId>
     </parent>
-    <groupId>org.thingsboard.server</groupId>
+    <groupId>org.thingsboard</groupId>
     <artifactId>tools</artifactId>
     <packaging>jar</packaging>
 
@@ -37,7 +37,7 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.thingsboard.server.common</groupId>
+            <groupId>org.thingsboard.common</groupId>
             <artifactId>data</artifactId>
         </dependency>
         <dependency>
diff --git a/transport/coap/pom.xml b/transport/coap/pom.xml
index 6ddf64b..6634165 100644
--- a/transport/coap/pom.xml
+++ b/transport/coap/pom.xml
@@ -19,11 +19,11 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>org.thingsboard.server</groupId>
+        <groupId>org.thingsboard</groupId>
         <version>0.0.1-SNAPSHOT</version>
         <artifactId>transport</artifactId>
     </parent>
-    <groupId>org.thingsboard.server.transport</groupId>
+    <groupId>org.thingsboard.transport</groupId>
     <artifactId>coap</artifactId>
     <packaging>jar</packaging>
 
@@ -37,7 +37,7 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.thingsboard.server.common</groupId>
+            <groupId>org.thingsboard.common</groupId>
             <artifactId>transport</artifactId>
         </dependency>    
         <dependency>
diff --git a/transport/http/pom.xml b/transport/http/pom.xml
index 665a152..a13d26f 100644
--- a/transport/http/pom.xml
+++ b/transport/http/pom.xml
@@ -19,11 +19,11 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>org.thingsboard.server</groupId>
+        <groupId>org.thingsboard</groupId>
         <version>0.0.1-SNAPSHOT</version>
         <artifactId>transport</artifactId>
     </parent>
-    <groupId>org.thingsboard.server.transport</groupId>
+    <groupId>org.thingsboard.transport</groupId>
     <artifactId>http</artifactId>
     <packaging>jar</packaging>
 
@@ -37,7 +37,7 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.thingsboard.server.common</groupId>
+            <groupId>org.thingsboard.common</groupId>
             <artifactId>transport</artifactId>
         </dependency>
         <dependency>
diff --git a/transport/mqtt/pom.xml b/transport/mqtt/pom.xml
index 045bb1f..3941544 100644
--- a/transport/mqtt/pom.xml
+++ b/transport/mqtt/pom.xml
@@ -19,11 +19,11 @@
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
     <modelVersion>4.0.0</modelVersion>
     <parent>
-        <groupId>org.thingsboard.server</groupId>
+        <groupId>org.thingsboard</groupId>
         <version>0.0.1-SNAPSHOT</version>
         <artifactId>transport</artifactId>
     </parent>
-    <groupId>org.thingsboard.server.transport</groupId>
+    <groupId>org.thingsboard.transport</groupId>
     <artifactId>mqtt</artifactId>
     <packaging>jar</packaging>
 
@@ -37,7 +37,7 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.thingsboard.server.common</groupId>
+            <groupId>org.thingsboard.common</groupId>
             <artifactId>transport</artifactId>
         </dependency>
         <dependency>
diff --git a/transport/pom.xml b/transport/pom.xml
index 4675cdf..328ab6d 100644
--- a/transport/pom.xml
+++ b/transport/pom.xml
@@ -21,9 +21,9 @@
     <parent>
         <groupId>org.thingsboard</groupId>
         <version>0.0.1-SNAPSHOT</version>
-        <artifactId>server</artifactId>
+        <artifactId>thingsboard</artifactId>
     </parent>
-    <groupId>org.thingsboard.server</groupId>
+    <groupId>org.thingsboard</groupId>
     <artifactId>transport</artifactId>
     <packaging>pom</packaging>
 

ui/pom.xml 4(+2 -2)

diff --git a/ui/pom.xml b/ui/pom.xml
index c9e4c68..e7911ff 100644
--- a/ui/pom.xml
+++ b/ui/pom.xml
@@ -21,9 +21,9 @@
     <parent>
         <groupId>org.thingsboard</groupId>
         <version>0.0.1-SNAPSHOT</version>
-        <artifactId>server</artifactId>
+        <artifactId>thingsboard</artifactId>
     </parent>
-    <groupId>org.thingsboard.server</groupId>
+    <groupId>org.thingsboard</groupId>
     <artifactId>ui</artifactId>
     <packaging>jar</packaging>