f670b8be105fd0e3334134561a569905a126307e
[netconf.git] / restconf / restconf-nb-rfc8040 / src / main / java / org / opendaylight / restconf / nb / rfc8040 / rests / services / api / RootResourceDiscoveryService.java
1 /*
2  * Copyright (c) 2020 ZTE Corp. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.restconf.nb.rfc8040.rests.services.api;
9
10 import javax.ws.rs.GET;
11 import javax.ws.rs.Path;
12 import javax.ws.rs.Produces;
13 import javax.ws.rs.core.Response;
14 import org.opendaylight.restconf.nb.rfc8040.Rfc8040;
15 import org.opendaylight.restconf.nb.rfc8040.utils.RestconfConstants;
16
17 /**
18  * Controller for determining the {@code Root Resource} of the RESTCONF API. This interface serves up a
19  * {@code host-meta} document as defined in
20  * <a href="https://tools.ietf.org/html/rfc8040#section-3">RFC6415 section 3</a>.
21  */
22 // FIXME: this really should be the endpoint's job to aggregate these. Once JAX-RS (or any other wiring) can provide it,
23 //        integrate with that framework, so we co-exist with others.
24 public interface RootResourceDiscoveryService {
25     /**
26      * Root Resource Discovery. See: https://tools.ietf.org/html/rfc8040#section-3.1
27      */
28     @GET
29     @Path("/host-meta")
30     @Produces({Rfc8040.MediaTypes.XRD + RestconfConstants.XML})
31     Response readXrdData();
32
33     /**
34      * Root Resource Discovery as a <a href="https://tools.ietf.org/html/rfc6415#appendix-A">JRD</a>.
35      */
36     @GET
37     @Path("/host-meta.json")
38     @Produces({Rfc8040.MediaTypes.XRD + RestconfConstants.JSON})
39     Response readJsonData();
40 }