2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.restconf.nb.rfc8040.rests.services.api;
10 import javax.ws.rs.Consumes;
11 import javax.ws.rs.DELETE;
12 import javax.ws.rs.Encoded;
13 import javax.ws.rs.GET;
14 import javax.ws.rs.POST;
15 import javax.ws.rs.PUT;
16 import javax.ws.rs.Path;
17 import javax.ws.rs.PathParam;
18 import javax.ws.rs.Produces;
19 import javax.ws.rs.core.Context;
20 import javax.ws.rs.core.MediaType;
21 import javax.ws.rs.core.Response;
22 import javax.ws.rs.core.UriInfo;
23 import org.opendaylight.restconf.common.patch.Patch;
24 import org.opendaylight.restconf.common.patch.PatchContext;
25 import org.opendaylight.restconf.common.patch.PatchStatusContext;
26 import org.opendaylight.restconf.nb.rfc8040.MediaTypes;
27 import org.opendaylight.restconf.nb.rfc8040.legacy.NormalizedNodePayload;
30 * The "{+restconf}/data" subtree represents the datastore resource type, which
31 * is a collection of configuration data and state data nodes.
34 public interface RestconfDataService {
36 * Get target data resource.
42 * @return {@link NormalizedNodePayload}
45 @Path("/data/{identifier:.+}")
47 MediaTypes.APPLICATION_YANG_DATA_JSON,
48 MediaTypes.APPLICATION_YANG_DATA_XML,
49 MediaType.APPLICATION_JSON,
50 MediaType.APPLICATION_XML,
53 Response readData(@Encoded @PathParam("identifier") String identifier, @Context UriInfo uriInfo);
56 * Get target data resource from data root.
60 * @return {@link NormalizedNodePayload}
65 MediaTypes.APPLICATION_YANG_DATA_JSON,
66 MediaTypes.APPLICATION_YANG_DATA_XML,
67 MediaType.APPLICATION_JSON,
68 MediaType.APPLICATION_XML,
71 Response readData(@Context UriInfo uriInfo);
74 * Create or replace the target data resource.
79 * data node for put to config DS
80 * @return {@link Response}
83 @Path("/data/{identifier:.+}")
85 MediaTypes.APPLICATION_YANG_DATA_JSON,
86 MediaTypes.APPLICATION_YANG_DATA_XML,
87 MediaType.APPLICATION_JSON,
88 MediaType.APPLICATION_XML,
91 Response putData(@Encoded @PathParam("identifier") String identifier, NormalizedNodePayload payload,
92 @Context UriInfo uriInfo);
95 * Create a data resource in target.
103 * @return {@link Response}
106 @Path("/data/{identifier:.+}")
108 MediaTypes.APPLICATION_YANG_DATA_JSON,
109 MediaTypes.APPLICATION_YANG_DATA_XML,
110 MediaType.APPLICATION_JSON,
111 MediaType.APPLICATION_XML,
114 Response postData(@Encoded @PathParam("identifier") String identifier, NormalizedNodePayload payload,
115 @Context UriInfo uriInfo);
118 * Create a data resource.
124 * @return {@link Response}
129 MediaTypes.APPLICATION_YANG_DATA_JSON,
130 MediaTypes.APPLICATION_YANG_DATA_XML,
131 MediaType.APPLICATION_JSON,
132 MediaType.APPLICATION_XML,
135 Response postData(NormalizedNodePayload payload, @Context UriInfo uriInfo);
138 * Delete the target data resource.
142 * @return {@link Response}
145 @Path("/data/{identifier:.+}")
146 Response deleteData(@Encoded @PathParam("identifier") String identifier);
149 * Ordered list of edits that are applied to the target datastore by the
158 * @return {@link PatchStatusContext}
161 @Path("/data/{identifier:.+}")
163 MediaTypes.APPLICATION_YANG_PATCH_JSON,
164 MediaTypes.APPLICATION_YANG_PATCH_XML
167 MediaTypes.APPLICATION_YANG_DATA_JSON,
168 MediaTypes.APPLICATION_YANG_DATA_XML
170 PatchStatusContext patchData(@Encoded @PathParam("identifier") String identifier, PatchContext context,
171 @Context UriInfo uriInfo);
174 * Ordered list of edits that are applied to the datastore by the server.
180 * @return {@link PatchStatusContext}
185 MediaTypes.APPLICATION_YANG_PATCH_JSON,
186 MediaTypes.APPLICATION_YANG_PATCH_XML
189 MediaTypes.APPLICATION_YANG_DATA_JSON,
190 MediaTypes.APPLICATION_YANG_DATA_XML
192 PatchStatusContext patchData(PatchContext context, @Context UriInfo uriInfo);
196 * Partially modify the target data resource.
201 * data node for put to config DS
202 * @return {@link Response}
205 @Path("/data/{identifier:.+}")
207 MediaTypes.APPLICATION_YANG_DATA_JSON,
208 MediaTypes.APPLICATION_YANG_DATA_XML,
209 MediaType.APPLICATION_JSON,
210 MediaType.APPLICATION_XML,
213 Response patchData(@Encoded @PathParam("identifier") String identifier, NormalizedNodePayload payload,
214 @Context UriInfo uriInfo);