Add collaboration feature
[sdc.git] / openecomp-be / api / openecomp-sdc-rest-webapp / vendor-software-products-rest / vendor-software-products-rest-services / src / main / java / org / openecomp / sdcrests / vsp / rest / Processes.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * SDC
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.openecomp.sdcrests.vsp.rest;
22
23 import io.swagger.annotations.Api;
24 import io.swagger.annotations.ApiOperation;
25 import io.swagger.annotations.ApiParam;
26 import org.apache.cxf.jaxrs.ext.multipart.Attachment;
27 import org.apache.cxf.jaxrs.ext.multipart.Multipart;
28 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ProcessEntityDto;
29 import org.openecomp.sdcrests.vendorsoftwareproducts.types.ProcessRequestDto;
30 import org.springframework.validation.annotation.Validated;
31
32 import javax.validation.Valid;
33 import javax.validation.constraints.NotNull;
34 import javax.ws.rs.Consumes;
35 import javax.ws.rs.DELETE;
36 import javax.ws.rs.GET;
37 import javax.ws.rs.HeaderParam;
38 import javax.ws.rs.POST;
39 import javax.ws.rs.PUT;
40 import javax.ws.rs.Path;
41 import javax.ws.rs.PathParam;
42 import javax.ws.rs.Produces;
43 import javax.ws.rs.core.MediaType;
44 import javax.ws.rs.core.Response;
45
46 import static org.openecomp.sdcrests.common.RestConstants.USER_ID_HEADER_PARAM;
47 import static org.openecomp.sdcrests.common.RestConstants.USER_MISSING_ERROR_MSG;
48
49 @Path("/v1.0/vendor-software-products/{vspId}/versions/{versionId}/processes")
50 @Produces(MediaType.APPLICATION_JSON)
51 @Consumes(MediaType.APPLICATION_JSON)
52 @Api(value = "Vendor Software Product Processes")
53 @Validated
54 public interface Processes {
55   @GET
56   @Path("/")
57   @ApiOperation(value = "List vendor software product processes",
58       response = ProcessEntityDto.class,
59       responseContainer = "List")
60   Response list(@ApiParam(value = "Vendor software product Id") @PathParam("vspId") String vspId,
61                 @ApiParam(value = "Vendor software product version Id") @PathParam("versionId") String versionId,
62                 @NotNull(message = USER_MISSING_ERROR_MSG) @HeaderParam(USER_ID_HEADER_PARAM)
63                     String user);
64
65   @DELETE
66   @Path("/")
67   @ApiOperation(value = "Delete vendor software product processes",
68       responseContainer = "List")
69   Response deleteList(
70       @ApiParam(value = "Vendor software product Id") @PathParam("vspId") String vspId,
71       @ApiParam(value = "Vendor software product version Id") @PathParam("versionId") String versionId,
72       @NotNull(message = USER_MISSING_ERROR_MSG) @HeaderParam(USER_ID_HEADER_PARAM) String user);
73
74   @POST
75   @Path("/")
76   @ApiOperation(value = "Create a vendor software product process")
77   Response create(@Valid ProcessRequestDto request,
78                   @ApiParam(value = "Vendor software product Id") @PathParam("vspId") String vspId,
79                   @ApiParam(value = "Vendor software product version Id") @PathParam("versionId") String versionId,
80                   @NotNull(message = USER_MISSING_ERROR_MSG) @HeaderParam(USER_ID_HEADER_PARAM)
81                       String user);
82
83   @GET
84   @Path("/{processId}")
85   @ApiOperation(value = "Get vendor software product process",
86       response = ProcessEntityDto.class)
87   Response get(@ApiParam(value = "Vendor software product Id") @PathParam("vspId") String vspId,
88                @ApiParam(value = "Vendor software product version Id") @PathParam("versionId") String versionId,
89                @ApiParam(value = "Vendor software product process Id") @PathParam("processId")
90                    String processId,
91                @NotNull(message = USER_MISSING_ERROR_MSG) @HeaderParam(USER_ID_HEADER_PARAM)
92                    String user);
93
94   @DELETE
95   @Path("/{processId}")
96   @ApiOperation(value = "Delete vendor software product process")
97   Response delete(@ApiParam(value = "Vendor software product Id") @PathParam("vspId") String vspId,
98                   @ApiParam(value = "Vendor software product version Id") @PathParam("versionId") String versionId,
99                   @ApiParam(value = "Vendor software product process Id") @PathParam("processId")
100                       String processId,
101                   @NotNull(message = USER_MISSING_ERROR_MSG) @HeaderParam(USER_ID_HEADER_PARAM)
102                       String user);
103
104   @PUT
105   @Path("/{processId}")
106   @ApiOperation(value = "Update vendor software product process")
107   Response update(@Valid ProcessRequestDto request,
108                   @ApiParam(value = "Vendor software product Id") @PathParam("vspId") String vspId,
109                   @ApiParam(value = "Vendor software product version Id") @PathParam("versionId") String versionId,
110                   @ApiParam(value = "Vendor software product process Id") @PathParam("processId")
111                       String processId,
112                   @NotNull(message = USER_MISSING_ERROR_MSG) @HeaderParam(USER_ID_HEADER_PARAM)
113                       String user);
114
115   @GET
116   @Path("/{processId}/upload")
117   @Produces(MediaType.APPLICATION_OCTET_STREAM)
118   @ApiOperation(value = "Get vendor software product process uploaded file")
119   Response getUploadedFile(
120       @ApiParam(value = "Vendor software product Id") @PathParam("vspId") String vspId,
121       @ApiParam(value = "Vendor software product version Id") @PathParam("versionId") String versionId,
122       @ApiParam(value = "Vendor software product process Id") @PathParam("processId")
123           String processId,
124       @NotNull(message = USER_MISSING_ERROR_MSG) @HeaderParam(USER_ID_HEADER_PARAM) String user);
125
126   @DELETE
127   @Path("/{processId}/upload")
128   @ApiOperation(value = "Delete vendor software product process uploaded file")
129   Response deleteUploadedFile(
130       @ApiParam(value = "Vendor software product Id") @PathParam("vspId") String vspId,
131       @ApiParam(value = "Vendor software product version Id") @PathParam("versionId") String versionId,
132       @ApiParam(value = "Vendor software product process Id") @PathParam("processId")
133           String processId,
134       @NotNull(message = USER_MISSING_ERROR_MSG) @HeaderParam(USER_ID_HEADER_PARAM) String user);
135
136   @POST
137   @Path("/{processId}/upload")
138   @Consumes(MediaType.MULTIPART_FORM_DATA)
139   @ApiOperation(value = "Update vendor software product process upload")
140   Response uploadFile(@Multipart("upload") Attachment attachment,
141                       @ApiParam(value = "Vendor software product Id") @PathParam("vspId") String vspId,
142                       @ApiParam(value = "Vendor software product version Id") @PathParam("versionId") String versionId,
143                       @ApiParam(value = "Vendor software product process Id")
144                       @PathParam("processId") String processId,
145                       @NotNull(message = USER_MISSING_ERROR_MSG) @HeaderParam(USER_ID_HEADER_PARAM)
146                           String user);
147 }