/// <summary>
        /// Delete extraction pipelines, optionally ignoring unknown ids.
        /// </summary>
        /// <param name="query">Delete query</param>
        /// <param name="token">Optional cancellation token</param>
        /// <returns></returns>
        public async Task DeleteAsync(ExtPipeDelete query, CancellationToken token = default)
        {
            if (query is null)
            {
                throw new ArgumentNullException(nameof(query));
            }

            var req = Oryx.Cognite.ExtPipes.delete(query);

            await RunAsync(req, token).ConfigureAwait(false);
        }
        /// <summary>
        /// Delete extraction pipelines, optionally ignoring unknown ids.
        /// </summary>
        /// <param name="ids">Ids to delete</param>
        /// <param name="token">Optional cancellation token</param>
        /// <returns></returns>
        public async Task DeleteAsync(IEnumerable <Identity> ids, CancellationToken token = default)
        {
            if (ids is null)
            {
                throw new ArgumentNullException(nameof(ids));
            }

            var req = new ExtPipeDelete
            {
                Items = ids
            };

            await DeleteAsync(req, token).ConfigureAwait(false);
        }
        /// <summary>
        /// Delete extraction pipelines, optionally ignoring unknown ids.
        /// </summary>
        /// <param name="externalIds">External ids to delete</param>
        /// <param name="token">Optional cancellation token</param>
        /// <returns></returns>
        public async Task DeleteAsync(IEnumerable <string> externalIds, CancellationToken token = default)
        {
            if (externalIds is null)
            {
                throw new ArgumentNullException(nameof(externalIds));
            }

            var req = new ExtPipeDelete
            {
                Items = externalIds.Select(Identity.Create)
            };

            await DeleteAsync(req, token).ConfigureAwait(false);
        }