public async Task <ActionResult <string> > Get()
        {
            try
            {
                this.SetHeaders();
                string guid = this.GetGuid();
                if (string.IsNullOrEmpty(guid))
                {
                    // Invalid GUID. May not be legitimate Grunt request, respond Ok
                    return(Ok());
                }
                Grunt grunt = null;
                try
                {
                    grunt = await _client.ApiGruntsGuidByGuidGetAsync(guid);
                }
                catch (HttpOperationException) { grunt = null; }
                if (grunt == null || grunt.Status != GruntStatus.Active)
                {
                    // Invalid GUID. May not be legitimate Grunt request, respond Ok
                    return(Ok());
                }
                grunt.LastCheckIn = DateTime.UtcNow;
                await _client.ApiGruntsPutAsync(grunt);

                GruntTasking gruntTasking = (await _client.ApiGruntsByIdTaskingsSearchUninitializedGetAsync(grunt.Id ?? default)).FirstOrDefault();
                if (gruntTasking == null)
                {
                    // No GruntTasking assigned. Respond with empty template
                    return(Ok(this.GetGetEmptyResponse()));
                }

                if (gruntTasking.Type == GruntTaskingType.Assembly && gruntTasking.GruntTask == null)
                {
                    // Can't find corresponding task. Should never reach this point. Will just respond NotFound.
                    return(NotFound());
                }

                gruntTasking.Status      = GruntTaskingStatus.Tasked;
                gruntTasking.TaskingTime = DateTime.UtcNow;
                gruntTasking             = await _client.ApiTaskingsPutAsync(gruntTasking);

                gruntTasking.Grunt = gruntTasking.GruntId == grunt.Id ? grunt : await _client.ApiGruntsByIdGetAsync(gruntTasking.GruntId);

                ModelUtilities.GruntEncryptedMessage message = null;
                try
                {
                    message = this.CreateMessageForGrunt(grunt, gruntTasking.Grunt, this.GetGruntTaskingMessage(gruntTasking, gruntTasking.Grunt.DotNetFrameworkVersion));
                }
                catch (HttpOperationException)
                {
                    gruntTasking.Status = GruntTaskingStatus.Aborted;
                    await _client.ApiTaskingsPutAsync(gruntTasking);

                    return(NotFound());
                }
                // Transform response
                string transformed = this._utilities.ProfileTransform(_context.HttpProfile.First(), Common.CovenantEncoding.GetBytes(JsonConvert.SerializeObject(message)));
                // Format transformed response
                string response = String.Format(_context.HttpProfile.First().HttpPostResponse, transformed);
                return(Ok(response));
            }
            catch (HttpOperationException)
            {
                return(NotFound());
            }
            catch (Exception)
            {
                return(NotFound());
            }
        }