1// +build go1.13
2
3// Copyright (c) Microsoft Corporation. All rights reserved.
4// Licensed under the MIT License. See License.txt in the project root for license information.
5// Code generated by Microsoft (R) AutoRest Code Generator.
6// Changes may cause incorrect behavior and will be lost if the code is regenerated.
7
8package armapimanagement
9
10import (
11	"context"
12	"errors"
13	"fmt"
14	"github.com/Azure/azure-sdk-for-go/sdk/armcore"
15	"github.com/Azure/azure-sdk-for-go/sdk/azcore"
16	"net/http"
17	"net/url"
18	"strconv"
19	"strings"
20)
21
22// APIIssueClient contains the methods for the APIIssue group.
23// Don't use this type directly, use NewAPIIssueClient() instead.
24type APIIssueClient struct {
25	con            *armcore.Connection
26	subscriptionID string
27}
28
29// NewAPIIssueClient creates a new instance of APIIssueClient with the specified values.
30func NewAPIIssueClient(con *armcore.Connection, subscriptionID string) *APIIssueClient {
31	return &APIIssueClient{con: con, subscriptionID: subscriptionID}
32}
33
34// CreateOrUpdate - Creates a new Issue for an API or updates an existing one.
35// If the operation fails it returns the *ErrorResponse error type.
36func (client *APIIssueClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, serviceName string, apiID string, issueID string, parameters IssueContract, options *APIIssueCreateOrUpdateOptions) (APIIssueCreateOrUpdateResponse, error) {
37	req, err := client.createOrUpdateCreateRequest(ctx, resourceGroupName, serviceName, apiID, issueID, parameters, options)
38	if err != nil {
39		return APIIssueCreateOrUpdateResponse{}, err
40	}
41	resp, err := client.con.Pipeline().Do(req)
42	if err != nil {
43		return APIIssueCreateOrUpdateResponse{}, err
44	}
45	if !resp.HasStatusCode(http.StatusOK, http.StatusCreated) {
46		return APIIssueCreateOrUpdateResponse{}, client.createOrUpdateHandleError(resp)
47	}
48	return client.createOrUpdateHandleResponse(resp)
49}
50
51// createOrUpdateCreateRequest creates the CreateOrUpdate request.
52func (client *APIIssueClient) createOrUpdateCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, apiID string, issueID string, parameters IssueContract, options *APIIssueCreateOrUpdateOptions) (*azcore.Request, error) {
53	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}"
54	if resourceGroupName == "" {
55		return nil, errors.New("parameter resourceGroupName cannot be empty")
56	}
57	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
58	if serviceName == "" {
59		return nil, errors.New("parameter serviceName cannot be empty")
60	}
61	urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName))
62	if apiID == "" {
63		return nil, errors.New("parameter apiID cannot be empty")
64	}
65	urlPath = strings.ReplaceAll(urlPath, "{apiId}", url.PathEscape(apiID))
66	if issueID == "" {
67		return nil, errors.New("parameter issueID cannot be empty")
68	}
69	urlPath = strings.ReplaceAll(urlPath, "{issueId}", url.PathEscape(issueID))
70	if client.subscriptionID == "" {
71		return nil, errors.New("parameter client.subscriptionID cannot be empty")
72	}
73	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
74	req, err := azcore.NewRequest(ctx, http.MethodPut, azcore.JoinPaths(client.con.Endpoint(), urlPath))
75	if err != nil {
76		return nil, err
77	}
78	req.Telemetry(telemetryInfo)
79	reqQP := req.URL.Query()
80	reqQP.Set("api-version", "2020-12-01")
81	req.URL.RawQuery = reqQP.Encode()
82	if options != nil && options.IfMatch != nil {
83		req.Header.Set("If-Match", *options.IfMatch)
84	}
85	req.Header.Set("Accept", "application/json")
86	return req, req.MarshalAsJSON(parameters)
87}
88
89// createOrUpdateHandleResponse handles the CreateOrUpdate response.
90func (client *APIIssueClient) createOrUpdateHandleResponse(resp *azcore.Response) (APIIssueCreateOrUpdateResponse, error) {
91	result := APIIssueCreateOrUpdateResponse{RawResponse: resp.Response}
92	if val := resp.Header.Get("ETag"); val != "" {
93		result.ETag = &val
94	}
95	if err := resp.UnmarshalAsJSON(&result.IssueContract); err != nil {
96		return APIIssueCreateOrUpdateResponse{}, err
97	}
98	return result, nil
99}
100
101// createOrUpdateHandleError handles the CreateOrUpdate error response.
102func (client *APIIssueClient) createOrUpdateHandleError(resp *azcore.Response) error {
103	body, err := resp.Payload()
104	if err != nil {
105		return azcore.NewResponseError(err, resp.Response)
106	}
107	errType := ErrorResponse{raw: string(body)}
108	if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil {
109		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
110	}
111	return azcore.NewResponseError(&errType, resp.Response)
112}
113
114// Delete - Deletes the specified Issue from an API.
115// If the operation fails it returns the *ErrorResponse error type.
116func (client *APIIssueClient) Delete(ctx context.Context, resourceGroupName string, serviceName string, apiID string, issueID string, ifMatch string, options *APIIssueDeleteOptions) (APIIssueDeleteResponse, error) {
117	req, err := client.deleteCreateRequest(ctx, resourceGroupName, serviceName, apiID, issueID, ifMatch, options)
118	if err != nil {
119		return APIIssueDeleteResponse{}, err
120	}
121	resp, err := client.con.Pipeline().Do(req)
122	if err != nil {
123		return APIIssueDeleteResponse{}, err
124	}
125	if !resp.HasStatusCode(http.StatusOK, http.StatusNoContent) {
126		return APIIssueDeleteResponse{}, client.deleteHandleError(resp)
127	}
128	return APIIssueDeleteResponse{RawResponse: resp.Response}, nil
129}
130
131// deleteCreateRequest creates the Delete request.
132func (client *APIIssueClient) deleteCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, apiID string, issueID string, ifMatch string, options *APIIssueDeleteOptions) (*azcore.Request, error) {
133	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}"
134	if resourceGroupName == "" {
135		return nil, errors.New("parameter resourceGroupName cannot be empty")
136	}
137	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
138	if serviceName == "" {
139		return nil, errors.New("parameter serviceName cannot be empty")
140	}
141	urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName))
142	if apiID == "" {
143		return nil, errors.New("parameter apiID cannot be empty")
144	}
145	urlPath = strings.ReplaceAll(urlPath, "{apiId}", url.PathEscape(apiID))
146	if issueID == "" {
147		return nil, errors.New("parameter issueID cannot be empty")
148	}
149	urlPath = strings.ReplaceAll(urlPath, "{issueId}", url.PathEscape(issueID))
150	if client.subscriptionID == "" {
151		return nil, errors.New("parameter client.subscriptionID cannot be empty")
152	}
153	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
154	req, err := azcore.NewRequest(ctx, http.MethodDelete, azcore.JoinPaths(client.con.Endpoint(), urlPath))
155	if err != nil {
156		return nil, err
157	}
158	req.Telemetry(telemetryInfo)
159	reqQP := req.URL.Query()
160	reqQP.Set("api-version", "2020-12-01")
161	req.URL.RawQuery = reqQP.Encode()
162	req.Header.Set("If-Match", ifMatch)
163	req.Header.Set("Accept", "application/json")
164	return req, nil
165}
166
167// deleteHandleError handles the Delete error response.
168func (client *APIIssueClient) deleteHandleError(resp *azcore.Response) error {
169	body, err := resp.Payload()
170	if err != nil {
171		return azcore.NewResponseError(err, resp.Response)
172	}
173	errType := ErrorResponse{raw: string(body)}
174	if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil {
175		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
176	}
177	return azcore.NewResponseError(&errType, resp.Response)
178}
179
180// Get - Gets the details of the Issue for an API specified by its identifier.
181// If the operation fails it returns the *ErrorResponse error type.
182func (client *APIIssueClient) Get(ctx context.Context, resourceGroupName string, serviceName string, apiID string, issueID string, options *APIIssueGetOptions) (APIIssueGetResponse, error) {
183	req, err := client.getCreateRequest(ctx, resourceGroupName, serviceName, apiID, issueID, options)
184	if err != nil {
185		return APIIssueGetResponse{}, err
186	}
187	resp, err := client.con.Pipeline().Do(req)
188	if err != nil {
189		return APIIssueGetResponse{}, err
190	}
191	if !resp.HasStatusCode(http.StatusOK) {
192		return APIIssueGetResponse{}, client.getHandleError(resp)
193	}
194	return client.getHandleResponse(resp)
195}
196
197// getCreateRequest creates the Get request.
198func (client *APIIssueClient) getCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, apiID string, issueID string, options *APIIssueGetOptions) (*azcore.Request, error) {
199	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}"
200	if resourceGroupName == "" {
201		return nil, errors.New("parameter resourceGroupName cannot be empty")
202	}
203	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
204	if serviceName == "" {
205		return nil, errors.New("parameter serviceName cannot be empty")
206	}
207	urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName))
208	if apiID == "" {
209		return nil, errors.New("parameter apiID cannot be empty")
210	}
211	urlPath = strings.ReplaceAll(urlPath, "{apiId}", url.PathEscape(apiID))
212	if issueID == "" {
213		return nil, errors.New("parameter issueID cannot be empty")
214	}
215	urlPath = strings.ReplaceAll(urlPath, "{issueId}", url.PathEscape(issueID))
216	if client.subscriptionID == "" {
217		return nil, errors.New("parameter client.subscriptionID cannot be empty")
218	}
219	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
220	req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath))
221	if err != nil {
222		return nil, err
223	}
224	req.Telemetry(telemetryInfo)
225	reqQP := req.URL.Query()
226	if options != nil && options.ExpandCommentsAttachments != nil {
227		reqQP.Set("expandCommentsAttachments", strconv.FormatBool(*options.ExpandCommentsAttachments))
228	}
229	reqQP.Set("api-version", "2020-12-01")
230	req.URL.RawQuery = reqQP.Encode()
231	req.Header.Set("Accept", "application/json")
232	return req, nil
233}
234
235// getHandleResponse handles the Get response.
236func (client *APIIssueClient) getHandleResponse(resp *azcore.Response) (APIIssueGetResponse, error) {
237	result := APIIssueGetResponse{RawResponse: resp.Response}
238	if val := resp.Header.Get("ETag"); val != "" {
239		result.ETag = &val
240	}
241	if err := resp.UnmarshalAsJSON(&result.IssueContract); err != nil {
242		return APIIssueGetResponse{}, err
243	}
244	return result, nil
245}
246
247// getHandleError handles the Get error response.
248func (client *APIIssueClient) getHandleError(resp *azcore.Response) error {
249	body, err := resp.Payload()
250	if err != nil {
251		return azcore.NewResponseError(err, resp.Response)
252	}
253	errType := ErrorResponse{raw: string(body)}
254	if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil {
255		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
256	}
257	return azcore.NewResponseError(&errType, resp.Response)
258}
259
260// GetEntityTag - Gets the entity state (Etag) version of the Issue for an API specified by its identifier.
261// If the operation fails it returns the *ErrorResponse error type.
262func (client *APIIssueClient) GetEntityTag(ctx context.Context, resourceGroupName string, serviceName string, apiID string, issueID string, options *APIIssueGetEntityTagOptions) (APIIssueGetEntityTagResponse, error) {
263	req, err := client.getEntityTagCreateRequest(ctx, resourceGroupName, serviceName, apiID, issueID, options)
264	if err != nil {
265		return APIIssueGetEntityTagResponse{}, err
266	}
267	resp, err := client.con.Pipeline().Do(req)
268	if err != nil {
269		return APIIssueGetEntityTagResponse{}, err
270	}
271	return client.getEntityTagHandleResponse(resp)
272}
273
274// getEntityTagCreateRequest creates the GetEntityTag request.
275func (client *APIIssueClient) getEntityTagCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, apiID string, issueID string, options *APIIssueGetEntityTagOptions) (*azcore.Request, error) {
276	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}"
277	if resourceGroupName == "" {
278		return nil, errors.New("parameter resourceGroupName cannot be empty")
279	}
280	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
281	if serviceName == "" {
282		return nil, errors.New("parameter serviceName cannot be empty")
283	}
284	urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName))
285	if apiID == "" {
286		return nil, errors.New("parameter apiID cannot be empty")
287	}
288	urlPath = strings.ReplaceAll(urlPath, "{apiId}", url.PathEscape(apiID))
289	if issueID == "" {
290		return nil, errors.New("parameter issueID cannot be empty")
291	}
292	urlPath = strings.ReplaceAll(urlPath, "{issueId}", url.PathEscape(issueID))
293	if client.subscriptionID == "" {
294		return nil, errors.New("parameter client.subscriptionID cannot be empty")
295	}
296	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
297	req, err := azcore.NewRequest(ctx, http.MethodHead, azcore.JoinPaths(client.con.Endpoint(), urlPath))
298	if err != nil {
299		return nil, err
300	}
301	req.Telemetry(telemetryInfo)
302	reqQP := req.URL.Query()
303	reqQP.Set("api-version", "2020-12-01")
304	req.URL.RawQuery = reqQP.Encode()
305	req.Header.Set("Accept", "application/json")
306	return req, nil
307}
308
309// getEntityTagHandleResponse handles the GetEntityTag response.
310func (client *APIIssueClient) getEntityTagHandleResponse(resp *azcore.Response) (APIIssueGetEntityTagResponse, error) {
311	result := APIIssueGetEntityTagResponse{RawResponse: resp.Response}
312	if val := resp.Header.Get("ETag"); val != "" {
313		result.ETag = &val
314	}
315	if resp.StatusCode >= 200 && resp.StatusCode < 300 {
316		result.Success = true
317	}
318	return result, nil
319}
320
321// ListByService - Lists all issues associated with the specified API.
322// If the operation fails it returns the *ErrorResponse error type.
323func (client *APIIssueClient) ListByService(resourceGroupName string, serviceName string, apiID string, options *APIIssueListByServiceOptions) APIIssueListByServicePager {
324	return &apiIssueListByServicePager{
325		client: client,
326		requester: func(ctx context.Context) (*azcore.Request, error) {
327			return client.listByServiceCreateRequest(ctx, resourceGroupName, serviceName, apiID, options)
328		},
329		advancer: func(ctx context.Context, resp APIIssueListByServiceResponse) (*azcore.Request, error) {
330			return azcore.NewRequest(ctx, http.MethodGet, *resp.IssueCollection.NextLink)
331		},
332	}
333}
334
335// listByServiceCreateRequest creates the ListByService request.
336func (client *APIIssueClient) listByServiceCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, apiID string, options *APIIssueListByServiceOptions) (*azcore.Request, error) {
337	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues"
338	if resourceGroupName == "" {
339		return nil, errors.New("parameter resourceGroupName cannot be empty")
340	}
341	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
342	if serviceName == "" {
343		return nil, errors.New("parameter serviceName cannot be empty")
344	}
345	urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName))
346	if apiID == "" {
347		return nil, errors.New("parameter apiID cannot be empty")
348	}
349	urlPath = strings.ReplaceAll(urlPath, "{apiId}", url.PathEscape(apiID))
350	if client.subscriptionID == "" {
351		return nil, errors.New("parameter client.subscriptionID cannot be empty")
352	}
353	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
354	req, err := azcore.NewRequest(ctx, http.MethodGet, azcore.JoinPaths(client.con.Endpoint(), urlPath))
355	if err != nil {
356		return nil, err
357	}
358	req.Telemetry(telemetryInfo)
359	reqQP := req.URL.Query()
360	if options != nil && options.Filter != nil {
361		reqQP.Set("$filter", *options.Filter)
362	}
363	if options != nil && options.ExpandCommentsAttachments != nil {
364		reqQP.Set("expandCommentsAttachments", strconv.FormatBool(*options.ExpandCommentsAttachments))
365	}
366	if options != nil && options.Top != nil {
367		reqQP.Set("$top", strconv.FormatInt(int64(*options.Top), 10))
368	}
369	if options != nil && options.Skip != nil {
370		reqQP.Set("$skip", strconv.FormatInt(int64(*options.Skip), 10))
371	}
372	reqQP.Set("api-version", "2020-12-01")
373	req.URL.RawQuery = reqQP.Encode()
374	req.Header.Set("Accept", "application/json")
375	return req, nil
376}
377
378// listByServiceHandleResponse handles the ListByService response.
379func (client *APIIssueClient) listByServiceHandleResponse(resp *azcore.Response) (APIIssueListByServiceResponse, error) {
380	result := APIIssueListByServiceResponse{RawResponse: resp.Response}
381	if err := resp.UnmarshalAsJSON(&result.IssueCollection); err != nil {
382		return APIIssueListByServiceResponse{}, err
383	}
384	return result, nil
385}
386
387// listByServiceHandleError handles the ListByService error response.
388func (client *APIIssueClient) listByServiceHandleError(resp *azcore.Response) error {
389	body, err := resp.Payload()
390	if err != nil {
391		return azcore.NewResponseError(err, resp.Response)
392	}
393	errType := ErrorResponse{raw: string(body)}
394	if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil {
395		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
396	}
397	return azcore.NewResponseError(&errType, resp.Response)
398}
399
400// Update - Updates an existing issue for an API.
401// If the operation fails it returns the *ErrorResponse error type.
402func (client *APIIssueClient) Update(ctx context.Context, resourceGroupName string, serviceName string, apiID string, issueID string, ifMatch string, parameters IssueUpdateContract, options *APIIssueUpdateOptions) (APIIssueUpdateResponse, error) {
403	req, err := client.updateCreateRequest(ctx, resourceGroupName, serviceName, apiID, issueID, ifMatch, parameters, options)
404	if err != nil {
405		return APIIssueUpdateResponse{}, err
406	}
407	resp, err := client.con.Pipeline().Do(req)
408	if err != nil {
409		return APIIssueUpdateResponse{}, err
410	}
411	if !resp.HasStatusCode(http.StatusOK) {
412		return APIIssueUpdateResponse{}, client.updateHandleError(resp)
413	}
414	return client.updateHandleResponse(resp)
415}
416
417// updateCreateRequest creates the Update request.
418func (client *APIIssueClient) updateCreateRequest(ctx context.Context, resourceGroupName string, serviceName string, apiID string, issueID string, ifMatch string, parameters IssueUpdateContract, options *APIIssueUpdateOptions) (*azcore.Request, error) {
419	urlPath := "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/issues/{issueId}"
420	if resourceGroupName == "" {
421		return nil, errors.New("parameter resourceGroupName cannot be empty")
422	}
423	urlPath = strings.ReplaceAll(urlPath, "{resourceGroupName}", url.PathEscape(resourceGroupName))
424	if serviceName == "" {
425		return nil, errors.New("parameter serviceName cannot be empty")
426	}
427	urlPath = strings.ReplaceAll(urlPath, "{serviceName}", url.PathEscape(serviceName))
428	if apiID == "" {
429		return nil, errors.New("parameter apiID cannot be empty")
430	}
431	urlPath = strings.ReplaceAll(urlPath, "{apiId}", url.PathEscape(apiID))
432	if issueID == "" {
433		return nil, errors.New("parameter issueID cannot be empty")
434	}
435	urlPath = strings.ReplaceAll(urlPath, "{issueId}", url.PathEscape(issueID))
436	if client.subscriptionID == "" {
437		return nil, errors.New("parameter client.subscriptionID cannot be empty")
438	}
439	urlPath = strings.ReplaceAll(urlPath, "{subscriptionId}", url.PathEscape(client.subscriptionID))
440	req, err := azcore.NewRequest(ctx, http.MethodPatch, azcore.JoinPaths(client.con.Endpoint(), urlPath))
441	if err != nil {
442		return nil, err
443	}
444	req.Telemetry(telemetryInfo)
445	reqQP := req.URL.Query()
446	reqQP.Set("api-version", "2020-12-01")
447	req.URL.RawQuery = reqQP.Encode()
448	req.Header.Set("If-Match", ifMatch)
449	req.Header.Set("Accept", "application/json")
450	return req, req.MarshalAsJSON(parameters)
451}
452
453// updateHandleResponse handles the Update response.
454func (client *APIIssueClient) updateHandleResponse(resp *azcore.Response) (APIIssueUpdateResponse, error) {
455	result := APIIssueUpdateResponse{RawResponse: resp.Response}
456	if val := resp.Header.Get("ETag"); val != "" {
457		result.ETag = &val
458	}
459	if err := resp.UnmarshalAsJSON(&result.IssueContract); err != nil {
460		return APIIssueUpdateResponse{}, err
461	}
462	return result, nil
463}
464
465// updateHandleError handles the Update error response.
466func (client *APIIssueClient) updateHandleError(resp *azcore.Response) error {
467	body, err := resp.Payload()
468	if err != nil {
469		return azcore.NewResponseError(err, resp.Response)
470	}
471	errType := ErrorResponse{raw: string(body)}
472	if err := resp.UnmarshalAsJSON(&errType.InnerError); err != nil {
473		return azcore.NewResponseError(fmt.Errorf("%s\n%s", string(body), err), resp.Response)
474	}
475	return azcore.NewResponseError(&errType, resp.Response)
476}
477