Error Responses to a RAD Request

For non-fatal errors, the server responds with information about the issue. The basic JSON structure of an error response is as follows:

{
         "status": text-of-the-RAD error,
         "payload": payload
}

In case of a HTTP 503 error, the value is defined and returned by the RAD module that is mentioned in the request. For all other errors, the payload value has the following format:

{
     "Message": description-of-error,

     "HTTP Method": ("HEAD"|"GET"|"POST"|"PUT"|"DELETE"),

     "URI": full-URI-with-all-query-parameters,

     "RAD Operation": ("INVOKE"|"GETATTR"|"SETATTR"|"LOOKUP"|"LIST"|null),

     "Request payload": { Arguments provided by the client },

     "Method": name of a method for INVOKE operation,

     "Attribute": name of an attribute/property for GETATTR, SETATTR ops,

     "Pattern": URI translated to RAD list pattern for LIST operation,

     "Name": URI translated to RAD name for LOOKUP operation,

     "Object": { URI translated to RAD object (any operation but LIST)

     "Name": name of a module, also known as domain

     "Interface": name of the interface,
     },

     "Reference": RAD reference ID found in the special _rad_reference URIs,

     "Version": { Module version as found in the URI

     "Major": int,

     "Minor": int
     }
   }

Information that is not provided in the request or could not be decoded from the request is included in the response as a JSON null.

Some of the examples of possible error messages are as follows:

Decoding request body as JSON failed: too big integer near '18446744073709551615'
Invalid (array) argument 'arg'='[true,false,true,false]' - element [0]
- integer out of bounds (-2147483648, 2147483647)