/*
* Copyright (c) 2023 PANTHEON.tech, s.r.o. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.restconf.server.api;
import java.net.URI;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.opendaylight.restconf.common.errors.RestconfFuture;
import org.opendaylight.restconf.nb.rfc8040.databind.OperationInputBody;
import org.opendaylight.restconf.nb.rfc8040.legacy.NormalizedNodePayload;
import org.opendaylight.restconf.server.spi.OperationOutput;
/**
* An implementation of a RESTCONF server, implementing the
* RESTCONF API Resource.
*/
@NonNullByDefault
public interface RestconfServer {
/**
* Return the revision of {@code ietf-yang-library} module implemented by this server, as defined in
* RFC8040 {+restconf}/yang-library-version.
*
* @return A {@code yang-library-version} element
*/
// FIXME: this is a simple coning-variadic return, similar to how OperationsContent is handled use a common
// construct for both cases
// FIXME: RestconfFuture if we transition to being used by restconf-client implementation
NormalizedNodePayload yangLibraryVersionGET();
// FIXME: use ApiPath instead of String
RestconfFuture invokeRpc(URI restconfURI, String apiPath, OperationInputBody body);
}