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/02/15 11:32:48 UTC
syncope git commit: [SYNCOPE-1274] Adding documentation for request /
response additional headers
Repository: syncope
Updated Branches:
refs/heads/2_0_X f15408393 -> ec7571f4e
[SYNCOPE-1274] Adding documentation for request / response additional headers
Project: http://git-wip-us.apache.org/repos/asf/syncope/repo
Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/ec7571f4
Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/ec7571f4
Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/ec7571f4
Branch: refs/heads/2_0_X
Commit: ec7571f4eb96549c070e37be782bb137c437267c
Parents: f154083
Author: Francesco Chicchiriccò <il...@apache.org>
Authored: Thu Feb 15 12:32:36 2018 +0100
Committer: Francesco Chicchiriccò <il...@apache.org>
Committed: Thu Feb 15 12:32:36 2018 +0100
----------------------------------------------------------------------
.../syncope/common/rest/api/RESTHeaders.java | 2 +-
.../rest/api/service/AccessTokenService.java | 18 ++++
.../rest/api/service/AnyObjectService.java | 65 +++++++++++++-
.../common/rest/api/service/AnyService.java | 23 ++++-
.../rest/api/service/AnyTypeClassService.java | 12 +++
.../common/rest/api/service/AnyTypeService.java | 12 +++
.../rest/api/service/ConnectorService.java | 12 +++
.../common/rest/api/service/DomainService.java | 12 +++
.../rest/api/service/DynRealmService.java | 12 +++
.../common/rest/api/service/GroupService.java | 68 ++++++++++++--
.../rest/api/service/MailTemplateService.java | 12 +++
.../rest/api/service/NotificationService.java | 12 +++
.../common/rest/api/service/PolicyService.java | 12 +++
.../common/rest/api/service/RealmService.java | 57 +++++++++++-
.../api/service/RelationshipTypeService.java | 12 +++
.../common/rest/api/service/ReportService.java | 12 +++
.../rest/api/service/ReportTemplateService.java | 12 +++
.../rest/api/service/ResourceService.java | 12 +++
.../common/rest/api/service/RoleService.java | 12 +++
.../common/rest/api/service/SchemaService.java | 12 +++
.../api/service/SecurityQuestionService.java | 12 +++
.../common/rest/api/service/TaskService.java | 12 +++
.../rest/api/service/UserSelfService.java | 95 +++++++++++++++++---
.../common/rest/api/service/UserService.java | 80 ++++++++++++++++-
24 files changed, 571 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/RESTHeaders.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/RESTHeaders.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/RESTHeaders.java
index 2a61321..40cd8ba 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/RESTHeaders.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/RESTHeaders.java
@@ -66,7 +66,7 @@ public final class RESTHeaders {
public static final String PREFER = "Prefer";
/**
- * Allowd the server to inform the client about the fact that a specified preference was applied.
+ * Allows the server to inform the client about the fact that a specified preference was applied.
* <a href="http://msdn.microsoft.com/en-us/library/hh554623.aspx">More information</a>.
*
* @see Preference
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AccessTokenService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AccessTokenService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AccessTokenService.java
index 72ee648..24f242b 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AccessTokenService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/AccessTokenService.java
@@ -20,7 +20,10 @@ package org.apache.syncope.common.rest.api.service;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.Authorization;
+import io.swagger.annotations.ResponseHeader;
import javax.ws.rs.BeanParam;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
@@ -33,6 +36,7 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.syncope.common.lib.to.AccessTokenTO;
import org.apache.syncope.common.lib.to.PagedResult;
+import org.apache.syncope.common.rest.api.RESTHeaders;
import org.apache.syncope.common.rest.api.beans.AccessTokenQuery;
/**
@@ -50,6 +54,13 @@ public interface AccessTokenService extends JAXRSService {
*/
@ApiOperation(value = "", authorizations = {
@Authorization(value = "BasicAuthentication") })
+ @ApiResponses(
+ @ApiResponse(code = 204,
+ message = "JWT successfully generated", responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.TOKEN, response = String.class,
+ description = "Generated JWT")
+ , @ResponseHeader(name = RESTHeaders.TOKEN_EXPIRE, response = String.class,
+ description = "Expiration of the generated JWT") }))
@POST
@Path("login")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@@ -63,6 +74,13 @@ public interface AccessTokenService extends JAXRSService {
*/
@ApiOperation(value = "", authorizations = {
@Authorization(value = "Bearer") })
+ @ApiResponses(
+ @ApiResponse(code = 204,
+ message = "JWT successfully refreshed", responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.TOKEN, response = String.class,
+ description = "Generated JWT")
+ , @ResponseHeader(name = RESTHeaders.TOKEN_EXPIRE, response = String.class,
+ description = "Expiration of the refreshed JWT") }))
@POST
@Path("refresh")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/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 ac88bab..9736860 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
@@ -19,18 +19,28 @@
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;
+import io.swagger.annotations.ResponseHeader;
import javax.validation.constraints.NotNull;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.cxf.jaxrs.ext.PATCH;
import org.apache.syncope.common.lib.patch.AnyObjectPatch;
import org.apache.syncope.common.lib.to.AnyObjectTO;
+import org.apache.syncope.common.lib.to.PagedResult;
+import org.apache.syncope.common.lib.to.ProvisioningResult;
+import org.apache.syncope.common.rest.api.RESTHeaders;
+import org.apache.syncope.common.rest.api.beans.AnyQuery;
/**
* REST operations for anyObjects.
@@ -41,13 +51,36 @@ import org.apache.syncope.common.lib.to.AnyObjectTO;
@Path("anyObjects")
public interface AnyObjectService extends AnyService<AnyObjectTO> {
+ @Override
+ AnyObjectTO read(String key);
+
+ @Override
+ PagedResult<AnyObjectTO> search(AnyQuery anyQuery);
+
/**
* Creates a new any object.
*
* @param anyObjectTO any object to be created
* @return Response object featuring Location header of created any object as well as the any
- * object itself enriched with propagation status information - ProvisioningResult as Entity
+ * object itself enriched with propagation status information
*/
+ @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))
+ @ApiResponses(
+ @ApiResponse(code = 201,
+ message = "Any object successfully created enriched with propagation status information, as Entity,"
+ + "or empty if 'Prefer: return-no-content' was specified",
+ response = ProvisioningResult.class, responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "UUID generated for the any object created")
+ , @ResponseHeader(name = HttpHeaders.LOCATION, response = String.class,
+ description = "URL of the any object created")
+ , @ResponseHeader(name = RESTHeaders.PREFERENCE_APPLIED, response = String.class,
+ description = "Allows the server to inform the "
+ + "client about the fact that a specified preference was applied") }))
@POST
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@@ -58,8 +91,21 @@ public interface AnyObjectService extends AnyService<AnyObjectTO> {
*
* @param anyObjectPatch modification to be applied to any object matching the provided key
* @return Response object featuring the updated any object enriched with propagation status information
- * - ProvisioningResult as Entity
*/
+ @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))
+ @ApiResponses({
+ @ApiResponse(code = 200,
+ message = "Any object successfully updated enriched with propagation status information, as Entity",
+ response = ProvisioningResult.class)
+ , @ApiResponse(code = 204,
+ message = "No content if 'Prefer: return-no-content' was specified", responseHeaders =
+ @ResponseHeader(name = RESTHeaders.PREFERENCE_APPLIED, response = String.class,
+ description = "Allows the server to inform the "
+ + "client about the fact that a specified preference was applied")) })
@PATCH
@Path("{key}")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@@ -71,8 +117,21 @@ public interface AnyObjectService extends AnyService<AnyObjectTO> {
*
* @param anyObjectTO complete update
* @return Response object featuring the updated any object enriched with propagation status information
- * - ProvisioningResult as Entity
*/
+ @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))
+ @ApiResponses({
+ @ApiResponse(code = 200,
+ message = "Any object successfully updated enriched with propagation status information, as Entity",
+ response = ProvisioningResult.class)
+ , @ApiResponse(code = 204,
+ message = "No content if 'Prefer: return-no-content' was specified", responseHeaders =
+ @ResponseHeader(name = RESTHeaders.PREFERENCE_APPLIED, response = String.class,
+ description = "Allows the server to inform the "
+ + "client about the fact that a specified preference was applied")) })
@PUT
@Path("{key}")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/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 03f4666..4d4725d 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
@@ -18,6 +18,11 @@
*/
package org.apache.syncope.common.rest.api.service;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import io.swagger.annotations.ResponseHeader;
import java.util.Set;
import javax.validation.constraints.NotNull;
import javax.ws.rs.BeanParam;
@@ -37,7 +42,9 @@ import org.apache.syncope.common.lib.to.AnyTO;
import org.apache.syncope.common.lib.to.AttrTO;
import org.apache.syncope.common.lib.to.BulkAction;
import org.apache.syncope.common.lib.to.PagedResult;
+import org.apache.syncope.common.lib.to.ProvisioningResult;
import org.apache.syncope.common.lib.types.SchemaType;
+import org.apache.syncope.common.rest.api.RESTHeaders;
import org.apache.syncope.common.rest.api.beans.AnyQuery;
public interface AnyService<TO extends AnyTO> extends JAXRSService {
@@ -138,8 +145,22 @@ public interface AnyService<TO extends AnyTO> extends JAXRSService {
*
* @param key any object key or name
* @return Response object featuring the deleted any object enriched with propagation status information
- * - ProvisioningResult as Entity
*/
+ @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))
+ @ApiResponses({
+ @ApiResponse(code = 200,
+ message = "User, Group or Any Object successfully deleted enriched with propagation status information,"
+ + " as Entity",
+ response = ProvisioningResult.class)
+ , @ApiResponse(code = 204,
+ message = "No content if 'Prefer: return-no-content' was specified", responseHeaders =
+ @ResponseHeader(name = RESTHeaders.PREFERENCE_APPLIED, response = String.class,
+ description = "Allows the server to inform the "
+ + "client about the fact that a specified preference was applied")) })
@DELETE
@Path("{key}")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/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 1d8ca1e..2480f83 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,7 +19,10 @@
package org.apache.syncope.common.rest.api.service;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.Authorization;
+import io.swagger.annotations.ResponseHeader;
import java.util.List;
import javax.validation.constraints.NotNull;
import javax.ws.rs.Consumes;
@@ -30,9 +33,11 @@ import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.syncope.common.lib.to.AnyTypeClassTO;
+import org.apache.syncope.common.rest.api.RESTHeaders;
/**
* REST operations for any type classes.
@@ -69,6 +74,13 @@ public interface AnyTypeClassService extends JAXRSService {
* @param anyTypeClassTO anyTypeClass to be created
* @return Response object featuring Location header of created anyTypeClass
*/
+ @ApiResponses(
+ @ApiResponse(code = 201,
+ message = "AnyTypeClass successfully created", responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "Key value for the entity created")
+ , @ResponseHeader(name = HttpHeaders.LOCATION, response = String.class,
+ description = "URL of the entity created") }))
@POST
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/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 11ae646..482d274 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,7 +19,10 @@
package org.apache.syncope.common.rest.api.service;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.Authorization;
+import io.swagger.annotations.ResponseHeader;
import java.util.List;
import javax.validation.constraints.NotNull;
import javax.ws.rs.Consumes;
@@ -30,9 +33,11 @@ import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.syncope.common.lib.to.AnyTypeTO;
+import org.apache.syncope.common.rest.api.RESTHeaders;
/**
* REST operations for any types.
@@ -69,6 +74,13 @@ public interface AnyTypeService extends JAXRSService {
* @param anyTypeTO anyType to be created
* @return Response object featuring Location header of created anyType
*/
+ @ApiResponses(
+ @ApiResponse(code = 201,
+ message = "AnyType successfully created", responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "Key value for the entity created")
+ , @ResponseHeader(name = HttpHeaders.LOCATION, response = String.class,
+ description = "URL of the entity created") }))
@POST
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
Response create(@NotNull AnyTypeTO anyTypeTO);
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/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 882ab35..1b8d58e 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,7 +19,10 @@
package org.apache.syncope.common.rest.api.service;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.Authorization;
+import io.swagger.annotations.ResponseHeader;
import java.util.List;
import javax.validation.constraints.NotNull;
import javax.ws.rs.Consumes;
@@ -32,11 +35,13 @@ import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.syncope.common.lib.to.ConnBundleTO;
import org.apache.syncope.common.lib.to.ConnIdObjectClassTO;
import org.apache.syncope.common.lib.to.ConnInstanceTO;
+import org.apache.syncope.common.rest.api.RESTHeaders;
/**
* REST operations for connector bundles and instances.
@@ -120,6 +125,13 @@ public interface ConnectorService extends JAXRSService {
* @param connInstanceTO connector instance to be created
* @return Response object featuring Location header of created connector instance
*/
+ @ApiResponses(
+ @ApiResponse(code = 201,
+ message = "ConnInstance successfully created", responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "UUID generated for the entity created")
+ , @ResponseHeader(name = HttpHeaders.LOCATION, response = String.class,
+ description = "URL of the entity created") }))
@POST
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/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 b336636..a60ad4b 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,7 +19,10 @@
package org.apache.syncope.common.rest.api.service;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.Authorization;
+import io.swagger.annotations.ResponseHeader;
import java.util.List;
import javax.validation.constraints.NotNull;
import javax.ws.rs.Consumes;
@@ -30,9 +33,11 @@ import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.syncope.common.lib.to.DomainTO;
+import org.apache.syncope.common.rest.api.RESTHeaders;
/**
* REST operations for domains.
@@ -69,6 +74,13 @@ public interface DomainService extends JAXRSService {
* @param domainTO domain to be created
* @return Response object featuring Location header of created domain
*/
+ @ApiResponses(
+ @ApiResponse(code = 201,
+ message = "Domain successfully created", responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "Key value for the entity created")
+ , @ResponseHeader(name = HttpHeaders.LOCATION, response = String.class,
+ description = "URL of the entity created") }))
@POST
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/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 50114ce..8c6b8b1 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,7 +19,10 @@
package org.apache.syncope.common.rest.api.service;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.Authorization;
+import io.swagger.annotations.ResponseHeader;
import java.util.List;
import javax.validation.constraints.NotNull;
import javax.ws.rs.Consumes;
@@ -30,9 +33,11 @@ import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.syncope.common.lib.to.DynRealmTO;
+import org.apache.syncope.common.rest.api.RESTHeaders;
/**
* REST operations for dynamic realms.
@@ -69,6 +74,13 @@ public interface DynRealmService extends JAXRSService {
* @param dynDynRealmTO dynamic realm to be created
* @return Response object featuring Location header of created dynamic realm
*/
+ @ApiResponses(
+ @ApiResponse(code = 201,
+ message = "DynRealm successfully created", responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "Key value for the entity created")
+ , @ResponseHeader(name = HttpHeaders.LOCATION, response = String.class,
+ description = "URL of the entity created") }))
@POST
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/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 217b5d8..8764eec 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
@@ -19,7 +19,12 @@
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;
+import io.swagger.annotations.ResponseHeader;
import java.util.List;
import javax.validation.constraints.NotNull;
import javax.ws.rs.Consumes;
@@ -29,13 +34,18 @@ import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.cxf.jaxrs.ext.PATCH;
import org.apache.syncope.common.lib.patch.GroupPatch;
import org.apache.syncope.common.lib.to.ExecTO;
import org.apache.syncope.common.lib.to.GroupTO;
+import org.apache.syncope.common.lib.to.PagedResult;
+import org.apache.syncope.common.lib.to.ProvisioningResult;
import org.apache.syncope.common.lib.types.BulkMembersActionType;
+import org.apache.syncope.common.rest.api.RESTHeaders;
+import org.apache.syncope.common.rest.api.beans.AnyQuery;
/**
* REST operations for groups.
@@ -46,13 +56,36 @@ import org.apache.syncope.common.lib.types.BulkMembersActionType;
@Path("groups")
public interface GroupService extends AnyService<GroupTO> {
+ @Override
+ GroupTO read(String key);
+
+ @Override
+ PagedResult<GroupTO> search(AnyQuery anyQuery);
+
/**
* Creates a new group.
*
* @param groupTO group to be created
* @return Response object featuring Location header of created group as well as the any
- * object itself enriched with propagation status information - ProvisioningResult as Entity
+ * object itself enriched with propagation status information
*/
+ @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))
+ @ApiResponses(
+ @ApiResponse(code = 201,
+ message = "Group successfully created enriched with propagation status information, as Entity,"
+ + "or empty if 'Prefer: return-no-content' was specified",
+ response = ProvisioningResult.class, responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "UUID generated for the group created")
+ , @ResponseHeader(name = HttpHeaders.LOCATION, response = String.class,
+ description = "URL of the group created")
+ , @ResponseHeader(name = RESTHeaders.PREFERENCE_APPLIED, response = String.class,
+ description = "Allows the server to inform the "
+ + "client about the fact that a specified preference was applied") }))
@POST
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@@ -63,8 +96,21 @@ public interface GroupService extends AnyService<GroupTO> {
*
* @param groupPatch modification to be applied to group matching the provided key
* @return Response object featuring the updated group enriched with propagation status information
- * - ProvisioningResult as Entity
*/
+ @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))
+ @ApiResponses({
+ @ApiResponse(code = 200,
+ message = "Group successfully updated enriched with propagation status information, as Entity",
+ response = ProvisioningResult.class)
+ , @ApiResponse(code = 204,
+ message = "No content if 'Prefer: return-no-content' was specified", responseHeaders =
+ @ResponseHeader(name = RESTHeaders.PREFERENCE_APPLIED, response = String.class,
+ description = "Allows the server to inform the "
+ + "client about the fact that a specified preference was applied")) })
@PATCH
@Path("{key}")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@@ -76,8 +122,21 @@ public interface GroupService extends AnyService<GroupTO> {
*
* @param groupTO complete update
* @return Response object featuring the updated group enriched with propagation status information
- * - ProvisioningResult as Entity
*/
+ @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))
+ @ApiResponses({
+ @ApiResponse(code = 200,
+ message = "Group successfully updated enriched with propagation status information, as Entity",
+ response = ProvisioningResult.class)
+ , @ApiResponse(code = 204,
+ message = "No content if 'Prefer: return-no-content' was specified", responseHeaders =
+ @ResponseHeader(name = RESTHeaders.PREFERENCE_APPLIED, response = String.class,
+ description = "Allows the server to inform the "
+ + "client about the fact that a specified preference was applied")) })
@PUT
@Path("{key}")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@@ -85,8 +144,7 @@ public interface GroupService extends AnyService<GroupTO> {
Response update(@NotNull GroupTO groupTO);
/**
- * This method is similar to read() but uses different authentication handling to ensure that a group
- * can read his own groups.
+ * This method allows a user to read his own groups.
*
* @return own groups
*/
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/MailTemplateService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/MailTemplateService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/MailTemplateService.java
index caf254a..ea1dd99 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/MailTemplateService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/MailTemplateService.java
@@ -19,7 +19,10 @@
package org.apache.syncope.common.rest.api.service;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.Authorization;
+import io.swagger.annotations.ResponseHeader;
import java.io.InputStream;
import java.util.List;
import javax.validation.constraints.NotNull;
@@ -31,10 +34,12 @@ import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.syncope.common.lib.to.MailTemplateTO;
import org.apache.syncope.common.lib.types.MailTemplateFormat;
+import org.apache.syncope.common.rest.api.RESTHeaders;
/**
* REST operations for mail templates.
@@ -60,6 +65,13 @@ public interface MailTemplateService extends JAXRSService {
* @param mailTemplateTO Creates a new mail template.
* @return Response object featuring Location header of created mail template
*/
+ @ApiResponses(
+ @ApiResponse(code = 201,
+ message = "MailTemplate successfully created", responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "Key value for the entity created")
+ , @ResponseHeader(name = HttpHeaders.LOCATION, response = String.class,
+ description = "URL of the entity created") }))
@POST
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/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 5a4fb81..3d23622 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,7 +19,10 @@
package org.apache.syncope.common.rest.api.service;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.Authorization;
+import io.swagger.annotations.ResponseHeader;
import java.util.List;
import javax.validation.constraints.NotNull;
import javax.ws.rs.Consumes;
@@ -31,11 +34,13 @@ import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.syncope.common.lib.to.JobTO;
import org.apache.syncope.common.lib.to.NotificationTO;
import org.apache.syncope.common.lib.types.JobAction;
+import org.apache.syncope.common.rest.api.RESTHeaders;
/**
* REST operations for notifications.
@@ -73,6 +78,13 @@ public interface NotificationService extends JAXRSService {
* @param notificationTO Creates a new notification.
* @return Response object featuring Location header of created notification
*/
+ @ApiResponses(
+ @ApiResponse(code = 201,
+ message = "Notification successfully created", responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "UUID generated for the entity created")
+ , @ResponseHeader(name = HttpHeaders.LOCATION, response = String.class,
+ description = "URL of the entity created") }))
@POST
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/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 d71cf0a..2000a54 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,7 +19,10 @@
package org.apache.syncope.common.rest.api.service;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.Authorization;
+import io.swagger.annotations.ResponseHeader;
import java.util.List;
import javax.validation.constraints.NotNull;
import javax.ws.rs.Consumes;
@@ -30,10 +33,12 @@ import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.syncope.common.lib.policy.PolicyTO;
import org.apache.syncope.common.lib.types.PolicyType;
+import org.apache.syncope.common.rest.api.RESTHeaders;
/**
* REST operations for policies.
@@ -76,6 +81,13 @@ public interface PolicyService extends JAXRSService {
* @param policyTO Policy to be created (needs to match type)
* @return Response object featuring Location header of created policy
*/
+ @ApiResponses(
+ @ApiResponse(code = 201,
+ message = "Policy successfully created", responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "UUID generated for the entity created")
+ , @ResponseHeader(name = HttpHeaders.LOCATION, response = String.class,
+ description = "URL of the entity created") }))
@POST
@Path("{type}")
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/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 75f6621..c5a5cb8 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
@@ -19,7 +19,12 @@
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;
+import io.swagger.annotations.ResponseHeader;
import java.util.List;
import javax.validation.constraints.NotNull;
import javax.ws.rs.Consumes;
@@ -30,9 +35,12 @@ import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
+import org.apache.syncope.common.lib.to.ProvisioningResult;
import org.apache.syncope.common.lib.to.RealmTO;
+import org.apache.syncope.common.rest.api.RESTHeaders;
/**
* REST operations for realms.
@@ -69,8 +77,25 @@ public interface RealmService extends JAXRSService {
* @param parentPath full path of the parent realm
* @param realmTO new realm.
* @return Response object featuring Location header of created realm as well as the realm itself
- * enriched with propagation status information - ProvisioningResult as Entity
+ * enriched with propagation status information
*/
+ @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))
+ @ApiResponses(
+ @ApiResponse(code = 201,
+ message = "Realm successfully created enriched with propagation status information, as Entity,"
+ + "or empty if 'Prefer: return-no-content' was specified",
+ response = ProvisioningResult.class, responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "UUID generated for the realm created")
+ , @ResponseHeader(name = HttpHeaders.LOCATION, response = String.class,
+ description = "URL of the realm created")
+ , @ResponseHeader(name = RESTHeaders.PREFERENCE_APPLIED, response = String.class,
+ description = "Allows the server to inform the "
+ + "client about the fact that a specified preference was applied") }))
@POST
@Path("{parentPath:.*}")
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@@ -82,8 +107,21 @@ public interface RealmService extends JAXRSService {
*
* @param realmTO realm to be stored
* @return Response object featuring the updated realm enriched with propagation status information
- * - ProvisioningResult as Entity
*/
+ @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))
+ @ApiResponses({
+ @ApiResponse(code = 200,
+ message = "Realm successfully updated enriched with propagation status information, as Entity",
+ response = ProvisioningResult.class)
+ , @ApiResponse(code = 204,
+ message = "No content if 'Prefer: return-no-content' was specified", responseHeaders =
+ @ResponseHeader(name = RESTHeaders.PREFERENCE_APPLIED, response = String.class,
+ description = "Allows the server to inform the "
+ + "client about the fact that a specified preference was applied")) })
@PUT
@Path("{fullPath:.*}")
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@@ -95,8 +133,21 @@ public interface RealmService extends JAXRSService {
*
* @param fullPath realm path
* @return Response object featuring the deleted realm enriched with propagation status information
- * - ProvisioningResult as Entity
*/
+ @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))
+ @ApiResponses({
+ @ApiResponse(code = 200,
+ message = "Realm successfully deleted enriched with propagation status information, as Entity",
+ response = ProvisioningResult.class)
+ , @ApiResponse(code = 204,
+ message = "No content if 'Prefer: return-no-content' was specified", responseHeaders =
+ @ResponseHeader(name = RESTHeaders.PREFERENCE_APPLIED, response = String.class,
+ description = "Allows the server to inform the "
+ + "client about the fact that a specified preference was applied")) })
@DELETE
@Path("{fullPath:.*}")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/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 c6ed7bc..4822d72 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,7 +19,10 @@
package org.apache.syncope.common.rest.api.service;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.Authorization;
+import io.swagger.annotations.ResponseHeader;
import java.util.List;
import javax.validation.constraints.NotNull;
import javax.ws.rs.Consumes;
@@ -30,9 +33,11 @@ import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.syncope.common.lib.to.RelationshipTypeTO;
+import org.apache.syncope.common.rest.api.RESTHeaders;
/**
* REST operations for relationship types.
@@ -69,6 +74,13 @@ public interface RelationshipTypeService extends JAXRSService {
* @param relationshipTypeTO relationshipType to be created
* @return Response object featuring Location header of created relationshipType
*/
+ @ApiResponses(
+ @ApiResponse(code = 201,
+ message = "RelationshipType successfully created", responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "Key value for the entity created")
+ , @ResponseHeader(name = HttpHeaders.LOCATION, response = String.class,
+ description = "URL of the entity created") }))
@POST
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/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 2d9fa5a..5f5a2ad 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,7 +19,10 @@
package org.apache.syncope.common.rest.api.service;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.Authorization;
+import io.swagger.annotations.ResponseHeader;
import java.util.List;
import javax.validation.constraints.NotNull;
import javax.ws.rs.Consumes;
@@ -31,10 +34,12 @@ import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.syncope.common.lib.to.ReportTO;
import org.apache.syncope.common.lib.types.ReportExecExportFormat;
+import org.apache.syncope.common.rest.api.RESTHeaders;
/**
* REST operations for reports.
@@ -71,6 +76,13 @@ public interface ReportService extends ExecutableService {
* @param reportTO report to be created
* @return Response object featuring Location header of created report
*/
+ @ApiResponses(
+ @ApiResponse(code = 201,
+ message = "Report successfully created", responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "UUID generated for the entity created")
+ , @ResponseHeader(name = HttpHeaders.LOCATION, response = String.class,
+ description = "URL of the entity created") }))
@POST
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ReportTemplateService.java
----------------------------------------------------------------------
diff --git a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ReportTemplateService.java b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ReportTemplateService.java
index 3172891..4de84e2 100644
--- a/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ReportTemplateService.java
+++ b/common/rest-api/src/main/java/org/apache/syncope/common/rest/api/service/ReportTemplateService.java
@@ -19,7 +19,10 @@
package org.apache.syncope.common.rest.api.service;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.Authorization;
+import io.swagger.annotations.ResponseHeader;
import java.io.InputStream;
import java.util.List;
import javax.validation.constraints.NotNull;
@@ -31,10 +34,12 @@ import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.syncope.common.lib.to.ReportTemplateTO;
import org.apache.syncope.common.lib.types.ReportTemplateFormat;
+import org.apache.syncope.common.rest.api.RESTHeaders;
/**
* REST operations for report templates.
@@ -60,6 +65,13 @@ public interface ReportTemplateService extends JAXRSService {
* @param reportTemplateTO Creates a new report template.
* @return Response object featuring Location header of created report template
*/
+ @ApiResponses(
+ @ApiResponse(code = 201,
+ message = "ReportTemplate successfully created", responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "Key value for the entity created")
+ , @ResponseHeader(name = HttpHeaders.LOCATION, response = String.class,
+ description = "URL of the entity created") }))
@POST
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
Response create(@NotNull ReportTemplateTO reportTemplateTO);
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/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 af91854..e36f7a5 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,7 +19,10 @@
package org.apache.syncope.common.rest.api.service;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.Authorization;
+import io.swagger.annotations.ResponseHeader;
import java.util.List;
import javax.validation.constraints.NotNull;
import javax.ws.rs.BeanParam;
@@ -31,6 +34,7 @@ import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.syncope.common.lib.patch.ResourceDeassociationPatch;
@@ -38,6 +42,7 @@ import org.apache.syncope.common.lib.to.BulkActionResult;
import org.apache.syncope.common.lib.to.ConnObjectTO;
import org.apache.syncope.common.lib.to.PagedConnObjectTOResult;
import org.apache.syncope.common.lib.to.ResourceTO;
+import org.apache.syncope.common.rest.api.RESTHeaders;
import org.apache.syncope.common.rest.api.beans.ConnObjectTOListQuery;
/**
@@ -108,6 +113,13 @@ public interface ResourceService extends JAXRSService {
* @param resourceTO Resource to be created
* @return Response object featuring Location header of created resource
*/
+ @ApiResponses(
+ @ApiResponse(code = 201,
+ message = "Resource successfully created", responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "Key value for the entity created")
+ , @ResponseHeader(name = HttpHeaders.LOCATION, response = String.class,
+ description = "URL of the entity created") }))
@POST
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/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 5e55b1e..61d6144 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,7 +19,10 @@
package org.apache.syncope.common.rest.api.service;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.Authorization;
+import io.swagger.annotations.ResponseHeader;
import java.io.InputStream;
import java.util.List;
import javax.validation.constraints.NotNull;
@@ -31,9 +34,11 @@ import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.syncope.common.lib.to.RoleTO;
+import org.apache.syncope.common.rest.api.RESTHeaders;
/**
* REST operations for roles.
@@ -70,6 +75,13 @@ public interface RoleService extends JAXRSService {
* @param roleTO role to be created
* @return Response object featuring Location header of created role
*/
+ @ApiResponses(
+ @ApiResponse(code = 201,
+ message = "Role successfully created", responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "Key value for the entity created")
+ , @ResponseHeader(name = HttpHeaders.LOCATION, response = String.class,
+ description = "URL of the entity created") }))
@POST
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/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 afb84a5..c925290 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,7 +19,10 @@
package org.apache.syncope.common.rest.api.service;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.Authorization;
+import io.swagger.annotations.ResponseHeader;
import java.util.List;
import javax.validation.constraints.NotNull;
import javax.ws.rs.BeanParam;
@@ -31,10 +34,12 @@ import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.syncope.common.lib.to.SchemaTO;
import org.apache.syncope.common.lib.types.SchemaType;
+import org.apache.syncope.common.rest.api.RESTHeaders;
import org.apache.syncope.common.rest.api.beans.SchemaQuery;
/**
@@ -79,6 +84,13 @@ public interface SchemaService extends JAXRSService {
* @param schemaTO schema to be created
* @return Response object featuring Location header of created schema
*/
+ @ApiResponses(
+ @ApiResponse(code = 201,
+ message = "Schema successfully created", responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "Key value for the entity created")
+ , @ResponseHeader(name = HttpHeaders.LOCATION, response = String.class,
+ description = "URL of the entity created") }))
@POST
@Path("{type}")
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/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 70c408d..ae1b635 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,7 +19,10 @@
package org.apache.syncope.common.rest.api.service;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.Authorization;
+import io.swagger.annotations.ResponseHeader;
import java.util.List;
import javax.validation.constraints.NotNull;
import javax.ws.rs.Consumes;
@@ -30,9 +33,11 @@ import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.syncope.common.lib.to.SecurityQuestionTO;
+import org.apache.syncope.common.rest.api.RESTHeaders;
/**
* REST operations for configuration.
@@ -69,6 +74,13 @@ public interface SecurityQuestionService extends JAXRSService {
* @param securityQuestionTO security question to be created
* @return Response object featuring Location header of created security question
*/
+ @ApiResponses(
+ @ApiResponse(code = 201,
+ message = "SecurityQuestion successfully created", responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "UUID generated for the entity created")
+ , @ResponseHeader(name = HttpHeaders.LOCATION, response = String.class,
+ description = "URL of the entity created") }))
@POST
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/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 f3f0dbc..006a3c3 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,7 +19,10 @@
package org.apache.syncope.common.rest.api.service;
import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.Authorization;
+import io.swagger.annotations.ResponseHeader;
import javax.validation.constraints.NotNull;
import javax.ws.rs.BeanParam;
import javax.ws.rs.Consumes;
@@ -32,6 +35,7 @@ import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.syncope.common.lib.to.TaskTO;
@@ -40,6 +44,7 @@ import org.apache.syncope.common.lib.to.BulkActionResult;
import org.apache.syncope.common.lib.to.PagedResult;
import org.apache.syncope.common.lib.to.SchedTaskTO;
import org.apache.syncope.common.lib.types.TaskType;
+import org.apache.syncope.common.rest.api.RESTHeaders;
import org.apache.syncope.common.rest.api.beans.TaskQuery;
/**
@@ -87,6 +92,13 @@ public interface TaskService extends ExecutableService {
* @param taskTO task to be created
* @return Response object featuring Location header of created task
*/
+ @ApiResponses(
+ @ApiResponse(code = 201,
+ message = "Task successfully created", responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "UUID generated for the entity created")
+ , @ResponseHeader(name = HttpHeaders.LOCATION, response = String.class,
+ description = "URL of the entity created") }))
@POST
@Path("{type}")
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/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 4f640dd..1256f0e 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
@@ -19,8 +19,13 @@
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.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
import io.swagger.annotations.Authorization;
+import io.swagger.annotations.ResponseHeader;
import javax.validation.constraints.NotNull;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
@@ -31,12 +36,15 @@ import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.cxf.jaxrs.ext.PATCH;
import org.apache.syncope.common.lib.patch.StatusPatch;
import org.apache.syncope.common.lib.patch.UserPatch;
+import org.apache.syncope.common.lib.to.ProvisioningResult;
import org.apache.syncope.common.lib.to.UserTO;
+import org.apache.syncope.common.rest.api.RESTHeaders;
/**
* REST operations for user self-management.
@@ -48,12 +56,20 @@ public interface UserSelfService extends JAXRSService {
/**
* Returns the user making the service call.
*
- * @return calling user data, including owned entitlements as header value
- * {@link org.apache.syncope.common.rest.api.RESTHeaders#OWNED_ENTITLEMENTS}
+ * @return calling user data, including own UUID and entitlements
*/
@ApiOperation(value = "", authorizations = {
@Authorization(value = "BasicAuthentication")
, @Authorization(value = "Bearer") })
+ @ApiResponses(
+ @ApiResponse(code = 200, message = "Calling user data, including own UUID and entitlements",
+ response = UserTO.class, responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "UUID of the calling user")
+ ,
+ @ResponseHeader(name = RESTHeaders.OWNED_ENTITLEMENTS, response = String.class,
+ description = "List of entitlements owned by the calling user")
+ }))
@GET
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
Response read();
@@ -63,9 +79,26 @@ public interface UserSelfService extends JAXRSService {
*
* @param userTO user to be created
* @param storePassword whether password shall be stored internally
- * @return Response object featuring Location header of self-registered user as well as the user
- * itself - ProvisioningResult as Entity
+ * @return Response object featuring Location header of self-registered user as well as the user itself
+ * enriched with propagation status information
*/
+ @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))
+ @ApiResponses(
+ @ApiResponse(code = 201,
+ message = "User successfully created enriched with propagation status information, as Entity,"
+ + "or empty if 'Prefer: return-no-content' was specified",
+ response = ProvisioningResult.class, responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "UUID generated for the user created")
+ , @ResponseHeader(name = HttpHeaders.LOCATION, response = String.class,
+ description = "URL of the user created")
+ , @ResponseHeader(name = RESTHeaders.PREFERENCE_APPLIED, response = String.class,
+ description = "Allows the server to inform the "
+ + "client about the fact that a specified preference was applied") }))
@POST
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@@ -76,11 +109,25 @@ public interface UserSelfService extends JAXRSService {
* Self-updates user.
*
* @param patch modification to be applied to self
- * @return Response object featuring the updated user - ProvisioningResult as Entity
+ * @return Response object featuring the updated user
*/
@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))
+ @ApiResponses({
+ @ApiResponse(code = 200,
+ message = "User successfully updated enriched with propagation status information, as Entity",
+ response = ProvisioningResult.class)
+ , @ApiResponse(code = 204,
+ message = "No content if 'Prefer: return-no-content' was specified", responseHeaders =
+ @ResponseHeader(name = RESTHeaders.PREFERENCE_APPLIED, response = String.class,
+ description = "Allows the server to inform the "
+ + "client about the fact that a specified preference was applied")) })
@PATCH
@Path("{key}")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@@ -91,11 +138,25 @@ public interface UserSelfService extends JAXRSService {
* Self-updates user.
*
* @param user complete update
- * @return Response object featuring the updated user - ProvisioningResult as Entity
+ * @return Response object featuring the updated user
*/
@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))
+ @ApiResponses({
+ @ApiResponse(code = 200,
+ message = "User successfully updated enriched with propagation status information, as Entity",
+ response = ProvisioningResult.class)
+ , @ApiResponse(code = 204,
+ message = "No content if 'Prefer: return-no-content' was specified", responseHeaders =
+ @ResponseHeader(name = RESTHeaders.PREFERENCE_APPLIED, response = String.class,
+ description = "Allows the server to inform the "
+ + "client about the fact that a specified preference was applied")) })
@PUT
@Path("{key}")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@@ -107,11 +168,21 @@ public interface UserSelfService extends JAXRSService {
*
* @param statusPatch status update details
* @return Response object featuring the updated user enriched with propagation status information
- * - ProvisioningResult as Entity
*/
- @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))
+ @ApiResponses({
+ @ApiResponse(code = 200,
+ message = "User successfully updated enriched with propagation status information, as Entity",
+ response = ProvisioningResult.class)
+ , @ApiResponse(code = 204,
+ message = "No content if 'Prefer: return-no-content' was specified", responseHeaders =
+ @ResponseHeader(name = RESTHeaders.PREFERENCE_APPLIED, response = String.class,
+ description = "Allows the server to inform the "
+ + "client about the fact that a specified preference was applied")) })
@POST
@Path("{key}/status")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@@ -121,7 +192,7 @@ public interface UserSelfService extends JAXRSService {
/**
* Self-deletes user.
*
- * @return Response object featuring the deleted user - ProvisioningResult as Entity
+ * @return Response object featuring the deleted user
*/
@ApiOperation(value = "", authorizations = {
@Authorization(value = "BasicAuthentication")
@@ -135,7 +206,7 @@ public interface UserSelfService extends JAXRSService {
*
* @param password the password value to update
*
- * @return Response object featuring the updated user - ProvisioningResult as Entity
+ * @return Response object featuring the updated user
*/
@ApiOperation(value = "", authorizations = {
@Authorization(value = "BasicAuthentication")
http://git-wip-us.apache.org/repos/asf/syncope/blob/ec7571f4/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 7b4a11d..5e9c155 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
@@ -19,7 +19,12 @@
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;
+import io.swagger.annotations.ResponseHeader;
import javax.validation.constraints.NotNull;
import javax.ws.rs.Consumes;
import javax.ws.rs.DefaultValue;
@@ -28,12 +33,17 @@ import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
+import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.cxf.jaxrs.ext.PATCH;
import org.apache.syncope.common.lib.patch.StatusPatch;
import org.apache.syncope.common.lib.patch.UserPatch;
+import org.apache.syncope.common.lib.to.PagedResult;
+import org.apache.syncope.common.lib.to.ProvisioningResult;
import org.apache.syncope.common.lib.to.UserTO;
+import org.apache.syncope.common.rest.api.RESTHeaders;
+import org.apache.syncope.common.rest.api.beans.AnyQuery;
/**
* REST operations for users.
@@ -44,14 +54,37 @@ import org.apache.syncope.common.lib.to.UserTO;
@Path("users")
public interface UserService extends AnyService<UserTO> {
+ @Override
+ UserTO read(String key);
+
+ @Override
+ PagedResult<UserTO> search(AnyQuery anyQuery);
+
/**
* Creates a new user.
*
* @param userTO user to be created
* @param storePassword whether password shall be stored internally
* @return Response object featuring Location header of created user as well as the user itself
- * enriched with propagation status information - ProvisioningResult as Entity
+ * enriched with propagation status information
*/
+ @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))
+ @ApiResponses(
+ @ApiResponse(code = 201,
+ message = "User successfully created enriched with propagation status information, as Entity,"
+ + "or empty if 'Prefer: return-no-content' was specified",
+ response = ProvisioningResult.class, responseHeaders = {
+ @ResponseHeader(name = RESTHeaders.RESOURCE_KEY, response = String.class,
+ description = "UUID generated for the user created")
+ , @ResponseHeader(name = HttpHeaders.LOCATION, response = String.class,
+ description = "URL of the user created")
+ , @ResponseHeader(name = RESTHeaders.PREFERENCE_APPLIED, response = String.class,
+ description = "Allows the server to inform the "
+ + "client about the fact that a specified preference was applied") }))
@POST
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@@ -64,8 +97,21 @@ public interface UserService extends AnyService<UserTO> {
*
* @param userPatch modification to be applied to user matching the provided key
* @return Response object featuring the updated user enriched with propagation status information
- * - ProvisioningResult as Entity
*/
+ @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))
+ @ApiResponses({
+ @ApiResponse(code = 200,
+ message = "User successfully updated enriched with propagation status information, as Entity",
+ response = ProvisioningResult.class)
+ , @ApiResponse(code = 204,
+ message = "No content if 'Prefer: return-no-content' was specified", responseHeaders =
+ @ResponseHeader(name = RESTHeaders.PREFERENCE_APPLIED, response = String.class,
+ description = "Allows the server to inform the "
+ + "client about the fact that a specified preference was applied")) })
@PATCH
@Path("{key}")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@@ -77,8 +123,21 @@ public interface UserService extends AnyService<UserTO> {
*
* @param userTO complete update
* @return Response object featuring the updated user enriched with propagation status information
- * - ProvisioningResult as Entity
*/
+ @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))
+ @ApiResponses({
+ @ApiResponse(code = 200,
+ message = "User successfully updated enriched with propagation status information, as Entity",
+ response = ProvisioningResult.class)
+ , @ApiResponse(code = 204,
+ message = "No content if 'Prefer: return-no-content' was specified", responseHeaders =
+ @ResponseHeader(name = RESTHeaders.PREFERENCE_APPLIED, response = String.class,
+ description = "Allows the server to inform the "
+ + "client about the fact that a specified preference was applied")) })
@PUT
@Path("{key}")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@@ -90,8 +149,21 @@ public interface UserService extends AnyService<UserTO> {
*
* @param statusPatch status update details
* @return Response object featuring the updated user enriched with propagation status information
- * - ProvisioningResult as Entity
*/
+ @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))
+ @ApiResponses({
+ @ApiResponse(code = 200,
+ message = "User successfully updated enriched with propagation status information, as Entity",
+ response = ProvisioningResult.class)
+ , @ApiResponse(code = 204,
+ message = "No content if 'Prefer: return-no-content' was specified", responseHeaders =
+ @ResponseHeader(name = RESTHeaders.PREFERENCE_APPLIED, response = String.class,
+ description = "Allows the server to inform the "
+ + "client about the fact that a specified preference was applied")) })
@POST
@Path("{key}/status")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })