]> source.dussan.org Git - archiva.git/blob
7afba55d38bd52db034d368c164abd114b86218f
[archiva.git] /
1 package org.apache.archiva.rest.api.services;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *   http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import org.apache.archiva.maven2.model.Artifact;
23 import org.apache.archiva.redback.authorization.RedbackAuthorization;
24 import org.apache.archiva.repository.scanner.RepositoryScanStatistics;
25 import org.apache.archiva.rest.api.model.ArtifactTransferRequest;
26 import org.apache.archiva.security.common.ArchivaRoleConstants;
27
28 import javax.ws.rs.Consumes;
29 import javax.ws.rs.DELETE;
30 import javax.ws.rs.GET;
31 import javax.ws.rs.POST;
32 import javax.ws.rs.Path;
33 import javax.ws.rs.PathParam;
34 import javax.ws.rs.Produces;
35 import javax.ws.rs.QueryParam;
36 import javax.ws.rs.core.MediaType;
37
38 /**
39  * @author Olivier Lamy
40  * @since 1.4-M1
41  */
42 @Path ("/repositoriesService/")
43 public interface RepositoriesService
44 {
45
46     /**
47      * index repository
48      */
49     @Path ("scanRepository")
50     @GET
51     @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN })
52     @RedbackAuthorization (permissions = ArchivaRoleConstants.OPERATION_RUN_INDEXER)
53     Boolean scanRepository( @QueryParam ("repositoryId") String repositoryId,
54                             @QueryParam ("fullScan") boolean fullScan )
55         throws ArchivaRestServiceException;
56
57
58     /**
59      * scan directories
60      * @since 1.4-M3
61      */
62     @Path ("scanRepositoryDirectoriesNow/{repositoryId}")
63     @GET
64     @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN })
65     @RedbackAuthorization (permissions = ArchivaRoleConstants.OPERATION_RUN_INDEXER)
66     RepositoryScanStatistics scanRepositoryDirectoriesNow( @PathParam ("repositoryId") String repositoryId )
67         throws ArchivaRestServiceException;
68
69
70     @Path ("alreadyScanning/{repositoryId}")
71     @GET
72     @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN })
73     @RedbackAuthorization (permissions = ArchivaRoleConstants.OPERATION_RUN_INDEXER)
74     Boolean alreadyScanning( @PathParam ("repositoryId") String repositoryId )
75         throws ArchivaRestServiceException;
76
77     @Path ("removeScanningTaskFromQueue/{repositoryId}")
78     @GET
79     @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN })
80     @RedbackAuthorization (permissions = ArchivaRoleConstants.OPERATION_RUN_INDEXER)
81     Boolean removeScanningTaskFromQueue( @PathParam ("repositoryId") String repositoryId )
82         throws ArchivaRestServiceException;
83
84     @Path ("scanRepositoryNow")
85     @GET
86     @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN })
87     @RedbackAuthorization (permissions = ArchivaRoleConstants.OPERATION_RUN_INDEXER)
88     Boolean scanRepositoryNow( @QueryParam ("repositoryId") String repositoryId,
89                                @QueryParam ("fullScan") boolean fullScan )
90         throws ArchivaRestServiceException;
91
92     /**
93      * permissions are checked in impl
94      * will copy an artifact from the source repository to the target repository
95      */
96     @Path ("copyArtifact")
97     @POST
98     @Consumes ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
99     @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN })
100     @RedbackAuthorization (noPermission = true)
101     Boolean copyArtifact( ArtifactTransferRequest artifactTransferRequest )
102         throws ArchivaRestServiceException;
103
104     @Path ("scheduleDownloadRemoteIndex")
105     @GET
106     @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN })
107     @RedbackAuthorization (permissions = ArchivaRoleConstants.OPERATION_RUN_INDEXER)
108     Boolean scheduleDownloadRemoteIndex( @QueryParam ("repositoryId") String repositoryId,
109                                          @QueryParam ("now") boolean now,
110                                          @QueryParam ("fullDownload") boolean fullDownload )
111         throws ArchivaRestServiceException;
112
113
114     /**
115      * <b>permissions are checked in impl</b>
116      * @since 1.4-M2
117      */
118     @Path ("deleteArtifact")
119     @POST
120     @Consumes ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
121     @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN })
122     @RedbackAuthorization (noPermission = true)
123     Boolean deleteArtifact( Artifact artifact )
124         throws ArchivaRestServiceException;
125
126     /**
127      * <b>permissions are checked in impl</b>
128      * @since 1.4-M4
129      */
130     @Path ("projectVersion/{repositoryId}/{namespace}/{projectId}/{version}")
131     @DELETE
132     @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN })
133     @RedbackAuthorization (noPermission = true)
134     Boolean removeProjectVersion( @PathParam ( "repositoryId" ) String repositoryId,
135                                   @PathParam ( "namespace" ) String namespace, @PathParam ( "projectId" ) String projectId,
136                                   @PathParam ( "version" ) String version )
137         throws ArchivaRestServiceException;
138
139     @Path ("isAuthorizedToDeleteArtifacts/{repositoryId}")
140     @GET
141     @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN })
142     @RedbackAuthorization (noPermission = true, noRestriction = true)
143     Boolean isAuthorizedToDeleteArtifacts( @PathParam ("repositoryId") String repoId )
144         throws ArchivaRestServiceException;
145
146     /**
147      * <b>permissions are checked in impl</b>
148      * @since 1.4-M3
149      */
150     @Path ("deleteGroupId")
151     @GET
152     @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN })
153     @RedbackAuthorization (noPermission = true)
154     Boolean deleteGroupId( @QueryParam ("groupId") String groupId, @QueryParam ("repositoryId") String repositoryId )
155         throws ArchivaRestServiceException;
156
157     /**
158      * <b>permissions are checked in impl</b>
159      * @since 1.4-M4
160      */
161     @Path ("project/{repositoryId}/{groupId}/{projectId}")
162     @DELETE
163     @Produces ({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_PLAIN })
164     @RedbackAuthorization (noPermission = true)
165     Boolean deleteProject( @PathParam ("groupId") String groupId, @PathParam ("projectId") String projectId,
166                            @PathParam ("repositoryId") String repositoryId )
167         throws ArchivaRestServiceException;
168
169
170 }