The Nuxeo API communicates error messages through standard HTTP status codes paired with exception details.
You can find more details about standard HTTP status codes on:
Two modes are available:
Simple (without exception stack trace)
Extended (with exception stack trace)
Simple mode is activated by default. The extended mode can be configured through a parameter (in nuxeo.conf): org.nuxeo.rest.stack.enable=true.
Properties
| Key | Type | Value | 
|---|---|---|
entity-type | 
        string | 'exception' (in the case of exceptions) | 
status | 
        integer | The HTTP status of the error response | 
message | 
        string | A human-readable message about the error | 
stacktrace | 
        string | The entire stack trace in one string | 
exception | 
        JSON object | The entire stack trace wrapped into a JSON Object | 
Exception Example
Here is an example of an exception when fetching a missing document.
Simple Mode
{
  "entity-type": "exception",
  "status": 404,
  "message": "Failed to get document /wrongID"
}
Extended Mode
{
  "entity-type": "exception",
  "status": 404,
  "message": "Failed to get document /wrongID",
  "stacktrace": "org.nuxeo.ecm.webengine.WebException: Failed to get document /wrongID\n\tat org.nuxeo.ecm.webengine.WebException.newException(WebException.java[.........]",
  "exception": {
    "className": "org.nuxeo.ecm.webengine.model.exceptions.WebResourceNotFoundException",
    "cause": {
      "className": "org.nuxeo.ecm.core.model.NoSuchDocumentException",
      "cause": null,
      "message": "No such document: No such document: /wrongID",
      "localizedMessage": "No such document: No such document: /wrongID",
      "stackTrace": [
      [.................................]
      ]
    }
  }
}
Mode Activation API
For testing purposes, you can activate the extended mode by adding this code snippet:
JsonFactoryManager jsonFactoryManager = Framework.getService(JsonFactoryManager.class);
if (!jsonFactoryManager.isStackDisplay()) {
    jsonFactoryManager.toggleStackDisplay();
}
To toggle the display mode (simple or extended) during runtime execution, you can:
Use the Automation
JsonStack.ToggleDisplayOperation (Administrator role only) Example:cURL Callcurl -H 'Content-Type:application/json+nxrequest' -X POST -d '{"params":{},"context":{}}' -u Administrator:Administrator http://NUXEO_SERVER:8080/nuxeo/api/v1/automation/JsonStack.ToggleDisplayUse the following endpoint URL in your browser (Administrator role only)
Type into your browser addresshttp://NUXEO_SERVER/nuxeo/site/automation/doc/toggleStackDisplay
Custom HTTP Status Code
Since Nuxeo Platform 9.3, you can customize the HTTP status code returned by the Nuxeo Platform when throwing a NuxeoException.
Default subclasses of NuxeoException are already mapped to the right HTTP status code, such as:
DocumentNotFoundException: 404DocumentSecurityException: 403ConcurrentUpdateException: 409WebResourceNotFoundException: 404- ...
 
The NuxeoException class supports new constructors where you can specify a status code that will be used as the response HTTP status code. The mapping of the NuxeoException#statusCode with the response HTTP status code is done by the WebEngineExceptionMapper class.
For instance, calling a REST API endpoint where a listener throws the following exception will lead to a response with its HTTP status code set to 409.
...
    public void handleEvent(Event event) {
        ...
        throw new NuxeoException("there is a conflict!", 409);
    }
...