1 package de.dlr.shepard.endpoints;
2
3 import java.io.IOException;
4 import java.util.Set;
5
6 import de.dlr.shepard.influxDB.FillOption;
7 import de.dlr.shepard.influxDB.SingleValuedUnaryFunction;
8 import de.dlr.shepard.influxDB.TimeseriesPayload;
9 import de.dlr.shepard.neo4Core.io.TimeseriesReferenceIO;
10 import de.dlr.shepard.util.Constants;
11 import io.swagger.v3.oas.annotations.Operation;
12 import io.swagger.v3.oas.annotations.media.ArraySchema;
13 import io.swagger.v3.oas.annotations.media.Content;
14 import io.swagger.v3.oas.annotations.media.Schema;
15 import io.swagger.v3.oas.annotations.parameters.RequestBody;
16 import io.swagger.v3.oas.annotations.responses.ApiResponse;
17 import io.swagger.v3.oas.annotations.tags.Tag;
18 import jakarta.validation.Valid;
19 import jakarta.ws.rs.core.MediaType;
20 import jakarta.ws.rs.core.Response;
21
22 public interface TimeseriesReferenceRest {
23
24 @Tag(name = Constants.TIMESERIES_REFERENCE)
25 @Operation(description = "Get all timeseries references")
26 @ApiResponse(description = "ok", responseCode = "200", content = @Content(array = @ArraySchema(schema = @Schema(implementation = TimeseriesReferenceIO.class))))
27 @ApiResponse(description = "not found", responseCode = "404")
28 Response getAllTimeseriesReferences(long collectionId, long dataObjectId);
29
30 @Tag(name = Constants.TIMESERIES_REFERENCE)
31 @Operation(description = "Get timeseries reference")
32 @ApiResponse(description = "ok", responseCode = "200", content = @Content(schema = @Schema(implementation = TimeseriesReferenceIO.class)))
33 @ApiResponse(description = "not found", responseCode = "404")
34 Response getTimeseriesReference(long collectionId, long dataObjectId, long timeseriesReferenceId);
35
36 @Tag(name = Constants.TIMESERIES_REFERENCE)
37 @Operation(description = "Create a new timeseries reference")
38 @ApiResponse(description = "created", responseCode = "201", content = @Content(schema = @Schema(implementation = TimeseriesReferenceIO.class)))
39 @ApiResponse(description = "not found", responseCode = "404")
40 Response createTimeseriesReference(long collectionId, long dataObjectId,
41 @RequestBody(required = true, content = @Content(schema = @Schema(implementation = TimeseriesReferenceIO.class))) @Valid TimeseriesReferenceIO timeseriesReference);
42
43 @Tag(name = Constants.TIMESERIES_REFERENCE)
44 @Operation(description = "Delete timeseries reference")
45 @ApiResponse(description = "deleted", responseCode = "204")
46 @ApiResponse(description = "not found", responseCode = "404")
47 Response deleteTimeseriesReference(long collectionId, long dataObjectId, long timeseriesReferenceId);
48
49 @Tag(name = Constants.TIMESERIES_REFERENCE)
50 @Operation(description = "Get timeseries reference payload")
51 @ApiResponse(description = "ok", responseCode = "200", content = @Content(array = @ArraySchema(schema = @Schema(implementation = TimeseriesPayload.class))))
52 @ApiResponse(description = "not found", responseCode = "404")
53 Response getTimeseriesPayload(long collectionId, long dataObjectId, long timeseriesReferenceId,
54 SingleValuedUnaryFunction function, Long groupBy, FillOption fillOption, Set<String> deviceFilterTag,
55 Set<String> locationFilterTag, Set<String> symbolicNameFilterTag);
56
57 @Tag(name = Constants.TIMESERIES_REFERENCE)
58 @Operation(description = "Export timeseries reference payload")
59 @ApiResponse(description = "ok", responseCode = "200", content = @Content(mediaType = MediaType.APPLICATION_OCTET_STREAM, schema = @Schema(type = "string", format = "binary")))
60 @ApiResponse(description = "not found", responseCode = "404")
61 Response exportTimeseriesPayload(long collectionId, long dataObjectId, long timeseriesReferenceId,
62 SingleValuedUnaryFunction function, Long groupBy, FillOption fillOption, Set<String> deviceFilterTag,
63 Set<String> locationFilterTag, Set<String> symbolicNameFilterTag) throws IOException;
64
65 }