@ -15,7 +15,10 @@
* /
* /
package org.thingsboard.server.controller ;
package org.thingsboard.server.controller ;
import io.swagger.annotations.ApiOperation ;
import io.swagger.annotations.ApiParam ;
import org.springframework.http.HttpStatus ;
import org.springframework.http.HttpStatus ;
import org.springframework.http.MediaType ;
import org.springframework.security.access.prepost.PreAuthorize ;
import org.springframework.security.access.prepost.PreAuthorize ;
import org.springframework.web.bind.annotation.RequestBody ;
import org.springframework.web.bind.annotation.RequestBody ;
import org.springframework.web.bind.annotation.RequestMapping ;
import org.springframework.web.bind.annotation.RequestMapping ;
@ -52,10 +55,26 @@ public class EntityRelationController extends BaseController {
public static final String RELATION_TYPE = "relationType" ;
public static final String RELATION_TYPE = "relationType" ;
public static final String TO_ID = "toId" ;
public static final String TO_ID = "toId" ;
private static final String SECURITY_CHECKS_ENTITIES_DESCRIPTION = "\n\nIf the user has the authority of 'System Administrator', the server checks that 'from' and 'to' entities are owned by the sysadmin. " +
"If the user has the authority of 'Tenant Administrator', the server checks that 'from' and 'to' entities are owned by the same tenant. " +
"If the user has the authority of 'Customer User', the server checks that the 'from' and 'to' entities are assigned to the same customer." ;
private static final String SECURITY_CHECKS_ENTITY_DESCRIPTION = "\n\nIf the user has the authority of 'System Administrator', the server checks that 'from' and 'to' entities are owned by the sysadmin. " +
"If the user has the authority of 'Tenant Administrator', the server checks that the entity is owned by the same tenant. " +
"If the user has the authority of 'Customer User', the server checks that the entity is assigned to the same customer." ;
@ApiOperation ( value = "Create Relation (saveRelation)" ,
notes = "Creates or updates a relation between two entities in the platform. " +
"Relations unique key is a combination of from/to entity id and relation type group and relation type. " +
"\n\nIf the user has the authority of 'System Administrator', the server checks that 'from' and 'to' entities are owned by the sysadmin. " +
"If the user has the authority of 'Tenant Administrator', the server checks that 'from' and 'to' entities are owned by the same tenant. " +
"If the user has the authority of 'Customer User', the server checks that the 'from' and 'to' entities are assigned to the same customer." )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@RequestMapping ( value = "/relation" , method = RequestMethod . POST )
@RequestMapping ( value = "/relation" , method = RequestMethod . POST )
@ResponseStatus ( value = HttpStatus . OK )
@ResponseStatus ( value = HttpStatus . OK )
public void saveRelation ( @RequestBody EntityRelation relation ) throws ThingsboardException {
public void saveRelation ( @ApiParam ( value = "A JSON value representing the relation." , required = true )
@RequestBody EntityRelation relation ) throws ThingsboardException {
try {
try {
checkNotNull ( relation ) ;
checkNotNull ( relation ) ;
checkEntityId ( relation . getFrom ( ) , Operation . WRITE ) ;
checkEntityId ( relation . getFrom ( ) , Operation . WRITE ) ;
@ -80,14 +99,17 @@ public class EntityRelationController extends BaseController {
}
}
}
}
@ApiOperation ( value = "Delete Relation (deleteRelation)" ,
notes = "Deletes a relation between two entities in the platform. " + SECURITY_CHECKS_ENTITIES_DESCRIPTION )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@RequestMapping ( value = "/relation" , method = RequestMethod . DELETE , params = { FROM_ID , FROM_TYPE , RELATION_TYPE , TO_ID , TO_TYPE } )
@RequestMapping ( value = "/relation" , method = RequestMethod . DELETE , params = { FROM_ID , FROM_TYPE , RELATION_TYPE , TO_ID , TO_TYPE } )
@ResponseStatus ( value = HttpStatus . OK )
@ResponseStatus ( value = HttpStatus . OK )
public void deleteRelation ( @RequestParam ( FROM_ID ) String strFromId ,
public void deleteRelation ( @ApiParam ( value = ENTITY_ID_PARAM_DESCRIPTION , required = true ) @RequestParam ( FROM_ID ) String strFromId ,
@RequestParam ( FROM_TYPE ) String strFromType ,
@ApiParam ( value = ENTITY_TYPE_DESCRIPTION , required = true ) @RequestParam ( FROM_TYPE ) String strFromType ,
@RequestParam ( RELATION_TYPE ) String strRelationType ,
@ApiParam ( value = RELATION_TYPE_PARAM_DESCRIPTION , required = true ) @RequestParam ( RELATION_TYPE ) String strRelationType ,
@RequestParam ( value = "relationTypeGroup" , required = false ) String strRelationTypeGroup ,
@ApiParam ( value = RELATION_TYPE_GROUP_PARAM_DESCRIPTION ) @RequestParam ( value = "relationTypeGroup" , required = false ) String strRelationTypeGroup ,
@RequestParam ( TO_ID ) String strToId , @RequestParam ( TO_TYPE ) String strToType ) throws ThingsboardException {
@ApiParam ( value = ENTITY_ID_PARAM_DESCRIPTION , required = true ) @RequestParam ( TO_ID ) String strToId ,
@ApiParam ( value = ENTITY_TYPE_DESCRIPTION , required = true ) @RequestParam ( TO_TYPE ) String strToType ) throws ThingsboardException {
checkParameter ( FROM_ID , strFromId ) ;
checkParameter ( FROM_ID , strFromId ) ;
checkParameter ( FROM_TYPE , strFromType ) ;
checkParameter ( FROM_TYPE , strFromType ) ;
checkParameter ( RELATION_TYPE , strRelationType ) ;
checkParameter ( RELATION_TYPE , strRelationType ) ;
@ -119,11 +141,14 @@ public class EntityRelationController extends BaseController {
}
}
}
}
@ApiOperation ( value = "Delete Relations (deleteRelations)" ,
notes = "Deletes all the relation (both 'from' and 'to' direction) for the specified entity. " +
SECURITY_CHECKS_ENTITY_DESCRIPTION )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN','TENANT_ADMIN', 'CUSTOMER_USER')" )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN','TENANT_ADMIN', 'CUSTOMER_USER')" )
@RequestMapping ( value = "/relations" , method = RequestMethod . DELETE , params = { "id" , "type" } )
@RequestMapping ( value = "/relations" , method = RequestMethod . DELETE , params = { "ent ityI d" , "en tityT ype" } )
@ResponseStatus ( value = HttpStatus . OK )
@ResponseStatus ( value = HttpStatus . OK )
public void deleteRelations ( @RequestParam ( "entityId" ) String strId ,
public void deleteRelations ( @ApiParam ( value = ENTITY_ID_PARAM_DESCRIPTION , required = true ) @ RequestParam ( "entityId" ) String strId ,
@RequestParam ( "entityType" ) String strType ) throws ThingsboardException {
@ApiParam ( value = ENTITY_TYPE_DESCRIPTION , required = true ) @ RequestParam ( "entityType" ) String strType ) throws ThingsboardException {
checkParameter ( "entityId" , strId ) ;
checkParameter ( "entityId" , strId ) ;
checkParameter ( "entityType" , strType ) ;
checkParameter ( "entityType" , strType ) ;
EntityId entityId = EntityIdFactory . getByTypeAndId ( strType , strId ) ;
EntityId entityId = EntityIdFactory . getByTypeAndId ( strType , strId ) ;
@ -137,14 +162,18 @@ public class EntityRelationController extends BaseController {
}
}
}
}
@ApiOperation ( value = "Get Relation (getRelation)" ,
notes = "Returns relation object between two specified entities if present. Otherwise throws exception." + SECURITY_CHECKS_ENTITIES_DESCRIPTION ,
produces = MediaType . APPLICATION_JSON_VALUE )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@RequestMapping ( value = "/relation" , method = RequestMethod . GET , params = { FROM_ID , FROM_TYPE , RELATION_TYPE , TO_ID , TO_TYPE } )
@RequestMapping ( value = "/relation" , method = RequestMethod . GET , params = { FROM_ID , FROM_TYPE , RELATION_TYPE , TO_ID , TO_TYPE } )
@ResponseBody
@ResponseBody
public EntityRelation getRelation ( @RequestParam ( FROM_ID ) String strFromId ,
public EntityRelation getRelation ( @ApiParam ( value = ENTITY_ID_PARAM_DESCRIPTION , required = true ) @RequestParam ( FROM_ID ) String strFromId ,
@RequestParam ( FROM_TYPE ) String strFromType ,
@ApiParam ( value = ENTITY_TYPE_DESCRIPTION , required = true ) @RequestParam ( FROM_TYPE ) String strFromType ,
@RequestParam ( RELATION_TYPE ) String strRelationType ,
@ApiParam ( value = RELATION_TYPE_PARAM_DESCRIPTION , required = true ) @RequestParam ( RELATION_TYPE ) String strRelationType ,
@RequestParam ( value = "relationTypeGroup" , required = false ) String strRelationTypeGroup ,
@ApiParam ( value = RELATION_TYPE_GROUP_PARAM_DESCRIPTION ) @RequestParam ( value = "relationTypeGroup" , required = false ) String strRelationTypeGroup ,
@RequestParam ( TO_ID ) String strToId , @RequestParam ( TO_TYPE ) String strToType ) throws ThingsboardException {
@ApiParam ( value = ENTITY_ID_PARAM_DESCRIPTION , required = true ) @RequestParam ( TO_ID ) String strToId ,
@ApiParam ( value = ENTITY_TYPE_DESCRIPTION , required = true ) @RequestParam ( TO_TYPE ) String strToType ) throws ThingsboardException {
try {
try {
checkParameter ( FROM_ID , strFromId ) ;
checkParameter ( FROM_ID , strFromId ) ;
checkParameter ( FROM_TYPE , strFromType ) ;
checkParameter ( FROM_TYPE , strFromType ) ;
@ -162,11 +191,16 @@ public class EntityRelationController extends BaseController {
}
}
}
}
@ApiOperation ( value = "Get List of Relations (findByFrom)" ,
notes = "Returns list of relation objects for the specified entity by the 'from' direction. " +
SECURITY_CHECKS_ENTITY_DESCRIPTION ,
produces = MediaType . APPLICATION_JSON_VALUE )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@RequestMapping ( value = "/relations" , method = RequestMethod . GET , params = { FROM_ID , FROM_TYPE } )
@RequestMapping ( value = "/relations" , method = RequestMethod . GET , params = { FROM_ID , FROM_TYPE } )
@ResponseBody
@ResponseBody
public List < EntityRelation > findByFrom ( @RequestParam ( FROM_ID ) String strFromId ,
public List < EntityRelation > findByFrom ( @ApiParam ( value = ENTITY_ID_PARAM_DESCRIPTION , required = true ) @RequestParam ( FROM_ID ) String strFromId ,
@RequestParam ( FROM_TYPE ) String strFromType ,
@ApiParam ( value = ENTITY_TYPE_DESCRIPTION , required = true ) @RequestParam ( FROM_TYPE ) String strFromType ,
@ApiParam ( value = RELATION_TYPE_GROUP_PARAM_DESCRIPTION )
@RequestParam ( value = "relationTypeGroup" , required = false ) String strRelationTypeGroup ) throws ThingsboardException {
@RequestParam ( value = "relationTypeGroup" , required = false ) String strRelationTypeGroup ) throws ThingsboardException {
checkParameter ( FROM_ID , strFromId ) ;
checkParameter ( FROM_ID , strFromId ) ;
checkParameter ( FROM_TYPE , strFromType ) ;
checkParameter ( FROM_TYPE , strFromType ) ;
@ -180,11 +214,16 @@ public class EntityRelationController extends BaseController {
}
}
}
}
@ApiOperation ( value = "Get List of Relation Infos (findInfoByFrom)" ,
notes = "Returns list of relation info objects for the specified entity by the 'from' direction. " +
SECURITY_CHECKS_ENTITY_DESCRIPTION + " " + RELATION_INFO_DESCRIPTION ,
produces = MediaType . APPLICATION_JSON_VALUE )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@RequestMapping ( value = "/relations/info" , method = RequestMethod . GET , params = { FROM_ID , FROM_TYPE } )
@RequestMapping ( value = "/relations/info" , method = RequestMethod . GET , params = { FROM_ID , FROM_TYPE } )
@ResponseBody
@ResponseBody
public List < EntityRelationInfo > findInfoByFrom ( @RequestParam ( FROM_ID ) String strFromId ,
public List < EntityRelationInfo > findInfoByFrom ( @ApiParam ( value = ENTITY_ID_PARAM_DESCRIPTION , required = true ) @RequestParam ( FROM_ID ) String strFromId ,
@RequestParam ( FROM_TYPE ) String strFromType ,
@ApiParam ( value = ENTITY_TYPE_DESCRIPTION , required = true ) @RequestParam ( FROM_TYPE ) String strFromType ,
@ApiParam ( value = RELATION_TYPE_GROUP_PARAM_DESCRIPTION )
@RequestParam ( value = "relationTypeGroup" , required = false ) String strRelationTypeGroup ) throws ThingsboardException {
@RequestParam ( value = "relationTypeGroup" , required = false ) String strRelationTypeGroup ) throws ThingsboardException {
checkParameter ( FROM_ID , strFromId ) ;
checkParameter ( FROM_ID , strFromId ) ;
checkParameter ( FROM_TYPE , strFromType ) ;
checkParameter ( FROM_TYPE , strFromType ) ;
@ -198,12 +237,17 @@ public class EntityRelationController extends BaseController {
}
}
}
}
@ApiOperation ( value = "Get List of Relations (findByFrom)" ,
notes = "Returns list of relation objects for the specified entity by the 'from' direction and relation type. " +
SECURITY_CHECKS_ENTITY_DESCRIPTION ,
produces = MediaType . APPLICATION_JSON_VALUE )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@RequestMapping ( value = "/relations" , method = RequestMethod . GET , params = { FROM_ID , FROM_TYPE , RELATION_TYPE } )
@RequestMapping ( value = "/relations" , method = RequestMethod . GET , params = { FROM_ID , FROM_TYPE , RELATION_TYPE } )
@ResponseBody
@ResponseBody
public List < EntityRelation > findByFrom ( @RequestParam ( FROM_ID ) String strFromId ,
public List < EntityRelation > findByFrom ( @ApiParam ( value = ENTITY_ID_PARAM_DESCRIPTION , required = true ) @RequestParam ( FROM_ID ) String strFromId ,
@RequestParam ( FROM_TYPE ) String strFromType ,
@ApiParam ( value = ENTITY_TYPE_DESCRIPTION , required = true ) @RequestParam ( FROM_TYPE ) String strFromType ,
@RequestParam ( RELATION_TYPE ) String strRelationType ,
@ApiParam ( value = RELATION_TYPE_PARAM_DESCRIPTION , required = true ) @RequestParam ( RELATION_TYPE ) String strRelationType ,
@ApiParam ( value = RELATION_TYPE_GROUP_PARAM_DESCRIPTION )
@RequestParam ( value = "relationTypeGroup" , required = false ) String strRelationTypeGroup ) throws ThingsboardException {
@RequestParam ( value = "relationTypeGroup" , required = false ) String strRelationTypeGroup ) throws ThingsboardException {
checkParameter ( FROM_ID , strFromId ) ;
checkParameter ( FROM_ID , strFromId ) ;
checkParameter ( FROM_TYPE , strFromType ) ;
checkParameter ( FROM_TYPE , strFromType ) ;
@ -218,11 +262,16 @@ public class EntityRelationController extends BaseController {
}
}
}
}
@ApiOperation ( value = "Get List of Relations (findByTo)" ,
notes = "Returns list of relation objects for the specified entity by the 'to' direction. " +
SECURITY_CHECKS_ENTITY_DESCRIPTION ,
produces = MediaType . APPLICATION_JSON_VALUE )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@RequestMapping ( value = "/relations" , method = RequestMethod . GET , params = { TO_ID , TO_TYPE } )
@RequestMapping ( value = "/relations" , method = RequestMethod . GET , params = { TO_ID , TO_TYPE } )
@ResponseBody
@ResponseBody
public List < EntityRelation > findByTo ( @RequestParam ( TO_ID ) String strToId ,
public List < EntityRelation > findByTo ( @ApiParam ( value = ENTITY_ID_PARAM_DESCRIPTION , required = true ) @RequestParam ( TO_ID ) String strToId ,
@RequestParam ( TO_TYPE ) String strToType ,
@ApiParam ( value = ENTITY_TYPE_DESCRIPTION , required = true ) @RequestParam ( TO_TYPE ) String strToType ,
@ApiParam ( value = RELATION_TYPE_GROUP_PARAM_DESCRIPTION )
@RequestParam ( value = "relationTypeGroup" , required = false ) String strRelationTypeGroup ) throws ThingsboardException {
@RequestParam ( value = "relationTypeGroup" , required = false ) String strRelationTypeGroup ) throws ThingsboardException {
checkParameter ( TO_ID , strToId ) ;
checkParameter ( TO_ID , strToId ) ;
checkParameter ( TO_TYPE , strToType ) ;
checkParameter ( TO_TYPE , strToType ) ;
@ -236,11 +285,16 @@ public class EntityRelationController extends BaseController {
}
}
}
}
@ApiOperation ( value = "Get List of Relation Infos (findInfoByTo)" ,
notes = "Returns list of relation info objects for the specified entity by the 'to' direction. " +
SECURITY_CHECKS_ENTITY_DESCRIPTION + " " + RELATION_INFO_DESCRIPTION ,
produces = MediaType . APPLICATION_JSON_VALUE )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@RequestMapping ( value = "/relations/info" , method = RequestMethod . GET , params = { TO_ID , TO_TYPE } )
@RequestMapping ( value = "/relations/info" , method = RequestMethod . GET , params = { TO_ID , TO_TYPE } )
@ResponseBody
@ResponseBody
public List < EntityRelationInfo > findInfoByTo ( @RequestParam ( TO_ID ) String strToId ,
public List < EntityRelationInfo > findInfoByTo ( @ApiParam ( value = ENTITY_ID_PARAM_DESCRIPTION , required = true ) @RequestParam ( TO_ID ) String strToId ,
@RequestParam ( TO_TYPE ) String strToType ,
@ApiParam ( value = ENTITY_TYPE_DESCRIPTION , required = true ) @RequestParam ( TO_TYPE ) String strToType ,
@ApiParam ( value = RELATION_TYPE_GROUP_PARAM_DESCRIPTION )
@RequestParam ( value = "relationTypeGroup" , required = false ) String strRelationTypeGroup ) throws ThingsboardException {
@RequestParam ( value = "relationTypeGroup" , required = false ) String strRelationTypeGroup ) throws ThingsboardException {
checkParameter ( TO_ID , strToId ) ;
checkParameter ( TO_ID , strToId ) ;
checkParameter ( TO_TYPE , strToType ) ;
checkParameter ( TO_TYPE , strToType ) ;
@ -254,12 +308,17 @@ public class EntityRelationController extends BaseController {
}
}
}
}
@ApiOperation ( value = "Get List of Relations (findByTo)" ,
notes = "Returns list of relation objects for the specified entity by the 'to' direction and relation type. " +
SECURITY_CHECKS_ENTITY_DESCRIPTION ,
produces = MediaType . APPLICATION_JSON_VALUE )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@RequestMapping ( value = "/relations" , method = RequestMethod . GET , params = { TO_ID , TO_TYPE , RELATION_TYPE } )
@RequestMapping ( value = "/relations" , method = RequestMethod . GET , params = { TO_ID , TO_TYPE , RELATION_TYPE } )
@ResponseBody
@ResponseBody
public List < EntityRelation > findByTo ( @RequestParam ( TO_ID ) String strToId ,
public List < EntityRelation > findByTo ( @ApiParam ( value = ENTITY_ID_PARAM_DESCRIPTION , required = true ) @RequestParam ( TO_ID ) String strToId ,
@RequestParam ( TO_TYPE ) String strToType ,
@ApiParam ( value = ENTITY_TYPE_DESCRIPTION , required = true ) @RequestParam ( TO_TYPE ) String strToType ,
@RequestParam ( RELATION_TYPE ) String strRelationType ,
@ApiParam ( value = RELATION_TYPE_PARAM_DESCRIPTION , required = true ) @RequestParam ( RELATION_TYPE ) String strRelationType ,
@ApiParam ( value = RELATION_TYPE_GROUP_PARAM_DESCRIPTION )
@RequestParam ( value = "relationTypeGroup" , required = false ) String strRelationTypeGroup ) throws ThingsboardException {
@RequestParam ( value = "relationTypeGroup" , required = false ) String strRelationTypeGroup ) throws ThingsboardException {
checkParameter ( TO_ID , strToId ) ;
checkParameter ( TO_ID , strToId ) ;
checkParameter ( TO_TYPE , strToType ) ;
checkParameter ( TO_TYPE , strToType ) ;
@ -274,10 +333,15 @@ public class EntityRelationController extends BaseController {
}
}
}
}
@ApiOperation ( value = "Find related entities (findByQuery)" ,
notes = "Returns all entities that are related to the specific entity. " +
"The entity id, relation type, entity types, depth of the search, and other query parameters defined using complex 'EntityRelationsQuery' object. " +
"See 'Model' tab of the Parameters for more info." , produces = MediaType . APPLICATION_JSON_VALUE )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@RequestMapping ( value = "/relations" , method = RequestMethod . POST )
@RequestMapping ( value = "/relations" , method = RequestMethod . POST )
@ResponseBody
@ResponseBody
public List < EntityRelation > findByQuery ( @RequestBody EntityRelationsQuery query ) throws ThingsboardException {
public List < EntityRelation > findByQuery ( @ApiParam ( value = "A JSON value representing the entity relations query object." , required = true )
@RequestBody EntityRelationsQuery query ) throws ThingsboardException {
checkNotNull ( query ) ;
checkNotNull ( query ) ;
checkNotNull ( query . getParameters ( ) ) ;
checkNotNull ( query . getParameters ( ) ) ;
checkNotNull ( query . getFilters ( ) ) ;
checkNotNull ( query . getFilters ( ) ) ;
@ -289,10 +353,15 @@ public class EntityRelationController extends BaseController {
}
}
}
}
@ApiOperation ( value = "Find related entity infos (findInfoByQuery)" ,
notes = "Returns all entity infos that are related to the specific entity. " +
"The entity id, relation type, entity types, depth of the search, and other query parameters defined using complex 'EntityRelationsQuery' object. " +
"See 'Model' tab of the Parameters for more info. " + RELATION_INFO_DESCRIPTION , produces = MediaType . APPLICATION_JSON_VALUE )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@PreAuthorize ( "hasAnyAuthority('SYS_ADMIN', 'TENANT_ADMIN', 'CUSTOMER_USER')" )
@RequestMapping ( value = "/relations/info" , method = RequestMethod . POST )
@RequestMapping ( value = "/relations/info" , method = RequestMethod . POST )
@ResponseBody
@ResponseBody
public List < EntityRelationInfo > findInfoByQuery ( @RequestBody EntityRelationsQuery query ) throws ThingsboardException {
public List < EntityRelationInfo > findInfoByQuery ( @ApiParam ( value = "A JSON value representing the entity relations query object." , required = true )
@RequestBody EntityRelationsQuery query ) throws ThingsboardException {
checkNotNull ( query ) ;
checkNotNull ( query ) ;
checkNotNull ( query . getParameters ( ) ) ;
checkNotNull ( query . getParameters ( ) ) ;
checkNotNull ( query . getFilters ( ) ) ;
checkNotNull ( query . getFilters ( ) ) ;