/// <summary>
        /// Updates the given <see cref="InventoryLevel"/>.
        /// </summary>
        /// <param name="updatedInventoryLevel">The updated <see cref="InventoryLevel"/></param>
        /// <param name="disconnectIfNecessary">Whether inventory for any previously connected locations will be set to 0 and the locations disconnected. This property is ignored when no fulfillment service is involved.</param>
        /// <returns>The updated <see cref="InventoryLevel"/></returns>
        public virtual async Task <InventoryLevel> SetAsync(InventoryLevel updatedInventoryLevel, bool disconnectIfNecessary = false)
        {
            var req  = PrepareRequest($"inventory_levels/set.json");
            var body = updatedInventoryLevel.ToDictionary();

            body.Add("disconnect_if_necessary", disconnectIfNecessary);
            JsonContent content = new JsonContent(body);

            return(await ExecuteRequestAsync <InventoryLevel>(req, HttpMethod.Post, content, "inventory_level"));
        }
        /// <summary>
        /// Updates the given <see cref="InventoryLevel"/>.
        /// </summary>
        /// <param name="updatedInventoryLevel">The updated <see cref="InventoryLevel"/></param>
        /// <param name="disconnectIfNecessary">Whether inventory for any previously connected locations will be set to 0 and the locations disconnected. This property is ignored when no fulfillment service is involved.</param>
        /// <param name="cancellationToken">Cancellation Token</param>
        /// <returns>The updated <see cref="InventoryLevel"/></returns>
        public virtual async Task <InventoryLevel> SetAsync(InventoryLevel updatedInventoryLevel, bool disconnectIfNecessary = false, CancellationToken cancellationToken = default)
        {
            var req  = PrepareRequest($"inventory_levels/set.json");
            var body = updatedInventoryLevel.ToDictionary();

            body.Add("disconnect_if_necessary", disconnectIfNecessary);

            var content  = new JsonContent(body);
            var response = await ExecuteRequestAsync <InventoryLevel>(req, HttpMethod.Post, cancellationToken, content, "inventory_level");

            return(response.Result);
        }