Nuxeo Server

Contributing a New Endpoint

Updated: March 18, 2024

It is possible to contribute a new endpoint to the API by creating new web objects.

Thanks to WebEngine and its pluggability, we've provided a way to add other root endpoints that benefit from the same infrastructure. It's just a matter of providing a web object in another bundle, like the following:

@WebObject(type="productRoot")
public class ProductRoot {

    @GET
    public List getProducts() throws ClientException {
        ProductService ps = Framework.getLocalService(ProductService.class);
        return ps.getAllProducts(getContext().getCoreSession());
    }

    @Path("{productId}")
    public Object getProduct(@PathParam("productId") String productId) {
       return newObject("product", productId);
    }

}

This will expose two new APIs:

GET /nuxeo/api/v1/product
GET /nuxeo/api/v1/product/{productId}

Since Document Adapters are used as return types, the API will automatically benefit from the integrated adapter serializations (readers and writers). That means that it's very easy to build your own API and you inherit all the other pluggability mechanisms.