View Javadoc
1   package de.dlr.shepard.endpoints;
2   
3   import de.dlr.shepard.mongoDB.StructuredData;
4   import de.dlr.shepard.mongoDB.StructuredDataPayload;
5   import de.dlr.shepard.neo4Core.io.PermissionsIO;
6   import de.dlr.shepard.neo4Core.io.RolesIO;
7   import de.dlr.shepard.neo4Core.io.StructuredDataContainerIO;
8   import de.dlr.shepard.neo4Core.orderBy.ContainerAttributes;
9   import de.dlr.shepard.util.Constants;
10  import io.swagger.v3.oas.annotations.Operation;
11  import io.swagger.v3.oas.annotations.media.ArraySchema;
12  import io.swagger.v3.oas.annotations.media.Content;
13  import io.swagger.v3.oas.annotations.media.Schema;
14  import io.swagger.v3.oas.annotations.parameters.RequestBody;
15  import io.swagger.v3.oas.annotations.responses.ApiResponse;
16  import io.swagger.v3.oas.annotations.tags.Tag;
17  import jakarta.validation.Valid;
18  import jakarta.ws.rs.core.Response;
19  
20  public interface StructuredDataRest {
21  
22  	@Tag(name = Constants.STRUCTUREDDATA)
23  	@Operation(description = "Get all structured data containers")
24  	@ApiResponse(description = "ok", responseCode = "200", content = @Content(array = @ArraySchema(schema = @Schema(implementation = StructuredDataContainerIO.class))))
25  	@ApiResponse(description = "not found", responseCode = "404")
26  	Response getAllStructuredDataContainers(String name, Integer page, Integer size, ContainerAttributes orderAttribute,
27  			Boolean orderDesc);
28  
29  	@Tag(name = Constants.STRUCTUREDDATA)
30  	@Operation(description = "Get structured data container")
31  	@ApiResponse(description = "ok", responseCode = "200", content = @Content(schema = @Schema(implementation = StructuredDataContainerIO.class)))
32  	@ApiResponse(description = "not found", responseCode = "404")
33  	Response getStructuredDataContainer(long structuredDataId);
34  
35  	@Tag(name = Constants.STRUCTUREDDATA)
36  	@Operation(description = "Delete structured data container")
37  	@ApiResponse(description = "deleted", responseCode = "204")
38  	@ApiResponse(description = "not found", responseCode = "404")
39  	Response deleteStructuredDataContainer(long structuredDataId);
40  
41  	@Tag(name = Constants.STRUCTUREDDATA)
42  	@Operation(description = "Create a new structured data container")
43  	@ApiResponse(description = "created", responseCode = "201", content = @Content(schema = @Schema(implementation = StructuredDataContainerIO.class)))
44  	@ApiResponse(description = "not found", responseCode = "404")
45  	Response createStructuredDataContainer(
46  			@RequestBody(required = true, content = @Content(schema = @Schema(implementation = StructuredDataContainerIO.class))) @Valid StructuredDataContainerIO structuredDataContainer);
47  
48  	@Tag(name = Constants.STRUCTUREDDATA)
49  	@Operation(description = "Upload a new structured data object")
50  	@ApiResponse(description = "created", responseCode = "201", content = @Content(schema = @Schema(implementation = StructuredData.class)))
51  	@ApiResponse(description = "not found", responseCode = "404")
52  	Response createStructuredData(long structuredDataId,
53  			@RequestBody(required = true, content = @Content(schema = @Schema(implementation = StructuredDataPayload.class))) @Valid StructuredDataPayload payload);
54  
55  	@Tag(name = Constants.STRUCTUREDDATA)
56  	@Operation(description = "Get structured data objects")
57  	@ApiResponse(description = "ok", responseCode = "200", content = @Content(array = @ArraySchema(schema = @Schema(implementation = StructuredData.class))))
58  	@ApiResponse(description = "not found", responseCode = "404")
59  	Response getAllStructuredDatas(long structuredDataId);
60  
61  	@Tag(name = Constants.STRUCTUREDDATA)
62  	@Operation(description = "Download structured data")
63  	@ApiResponse(description = "ok", responseCode = "200", content = @Content(schema = @Schema(implementation = StructuredDataPayload.class)))
64  	@ApiResponse(description = "not found", responseCode = "404")
65  	Response getStructuredData(long structuredDataId, String oid);
66  
67  	@Tag(name = Constants.STRUCTUREDDATA)
68  	@Operation(description = "Delete structured data")
69  	@ApiResponse(description = "ok", responseCode = "204")
70  	@ApiResponse(description = "not found", responseCode = "404")
71  	Response deleteStructuredData(long structuredDataId, String oid);
72  
73  	@Tag(name = Constants.STRUCTUREDDATA)
74  	@Operation(description = "Get permissions")
75  	@ApiResponse(description = "ok", responseCode = "200", content = @Content(schema = @Schema(implementation = PermissionsIO.class)))
76  	@ApiResponse(description = "not found", responseCode = "404")
77  	Response getStructuredDataPermissions(long structuredDataId);
78  
79  	@Tag(name = Constants.STRUCTUREDDATA)
80  	@Operation(description = "Edit permissions")
81  	@ApiResponse(description = "ok", responseCode = "200", content = @Content(schema = @Schema(implementation = PermissionsIO.class)))
82  	@ApiResponse(description = "not found", responseCode = "404")
83  	Response editStructuredDataPermissions(long structuredDataId,
84  			@RequestBody(required = true, content = @Content(schema = @Schema(implementation = PermissionsIO.class))) @Valid PermissionsIO permissions);
85  
86  	@Tag(name = Constants.STRUCTUREDDATA)
87  	@Operation(description = "Get roles")
88  	@ApiResponse(description = "ok", responseCode = "200", content = @Content(schema = @Schema(implementation = RolesIO.class)))
89  	@ApiResponse(description = "not found", responseCode = "404")
90  	Response getStructuredDataRoles(long structuredDataId);
91  }