You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by il...@apache.org on 2018/04/06 11:03:01 UTC

[2/2] syncope git commit: Adjusting to latest validation requirements from Swagger UI

Adjusting to latest validation requirements from Swagger UI


Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/9c8bc7bb
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/9c8bc7bb
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/9c8bc7bb

Branch: refs/heads/2_0_X
Commit: 9c8bc7bb135239f4533f865b3c0c7cc99692e2ce
Parents: 241f178
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Fri Apr 6 11:43:16 2018 +0200
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Fri Apr 6 13:02:51 2018 +0200

----------------------------------------------------------------------
 .../common/lib/patch/DeassociationPatch.java    |  1 +
 .../rest/api/service/AnyObjectService.java      |  8 +++--
 .../common/rest/api/service/AnyService.java     | 21 +++++++++---
 .../rest/api/service/AnyTypeClassService.java   |  5 +++
 .../common/rest/api/service/AnyTypeService.java |  5 +++
 .../rest/api/service/ConfigurationService.java  |  5 +++
 .../rest/api/service/ConnectorService.java      |  8 +++++
 .../common/rest/api/service/DomainService.java  |  5 +++
 .../rest/api/service/DynRealmService.java       |  5 +++
 .../common/rest/api/service/GroupService.java   |  8 +++--
 .../common/rest/api/service/LoggerService.java  |  5 +++
 .../rest/api/service/NotificationService.java   |  5 +++
 .../common/rest/api/service/PolicyService.java  |  5 +++
 .../common/rest/api/service/RealmService.java   |  4 ++-
 .../api/service/RelationshipTypeService.java    |  5 +++
 .../common/rest/api/service/ReportService.java  |  5 +++
 .../rest/api/service/ResourceService.java       | 13 +++++++
 .../common/rest/api/service/RoleService.java    |  5 +++
 .../common/rest/api/service/SchemaService.java  |  5 +++
 .../api/service/SecurityQuestionService.java    |  5 +++
 .../common/rest/api/service/TaskService.java    |  5 +++
 .../rest/api/service/UserSelfService.java       | 36 ++++++++++++--------
 .../common/rest/api/service/UserService.java    | 12 +++++--
 .../SwaggerToOpenApiConversionUtils.java        |  5 ++-
 .../rest/api/service/CamelRouteService.java     |  5 +++
 .../rest/api/service/SAML2IdPService.java       |  5 +++
 26 files changed, 166 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/lib/src/main/java/org/apache/syncope/common/lib/patch/DeassociationPatch.java
----------------------------------------------------------------------
diff --git a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/DeassociationPatch.java b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/DeassociationPatch.java
index 3c6cc60..74248c8 100644
--- a/common/lib/src/main/java/org/apache/syncope/common/lib/patch/DeassociationPatch.java
+++ b/common/lib/src/main/java/org/apache/syncope/common/lib/patch/DeassociationPatch.java
@@ -98,6 +98,7 @@ public class DeassociationPatch extends AbstractBaseBean {
         return action;
     }
 
+    @PathParam("action")
     public void setAction(final ResourceDeassociationAction action) {
         this.action = action;
     }

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyObjectService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyObjectService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyObjectService.java
index 617bd8e..4c40faf 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyObjectService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyObjectService.java
@@ -117,7 +117,9 @@ public interface AnyObjectService extends AnyService<AnyObjectTO> {
         @ApiImplicitParam(name = RESTHeaders.NULL_PRIORITY_ASYNC, paramType = "header", dataType = "boolean",
                 value = "If 'true', instructs the propagation process not to wait for completion when communicating"
                 + " with External Resources with no priority set",
-                defaultValue = "false", allowEmptyValue = true) })
+                defaultValue = "false", allowEmptyValue = true),
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "Any Object's key") })
     @ApiResponses({
         @ApiResponse(code = 200,
                 message = "Any object successfully updated enriched with propagation status information, as Entity",
@@ -154,7 +156,9 @@ public interface AnyObjectService extends AnyService<AnyObjectTO> {
         @ApiImplicitParam(name = RESTHeaders.NULL_PRIORITY_ASYNC, paramType = "header", dataType = "boolean",
                 value = "If 'true', instructs the propagation process not to wait for completion when communicating"
                 + " with External Resources with no priority set",
-                defaultValue = "false", allowEmptyValue = true) })
+                defaultValue = "false", allowEmptyValue = true),
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "Any Object's key") })
     @ApiResponses({
         @ApiResponse(code = 200,
                 message = "Any object successfully updated enriched with propagation status information, as Entity",

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyService.java
index 5acd64b..45fdfa1 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyService.java
@@ -115,6 +115,9 @@ public interface AnyService<TO extends AnyTO> extends JAXRSService {
      * @param attrTO attribute
      * @return Response object featuring the updated any object attribute - as Entity
      */
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "schema", paramType = "path", dataType = "string",
+                value = "Attribute schema's key") })
     @PUT
     @Path("{key}/{schemaType}/{schema}")
     @Produces({ MediaType.APPLICATION_JSON, SyncopeConstants.APPLICATION_YAML, MediaType.APPLICATION_XML })
@@ -179,7 +182,7 @@ public interface AnyService<TO extends AnyTO> extends JAXRSService {
     Response delete(@NotNull @PathParam("key") String key);
 
     /**
-     * Executes resource-related operations on given any object.
+     * Executes resource-related operations on given entity.
      *
      * @param patch external resources to be used for propagation-related operations
      * @return Response object featuring BulkActionResult as Entity
@@ -196,7 +199,12 @@ public interface AnyService<TO extends AnyTO> extends JAXRSService {
         @ApiImplicitParam(name = RESTHeaders.NULL_PRIORITY_ASYNC, paramType = "header", dataType = "boolean",
                 value = "If 'true', instructs the propagation process not to wait for completion when communicating"
                 + " with External Resources with no priority set",
-                defaultValue = "false", allowEmptyValue = true) })
+                defaultValue = "false", allowEmptyValue = true),
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "Entity's key"),
+        @ApiImplicitParam(name = "action", paramType = "path", dataType = "string",
+                allowableValues = "UNLINK,DEPROVISION,UNASSIGN",
+                value = "Deassociation action") })
     @ApiResponses({
         @ApiResponse(code = 200, message = "Bulk action result", response = BulkActionResult.class),
         @ApiResponse(code = 204,
@@ -214,7 +222,7 @@ public interface AnyService<TO extends AnyTO> extends JAXRSService {
     Response deassociate(@NotNull DeassociationPatch patch);
 
     /**
-     * Executes resource-related operations on given any object.
+     * Executes resource-related operations on given entity.
      *
      * @param patch external resources to be used for propagation-related operations
      * @return Response object featuring BulkActionResult as Entity
@@ -231,7 +239,12 @@ public interface AnyService<TO extends AnyTO> extends JAXRSService {
         @ApiImplicitParam(name = RESTHeaders.NULL_PRIORITY_ASYNC, paramType = "header", dataType = "boolean",
                 value = "If 'true', instructs the propagation process not to wait for completion when communicating"
                 + " with External Resources with no priority set",
-                defaultValue = "false", allowEmptyValue = true) })
+                defaultValue = "false", allowEmptyValue = true),
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "Entity's key"),
+        @ApiImplicitParam(name = "action", paramType = "path", dataType = "string",
+                allowableValues = "LINK,PROVISION,ASSIGN",
+                value = "Association action") })
     @ApiResponses({
         @ApiResponse(code = 200, message = "Bulk action result", response = BulkActionResult.class),
         @ApiResponse(code = 204,

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyTypeClassService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyTypeClassService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyTypeClassService.java
index 77d95ba..950aca2 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyTypeClassService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyTypeClassService.java
@@ -19,6 +19,8 @@
 package org.apache.syncope.common.rest.api.service;
 
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import io.swagger.annotations.Authorization;
@@ -92,6 +94,9 @@ public interface AnyTypeClassService extends JAXRSService {
      *
      * @param anyTypeClassTO anyTypeClass to be stored
      */
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "AnyTypeClass' key") })
     @ApiResponses(
             @ApiResponse(code = 204, message = "Operation was successful"))
     @PUT

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyTypeService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyTypeService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyTypeService.java
index d1aba9d..acc03de 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyTypeService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AnyTypeService.java
@@ -19,6 +19,8 @@
 package org.apache.syncope.common.rest.api.service;
 
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import io.swagger.annotations.Authorization;
@@ -91,6 +93,9 @@ public interface AnyTypeService extends JAXRSService {
      *
      * @param anyTypeTO anyType to be stored
      */
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "AnyType's key") })
     @ApiResponses(
             @ApiResponse(code = 204, message = "Operation was successful"))
     @PUT

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConfigurationService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConfigurationService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConfigurationService.java
index 5996e0a..2ccf0b4 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConfigurationService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConfigurationService.java
@@ -19,6 +19,8 @@
 package org.apache.syncope.common.rest.api.service;
 
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import io.swagger.annotations.Authorization;
@@ -79,6 +81,9 @@ public interface ConfigurationService extends JAXRSService {
      *
      * @param value parameter value
      */
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "schema", paramType = "path", dataType = "string",
+                value = "Configuration schema") })
     @ApiResponses(
             @ApiResponse(code = 204, message = "Operation was successful"))
     @PUT

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConnectorService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConnectorService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConnectorService.java
index c74c231..d516cb8 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConnectorService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ConnectorService.java
@@ -19,6 +19,8 @@
 package org.apache.syncope.common.rest.api.service;
 
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import io.swagger.annotations.Authorization;
@@ -74,6 +76,9 @@ public interface ConnectorService extends JAXRSService {
      * @return supported object classes info for the connector bundle matching the given connector instance key, with
      * the provided configuration
      */
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "Connector instance' key") })
     @POST
     @Path("{key}/supportedObjectClasses")
     @Produces({ MediaType.APPLICATION_JSON, SyncopeConstants.APPLICATION_YAML, MediaType.APPLICATION_XML })
@@ -143,6 +148,9 @@ public interface ConnectorService extends JAXRSService {
      *
      * @param connInstanceTO connector instance to be stored
      */
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "Connector instance' key") })
     @ApiResponses(
             @ApiResponse(code = 204, message = "Operation was successful"))
     @PUT

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/DomainService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/DomainService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/DomainService.java
index c58604c..f2166ce 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/DomainService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/DomainService.java
@@ -19,6 +19,8 @@
 package org.apache.syncope.common.rest.api.service;
 
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import io.swagger.annotations.Authorization;
@@ -92,6 +94,9 @@ public interface DomainService extends JAXRSService {
      *
      * @param domainTO domain to be stored
      */
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "Domain's key") })
     @ApiResponses(
             @ApiResponse(code = 204, message = "Operation was successful"))
     @PUT

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/DynRealmService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/DynRealmService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/DynRealmService.java
index 471a57f..9f6b620 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/DynRealmService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/DynRealmService.java
@@ -19,6 +19,8 @@
 package org.apache.syncope.common.rest.api.service;
 
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import io.swagger.annotations.Authorization;
@@ -92,6 +94,9 @@ public interface DynRealmService extends JAXRSService {
      *
      * @param dynDynRealmTO dynamic realm to be stored
      */
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "DynRealm's key") })
     @ApiResponses(
             @ApiResponse(code = 204, message = "Operation was successful"))
     @PUT

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/GroupService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/GroupService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/GroupService.java
index b597974..5ac65a1 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/GroupService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/GroupService.java
@@ -122,7 +122,9 @@ public interface GroupService extends AnyService<GroupTO> {
         @ApiImplicitParam(name = RESTHeaders.NULL_PRIORITY_ASYNC, paramType = "header", dataType = "boolean",
                 value = "If 'true', instructs the propagation process not to wait for completion when communicating"
                 + " with External Resources with no priority set",
-                defaultValue = "false", allowEmptyValue = true) })
+                defaultValue = "false", allowEmptyValue = true),
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "Group's key") })
     @ApiResponses({
         @ApiResponse(code = 200,
                 message = "Group successfully updated enriched with propagation status information, as Entity",
@@ -159,7 +161,9 @@ public interface GroupService extends AnyService<GroupTO> {
         @ApiImplicitParam(name = RESTHeaders.NULL_PRIORITY_ASYNC, paramType = "header", dataType = "boolean",
                 value = "If 'true', instructs the propagation process not to wait for completion when communicating"
                 + " with External Resources with no priority set",
-                defaultValue = "false", allowEmptyValue = true) })
+                defaultValue = "false", allowEmptyValue = true),
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "Group's key") })
     @ApiResponses({
         @ApiResponse(code = 200,
                 message = "Group successfully updated enriched with propagation status information, as Entity",

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/LoggerService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/LoggerService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/LoggerService.java
index f9305de..1809975 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/LoggerService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/LoggerService.java
@@ -19,6 +19,8 @@
 package org.apache.syncope.common.rest.api.service;
 
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import io.swagger.annotations.Authorization;
@@ -108,6 +110,9 @@ public interface LoggerService extends JAXRSService {
      * @param type LoggerType to be selected
      * @param logger Logger to be created or updated
      */
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "Logger's key") })
     @ApiResponses(
             @ApiResponse(code = 204, message = "Operation was successful"))
     @PUT

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/NotificationService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/NotificationService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/NotificationService.java
index 74e33cc..8c2009c 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/NotificationService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/NotificationService.java
@@ -19,6 +19,8 @@
 package org.apache.syncope.common.rest.api.service;
 
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import io.swagger.annotations.Authorization;
@@ -96,6 +98,9 @@ public interface NotificationService extends JAXRSService {
      *
      * @param notificationTO notification to be stored
      */
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "Notifications's key") })
     @ApiResponses(
             @ApiResponse(code = 204, message = "Operation was successful"))
     @PUT

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/PolicyService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/PolicyService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/PolicyService.java
index c2d604b..68e044f 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/PolicyService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/PolicyService.java
@@ -19,6 +19,8 @@
 package org.apache.syncope.common.rest.api.service;
 
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import io.swagger.annotations.Authorization;
@@ -101,6 +103,9 @@ public interface PolicyService extends JAXRSService {
      * @param type policy type
      * @param policyTO Policy to replace existing policy
      */
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "Policy's key") })
     @ApiResponses(
             @ApiResponse(code = 204, message = "Operation was successful"))
     @PUT

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RealmService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RealmService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RealmService.java
index 0aafcc2..4bd0c0f 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RealmService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RealmService.java
@@ -121,7 +121,9 @@ public interface RealmService extends JAXRSService {
         @ApiImplicitParam(name = RESTHeaders.NULL_PRIORITY_ASYNC, paramType = "header", dataType = "boolean",
                 value = "If 'true', instructs the propagation process not to wait for completion when communicating"
                 + " with External Resources with no priority set",
-                defaultValue = "false", allowEmptyValue = true) })
+                defaultValue = "false", allowEmptyValue = true),
+        @ApiImplicitParam(name = "fullPath", paramType = "path", dataType = "string",
+                value = "Realm's fullPath") })
     @ApiResponses({
         @ApiResponse(code = 200,
                 message = "Realm successfully updated enriched with propagation status information, as Entity",

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RelationshipTypeService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RelationshipTypeService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RelationshipTypeService.java
index 2cadb77..0185454 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RelationshipTypeService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RelationshipTypeService.java
@@ -19,6 +19,8 @@
 package org.apache.syncope.common.rest.api.service;
 
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import io.swagger.annotations.Authorization;
@@ -92,6 +94,9 @@ public interface RelationshipTypeService extends JAXRSService {
      *
      * @param relationshipTypeTO relationshipType to be stored
      */
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "RelationshipType's key") })
     @ApiResponses(
             @ApiResponse(code = 204, message = "Operation was successful"))
     @PUT

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ReportService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ReportService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ReportService.java
index 5bab18e..3c5d40d 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ReportService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ReportService.java
@@ -19,6 +19,8 @@
 package org.apache.syncope.common.rest.api.service;
 
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import io.swagger.annotations.Authorization;
@@ -94,6 +96,9 @@ public interface ReportService extends ExecutableService {
      *
      * @param reportTO report to be stored
      */
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "Report's key") })
     @ApiResponses(
             @ApiResponse(code = 204, message = "Operation was successful"))
     @PUT

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ResourceService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ResourceService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ResourceService.java
index 1f2da67..899e461 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ResourceService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ResourceService.java
@@ -19,6 +19,8 @@
 package org.apache.syncope.common.rest.api.service;
 
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import io.swagger.annotations.Authorization;
@@ -131,6 +133,9 @@ public interface ResourceService extends JAXRSService {
      *
      * @param resourceTO resource to be stored
      */
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "Resource's key") })
     @ApiResponses(
             @ApiResponse(code = 204, message = "Operation was successful"))
     @PUT
@@ -202,6 +207,14 @@ public interface ResourceService extends JAXRSService {
      * @param patch any objects to be used for propagation-related operations
      * @return Bulk action result
      */
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "Resource's key"),
+        @ApiImplicitParam(name = "anyTypeKey", paramType = "path", dataType = "string",
+                value = "Entity's key"),
+        @ApiImplicitParam(name = "action", paramType = "path", dataType = "string",
+                allowableValues = "UNLINK,DEPROVISION,UNASSIGN",
+                value = "Deassociation action") })
     @POST
     @Path("{key}/bulkDeassociation/{anyTypeKey}/{action}")
     @Produces({ MediaType.APPLICATION_JSON, SyncopeConstants.APPLICATION_YAML, MediaType.APPLICATION_XML })

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RoleService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RoleService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RoleService.java
index ec6439f..3191669 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RoleService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/RoleService.java
@@ -19,6 +19,8 @@
 package org.apache.syncope.common.rest.api.service;
 
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import io.swagger.annotations.Authorization;
@@ -93,6 +95,9 @@ public interface RoleService extends JAXRSService {
      *
      * @param roleTO role to be stored
      */
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "Role's key") })
     @ApiResponses(
             @ApiResponse(code = 204, message = "Operation was successful"))
     @PUT

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SchemaService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SchemaService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SchemaService.java
index f1f8ae1..fae2d09 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SchemaService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SchemaService.java
@@ -19,6 +19,8 @@
 package org.apache.syncope.common.rest.api.service;
 
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import io.swagger.annotations.Authorization;
@@ -105,6 +107,9 @@ public interface SchemaService extends JAXRSService {
      * @param type type for schemas to be updated
      * @param schemaTO updated schema to be stored
      */
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "Schema's key") })
     @ApiResponses(
             @ApiResponse(code = 204, message = "Operation was successful"))
     @PUT

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SecurityQuestionService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SecurityQuestionService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SecurityQuestionService.java
index 64f3980..e3429de 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SecurityQuestionService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SecurityQuestionService.java
@@ -19,6 +19,8 @@
 package org.apache.syncope.common.rest.api.service;
 
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import io.swagger.annotations.Authorization;
@@ -92,6 +94,9 @@ public interface SecurityQuestionService extends JAXRSService {
      *
      * @param securityQuestionTO security question to be stored
      */
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "SecurityQuestion's key") })
     @ApiResponses(
             @ApiResponse(code = 204, message = "Operation was successful"))
     @PUT

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java
index b883518..c6da1a2 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/TaskService.java
@@ -19,6 +19,8 @@
 package org.apache.syncope.common.rest.api.service;
 
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import io.swagger.annotations.Authorization;
@@ -112,6 +114,9 @@ public interface TaskService extends ExecutableService {
      * @param type task type
      * @param taskTO updated task to be stored
      */
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "Task's key") })
     @ApiResponses(
             @ApiResponse(code = 204, message = "Operation was successful"))
     @PUT

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/UserSelfService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/UserSelfService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/UserSelfService.java
index c2f8e27..19b41eb 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/UserSelfService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/UserSelfService.java
@@ -114,11 +114,13 @@ public interface UserSelfService extends JAXRSService {
     @ApiOperation(value = "", authorizations = {
         @Authorization(value = "BasicAuthentication"),
         @Authorization(value = "Bearer") })
-    @ApiImplicitParams(
-            @ApiImplicitParam(name = RESTHeaders.PREFER, paramType = "header", dataType = "string",
-                    value = "Allows the client to specify a preference for the result to be returned from the server",
-                    defaultValue = "return-content", allowableValues = "return-content, return-no-content",
-                    allowEmptyValue = true))
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = RESTHeaders.PREFER, paramType = "header", dataType = "string",
+                value = "Allows the client to specify a preference for the result to be returned from the server",
+                defaultValue = "return-content", allowableValues = "return-content, return-no-content",
+                allowEmptyValue = true),
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "User's key") })
     @ApiResponses({
         @ApiResponse(code = 200,
                 message = "User successfully updated enriched with propagation status information, as Entity",
@@ -143,11 +145,13 @@ public interface UserSelfService extends JAXRSService {
     @ApiOperation(value = "", authorizations = {
         @Authorization(value = "BasicAuthentication"),
         @Authorization(value = "Bearer") })
-    @ApiImplicitParams(
-            @ApiImplicitParam(name = RESTHeaders.PREFER, paramType = "header", dataType = "string",
-                    value = "Allows the client to specify a preference for the result to be returned from the server",
-                    defaultValue = "return-content", allowableValues = "return-content, return-no-content",
-                    allowEmptyValue = true))
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = RESTHeaders.PREFER, paramType = "header", dataType = "string",
+                value = "Allows the client to specify a preference for the result to be returned from the server",
+                defaultValue = "return-content", allowableValues = "return-content, return-no-content",
+                allowEmptyValue = true),
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "User's key") })
     @ApiResponses({
         @ApiResponse(code = 200,
                 message = "User successfully updated enriched with propagation status information, as Entity",
@@ -172,11 +176,13 @@ public interface UserSelfService extends JAXRSService {
     @ApiOperation(value = "", authorizations = {
         @Authorization(value = "BasicAuthentication"),
         @Authorization(value = "Bearer") })
-    @ApiImplicitParams(
-            @ApiImplicitParam(name = RESTHeaders.PREFER, paramType = "header", dataType = "string",
-                    value = "Allows the client to specify a preference for the result to be returned from the server",
-                    defaultValue = "return-content", allowableValues = "return-content, return-no-content",
-                    allowEmptyValue = true))
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = RESTHeaders.PREFER, paramType = "header", dataType = "string",
+                value = "Allows the client to specify a preference for the result to be returned from the server",
+                defaultValue = "return-content", allowableValues = "return-content, return-no-content",
+                allowEmptyValue = true),
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "User's key") })
     @ApiResponses({
         @ApiResponse(code = 200,
                 message = "User successfully updated enriched with propagation status information, as Entity",

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/UserService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/UserService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/UserService.java
index 9ae3574..f811b74 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/UserService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/UserService.java
@@ -123,7 +123,9 @@ public interface UserService extends AnyService<UserTO> {
         @ApiImplicitParam(name = RESTHeaders.NULL_PRIORITY_ASYNC, paramType = "header", dataType = "boolean",
                 value = "If 'true', instructs the propagation process not to wait for completion when communicating"
                 + " with External Resources with no priority set",
-                defaultValue = "false", allowEmptyValue = true) })
+                defaultValue = "false", allowEmptyValue = true),
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "User's key") })
     @ApiResponses({
         @ApiResponse(code = 200,
                 message = "User successfully updated enriched with propagation status information, as Entity",
@@ -160,7 +162,9 @@ public interface UserService extends AnyService<UserTO> {
         @ApiImplicitParam(name = RESTHeaders.NULL_PRIORITY_ASYNC, paramType = "header", dataType = "boolean",
                 value = "If 'true', instructs the propagation process not to wait for completion when communicating"
                 + " with External Resources with no priority set",
-                defaultValue = "false", allowEmptyValue = true) })
+                defaultValue = "false", allowEmptyValue = true),
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "User's key") })
     @ApiResponses({
         @ApiResponse(code = 200,
                 message = "User successfully updated enriched with propagation status information, as Entity",
@@ -197,7 +201,9 @@ public interface UserService extends AnyService<UserTO> {
         @ApiImplicitParam(name = RESTHeaders.NULL_PRIORITY_ASYNC, paramType = "header", dataType = "boolean",
                 value = "If 'true', instructs the propagation process not to wait for completion when communicating"
                 + " with External Resources with no priority set",
-                defaultValue = "false", allowEmptyValue = true) })
+                defaultValue = "false", allowEmptyValue = true),
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "User's key") })
     @ApiResponses({
         @ApiResponse(code = 200,
                 message = "User successfully updated enriched with propagation status information, as Entity",

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/openapi/SwaggerToOpenApiConversionUtils.java
----------------------------------------------------------------------
diff --git a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/openapi/SwaggerToOpenApiConversionUtils.java b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/openapi/SwaggerToOpenApiConversionUtils.java
index 87f127b..80cd745 100644
--- a/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/openapi/SwaggerToOpenApiConversionUtils.java
+++ b/core/rest-cxf/src/main/java/org/apache/syncope/core/rest/cxf/openapi/SwaggerToOpenApiConversionUtils.java
@@ -85,7 +85,7 @@ public final class SwaggerToOpenApiConversionUtils {
             sw3.setProperty("externalDocs", externalDocsObject);
         }
 
-        return readerWriter.toJson(sw3);
+        return readerWriter.toJson(sw3).replace("#/definitions/", "#/components/schemas/");
     }
 
     private static void setComponentsProperty(
@@ -297,8 +297,7 @@ public final class SwaggerToOpenApiConversionUtils {
                     if (requestBodyName != null) {
                         requestBodies.put(requestBodyName, sw3RequestBody);
                         String ref = "#/components/requestBodies/" + requestBodyName;
-                        sw2PathVerbProps.setProperty("requestBody",
-                                Collections.singletonMap("$ref", ref));
+                        sw2PathVerbProps.setProperty("requestBody", Collections.singletonMap("$ref", ref));
                     }
                 }
             }

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/ext/camel/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/CamelRouteService.java
----------------------------------------------------------------------
diff --git a/ext/camel/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/CamelRouteService.java b/ext/camel/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/CamelRouteService.java
index 8473c74..9f98a4c 100644
--- a/ext/camel/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/CamelRouteService.java
+++ b/ext/camel/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/CamelRouteService.java
@@ -19,6 +19,8 @@
 package org.apache.syncope.common.rest.api.service;
 
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import io.swagger.annotations.Authorization;
@@ -77,6 +79,9 @@ public interface CamelRouteService extends JAXRSService {
      * @param anyTypeKind any type kind
      * @param route to be updated
      */
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "Camel route's key") })
     @ApiResponses(
             @ApiResponse(code = 204, message = "Operation was successful"))
     @PUT

http://git-wip-us.apache.org/repos/asf/syncope/blob/9c8bc7bb/ext/saml2sp/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SAML2IdPService.java
----------------------------------------------------------------------
diff --git a/ext/saml2sp/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SAML2IdPService.java b/ext/saml2sp/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SAML2IdPService.java
index 91197df..4bd44bb 100644
--- a/ext/saml2sp/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SAML2IdPService.java
+++ b/ext/saml2sp/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/SAML2IdPService.java
@@ -19,6 +19,8 @@
 package org.apache.syncope.common.rest.api.service;
 
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import io.swagger.annotations.Authorization;
@@ -94,6 +96,9 @@ public interface SAML2IdPService extends JAXRSService {
      *
      * @param saml2IdpTO idp configuration to be stored
      */
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = "key", paramType = "path", dataType = "string",
+                value = "IdP's key") })
     @ApiResponses(
             @ApiResponse(code = 204, message = "Operation was successful"))
     @PUT