/// <summary>
        /// Create ThreeDAssetMapping.
        /// </summary>
        /// <param name="modelId">The modelId to get revision from.</param>
        /// <param name="revisionId">The revisionId to get asset mappings from</param>
        /// <param name="ThreeDAssetMapping">ThreeDAssetMapping to create.</param>
        /// <param name="token">Optional cancellation token.</param>
        /// <returns>Sequence of created ThreeDAssetMapping.</returns>
        public async Task <IEnumerable <ThreeDAssetMapping> > CreateAsync(long modelId, long revisionId, IEnumerable <ThreeDAssetMappingCreate> ThreeDAssetMapping, CancellationToken token = default)
        {
            if (ThreeDAssetMapping is null)
            {
                throw new ArgumentNullException(nameof(ThreeDAssetMapping));
            }

            var req = ThreeDAssetMappings.create(modelId, revisionId, ThreeDAssetMapping);

            return(await RunAsync(req, token).ConfigureAwait(false));
        }
        /// <summary>
        /// Delete multiple ThreeDAssetMapping in the same project, along with all their descendants in the ThreeD hierarchy if
        /// recursive is true.
        /// </summary>
        /// <param name="modelId">The modelId to get revision from.</param>
        /// <param name="revisionId">The revisionId to get asset mappings from</param>
        /// <param name="ids">Ids of ThreeDAssetMappings to delete.</param>
        /// <param name="token">Optional cancellation token.</param>
        public async Task <EmptyResponse> DeleteAsync(long modelId, long revisionId, IEnumerable <Identity> ids, CancellationToken token = default)
        {
            if (ids is null)
            {
                throw new ArgumentNullException(nameof(ids));
            }

            var req = ThreeDAssetMappings.delete(modelId, revisionId, ids);

            return(await RunAsync(req, token).ConfigureAwait(false));
        }
        /// <summary>
        /// Retrieves list of ThreeDAssetMappings matching query.
        /// </summary>
        /// <param name="modelId">The modelId to get revision from.</param>
        /// <param name="revisionId">The revisionId to get asset mappings from</param>
        /// <param name="query">The query filter to use.</param>
        /// <param name="token">Optional cancellation token to use.</param>
        /// <returns>List of ThreeDAssetMapping matching given filters and optional cursor</returns>
        public async Task <ItemsWithCursor <ThreeDAssetMapping> > ListAsync(long modelId, long revisionId, ThreeDAssetMappingQuery query, CancellationToken token = default)
        {
            if (query is null)
            {
                throw new ArgumentNullException(nameof(query));
            }

            var req = ThreeDAssetMappings.list(modelId, revisionId, query);

            return(await RunAsync(req, token).ConfigureAwait(false));
        }