diff --git a/sdk/client/client.go b/sdk/client/client.go index a52e5dad66..812a6380d7 100644 --- a/sdk/client/client.go +++ b/sdk/client/client.go @@ -320,6 +320,10 @@ type Client struct { ResponseMiddlewares *[]ResponseMiddleware } +type rawDetailsError struct { + Message string `json:"message"` +} + // NewClient returns a new Client configured with sensible defaults func NewClient(baseUri string, serviceName, apiVersion string) *Client { segments := []string{ @@ -558,6 +562,18 @@ func (c *Client) Execute(ctx context.Context, req *Request) (*Response, error) { switch { case resp.OData != nil && resp.OData.Error != nil && resp.OData.Error.String() != "": errText = fmt.Sprintf("error: %s", resp.OData.Error) + if rawDetails := resp.OData.Error.RawDetails; rawDetails != nil { + var rawDetailsErr []rawDetailsError + if err = json.Unmarshal(*rawDetails, &rawDetailsErr); err == nil { + messages := []string{} + for _, v := range rawDetailsErr { + if v.Message != "" { + messages = append(messages, v.Message) + } + } + errText += strings.Join(messages, "\n") + } + } default: defer resp.Body.Close()