/************************************************************************
 * This file has been generated automatically from                      *
 *                                                                      *
 * src/server/qgsserverapi.h                                            *
 *                                                                      *
 * Do not edit manually ! Edit header and run scripts/sipify.py again   *
 ************************************************************************/






class QgsServerApi
{
%Docstring(signature="appended")
Server generic API endpoint abstract base class.

.. seealso:: :py:class:`QgsServerOgcApi` for an OGC API (aka WFS3) implementation.

An API must have a name and a (possibly empty) version and define a
(possibly empty) root path (e.g. "/wfs3").

The server routing logic will check incoming request URLs by passing
them to the API's accept(url) method, the default implementation
performs a simple check for the presence of the API's root path string
in the URL. This simple logic implies that APIs must be registered in
reverse order from the most specific to the most generic: given two APIs
with root paths '/wfs' and '/wfs3', '/wfs3' must be registered first or
it will be shadowed by '/wfs'. APIs developers are encouraged to
implement a more robust accept(url) logic by making sure that their APIs
accept only URLs they can actually handle, if they do, the APIs
registration order becomes irrelevant.

After the API has been registered to the server API registry:

.. code-block:: python

       class API(QgsServerApi):

         def name(self):
           return "Test API"

         def rootPath(self):
           return "/testapi"

         def executeRequest(self, request_context):
           request_context.response().write(b"\"Test API\"")

       server = QgsServer()
       api = API(server.serverInterface())
       server.serverInterface().serviceRegistry().registerApi(api)

the incoming calls with an URL path starting with the API root path will
be routed to the first matching API and :py:func:`~executeRequest`
method of the API will be invoked.

.. versionadded:: 3.10
%End

%TypeHeaderCode
#include "qgsserverapi.h"
%End
  public:
    QgsServerApi( QgsServerInterface *serverIface );
%Docstring
Creates a QgsServerApi object
%End

    virtual ~QgsServerApi();

    virtual const QString name() const = 0;
%Docstring
Returns the API name
%End

    virtual const QString description() const = 0;
%Docstring
Returns the API description
%End

    virtual const QString version() const;
%Docstring
Returns the version of the service

.. note::

   the default implementation returns an empty string
%End

    virtual const QString rootPath() const = 0;
%Docstring
Returns the root path for the API
%End

    virtual bool accept( const QUrl &url ) const;
%Docstring
Returns ``True`` if the given ``url`` is handled by the API, default
implementation checks for the presence of rootPath inside the ``url``
path.
%End

    virtual void executeRequest( const QgsServerApiContext &context ) const = 0;
%Docstring
Executes a request by passing the given ``context`` to the API handlers.
%End

    QgsServerInterface *serverIface() const;
%Docstring
Returns the server interface
%End

};


/************************************************************************
 * This file has been generated automatically from                      *
 *                                                                      *
 * src/server/qgsserverapi.h                                            *
 *                                                                      *
 * Do not edit manually ! Edit header and run scripts/sipify.py again   *
 ************************************************************************/
