/// <inheritdoc/>
        public Task <TEntity> DeleteDraftAsync(string id, CancellationToken ct = default)
        {
            Guard.NotNullOrEmpty(id, nameof(id));

            return(RequestJsonAsync <TEntity>(HttpMethod.Delete, BuildSchemaUrl($"{id}/draft", false), ct: ct));
        }
        /// <inheritdoc/>
        public Task DeleteAsync(string id, bool permanent = false, bool checkReferrers = false, CancellationToken ct = default)
        {
            Guard.NotNullOrEmpty(id, nameof(id));

            return(RequestAsync(HttpMethod.Delete, BuildSchemaUrl($"{id}?permanent={permanent}&checkReferrers={checkReferrers}", false), ct: ct));
        }
        public async Task DeleteAssetAsync(string id)
        {
            Guard.NotNullOrEmpty(id, nameof(id));

            await RequestAsync(HttpMethod.Delete, BuildAppAssetsUrl(id));
        }
        /// <inheritdoc/>
        public Task <TEntity> GetAsync(string id, QueryContext context = null, CancellationToken ct = default)
        {
            Guard.NotNullOrEmpty(id, nameof(id));

            return(RequestJsonAsync <TEntity>(HttpMethod.Get, BuildSchemaUrl($"{id}/", true, context), null, context, ct));
        }
        public Task RestoreAsync(string id)
        {
            Guard.NotNullOrEmpty(id, nameof(id));

            return(RequestAsync(HttpMethod.Put, BuildContentUrl($"{id}/restore/")));
        }
        public Task DeleteAsync(string id)
        {
            Guard.NotNullOrEmpty(id, nameof(id));

            return(RequestAsync(HttpMethod.Delete, BuildContentUrl($"{id}/")));
        }
        public Task DeleteAsync(string id, CancellationToken ct = default)
        {
            Guard.NotNullOrEmpty(id, nameof(id));

            return(RequestAsync(HttpMethod.Delete, BuildSchemaUrl($"{id}/", false), ct: ct));
        }
        public Task ArchiveAsync(string id)
        {
            Guard.NotNullOrEmpty(id, nameof(id));

            return(RequestAsync(HttpMethod.Put, $"{id}/archive/"));
        }
        public Task UnpublishAsync(string id)
        {
            Guard.NotNullOrEmpty(id, nameof(id));

            return(RequestAsync(HttpMethod.Put, $"{id}/unpublish/"));
        }
        public Task <Asset> GetAssetAsync(string id)
        {
            Guard.NotNullOrEmpty(id, nameof(id));

            return(RequestJsonAsync <Asset>(HttpMethod.Get, BuildAppAssetsUrl(id)));
        }
        public Task DeleteAssetAsync(string id, CancellationToken ct = default)
        {
            Guard.NotNullOrEmpty(id, nameof(id));

            return(RequestAsync(HttpMethod.Delete, BuildAppAssetsUrl(id), ct: ct));
        }