Add collaboration feature
[sdc.git] / openecomp-be / api / openecomp-sdc-rest-webapp / item-rest / item-rest-services / src / main / java / org / openecomp / sdcrests / item / rest / Versions.java
1 package org.openecomp.sdcrests.item.rest;
2
3 import io.swagger.annotations.Api;
4 import io.swagger.annotations.ApiOperation;
5 import io.swagger.annotations.ApiParam;
6 import org.openecomp.sdcrests.item.types.ActivityLogDto;
7 import org.openecomp.sdcrests.item.types.RevisionDto;
8 import org.openecomp.sdcrests.item.types.VersionActionRequestDto;
9 import org.openecomp.sdcrests.item.types.VersionDto;
10 import org.openecomp.sdcrests.item.types.VersionRequestDto;
11 import org.springframework.validation.annotation.Validated;
12
13 import javax.validation.constraints.NotNull;
14 import javax.ws.rs.Consumes;
15 import javax.ws.rs.GET;
16 import javax.ws.rs.HeaderParam;
17 import javax.ws.rs.POST;
18 import javax.ws.rs.PUT;
19 import javax.ws.rs.Path;
20 import javax.ws.rs.PathParam;
21 import javax.ws.rs.Produces;
22 import javax.ws.rs.core.MediaType;
23 import javax.ws.rs.core.Response;
24
25 import static org.openecomp.sdcrests.common.RestConstants.USER_ID_HEADER_PARAM;
26 import static org.openecomp.sdcrests.common.RestConstants.USER_MISSING_ERROR_MSG;
27
28 @Path("/v1.0/items/{itemId}/versions")
29 @Produces(MediaType.APPLICATION_JSON)
30 @Consumes(MediaType.APPLICATION_JSON)
31 @Api(value = "Item Versions")
32 @Validated
33 public interface Versions {
34
35   @GET
36   @Path("/")
37   @ApiOperation(value = "Lists item versions",
38       response = VersionDto.class,
39       responseContainer = "List")
40   Response list(@PathParam("itemId") String itemId,
41                 @NotNull(message = USER_MISSING_ERROR_MSG)
42                 @HeaderParam(USER_ID_HEADER_PARAM) String user);
43
44   @POST
45   @Path("/{versionId}")
46   @ApiOperation(value = "Creates a new item version")
47   Response create(VersionRequestDto request,
48                   @PathParam("itemId") String itemId,
49                   @PathParam("versionId") String versionId,
50                   @NotNull(message = USER_MISSING_ERROR_MSG)
51                   @HeaderParam(USER_ID_HEADER_PARAM) String user);
52
53   @GET
54   @Path("/{versionId}")
55   @ApiOperation(value = "Gets item version", response = VersionDto.class)
56   Response get(@PathParam("itemId") String itemId,
57                @PathParam("versionId") String versionId,
58                @NotNull(message = USER_MISSING_ERROR_MSG)
59                @HeaderParam(USER_ID_HEADER_PARAM) String user);
60
61   @GET
62   @Path("/{versionId}/activity-logs")
63   @ApiOperation(value = "Gets item version activity log",
64       response = ActivityLogDto.class,
65       responseContainer = "List")
66   Response getActivityLog(@ApiParam("Item Id") @PathParam("itemId") String itemId,
67                           @ApiParam("Version Id") @PathParam("versionId") String versionId,
68                           @NotNull(message = USER_MISSING_ERROR_MSG)
69                           @HeaderParam(USER_ID_HEADER_PARAM) String user);
70
71   @GET
72   @Path("/{versionId}/revisions")
73   @ApiOperation(value = "Gets item version revisions", response = RevisionDto.class,
74       responseContainer = "List")
75   Response listRevisions(@PathParam("itemId") String itemId,
76                          @PathParam("versionId") String versionId,
77                          @NotNull(message = USER_MISSING_ERROR_MSG)
78                @HeaderParam(USER_ID_HEADER_PARAM) String user);
79
80   @PUT
81   @Path("/{versionId}/actions")
82   @ApiOperation(value = "Acts on item version")
83   Response actOn(VersionActionRequestDto request,
84                  @PathParam("itemId") String itemId,
85                  @PathParam("versionId") String versionId,
86                  @NotNull(message = USER_MISSING_ERROR_MSG)
87                  @HeaderParam(USER_ID_HEADER_PARAM) String user);
88 }