Error messages can be sent on three different levels.
Errors in StringMessage
Errors on the outer level include cases like unavailable operators or invalid content. They are not version-specific.
Errors in Content/Payload
Errors related to valid requests might be handled "inline" in the matching response if the operator is able to create a response, otherwise an ErrorResponse may be used (<GeneralErrorType> in StringError.xsd).
Errors in Responses
The response types have their own error fields for informational messages and non-fatal errors. See the documentation of the queries by category.