public virtual async Task <bool> DeleteAsync(CancellationToken cancellationToken = default)
        {
            RouteAttribute routeAttribute = this.GetType().GetCustomAttributes(false).FirstOrDefault(x => x.GetType() == typeof(RouteAttribute)) as RouteAttribute;

            string url = routeAttribute.GetSingularRoute(ID);

            RestRequest request = new RestRequest(url, Method.DELETE, DataFormat.Json);

            IRestResponse <T> restResponse = await DataConnection.RequestAsync <T>(request, cancellationToken);

            return(restResponse.IsSuccessful);
        }
        public static async Task <T> GetAsync(int id, CancellationToken cancellationToken = default)
        {
            RouteAttribute routeAttribute = typeof(T).GetCustomAttributes(false).FirstOrDefault(x => x.GetType() == typeof(RouteAttribute)) as RouteAttribute;

            string url = routeAttribute.GetSingularRoute(id);

            RestRequest request = new RestRequest(url, Method.GET, DataFormat.Json);

            IRestResponse <T> restResponse = await DataConnection.RequestAsync <T>(request, cancellationToken);

            return(restResponse.Data);
        }
        public virtual async Task <T> UpdateAsync(CancellationToken cancellationToken = default)
        {
            RouteAttribute routeAttribute = this.GetType().GetCustomAttributes(false).FirstOrDefault(x => x.GetType() == typeof(RouteAttribute)) as RouteAttribute;

            string url = routeAttribute.GetSingularRoute(ID);

            RestRequest request = new RestRequest(url, Method.PUT, DataFormat.Json);

            request.AddJsonBody(this);

            IRestResponse <T> restResponse = await DataConnection.RequestAsync <T>(request, cancellationToken);

            this.UpdatedAt = (restResponse.Data as DataPacket <T>).UpdatedAt;

            return(restResponse.Data);
        }