The error code that should be used only for logging and troubleshooting purposes.
The error type which describes which part of the SDK caused the error.
Data containing any extra information about the error. It might be empty.
Human readable message of the error, if available.