public static string Query(string query)
        {
            var traceId = Guid.NewGuid().ToString();
            Dictionary <string, string> resultDictionary = new Dictionary <string, string>();

            using (PlyQorTrace trace = new PlyQorTrace(Configuration.DatabaseConnection, traceId))
            {
                try
                {
                    var requestDictionary = ValidationProvider.GenerateDictionary(query);

                    RequestManager requestManager = new RequestManager(requestDictionary);

                    var token = requestManager.GetRequestStringValue(RequestKeys.Token);

                    var container = requestManager.GetRequestStringValue(RequestKeys.Container);

                    trace.AddContainer(container);

                    ValidationProvider.CheckToken(container, token);

                    var operation = requestManager.GetRequestStringValue(RequestKeys.Operation);

                    trace.AddOperation(operation);

                    ValidationProvider.CheckOperation(operation);

                    resultDictionary = ExecuteQuery(operation, requestManager);
                }
                catch (PlyQorException javelinException)
                {
                    if (javelinException.Message == StatusCode.ERRMALFORM)
                    {
                        trace.AddCode(StatusCode.ERRMALFORM);
                        return(StatusCode.ERR400);
                    }

                    if (javelinException.Message == StatusCode.ERRBLOCK)
                    {
                        trace.AddCode(StatusCode.ERRBLOCK);
                        return(StatusCode.ERR401);
                    }

                    resultDictionary.Add(ResultKeys.Status, ResultValues.False);
                    resultDictionary.Add(ResultKeys.Code, javelinException.Message);
                    trace.AddCode(javelinException.Message);
                }

                resultDictionary.Add(ResultKeys.Trace, traceId);
                var result = JsonConvert.SerializeObject(resultDictionary);
                return(result);
            }
        }