/// <summary> /// Updates existing order using Alpaca REST API endpoint. /// </summary> /// <param name="request">Patch order request parameters.</param> /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> /// <returns>Read-only order information object for updated order.</returns> public async Task <IOrder> PatchOrderAsync( ChangeOrderRequest request, CancellationToken cancellationToken = default) { request.EnsureNotNull(nameof(request)).Validate(); var changeOrder = new JsonChangeOrder { Quantity = request.Quantity, TimeInForce = request.Duration, LimitPrice = request.LimitPrice, StopPrice = request.StopPrice, ClientOrderId = request.ClientOrderId, }; await _alpacaRestApiThrottler.WaitToProceed(cancellationToken).ConfigureAwait(false); using var httpRequest = new HttpRequestMessage(_httpMethodPatch, new Uri($"orders/{request.OrderId:D}", UriKind.RelativeOrAbsolute)) { Content = toStringContent(changeOrder) }; using var response = await _httpClient.SendAsync(httpRequest, cancellationToken) .ConfigureAwait(false); return(await response.DeserializeAsync <IOrder, JsonOrder>() .ConfigureAwait(false)); }
/// <inheritdoc /> public Task <IOrder> PatchOrderAsync( ChangeOrderRequest request, CancellationToken cancellationToken = default) => _httpClient.PatchAsync <IOrder, JsonOrder, ChangeOrderRequest>( request.EnsureNotNull(nameof(request)).Validate().GetEndpointUri(), request, _alpacaRestApiThrottler, cancellationToken);