public async Task <ActionResult> Get([FromQuery] GetItemsFilterRequest filterRequest) { if (filterRequest == null) { return(GenericInvalidOperation(StatusCodes.Status422UnprocessableEntity, ExternalErrorReason.UnexpectedError)); } try { var limit = filterRequest.Limit ?? _apiSettings.DefaultNumberOfResults; var skip = filterRequest.Skip ?? _apiSettings.DefaultNumberOfSkip; _tracer.ActiveSpan?.Log(new Dictionary <string, object> { [nameof(limit)] = limit, [nameof(skip)] = skip, }); var @event = await _actorManager.Context.RequestAsync <UserEvent>( _actorManager.GetParentActor(), new GetUsers(limit, skip), TimeSpan.FromMilliseconds(_apiSettings.RequestTimeoutInMilliseconds)); switch (@event) { case UsersRetrieved e: return(Ok(new UsersListResponse(e.TotalCount, e.Users.Select(u => new UserDetailsResponse(u.Id, u.Name, u.CreatedOn))))); default: return(GenericInvalidOperation(StatusCodes.Status400BadRequest, ExternalErrorReason.UnexpectedError)); } } catch (TimeoutException) { return(GenericInvalidOperation(StatusCodes.Status504GatewayTimeout, ExternalErrorReason.RequestTimedOut)); } }