public IHttpActionResult GetFunctionInvocation(Guid functionInvocationId)
        {
            var func = _functionInstanceLookup.Lookup(functionInvocationId);

            if (func == null)
            {
                return(NotFound());
            }

            var model = new FunctionInstanceDetailsViewModel();

            model.Invocation    = new InvocationLogViewModel(func, HostInstanceHasHeartbeat(func));
            model.TriggerReason = new TriggerReasonViewModel(func);
            model.Trigger       = model.TriggerReason.ToString();
            model.IsAborted     = model.Invocation.Status == ViewModels.FunctionInstanceStatus.Running &&
                                  _aborter.HasRequestedHostInstanceAbort(func.InstanceQueueName);
            model.Parameters = CreateParameterModels(_account, func);

            // fetch ancestor
            var parentGuid = func.ParentId;

            if (parentGuid.HasValue)
            {
                FunctionInstanceSnapshot ancestor = _functionInstanceLookup.Lookup(parentGuid.Value);
                if (ancestor != null)
                {
                    bool?hasValidHeartbeat = HostInstanceHasHeartbeat(ancestor);
                    model.Ancestor = new InvocationLogViewModel(ancestor, hasValidHeartbeat);
                }
            }

            return(Ok(model));
        }