1package apimanagement 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// 6// Code generated by Microsoft (R) AutoRest Code Generator. 7// Changes may cause incorrect behavior and will be lost if the code is regenerated. 8 9import ( 10 "context" 11 "github.com/Azure/go-autorest/autorest" 12 "github.com/Azure/go-autorest/autorest/azure" 13 "github.com/Azure/go-autorest/autorest/validation" 14 "github.com/Azure/go-autorest/tracing" 15 "net/http" 16) 17 18// ReportsClient is the apiManagement Client 19type ReportsClient struct { 20 BaseClient 21} 22 23// NewReportsClient creates an instance of the ReportsClient client. 24func NewReportsClient(subscriptionID string) ReportsClient { 25 return NewReportsClientWithBaseURI(DefaultBaseURI, subscriptionID) 26} 27 28// NewReportsClientWithBaseURI creates an instance of the ReportsClient client using a custom endpoint. Use this when 29// interacting with an Azure cloud that uses a non-standard base URI (sovereign clouds, Azure stack). 30func NewReportsClientWithBaseURI(baseURI string, subscriptionID string) ReportsClient { 31 return ReportsClient{NewWithBaseURI(baseURI, subscriptionID)} 32} 33 34// ListByAPI lists report records by API. 35// Parameters: 36// resourceGroupName - the name of the resource group. 37// serviceName - the name of the API Management service. 38// filter - the filter to apply on the operation. 39// top - number of records to return. 40// skip - number of records to skip. 41// orderby - oData order by query option. 42func (client ReportsClient) ListByAPI(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32, orderby string) (result ReportCollectionPage, err error) { 43 if tracing.IsEnabled() { 44 ctx = tracing.StartSpan(ctx, fqdn+"/ReportsClient.ListByAPI") 45 defer func() { 46 sc := -1 47 if result.rc.Response.Response != nil { 48 sc = result.rc.Response.Response.StatusCode 49 } 50 tracing.EndSpan(ctx, sc, err) 51 }() 52 } 53 if err := validation.Validate([]validation.Validation{ 54 {TargetValue: serviceName, 55 Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil}, 56 {Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil}, 57 {Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}, 58 {TargetValue: top, 59 Constraints: []validation.Constraint{{Target: "top", Name: validation.Null, Rule: false, 60 Chain: []validation.Constraint{{Target: "top", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil}}}}}, 61 {TargetValue: skip, 62 Constraints: []validation.Constraint{{Target: "skip", Name: validation.Null, Rule: false, 63 Chain: []validation.Constraint{{Target: "skip", Name: validation.InclusiveMinimum, Rule: int64(0), Chain: nil}}}}}}); err != nil { 64 return result, validation.NewError("apimanagement.ReportsClient", "ListByAPI", err.Error()) 65 } 66 67 result.fn = client.listByAPINextResults 68 req, err := client.ListByAPIPreparer(ctx, resourceGroupName, serviceName, filter, top, skip, orderby) 69 if err != nil { 70 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListByAPI", nil, "Failure preparing request") 71 return 72 } 73 74 resp, err := client.ListByAPISender(req) 75 if err != nil { 76 result.rc.Response = autorest.Response{Response: resp} 77 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListByAPI", resp, "Failure sending request") 78 return 79 } 80 81 result.rc, err = client.ListByAPIResponder(resp) 82 if err != nil { 83 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListByAPI", resp, "Failure responding to request") 84 return 85 } 86 if result.rc.hasNextLink() && result.rc.IsEmpty() { 87 err = result.NextWithContext(ctx) 88 return 89 } 90 91 return 92} 93 94// ListByAPIPreparer prepares the ListByAPI request. 95func (client ReportsClient) ListByAPIPreparer(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32, orderby string) (*http.Request, error) { 96 pathParameters := map[string]interface{}{ 97 "resourceGroupName": autorest.Encode("path", resourceGroupName), 98 "serviceName": autorest.Encode("path", serviceName), 99 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 100 } 101 102 const APIVersion = "2020-12-01" 103 queryParameters := map[string]interface{}{ 104 "$filter": autorest.Encode("query", filter), 105 "api-version": APIVersion, 106 } 107 if top != nil { 108 queryParameters["$top"] = autorest.Encode("query", *top) 109 } 110 if skip != nil { 111 queryParameters["$skip"] = autorest.Encode("query", *skip) 112 } 113 if len(orderby) > 0 { 114 queryParameters["$orderby"] = autorest.Encode("query", orderby) 115 } 116 117 preparer := autorest.CreatePreparer( 118 autorest.AsGet(), 119 autorest.WithBaseURL(client.BaseURI), 120 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/reports/byApi", pathParameters), 121 autorest.WithQueryParameters(queryParameters)) 122 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 123} 124 125// ListByAPISender sends the ListByAPI request. The method will close the 126// http.Response Body if it receives an error. 127func (client ReportsClient) ListByAPISender(req *http.Request) (*http.Response, error) { 128 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 129} 130 131// ListByAPIResponder handles the response to the ListByAPI request. The method always 132// closes the http.Response Body. 133func (client ReportsClient) ListByAPIResponder(resp *http.Response) (result ReportCollection, err error) { 134 err = autorest.Respond( 135 resp, 136 azure.WithErrorUnlessStatusCode(http.StatusOK), 137 autorest.ByUnmarshallingJSON(&result), 138 autorest.ByClosing()) 139 result.Response = autorest.Response{Response: resp} 140 return 141} 142 143// listByAPINextResults retrieves the next set of results, if any. 144func (client ReportsClient) listByAPINextResults(ctx context.Context, lastResults ReportCollection) (result ReportCollection, err error) { 145 req, err := lastResults.reportCollectionPreparer(ctx) 146 if err != nil { 147 return result, autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "listByAPINextResults", nil, "Failure preparing next results request") 148 } 149 if req == nil { 150 return 151 } 152 resp, err := client.ListByAPISender(req) 153 if err != nil { 154 result.Response = autorest.Response{Response: resp} 155 return result, autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "listByAPINextResults", resp, "Failure sending next results request") 156 } 157 result, err = client.ListByAPIResponder(resp) 158 if err != nil { 159 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "listByAPINextResults", resp, "Failure responding to next results request") 160 } 161 return 162} 163 164// ListByAPIComplete enumerates all values, automatically crossing page boundaries as required. 165func (client ReportsClient) ListByAPIComplete(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32, orderby string) (result ReportCollectionIterator, err error) { 166 if tracing.IsEnabled() { 167 ctx = tracing.StartSpan(ctx, fqdn+"/ReportsClient.ListByAPI") 168 defer func() { 169 sc := -1 170 if result.Response().Response.Response != nil { 171 sc = result.page.Response().Response.Response.StatusCode 172 } 173 tracing.EndSpan(ctx, sc, err) 174 }() 175 } 176 result.page, err = client.ListByAPI(ctx, resourceGroupName, serviceName, filter, top, skip, orderby) 177 return 178} 179 180// ListByGeo lists report records by geography. 181// Parameters: 182// resourceGroupName - the name of the resource group. 183// serviceName - the name of the API Management service. 184// filter - | Field | Usage | Supported operators | Supported functions 185// |</br>|-------------|-------------|-------------|-------------|</br>| timestamp | filter | ge, le | | 186// </br>| country | select | | | </br>| region | select | | | </br>| zip | select | | | 187// </br>| apiRegion | filter | eq | | </br>| userId | filter | eq | | </br>| productId | filter | eq | 188// | </br>| subscriptionId | filter | eq | | </br>| apiId | filter | eq | | </br>| operationId | filter 189// | eq | | </br>| callCountSuccess | select | | | </br>| callCountBlocked | select | | | 190// </br>| callCountFailed | select | | | </br>| callCountOther | select | | | </br>| bandwidth 191// | select, orderBy | | | </br>| cacheHitsCount | select | | | </br>| cacheMissCount | select 192// | | | </br>| apiTimeAvg | select | | | </br>| apiTimeMin | select | | | </br>| 193// apiTimeMax | select | | | </br>| serviceTimeAvg | select | | | </br>| serviceTimeMin | 194// select | | | </br>| serviceTimeMax | select | | | </br> 195// top - number of records to return. 196// skip - number of records to skip. 197func (client ReportsClient) ListByGeo(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32) (result ReportCollectionPage, err error) { 198 if tracing.IsEnabled() { 199 ctx = tracing.StartSpan(ctx, fqdn+"/ReportsClient.ListByGeo") 200 defer func() { 201 sc := -1 202 if result.rc.Response.Response != nil { 203 sc = result.rc.Response.Response.StatusCode 204 } 205 tracing.EndSpan(ctx, sc, err) 206 }() 207 } 208 if err := validation.Validate([]validation.Validation{ 209 {TargetValue: serviceName, 210 Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil}, 211 {Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil}, 212 {Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}, 213 {TargetValue: top, 214 Constraints: []validation.Constraint{{Target: "top", Name: validation.Null, Rule: false, 215 Chain: []validation.Constraint{{Target: "top", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil}}}}}, 216 {TargetValue: skip, 217 Constraints: []validation.Constraint{{Target: "skip", Name: validation.Null, Rule: false, 218 Chain: []validation.Constraint{{Target: "skip", Name: validation.InclusiveMinimum, Rule: int64(0), Chain: nil}}}}}}); err != nil { 219 return result, validation.NewError("apimanagement.ReportsClient", "ListByGeo", err.Error()) 220 } 221 222 result.fn = client.listByGeoNextResults 223 req, err := client.ListByGeoPreparer(ctx, resourceGroupName, serviceName, filter, top, skip) 224 if err != nil { 225 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListByGeo", nil, "Failure preparing request") 226 return 227 } 228 229 resp, err := client.ListByGeoSender(req) 230 if err != nil { 231 result.rc.Response = autorest.Response{Response: resp} 232 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListByGeo", resp, "Failure sending request") 233 return 234 } 235 236 result.rc, err = client.ListByGeoResponder(resp) 237 if err != nil { 238 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListByGeo", resp, "Failure responding to request") 239 return 240 } 241 if result.rc.hasNextLink() && result.rc.IsEmpty() { 242 err = result.NextWithContext(ctx) 243 return 244 } 245 246 return 247} 248 249// ListByGeoPreparer prepares the ListByGeo request. 250func (client ReportsClient) ListByGeoPreparer(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32) (*http.Request, error) { 251 pathParameters := map[string]interface{}{ 252 "resourceGroupName": autorest.Encode("path", resourceGroupName), 253 "serviceName": autorest.Encode("path", serviceName), 254 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 255 } 256 257 const APIVersion = "2020-12-01" 258 queryParameters := map[string]interface{}{ 259 "$filter": autorest.Encode("query", filter), 260 "api-version": APIVersion, 261 } 262 if top != nil { 263 queryParameters["$top"] = autorest.Encode("query", *top) 264 } 265 if skip != nil { 266 queryParameters["$skip"] = autorest.Encode("query", *skip) 267 } 268 269 preparer := autorest.CreatePreparer( 270 autorest.AsGet(), 271 autorest.WithBaseURL(client.BaseURI), 272 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/reports/byGeo", pathParameters), 273 autorest.WithQueryParameters(queryParameters)) 274 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 275} 276 277// ListByGeoSender sends the ListByGeo request. The method will close the 278// http.Response Body if it receives an error. 279func (client ReportsClient) ListByGeoSender(req *http.Request) (*http.Response, error) { 280 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 281} 282 283// ListByGeoResponder handles the response to the ListByGeo request. The method always 284// closes the http.Response Body. 285func (client ReportsClient) ListByGeoResponder(resp *http.Response) (result ReportCollection, err error) { 286 err = autorest.Respond( 287 resp, 288 azure.WithErrorUnlessStatusCode(http.StatusOK), 289 autorest.ByUnmarshallingJSON(&result), 290 autorest.ByClosing()) 291 result.Response = autorest.Response{Response: resp} 292 return 293} 294 295// listByGeoNextResults retrieves the next set of results, if any. 296func (client ReportsClient) listByGeoNextResults(ctx context.Context, lastResults ReportCollection) (result ReportCollection, err error) { 297 req, err := lastResults.reportCollectionPreparer(ctx) 298 if err != nil { 299 return result, autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "listByGeoNextResults", nil, "Failure preparing next results request") 300 } 301 if req == nil { 302 return 303 } 304 resp, err := client.ListByGeoSender(req) 305 if err != nil { 306 result.Response = autorest.Response{Response: resp} 307 return result, autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "listByGeoNextResults", resp, "Failure sending next results request") 308 } 309 result, err = client.ListByGeoResponder(resp) 310 if err != nil { 311 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "listByGeoNextResults", resp, "Failure responding to next results request") 312 } 313 return 314} 315 316// ListByGeoComplete enumerates all values, automatically crossing page boundaries as required. 317func (client ReportsClient) ListByGeoComplete(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32) (result ReportCollectionIterator, err error) { 318 if tracing.IsEnabled() { 319 ctx = tracing.StartSpan(ctx, fqdn+"/ReportsClient.ListByGeo") 320 defer func() { 321 sc := -1 322 if result.Response().Response.Response != nil { 323 sc = result.page.Response().Response.Response.StatusCode 324 } 325 tracing.EndSpan(ctx, sc, err) 326 }() 327 } 328 result.page, err = client.ListByGeo(ctx, resourceGroupName, serviceName, filter, top, skip) 329 return 330} 331 332// ListByOperation lists report records by API Operations. 333// Parameters: 334// resourceGroupName - the name of the resource group. 335// serviceName - the name of the API Management service. 336// filter - | Field | Usage | Supported operators | Supported functions 337// |</br>|-------------|-------------|-------------|-------------|</br>| timestamp | filter | ge, le | | 338// </br>| displayName | select, orderBy | | | </br>| apiRegion | filter | eq | | </br>| userId | 339// filter | eq | | </br>| productId | filter | eq | | </br>| subscriptionId | filter | eq | | 340// </br>| apiId | filter | eq | | </br>| operationId | select, filter | eq | | </br>| callCountSuccess 341// | select, orderBy | | | </br>| callCountBlocked | select, orderBy | | | </br>| 342// callCountFailed | select, orderBy | | | </br>| callCountOther | select, orderBy | | | </br>| 343// callCountTotal | select, orderBy | | | </br>| bandwidth | select, orderBy | | | </br>| 344// cacheHitsCount | select | | | </br>| cacheMissCount | select | | | </br>| apiTimeAvg | 345// select, orderBy | | | </br>| apiTimeMin | select | | | </br>| apiTimeMax | select | | 346// | </br>| serviceTimeAvg | select | | | </br>| serviceTimeMin | select | | | </br>| 347// serviceTimeMax | select | | | </br> 348// top - number of records to return. 349// skip - number of records to skip. 350// orderby - oData order by query option. 351func (client ReportsClient) ListByOperation(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32, orderby string) (result ReportCollectionPage, err error) { 352 if tracing.IsEnabled() { 353 ctx = tracing.StartSpan(ctx, fqdn+"/ReportsClient.ListByOperation") 354 defer func() { 355 sc := -1 356 if result.rc.Response.Response != nil { 357 sc = result.rc.Response.Response.StatusCode 358 } 359 tracing.EndSpan(ctx, sc, err) 360 }() 361 } 362 if err := validation.Validate([]validation.Validation{ 363 {TargetValue: serviceName, 364 Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil}, 365 {Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil}, 366 {Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}, 367 {TargetValue: top, 368 Constraints: []validation.Constraint{{Target: "top", Name: validation.Null, Rule: false, 369 Chain: []validation.Constraint{{Target: "top", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil}}}}}, 370 {TargetValue: skip, 371 Constraints: []validation.Constraint{{Target: "skip", Name: validation.Null, Rule: false, 372 Chain: []validation.Constraint{{Target: "skip", Name: validation.InclusiveMinimum, Rule: int64(0), Chain: nil}}}}}}); err != nil { 373 return result, validation.NewError("apimanagement.ReportsClient", "ListByOperation", err.Error()) 374 } 375 376 result.fn = client.listByOperationNextResults 377 req, err := client.ListByOperationPreparer(ctx, resourceGroupName, serviceName, filter, top, skip, orderby) 378 if err != nil { 379 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListByOperation", nil, "Failure preparing request") 380 return 381 } 382 383 resp, err := client.ListByOperationSender(req) 384 if err != nil { 385 result.rc.Response = autorest.Response{Response: resp} 386 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListByOperation", resp, "Failure sending request") 387 return 388 } 389 390 result.rc, err = client.ListByOperationResponder(resp) 391 if err != nil { 392 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListByOperation", resp, "Failure responding to request") 393 return 394 } 395 if result.rc.hasNextLink() && result.rc.IsEmpty() { 396 err = result.NextWithContext(ctx) 397 return 398 } 399 400 return 401} 402 403// ListByOperationPreparer prepares the ListByOperation request. 404func (client ReportsClient) ListByOperationPreparer(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32, orderby string) (*http.Request, error) { 405 pathParameters := map[string]interface{}{ 406 "resourceGroupName": autorest.Encode("path", resourceGroupName), 407 "serviceName": autorest.Encode("path", serviceName), 408 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 409 } 410 411 const APIVersion = "2020-12-01" 412 queryParameters := map[string]interface{}{ 413 "$filter": autorest.Encode("query", filter), 414 "api-version": APIVersion, 415 } 416 if top != nil { 417 queryParameters["$top"] = autorest.Encode("query", *top) 418 } 419 if skip != nil { 420 queryParameters["$skip"] = autorest.Encode("query", *skip) 421 } 422 if len(orderby) > 0 { 423 queryParameters["$orderby"] = autorest.Encode("query", orderby) 424 } 425 426 preparer := autorest.CreatePreparer( 427 autorest.AsGet(), 428 autorest.WithBaseURL(client.BaseURI), 429 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/reports/byOperation", pathParameters), 430 autorest.WithQueryParameters(queryParameters)) 431 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 432} 433 434// ListByOperationSender sends the ListByOperation request. The method will close the 435// http.Response Body if it receives an error. 436func (client ReportsClient) ListByOperationSender(req *http.Request) (*http.Response, error) { 437 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 438} 439 440// ListByOperationResponder handles the response to the ListByOperation request. The method always 441// closes the http.Response Body. 442func (client ReportsClient) ListByOperationResponder(resp *http.Response) (result ReportCollection, err error) { 443 err = autorest.Respond( 444 resp, 445 azure.WithErrorUnlessStatusCode(http.StatusOK), 446 autorest.ByUnmarshallingJSON(&result), 447 autorest.ByClosing()) 448 result.Response = autorest.Response{Response: resp} 449 return 450} 451 452// listByOperationNextResults retrieves the next set of results, if any. 453func (client ReportsClient) listByOperationNextResults(ctx context.Context, lastResults ReportCollection) (result ReportCollection, err error) { 454 req, err := lastResults.reportCollectionPreparer(ctx) 455 if err != nil { 456 return result, autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "listByOperationNextResults", nil, "Failure preparing next results request") 457 } 458 if req == nil { 459 return 460 } 461 resp, err := client.ListByOperationSender(req) 462 if err != nil { 463 result.Response = autorest.Response{Response: resp} 464 return result, autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "listByOperationNextResults", resp, "Failure sending next results request") 465 } 466 result, err = client.ListByOperationResponder(resp) 467 if err != nil { 468 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "listByOperationNextResults", resp, "Failure responding to next results request") 469 } 470 return 471} 472 473// ListByOperationComplete enumerates all values, automatically crossing page boundaries as required. 474func (client ReportsClient) ListByOperationComplete(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32, orderby string) (result ReportCollectionIterator, err error) { 475 if tracing.IsEnabled() { 476 ctx = tracing.StartSpan(ctx, fqdn+"/ReportsClient.ListByOperation") 477 defer func() { 478 sc := -1 479 if result.Response().Response.Response != nil { 480 sc = result.page.Response().Response.Response.StatusCode 481 } 482 tracing.EndSpan(ctx, sc, err) 483 }() 484 } 485 result.page, err = client.ListByOperation(ctx, resourceGroupName, serviceName, filter, top, skip, orderby) 486 return 487} 488 489// ListByProduct lists report records by Product. 490// Parameters: 491// resourceGroupName - the name of the resource group. 492// serviceName - the name of the API Management service. 493// filter - | Field | Usage | Supported operators | Supported functions 494// |</br>|-------------|-------------|-------------|-------------|</br>| timestamp | filter | ge, le | | 495// </br>| displayName | select, orderBy | | | </br>| apiRegion | filter | eq | | </br>| userId | 496// filter | eq | | </br>| productId | select, filter | eq | | </br>| subscriptionId | filter | eq | 497// | </br>| callCountSuccess | select, orderBy | | | </br>| callCountBlocked | select, orderBy | | 498// | </br>| callCountFailed | select, orderBy | | | </br>| callCountOther | select, orderBy | | 499// | </br>| callCountTotal | select, orderBy | | | </br>| bandwidth | select, orderBy | | | 500// </br>| cacheHitsCount | select | | | </br>| cacheMissCount | select | | | </br>| apiTimeAvg 501// | select, orderBy | | | </br>| apiTimeMin | select | | | </br>| apiTimeMax | select | | 502// | </br>| serviceTimeAvg | select | | | </br>| serviceTimeMin | select | | | </br>| 503// serviceTimeMax | select | | | </br> 504// top - number of records to return. 505// skip - number of records to skip. 506// orderby - oData order by query option. 507func (client ReportsClient) ListByProduct(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32, orderby string) (result ReportCollectionPage, err error) { 508 if tracing.IsEnabled() { 509 ctx = tracing.StartSpan(ctx, fqdn+"/ReportsClient.ListByProduct") 510 defer func() { 511 sc := -1 512 if result.rc.Response.Response != nil { 513 sc = result.rc.Response.Response.StatusCode 514 } 515 tracing.EndSpan(ctx, sc, err) 516 }() 517 } 518 if err := validation.Validate([]validation.Validation{ 519 {TargetValue: serviceName, 520 Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil}, 521 {Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil}, 522 {Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}, 523 {TargetValue: top, 524 Constraints: []validation.Constraint{{Target: "top", Name: validation.Null, Rule: false, 525 Chain: []validation.Constraint{{Target: "top", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil}}}}}, 526 {TargetValue: skip, 527 Constraints: []validation.Constraint{{Target: "skip", Name: validation.Null, Rule: false, 528 Chain: []validation.Constraint{{Target: "skip", Name: validation.InclusiveMinimum, Rule: int64(0), Chain: nil}}}}}}); err != nil { 529 return result, validation.NewError("apimanagement.ReportsClient", "ListByProduct", err.Error()) 530 } 531 532 result.fn = client.listByProductNextResults 533 req, err := client.ListByProductPreparer(ctx, resourceGroupName, serviceName, filter, top, skip, orderby) 534 if err != nil { 535 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListByProduct", nil, "Failure preparing request") 536 return 537 } 538 539 resp, err := client.ListByProductSender(req) 540 if err != nil { 541 result.rc.Response = autorest.Response{Response: resp} 542 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListByProduct", resp, "Failure sending request") 543 return 544 } 545 546 result.rc, err = client.ListByProductResponder(resp) 547 if err != nil { 548 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListByProduct", resp, "Failure responding to request") 549 return 550 } 551 if result.rc.hasNextLink() && result.rc.IsEmpty() { 552 err = result.NextWithContext(ctx) 553 return 554 } 555 556 return 557} 558 559// ListByProductPreparer prepares the ListByProduct request. 560func (client ReportsClient) ListByProductPreparer(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32, orderby string) (*http.Request, error) { 561 pathParameters := map[string]interface{}{ 562 "resourceGroupName": autorest.Encode("path", resourceGroupName), 563 "serviceName": autorest.Encode("path", serviceName), 564 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 565 } 566 567 const APIVersion = "2020-12-01" 568 queryParameters := map[string]interface{}{ 569 "$filter": autorest.Encode("query", filter), 570 "api-version": APIVersion, 571 } 572 if top != nil { 573 queryParameters["$top"] = autorest.Encode("query", *top) 574 } 575 if skip != nil { 576 queryParameters["$skip"] = autorest.Encode("query", *skip) 577 } 578 if len(orderby) > 0 { 579 queryParameters["$orderby"] = autorest.Encode("query", orderby) 580 } 581 582 preparer := autorest.CreatePreparer( 583 autorest.AsGet(), 584 autorest.WithBaseURL(client.BaseURI), 585 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/reports/byProduct", pathParameters), 586 autorest.WithQueryParameters(queryParameters)) 587 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 588} 589 590// ListByProductSender sends the ListByProduct request. The method will close the 591// http.Response Body if it receives an error. 592func (client ReportsClient) ListByProductSender(req *http.Request) (*http.Response, error) { 593 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 594} 595 596// ListByProductResponder handles the response to the ListByProduct request. The method always 597// closes the http.Response Body. 598func (client ReportsClient) ListByProductResponder(resp *http.Response) (result ReportCollection, err error) { 599 err = autorest.Respond( 600 resp, 601 azure.WithErrorUnlessStatusCode(http.StatusOK), 602 autorest.ByUnmarshallingJSON(&result), 603 autorest.ByClosing()) 604 result.Response = autorest.Response{Response: resp} 605 return 606} 607 608// listByProductNextResults retrieves the next set of results, if any. 609func (client ReportsClient) listByProductNextResults(ctx context.Context, lastResults ReportCollection) (result ReportCollection, err error) { 610 req, err := lastResults.reportCollectionPreparer(ctx) 611 if err != nil { 612 return result, autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "listByProductNextResults", nil, "Failure preparing next results request") 613 } 614 if req == nil { 615 return 616 } 617 resp, err := client.ListByProductSender(req) 618 if err != nil { 619 result.Response = autorest.Response{Response: resp} 620 return result, autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "listByProductNextResults", resp, "Failure sending next results request") 621 } 622 result, err = client.ListByProductResponder(resp) 623 if err != nil { 624 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "listByProductNextResults", resp, "Failure responding to next results request") 625 } 626 return 627} 628 629// ListByProductComplete enumerates all values, automatically crossing page boundaries as required. 630func (client ReportsClient) ListByProductComplete(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32, orderby string) (result ReportCollectionIterator, err error) { 631 if tracing.IsEnabled() { 632 ctx = tracing.StartSpan(ctx, fqdn+"/ReportsClient.ListByProduct") 633 defer func() { 634 sc := -1 635 if result.Response().Response.Response != nil { 636 sc = result.page.Response().Response.Response.StatusCode 637 } 638 tracing.EndSpan(ctx, sc, err) 639 }() 640 } 641 result.page, err = client.ListByProduct(ctx, resourceGroupName, serviceName, filter, top, skip, orderby) 642 return 643} 644 645// ListByRequest lists report records by Request. 646// Parameters: 647// resourceGroupName - the name of the resource group. 648// serviceName - the name of the API Management service. 649// filter - | Field | Usage | Supported operators | Supported functions 650// |</br>|-------------|-------------|-------------|-------------|</br>| timestamp | filter | ge, le | | 651// </br>| apiId | filter | eq | | </br>| operationId | filter | eq | | </br>| productId | filter | eq | 652// | </br>| userId | filter | eq | | </br>| apiRegion | filter | eq | | </br>| subscriptionId | filter 653// | eq | | </br> 654// top - number of records to return. 655// skip - number of records to skip. 656func (client ReportsClient) ListByRequest(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32) (result RequestReportCollection, err error) { 657 if tracing.IsEnabled() { 658 ctx = tracing.StartSpan(ctx, fqdn+"/ReportsClient.ListByRequest") 659 defer func() { 660 sc := -1 661 if result.Response.Response != nil { 662 sc = result.Response.Response.StatusCode 663 } 664 tracing.EndSpan(ctx, sc, err) 665 }() 666 } 667 if err := validation.Validate([]validation.Validation{ 668 {TargetValue: serviceName, 669 Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil}, 670 {Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil}, 671 {Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}, 672 {TargetValue: top, 673 Constraints: []validation.Constraint{{Target: "top", Name: validation.Null, Rule: false, 674 Chain: []validation.Constraint{{Target: "top", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil}}}}}, 675 {TargetValue: skip, 676 Constraints: []validation.Constraint{{Target: "skip", Name: validation.Null, Rule: false, 677 Chain: []validation.Constraint{{Target: "skip", Name: validation.InclusiveMinimum, Rule: int64(0), Chain: nil}}}}}}); err != nil { 678 return result, validation.NewError("apimanagement.ReportsClient", "ListByRequest", err.Error()) 679 } 680 681 req, err := client.ListByRequestPreparer(ctx, resourceGroupName, serviceName, filter, top, skip) 682 if err != nil { 683 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListByRequest", nil, "Failure preparing request") 684 return 685 } 686 687 resp, err := client.ListByRequestSender(req) 688 if err != nil { 689 result.Response = autorest.Response{Response: resp} 690 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListByRequest", resp, "Failure sending request") 691 return 692 } 693 694 result, err = client.ListByRequestResponder(resp) 695 if err != nil { 696 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListByRequest", resp, "Failure responding to request") 697 return 698 } 699 700 return 701} 702 703// ListByRequestPreparer prepares the ListByRequest request. 704func (client ReportsClient) ListByRequestPreparer(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32) (*http.Request, error) { 705 pathParameters := map[string]interface{}{ 706 "resourceGroupName": autorest.Encode("path", resourceGroupName), 707 "serviceName": autorest.Encode("path", serviceName), 708 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 709 } 710 711 const APIVersion = "2020-12-01" 712 queryParameters := map[string]interface{}{ 713 "$filter": autorest.Encode("query", filter), 714 "api-version": APIVersion, 715 } 716 if top != nil { 717 queryParameters["$top"] = autorest.Encode("query", *top) 718 } 719 if skip != nil { 720 queryParameters["$skip"] = autorest.Encode("query", *skip) 721 } 722 723 preparer := autorest.CreatePreparer( 724 autorest.AsGet(), 725 autorest.WithBaseURL(client.BaseURI), 726 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/reports/byRequest", pathParameters), 727 autorest.WithQueryParameters(queryParameters)) 728 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 729} 730 731// ListByRequestSender sends the ListByRequest request. The method will close the 732// http.Response Body if it receives an error. 733func (client ReportsClient) ListByRequestSender(req *http.Request) (*http.Response, error) { 734 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 735} 736 737// ListByRequestResponder handles the response to the ListByRequest request. The method always 738// closes the http.Response Body. 739func (client ReportsClient) ListByRequestResponder(resp *http.Response) (result RequestReportCollection, err error) { 740 err = autorest.Respond( 741 resp, 742 azure.WithErrorUnlessStatusCode(http.StatusOK), 743 autorest.ByUnmarshallingJSON(&result), 744 autorest.ByClosing()) 745 result.Response = autorest.Response{Response: resp} 746 return 747} 748 749// ListBySubscription lists report records by subscription. 750// Parameters: 751// resourceGroupName - the name of the resource group. 752// serviceName - the name of the API Management service. 753// filter - | Field | Usage | Supported operators | Supported functions 754// |</br>|-------------|-------------|-------------|-------------|</br>| timestamp | filter | ge, le | | 755// </br>| displayName | select, orderBy | | | </br>| apiRegion | filter | eq | | </br>| userId | 756// select, filter | eq | | </br>| productId | select, filter | eq | | </br>| subscriptionId | select, 757// filter | eq | | </br>| callCountSuccess | select, orderBy | | | </br>| callCountBlocked | 758// select, orderBy | | | </br>| callCountFailed | select, orderBy | | | </br>| callCountOther | 759// select, orderBy | | | </br>| callCountTotal | select, orderBy | | | </br>| bandwidth | 760// select, orderBy | | | </br>| cacheHitsCount | select | | | </br>| cacheMissCount | select | 761// | | </br>| apiTimeAvg | select, orderBy | | | </br>| apiTimeMin | select | | | </br>| 762// apiTimeMax | select | | | </br>| serviceTimeAvg | select | | | </br>| serviceTimeMin | 763// select | | | </br>| serviceTimeMax | select | | | </br> 764// top - number of records to return. 765// skip - number of records to skip. 766// orderby - oData order by query option. 767func (client ReportsClient) ListBySubscription(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32, orderby string) (result ReportCollectionPage, err error) { 768 if tracing.IsEnabled() { 769 ctx = tracing.StartSpan(ctx, fqdn+"/ReportsClient.ListBySubscription") 770 defer func() { 771 sc := -1 772 if result.rc.Response.Response != nil { 773 sc = result.rc.Response.Response.StatusCode 774 } 775 tracing.EndSpan(ctx, sc, err) 776 }() 777 } 778 if err := validation.Validate([]validation.Validation{ 779 {TargetValue: serviceName, 780 Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil}, 781 {Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil}, 782 {Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}, 783 {TargetValue: top, 784 Constraints: []validation.Constraint{{Target: "top", Name: validation.Null, Rule: false, 785 Chain: []validation.Constraint{{Target: "top", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil}}}}}, 786 {TargetValue: skip, 787 Constraints: []validation.Constraint{{Target: "skip", Name: validation.Null, Rule: false, 788 Chain: []validation.Constraint{{Target: "skip", Name: validation.InclusiveMinimum, Rule: int64(0), Chain: nil}}}}}}); err != nil { 789 return result, validation.NewError("apimanagement.ReportsClient", "ListBySubscription", err.Error()) 790 } 791 792 result.fn = client.listBySubscriptionNextResults 793 req, err := client.ListBySubscriptionPreparer(ctx, resourceGroupName, serviceName, filter, top, skip, orderby) 794 if err != nil { 795 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListBySubscription", nil, "Failure preparing request") 796 return 797 } 798 799 resp, err := client.ListBySubscriptionSender(req) 800 if err != nil { 801 result.rc.Response = autorest.Response{Response: resp} 802 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListBySubscription", resp, "Failure sending request") 803 return 804 } 805 806 result.rc, err = client.ListBySubscriptionResponder(resp) 807 if err != nil { 808 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListBySubscription", resp, "Failure responding to request") 809 return 810 } 811 if result.rc.hasNextLink() && result.rc.IsEmpty() { 812 err = result.NextWithContext(ctx) 813 return 814 } 815 816 return 817} 818 819// ListBySubscriptionPreparer prepares the ListBySubscription request. 820func (client ReportsClient) ListBySubscriptionPreparer(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32, orderby string) (*http.Request, error) { 821 pathParameters := map[string]interface{}{ 822 "resourceGroupName": autorest.Encode("path", resourceGroupName), 823 "serviceName": autorest.Encode("path", serviceName), 824 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 825 } 826 827 const APIVersion = "2020-12-01" 828 queryParameters := map[string]interface{}{ 829 "$filter": autorest.Encode("query", filter), 830 "api-version": APIVersion, 831 } 832 if top != nil { 833 queryParameters["$top"] = autorest.Encode("query", *top) 834 } 835 if skip != nil { 836 queryParameters["$skip"] = autorest.Encode("query", *skip) 837 } 838 if len(orderby) > 0 { 839 queryParameters["$orderby"] = autorest.Encode("query", orderby) 840 } 841 842 preparer := autorest.CreatePreparer( 843 autorest.AsGet(), 844 autorest.WithBaseURL(client.BaseURI), 845 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/reports/bySubscription", pathParameters), 846 autorest.WithQueryParameters(queryParameters)) 847 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 848} 849 850// ListBySubscriptionSender sends the ListBySubscription request. The method will close the 851// http.Response Body if it receives an error. 852func (client ReportsClient) ListBySubscriptionSender(req *http.Request) (*http.Response, error) { 853 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 854} 855 856// ListBySubscriptionResponder handles the response to the ListBySubscription request. The method always 857// closes the http.Response Body. 858func (client ReportsClient) ListBySubscriptionResponder(resp *http.Response) (result ReportCollection, err error) { 859 err = autorest.Respond( 860 resp, 861 azure.WithErrorUnlessStatusCode(http.StatusOK), 862 autorest.ByUnmarshallingJSON(&result), 863 autorest.ByClosing()) 864 result.Response = autorest.Response{Response: resp} 865 return 866} 867 868// listBySubscriptionNextResults retrieves the next set of results, if any. 869func (client ReportsClient) listBySubscriptionNextResults(ctx context.Context, lastResults ReportCollection) (result ReportCollection, err error) { 870 req, err := lastResults.reportCollectionPreparer(ctx) 871 if err != nil { 872 return result, autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "listBySubscriptionNextResults", nil, "Failure preparing next results request") 873 } 874 if req == nil { 875 return 876 } 877 resp, err := client.ListBySubscriptionSender(req) 878 if err != nil { 879 result.Response = autorest.Response{Response: resp} 880 return result, autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "listBySubscriptionNextResults", resp, "Failure sending next results request") 881 } 882 result, err = client.ListBySubscriptionResponder(resp) 883 if err != nil { 884 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "listBySubscriptionNextResults", resp, "Failure responding to next results request") 885 } 886 return 887} 888 889// ListBySubscriptionComplete enumerates all values, automatically crossing page boundaries as required. 890func (client ReportsClient) ListBySubscriptionComplete(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32, orderby string) (result ReportCollectionIterator, err error) { 891 if tracing.IsEnabled() { 892 ctx = tracing.StartSpan(ctx, fqdn+"/ReportsClient.ListBySubscription") 893 defer func() { 894 sc := -1 895 if result.Response().Response.Response != nil { 896 sc = result.page.Response().Response.Response.StatusCode 897 } 898 tracing.EndSpan(ctx, sc, err) 899 }() 900 } 901 result.page, err = client.ListBySubscription(ctx, resourceGroupName, serviceName, filter, top, skip, orderby) 902 return 903} 904 905// ListByTime lists report records by Time. 906// Parameters: 907// resourceGroupName - the name of the resource group. 908// serviceName - the name of the API Management service. 909// filter - | Field | Usage | Supported operators | Supported functions 910// |</br>|-------------|-------------|-------------|-------------|</br>| timestamp | filter, select | ge, le | 911// | </br>| interval | select | | | </br>| apiRegion | filter | eq | | </br>| userId | filter | eq 912// | | </br>| productId | filter | eq | | </br>| subscriptionId | filter | eq | | </br>| apiId | 913// filter | eq | | </br>| operationId | filter | eq | | </br>| callCountSuccess | select | | | 914// </br>| callCountBlocked | select | | | </br>| callCountFailed | select | | | </br>| 915// callCountOther | select | | | </br>| bandwidth | select, orderBy | | | </br>| cacheHitsCount 916// | select | | | </br>| cacheMissCount | select | | | </br>| apiTimeAvg | select | | | 917// </br>| apiTimeMin | select | | | </br>| apiTimeMax | select | | | </br>| serviceTimeAvg | 918// select | | | </br>| serviceTimeMin | select | | | </br>| serviceTimeMax | select | | 919// | </br> 920// interval - by time interval. Interval must be multiple of 15 minutes and may not be zero. The value should 921// be in ISO 8601 format (http://en.wikipedia.org/wiki/ISO_8601#Durations).This code can be used to convert 922// TimeSpan to a valid interval string: XmlConvert.ToString(new TimeSpan(hours, minutes, seconds)). 923// top - number of records to return. 924// skip - number of records to skip. 925// orderby - oData order by query option. 926func (client ReportsClient) ListByTime(ctx context.Context, resourceGroupName string, serviceName string, filter string, interval string, top *int32, skip *int32, orderby string) (result ReportCollectionPage, err error) { 927 if tracing.IsEnabled() { 928 ctx = tracing.StartSpan(ctx, fqdn+"/ReportsClient.ListByTime") 929 defer func() { 930 sc := -1 931 if result.rc.Response.Response != nil { 932 sc = result.rc.Response.Response.StatusCode 933 } 934 tracing.EndSpan(ctx, sc, err) 935 }() 936 } 937 if err := validation.Validate([]validation.Validation{ 938 {TargetValue: serviceName, 939 Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil}, 940 {Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil}, 941 {Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}, 942 {TargetValue: top, 943 Constraints: []validation.Constraint{{Target: "top", Name: validation.Null, Rule: false, 944 Chain: []validation.Constraint{{Target: "top", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil}}}}}, 945 {TargetValue: skip, 946 Constraints: []validation.Constraint{{Target: "skip", Name: validation.Null, Rule: false, 947 Chain: []validation.Constraint{{Target: "skip", Name: validation.InclusiveMinimum, Rule: int64(0), Chain: nil}}}}}}); err != nil { 948 return result, validation.NewError("apimanagement.ReportsClient", "ListByTime", err.Error()) 949 } 950 951 result.fn = client.listByTimeNextResults 952 req, err := client.ListByTimePreparer(ctx, resourceGroupName, serviceName, filter, interval, top, skip, orderby) 953 if err != nil { 954 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListByTime", nil, "Failure preparing request") 955 return 956 } 957 958 resp, err := client.ListByTimeSender(req) 959 if err != nil { 960 result.rc.Response = autorest.Response{Response: resp} 961 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListByTime", resp, "Failure sending request") 962 return 963 } 964 965 result.rc, err = client.ListByTimeResponder(resp) 966 if err != nil { 967 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListByTime", resp, "Failure responding to request") 968 return 969 } 970 if result.rc.hasNextLink() && result.rc.IsEmpty() { 971 err = result.NextWithContext(ctx) 972 return 973 } 974 975 return 976} 977 978// ListByTimePreparer prepares the ListByTime request. 979func (client ReportsClient) ListByTimePreparer(ctx context.Context, resourceGroupName string, serviceName string, filter string, interval string, top *int32, skip *int32, orderby string) (*http.Request, error) { 980 pathParameters := map[string]interface{}{ 981 "resourceGroupName": autorest.Encode("path", resourceGroupName), 982 "serviceName": autorest.Encode("path", serviceName), 983 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 984 } 985 986 const APIVersion = "2020-12-01" 987 queryParameters := map[string]interface{}{ 988 "$filter": autorest.Encode("query", filter), 989 "api-version": APIVersion, 990 "interval": autorest.Encode("query", interval), 991 } 992 if top != nil { 993 queryParameters["$top"] = autorest.Encode("query", *top) 994 } 995 if skip != nil { 996 queryParameters["$skip"] = autorest.Encode("query", *skip) 997 } 998 if len(orderby) > 0 { 999 queryParameters["$orderby"] = autorest.Encode("query", orderby) 1000 } 1001 1002 preparer := autorest.CreatePreparer( 1003 autorest.AsGet(), 1004 autorest.WithBaseURL(client.BaseURI), 1005 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/reports/byTime", pathParameters), 1006 autorest.WithQueryParameters(queryParameters)) 1007 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 1008} 1009 1010// ListByTimeSender sends the ListByTime request. The method will close the 1011// http.Response Body if it receives an error. 1012func (client ReportsClient) ListByTimeSender(req *http.Request) (*http.Response, error) { 1013 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 1014} 1015 1016// ListByTimeResponder handles the response to the ListByTime request. The method always 1017// closes the http.Response Body. 1018func (client ReportsClient) ListByTimeResponder(resp *http.Response) (result ReportCollection, err error) { 1019 err = autorest.Respond( 1020 resp, 1021 azure.WithErrorUnlessStatusCode(http.StatusOK), 1022 autorest.ByUnmarshallingJSON(&result), 1023 autorest.ByClosing()) 1024 result.Response = autorest.Response{Response: resp} 1025 return 1026} 1027 1028// listByTimeNextResults retrieves the next set of results, if any. 1029func (client ReportsClient) listByTimeNextResults(ctx context.Context, lastResults ReportCollection) (result ReportCollection, err error) { 1030 req, err := lastResults.reportCollectionPreparer(ctx) 1031 if err != nil { 1032 return result, autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "listByTimeNextResults", nil, "Failure preparing next results request") 1033 } 1034 if req == nil { 1035 return 1036 } 1037 resp, err := client.ListByTimeSender(req) 1038 if err != nil { 1039 result.Response = autorest.Response{Response: resp} 1040 return result, autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "listByTimeNextResults", resp, "Failure sending next results request") 1041 } 1042 result, err = client.ListByTimeResponder(resp) 1043 if err != nil { 1044 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "listByTimeNextResults", resp, "Failure responding to next results request") 1045 } 1046 return 1047} 1048 1049// ListByTimeComplete enumerates all values, automatically crossing page boundaries as required. 1050func (client ReportsClient) ListByTimeComplete(ctx context.Context, resourceGroupName string, serviceName string, filter string, interval string, top *int32, skip *int32, orderby string) (result ReportCollectionIterator, err error) { 1051 if tracing.IsEnabled() { 1052 ctx = tracing.StartSpan(ctx, fqdn+"/ReportsClient.ListByTime") 1053 defer func() { 1054 sc := -1 1055 if result.Response().Response.Response != nil { 1056 sc = result.page.Response().Response.Response.StatusCode 1057 } 1058 tracing.EndSpan(ctx, sc, err) 1059 }() 1060 } 1061 result.page, err = client.ListByTime(ctx, resourceGroupName, serviceName, filter, interval, top, skip, orderby) 1062 return 1063} 1064 1065// ListByUser lists report records by User. 1066// Parameters: 1067// resourceGroupName - the name of the resource group. 1068// serviceName - the name of the API Management service. 1069// filter - | Field | Usage | Supported operators | Supported functions 1070// |</br>|-------------|-------------|-------------|-------------|</br>| timestamp | filter | ge, le | | 1071// </br>| displayName | select, orderBy | | | </br>| userId | select, filter | eq | | </br>| 1072// apiRegion | filter | eq | | </br>| productId | filter | eq | | </br>| subscriptionId | filter | eq | 1073// | </br>| apiId | filter | eq | | </br>| operationId | filter | eq | | </br>| callCountSuccess | 1074// select, orderBy | | | </br>| callCountBlocked | select, orderBy | | | </br>| callCountFailed 1075// | select, orderBy | | | </br>| callCountOther | select, orderBy | | | </br>| callCountTotal 1076// | select, orderBy | | | </br>| bandwidth | select, orderBy | | | </br>| cacheHitsCount | 1077// select | | | </br>| cacheMissCount | select | | | </br>| apiTimeAvg | select, orderBy | 1078// | | </br>| apiTimeMin | select | | | </br>| apiTimeMax | select | | | </br>| 1079// serviceTimeAvg | select | | | </br>| serviceTimeMin | select | | | </br>| serviceTimeMax | 1080// select | | | </br> 1081// top - number of records to return. 1082// skip - number of records to skip. 1083// orderby - oData order by query option. 1084func (client ReportsClient) ListByUser(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32, orderby string) (result ReportCollectionPage, err error) { 1085 if tracing.IsEnabled() { 1086 ctx = tracing.StartSpan(ctx, fqdn+"/ReportsClient.ListByUser") 1087 defer func() { 1088 sc := -1 1089 if result.rc.Response.Response != nil { 1090 sc = result.rc.Response.Response.StatusCode 1091 } 1092 tracing.EndSpan(ctx, sc, err) 1093 }() 1094 } 1095 if err := validation.Validate([]validation.Validation{ 1096 {TargetValue: serviceName, 1097 Constraints: []validation.Constraint{{Target: "serviceName", Name: validation.MaxLength, Rule: 50, Chain: nil}, 1098 {Target: "serviceName", Name: validation.MinLength, Rule: 1, Chain: nil}, 1099 {Target: "serviceName", Name: validation.Pattern, Rule: `^[a-zA-Z](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$`, Chain: nil}}}, 1100 {TargetValue: top, 1101 Constraints: []validation.Constraint{{Target: "top", Name: validation.Null, Rule: false, 1102 Chain: []validation.Constraint{{Target: "top", Name: validation.InclusiveMinimum, Rule: int64(1), Chain: nil}}}}}, 1103 {TargetValue: skip, 1104 Constraints: []validation.Constraint{{Target: "skip", Name: validation.Null, Rule: false, 1105 Chain: []validation.Constraint{{Target: "skip", Name: validation.InclusiveMinimum, Rule: int64(0), Chain: nil}}}}}}); err != nil { 1106 return result, validation.NewError("apimanagement.ReportsClient", "ListByUser", err.Error()) 1107 } 1108 1109 result.fn = client.listByUserNextResults 1110 req, err := client.ListByUserPreparer(ctx, resourceGroupName, serviceName, filter, top, skip, orderby) 1111 if err != nil { 1112 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListByUser", nil, "Failure preparing request") 1113 return 1114 } 1115 1116 resp, err := client.ListByUserSender(req) 1117 if err != nil { 1118 result.rc.Response = autorest.Response{Response: resp} 1119 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListByUser", resp, "Failure sending request") 1120 return 1121 } 1122 1123 result.rc, err = client.ListByUserResponder(resp) 1124 if err != nil { 1125 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "ListByUser", resp, "Failure responding to request") 1126 return 1127 } 1128 if result.rc.hasNextLink() && result.rc.IsEmpty() { 1129 err = result.NextWithContext(ctx) 1130 return 1131 } 1132 1133 return 1134} 1135 1136// ListByUserPreparer prepares the ListByUser request. 1137func (client ReportsClient) ListByUserPreparer(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32, orderby string) (*http.Request, error) { 1138 pathParameters := map[string]interface{}{ 1139 "resourceGroupName": autorest.Encode("path", resourceGroupName), 1140 "serviceName": autorest.Encode("path", serviceName), 1141 "subscriptionId": autorest.Encode("path", client.SubscriptionID), 1142 } 1143 1144 const APIVersion = "2020-12-01" 1145 queryParameters := map[string]interface{}{ 1146 "$filter": autorest.Encode("query", filter), 1147 "api-version": APIVersion, 1148 } 1149 if top != nil { 1150 queryParameters["$top"] = autorest.Encode("query", *top) 1151 } 1152 if skip != nil { 1153 queryParameters["$skip"] = autorest.Encode("query", *skip) 1154 } 1155 if len(orderby) > 0 { 1156 queryParameters["$orderby"] = autorest.Encode("query", orderby) 1157 } 1158 1159 preparer := autorest.CreatePreparer( 1160 autorest.AsGet(), 1161 autorest.WithBaseURL(client.BaseURI), 1162 autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/reports/byUser", pathParameters), 1163 autorest.WithQueryParameters(queryParameters)) 1164 return preparer.Prepare((&http.Request{}).WithContext(ctx)) 1165} 1166 1167// ListByUserSender sends the ListByUser request. The method will close the 1168// http.Response Body if it receives an error. 1169func (client ReportsClient) ListByUserSender(req *http.Request) (*http.Response, error) { 1170 return client.Send(req, azure.DoRetryWithRegistration(client.Client)) 1171} 1172 1173// ListByUserResponder handles the response to the ListByUser request. The method always 1174// closes the http.Response Body. 1175func (client ReportsClient) ListByUserResponder(resp *http.Response) (result ReportCollection, err error) { 1176 err = autorest.Respond( 1177 resp, 1178 azure.WithErrorUnlessStatusCode(http.StatusOK), 1179 autorest.ByUnmarshallingJSON(&result), 1180 autorest.ByClosing()) 1181 result.Response = autorest.Response{Response: resp} 1182 return 1183} 1184 1185// listByUserNextResults retrieves the next set of results, if any. 1186func (client ReportsClient) listByUserNextResults(ctx context.Context, lastResults ReportCollection) (result ReportCollection, err error) { 1187 req, err := lastResults.reportCollectionPreparer(ctx) 1188 if err != nil { 1189 return result, autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "listByUserNextResults", nil, "Failure preparing next results request") 1190 } 1191 if req == nil { 1192 return 1193 } 1194 resp, err := client.ListByUserSender(req) 1195 if err != nil { 1196 result.Response = autorest.Response{Response: resp} 1197 return result, autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "listByUserNextResults", resp, "Failure sending next results request") 1198 } 1199 result, err = client.ListByUserResponder(resp) 1200 if err != nil { 1201 err = autorest.NewErrorWithError(err, "apimanagement.ReportsClient", "listByUserNextResults", resp, "Failure responding to next results request") 1202 } 1203 return 1204} 1205 1206// ListByUserComplete enumerates all values, automatically crossing page boundaries as required. 1207func (client ReportsClient) ListByUserComplete(ctx context.Context, resourceGroupName string, serviceName string, filter string, top *int32, skip *int32, orderby string) (result ReportCollectionIterator, err error) { 1208 if tracing.IsEnabled() { 1209 ctx = tracing.StartSpan(ctx, fqdn+"/ReportsClient.ListByUser") 1210 defer func() { 1211 sc := -1 1212 if result.Response().Response.Response != nil { 1213 sc = result.page.Response().Response.Response.StatusCode 1214 } 1215 tracing.EndSpan(ctx, sc, err) 1216 }() 1217 } 1218 result.page, err = client.ListByUser(ctx, resourceGroupName, serviceName, filter, top, skip, orderby) 1219 return 1220} 1221