Every single response returns either an OK or an error. Each endpoint defines a Known errors section which contains a detailed explanation of the possible errors. It is using the status string of gRPC codes, which will be then mapped to Status.code field. You can match for these error enums. If a call succeeds you will get back "OK" and the updated object so you can immediately see that it worked.
A typical error response looks like this:
{
"code": int32,
"message": string,
"details": []
}
In this link you'll find translation/mapping from gRPC codes to HTTP status codes.