Skip to content

Latest commit

 

History

History
1273 lines (998 loc) · 96.4 KB

CHANGELOG.md

File metadata and controls

1273 lines (998 loc) · 96.4 KB

4.19.0 [unreleased]

Dependencies

⚠️ Important Notice: Starting from this release, we won’t be listing every dependency change in our changelog. This helps us maintain the project faster and focus on important features for our InfluxDB client.

CI

  1. #681: Add build for dotnet8

4.18.0 [2024-09-13]

Features:

  1. #658: Add HttpHeaders as IEnumerable<RestSharp.HttpParameter> to HttpException and facilitate access in WriteErrorEvent. Includes new example HttpErrorHandling.

Dependencies

Update dependencies:

Build:

  • #659: RestSharp to 112.0.0

Test:

  • #663: WireMock.Net to 1.6.1

4.17.0 [2024-08-12]

Breaking Changes

API

  • ApiResponse headers has been changed to IEnumerable<(string Name, string Value)>

Bug Fixes

  1. #649: Use HttpCompletionOption.ResponseHeadersRead for asynchronous QueryApi

Dependencies

Update dependencies:

Build:

  • #650: RestSharp to 111.4.0
  • #662: Microsoft.Extensions.ObjectPool to 8.0.8

Test:

  • #652: NUnit3TestAdapter to 4.6.0
  • #654: WireMock.Net to 1.5.62
  • #661: Microsoft.NET.Test.Sdk to 17.11.0

Examples:

  • #664: Radzen.Blazor to 5.1.6

4.16.0 [2024-06-24]

Features:

  • #633: Add package XML documentation.

Dependencies

Update dependencies:

Build:

  • #634: CsvHelper to 32.0.3
  • #635: Microsoft.Extensions.ObjectPool to 8.0.6
  • #638: System.Reactive to 6.0.1

Test:

  • #639: Microsoft.NET.Test.Sdk to 17.10.0
  • #641: WireMock.Net to 1.5.56

Examples:

  • #636: Radzen.Blazor to 4.32.3

4.15.0 [2024-05-17]

Bug Fixes

  1. #632: Use HttpCompletionOption.ResponseHeadersRead for streaming

Dependencies

Update dependencies:

Build:

  • #619: CsvHelper to 31.0.2
  • #629: Microsoft.Extensions.ObjectPool to 8.0.3

Test:

  • #608: NUnit to 3.14.0
  • #616: Microsoft.NET.Test.Sdk to 17.9.0
  • #626: coverlet.collector to 6.0.2
  • #628: WireMock.Net to 1.5.51

Examples:

  • #627: Radzen.Blazor to 4.29.1
  • #622: NodaTime to 3.1.11

4.14.0 [2023-11-07]

Features

  1. #590: Allows disable Trace verbose messages

Dependencies

Update dependencies:

Build:

  • #597: Microsoft.Extensions.ObjectPool to 8.0.0
  • #572: NodaTime.Serialization.JsonNet to 3.1.0
  • #595: System.Collections.Immutable to 8.0.0
  • #599: System.Configuration.ConfigurationManager to 8.0.0

Examples:

  • #593: Radzen.Blazor to 4.22.1

Test:

  • #596: WireMock.Net to 1.5.40
  • #598: Microsoft.NET.Test.Sdk to 17.8.0
  • #568: Moq to 4.20.69
  • #594: Tomlyn.Signed to 0.17.0

4.13.0 [2023-07-28]

Features

  1. #528: Add HttpClient as a part of InfluxDBClientOptions

Bug Fixes

  1. #555: Chaining multiple conditions in LINQ queries

Dependencies

Update dependencies:

Build:

  • #525: System.Reactive to 6.0.0
  • #549: Microsoft.Extensions.ObjectPool to 7.0.9

Examples:

  • #556: Radzen.Blazor to 4.14.1

Test:

  • #543: Microsoft.NET.Test.Sdk to 17.6.3
  • #524: coverlet.collector to 6.0.0
  • #550: WireMock.Net to 1.5.32
  • #529: NUnit3TestAdapter to 4.5.0

4.12.0 [2023-04-28]

Bug Fixes

  • #510: Passing aggregation function to AggregateWindow for LINQ queries

Dependencies

Update dependencies:

Build:

  • #497: NodaTime to 3.1.9
  • #485: Newtonsoft.Json to 13.0.3
  • #506: Microsoft.Extensions.ObjectPool to 7.0.5
  • #509: RestSharp to 110.2.0

Examples:

  • #511: Radzen.Blazor to 4.10.1

Test:

  • #508: WireMock.Net to 1.5.23
  • #480: NUnit3TestAdapter to 4.4.2
  • #473: Microsoft.NET.Test.Sdk to 17.5.0

4.11.0 [2023-02-23]

Bug Fixes

  • Revert [#408] conversion of double to string can result in a loss of precision

4.10.0 [2023-01-26]

Bug Fixes

  • #442: Allow to use DateTimeKind.Local and DateTimeKind.Local as a timestamp for Data point

Dependencies

Update dependencies:

Examples:

  • #446: Radzen.Blazor to 4.4.7

Test:

  • #439: WireMock.Net to 1.5.13
  • #445: Microsoft.NET.Test.Sdk to 17.4.1
  • #447: Tomlyn.Signed to 0.16.2

4.9.0 [2020-12-06]

Bug Fixes

  1. #408: Conversion of double to string can result in a loss of precision

Others

  1. #433: Add .NET 7.0 to supported .NET versions

Dependencies

Update dependencies:

Build:

  • #430: NodaTime to 3.1.6

Examples:

  • #432: Radzen.Blazor to 4.4.2

Test:

  • #431: Moq to 4.18.3
  • #428: WireMock.Net to 1.5.12

4.8.0 [2022-12-01]

⚠️ The client can be created without InfluxDBClientFactory:

using var client = new InfluxDBClient("http://localhost:8086", "my-token");

Features

  1. #388: Initialize C# client without InfluxDBClientFactory

Bug Fixes

  1. #426: Parsing HTTP headers with duplicated name

CI

  1. #416: Add build for .NET 7.0

Dependencies

Update dependencies:

Build:

  • #418: RestSharp to 108.0.3
  • #423: Newtonsoft.Json to 13.0.2
  • #405: NodaTime.Serialization.JsonNet to 3.0.1
  • #413: CsvHelper to 30.0.1

Examples:

  • #424: Radzen.Blazor to 4.3.8

Test:

  • #422: WireMock.Net to 1.5.11
  • #412: Microsoft.NET.Test.Sdk to 17.4.0
  • #417: NUnit3TestAdapter to 4.3.1

4.7.0 [2022-11-03]

Features

  1. #376: Add FluxRecord.Row which stores response data in a list
  2. #404: Expose FluxCsvParser as AnnotatedCsvParser

Dependencies

Update dependencies:

Build:

  • #397: CsvHelper to 30.0.0
  • #384: Microsoft.Extensions.ObjectPool to 6.0.10
  • #402: NodaTime to 3.1.5
  • #392: JsonSubTypes to 2.0.1

Examples:

  • #401: Radzen.Blazor to 4.1.15

Test:

  • #403: Tomlyn.Signed to 0.16.1
  • #400: WireMock.Net to 1.5.9
  • #398: NUnit3TestAdapter to 4.3.0
  • #399: coverlet.collector to 3.2.0

4.6.0 [2022-09-29]

Bug Fixes

  1. #353: Support for double types in LINQ expression [LINQ]
  2. #360: Designated HealthAsync as obsolete in IInfluxDBClient

Others

  1. #368: Use builtin support for synchronous HTTP requests from RestSharp

Documentation

  1. #355: Add an example how to use EventHandler for WriteApi

Dependencies

Update dependencies:

Build:

  • #364: System.Configuration.ConfigurationManager to 6.0.1
  • #365: Microsoft.Extensions.ObjectPool to 6.0.9
  • #368: RestSharp to 108.0.2
  • #371: NodaTime to 3.1.3

Examples:

  • #375: Radzen.Blazor to 4.1.4

Test:

  • #373: Microsoft.NET.Test.Sdk to 17.3.2
  • #363: WireMock.Net to 1.5.6

4.5.0 [2022-08-29]

Bug Fixes

  1. #348: Append task option at the end of script

Dependencies

Update dependencies:

Build:

  • #343: Microsoft.Extensions.ObjectPool to 6.0.8
  • #349: NodaTime to 3.1.2

Test:

  • #350: WireMock.Net to 1.5.4
  • #342: Moq to 4.18.2
  • #345: Microsoft.NET.Test.Sdk to 17.3.0

4.4.0 [2022-07-29]

Bug Fixes

  1. #330: Redact the Authorization HTTP header from log

Dependencies

Update dependencies:

Build:

  • #334: CsvHelper to 28.0.1
  • #336: Microsoft.Extensions.ObjectPool to 6.0.7

Test:

  • #340: WireMock.Net to 1.5.2
  • #337: Tomlyn.Signed to 0.15.0

4.3.0 [2022-06-24]

Features

  1. #327: Add interfaces to client's APIs

Bug Fixes

  1. #329: Writing data to multiple destination by the background writer

Dependencies

  1. #326: Update dependencies:

Build:

- RestSharp to 108.0.1
- NodaTime to 3.1.0
- JsonSubTypes to 1.9.0
- Microsoft.Extensions.ObjectPool to 6.0.5

Test:

- Microsoft.NET.Test.Sdk to 17.2.0
- NUnit to 3.13.3
- WireMock.Net to 1.4.43
- Moq to 4.18.1
- Tomlyn.Signed to 0.14.3

4.2.0 [2022-05-20]

Features

  1. #319: Optionally align limit() and tail() before pivot() function [LINQ]
  2. #322: Possibility to specify default value for start and stop parameter of range function [LINQ]
  3. #323: Add callback function for handling the SSL Certificate Validation

Breaking Changes

  1. #316: Rename InvocableScripts to InvokableScripts

Bug Fixes

  1. #313: Using default org and bucket in WriteApiAsync
  2. #317: Decompress Gzipped data
  3. #317: Logging HTTP headers from streaming request

Documentation

  1. #314: Add Parameterized Queries example
  2. #315: Clarify timeout option

4.1.0 [2022-04-19]

Features

  1. #304: Add InvokableScriptsApi to create, update, list, delete and invoke scripts by seamless way
  2. #308: Add support for TakeLast expression [LINQ]

Bug Fixes

  1. #305: Authentication Cookies follow redirects
  2. #309: Query expression for joins of binary operators [LINQ]

4.0.0 [2022-03-18]

⚠️ The underlying RestSharp library was updated the latest major version v107. The new version of RestSharp switched from the legacy HttpWebRequest class to the standard well-known System.Net.Http.HttpClient instead. This improves performance and solves lots of issues, like hanging connections, updated protocols support, and many other problems.

Migration Notice

  • New versions of QueryApi, QueryApiSync, WriteApi, WriteApiAsync and FluxClient methods uses default named argument values so you are able to easily migrate by:
- _client.GetQueryApi().QueryAsyncEnumerable<T>(fluxQuery, token);
+ _client.GetQueryApi().QueryAsyncEnumerable<T>(fluxQuery, cancellationToken: token);

Breaking Changes

API

  • The Client no longer supports the ReadWriteTimeout for HTTP Client. This settings is not supported by the HttpClient. Use can use Timeout property instead.

  • The FluxClient uses IDisposable interface to releasing underlying HTTP connections:

    From
    var client = FluxClientFactory.Create("http://localhost:8086/");
    To
    using var client = FluxClientFactory.Create("http://localhost:8086/");
  • The Query APIs uses CancellationToken instead of ICancellable:

    From
    await QueryApi.QueryAsync(flux, (cancellable, record) =>
    {
        // process record
        Console.WriteLine($"record: {record}");
    
        if (your_condition)
        {
            // cancel stream
            source.Cancel();
        }
    })
    To
    var source = new CancellationTokenSource();
    await QueryApi.QueryAsync(flux, record =>
    {
        // process record
        Console.WriteLine($"record: {record}");
    
        if (your_condition)
        {
            // cancel stream
            source.Cancel();
        }
    }, source.Token);
  • QueryApi has changed method signatures:

    3.3.0 4.0.0
    QueryAsync(String) QueryAsync(String, String?, CancellationToken?)
    QueryAsync(String, String) QueryAsync(String, String?, CancellationToken?)
    QueryAsync(Query) QueryAsync(Query, String?, CancellationToken?)
    QueryAsync(Query, String) QueryAsync(Query, String?, CancellationToken?)
    QueryAsync(String, Type) QueryAsync(String, Type, String?, CancellationToken?)
    QueryAsync(String, String, Type) QueryAsync(String, Type, String?, CancellationToken?)
    QueryAsync(Query, Type) QueryAsync(Query, Type, String?, CancellationToken?)
    QueryAsync(Query, String, Type) QueryAsync(Query, Type, String?, CancellationToken?)
    QueryAsync(String, Action<ICancellable, FluxRecord>) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(String, Action<ICancellable, FluxRecord>, Action<Exception>) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(String, Action<ICancellable, FluxRecord>, Action<Exception>, Action) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(String, String, Action<ICancellable, FluxRecord>) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(String, String, Action<ICancellable, FluxRecord>, Action<Exception>) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(String, String, Action<ICancellable, FluxRecord>, Action<Exception>, Action) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(Query, Action<ICancellable, FluxRecord>) QueryAsync(Query, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(Query, Action<ICancellable, FluxRecord>, Action<Exception>) QueryAsync(Query, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(Query, Action<ICancellable, FluxRecord>, Action<Exception>, Action) QueryAsync(Query, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(Query, String, Action<ICancellable, FluxRecord>) QueryAsync(Query, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(Query, String, Action<ICancellable, FluxRecord>, Action<Exception>) QueryAsync(Query, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(Query, String, Action<ICancellable, FluxRecord>, Action<Exception>, Action) QueryAsync(Query, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(String, String, Action<ICancellable, Object>, Action<Exception>, Action, Type) QueryAsync(String, Type, Action<Object>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(Query, String, Action<ICancellable, Object>, Action<Exception>, Action, Type) QueryAsync(Query, Type, Action<Object>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(String) QueryAsync<T>(String, String?, CancellationToken?)
    QueryAsync<T>(String, String) QueryAsync<T>(String, String?, CancellationToken?)
    QueryAsync<T>(String, Action<ICancellable, T>) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(String, Action<ICancellable, T>, Action<Exception>) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(String, Action<ICancellable, T>, Action<Exception>, Action) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(String, String, Action<ICancellable, T>) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(String, String, Action<ICancellable, T>, Action<Exception>) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(String, String, Action<ICancellable, T>, Action<Exception>, Action) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(Query) QueryAsync<T>(Query, String?, CancellationToken?)
    QueryAsync<T>(Query, String) QueryAsync<T>(Query, String?, CancellationToken?)
    QueryAsync<T>(Query, Action<ICancellable, T>) QueryAsync<T>(Query, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(Query, Action<ICancellable, T>, Action<Exception>) QueryAsync<T>(Query, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(Query, Action<ICancellable, T>, Action<Exception>, Action) QueryAsync<T>(Query, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(Query, String, Action<ICancellable, T>) QueryAsync<T>(Query, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(Query, String, Action<ICancellable, T>, Action<Exception>) QueryAsync<T>(Query, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(Query, String, Action<ICancellable, T>, Action<Exception>, Action) QueryAsync<T>(Query, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsyncEnumerable<T>(Query, String, CancellationToken) QueryAsyncEnumerable<T>(Query, String?, CancellationToken?)
    QueryAsyncEnumerable<T>(String, CancellationToken) QueryAsyncEnumerable<T>(String, String?, CancellationToken?)
    QueryAsyncEnumerable<T>(String, String, CancellationToken) QueryAsyncEnumerable<T>(String, String?, CancellationToken?)
    QueryRawAsync(Query) QueryRawAsync(Query, String?, CancellationToken?)
    QueryRawAsync(Query, Action<ICancellable, String>) QueryRawAsync(Query, Action<String>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryRawAsync(Query, Action<ICancellable, String>, Action<Exception>) QueryRawAsync(Query, Action<String>, Action<Exception>?, Action?, String?, CancellationToken?)
  • QueryApiSync has changed method signatures:

    3.3.0 4.0.0
    QuerySync(String) QuerySync(String, String?, CancellationToken?)
    QuerySync(String, String) QuerySync(String, String?, CancellationToken?)
    QuerySync(Query) QuerySync(Query, String?, CancellationToken?)
    QuerySync(Query, String) QuerySync(Query, String?, CancellationToken?)
    QuerySync<T>(String) QuerySync<T>(String, String?, CancellationToken?)
    QuerySync<T>(String, String) QuerySync<T>(String, String?, CancellationToken?)
    QuerySync<T>(Query) QuerySync<T>(Query, String?, CancellationToken?)
    QuerySync<T>(Query, String) QuerySync<T>(Query, String?, CancellationToken?)
  • WriteApi has changed method signatures:

    3.3.0 4.0.0
    WriteMeasurement<TM>(WritePrecision, TM) WriteMeasurement<TM>(TM, WritePrecision?, String?, String?)
    WriteMeasurement<TM>(String, String, WritePrecision, TM) WriteMeasurement<TM>(TM, WritePrecision?, String?, String?)
    WriteMeasurements<TM>(WritePrecision, TM[]) WriteMeasurements<TM>(TM[], WritePrecision?, String?, String?)
    WriteMeasurements<TM>(String, String, WritePrecision, TM[]) WriteMeasurements<TM>(TM[], WritePrecision?, String?, String?)
    WriteMeasurements<TM>(WritePrecision, List<TM>) WriteMeasurements<TM>(List<TM>, WritePrecision?, String?, String?)
    WriteMeasurements<TM>(String, String, WritePrecision, List<TM>) WriteMeasurements<TM>(List<TM>, WritePrecision?, String?, String?)
    WritePoint(PointData) WritePoint(PointData, String?, String?)
    WritePoint(String, String, PointData) WritePoint(PointData, String?, String?)
    WritePoints(PointData[]) WritePoints(PointData[], String?, String?)
    WritePoints(String, String, PointData[]) WritePoints(PointData[], String?, String?)
    WritePoints(List<PointData>) WritePoints(List<PointData>, String?, String?)
    WritePoints(String, String, List<PointData>) WritePoints(List<PointData>, String?, String?)
    WriteRecord(WritePrecision, String) WriteRecord(String, WritePrecision?, String?, String?)
    WriteRecord(String, String, WritePrecision, String) WriteRecord(String, WritePrecision?, String?, String?)
    WriteRecords(WritePrecision, String[]) WriteRecords(String[], WritePrecision?, String?, String?)
    WriteRecords(String, String, WritePrecision, String[]) WriteRecords(String[], WritePrecision?, String?, String?)
    WriteRecords(WritePrecision, List<String>) WriteRecords(List<String>, WritePrecision?, String?, String?)
    WriteRecords(String, String, WritePrecision, List<String>) WriteRecords(List<String>, WritePrecision?, String?, String?)
  • WriteApiAsync has changed method signatures:

    3.3.0 4.0.0
    WriteMeasurementAsync<TM>(WritePrecision, TM, CancellationToken) WriteMeasurementAsync<TM>(TM, WritePrecision?, String?, String?, CancellationToken?)
    WriteMeasurementAsync<TM>(String, String, WritePrecision, TM, CancellationToken) WriteMeasurementAsync<TM>(TM, WritePrecision?, String?, String?, CancellationToken?)
    WriteMeasurementsAsync<TM>(WritePrecision, TM[]) WriteMeasurementsAsync<TM>(TM[], WritePrecision?, String?, String?, CancellationToken?)
    WriteMeasurementsAsync<TM>(WritePrecision, CancellationToken, TM[]) WriteMeasurementsAsync<TM>(TM[], WritePrecision?, String?, String?, CancellationToken?)
    WriteMeasurementsAsync<TM>(String, String, WritePrecision, TM[]) WriteMeasurementsAsync<TM>(TM[], WritePrecision?, String?, String?, CancellationToken?)
    WriteMeasurementsAsync<TM>(String, String, WritePrecision, CancellationToken, TM[]) WriteMeasurementsAsync<TM>(TM[], WritePrecision?, String?, String?, CancellationToken?)
    WriteMeasurementsAsync<TM>(WritePrecision, List<TM>, CancellationToken) WriteMeasurementsAsync<TM>(List<TM>, WritePrecision?, String?, String?, CancellationToken?)
    WriteMeasurementsAsync<TM>(String, String, WritePrecision, List<TM>, CancellationToken) WriteMeasurementsAsync<TM>(List<TM>, WritePrecision?, String?, String?, CancellationToken?)
    WriteMeasurementsAsyncWithIRestResponse<TM>(IEnumerable<TM>, String, String, WritePrecision, CancellationToken) WriteMeasurementsAsyncWithIRestResponse<TM>(IEnumerable<TM>, WritePrecision?, String?, String?, CancellationToken?)
    WritePointAsync(PointData, CancellationToken) WritePointAsync(PointData, String?, String?, CancellationToken?)
    WritePointAsync(String, String, PointData, CancellationToken) WritePointAsync(PointData, String?, String?, CancellationToken?)
    WritePointsAsync(PointData[]) WritePointsAsync(PointData[], String?, String?, CancellationToken?)
    WritePointsAsync(CancellationToken, PointData[]) WritePointsAsync(PointData[], String?, String?, CancellationToken?)
    WritePointsAsync(String, String, PointData[]) WritePointsAsync(PointData[], String?, String?, CancellationToken?)
    WritePointsAsync(String, String, CancellationToken, PointData[]) WritePointsAsync(PointData[], String?, String?, CancellationToken?)
    WritePointsAsync(List<PointData>, CancellationToken) WritePointsAsync(List<PointData>, String?, String?, CancellationToken?)
    WritePointsAsync(String, String, List<PointData>, CancellationToken) WritePointsAsync(List<PointData>, String?, String?, CancellationToken?)
    WritePointsAsyncWithIRestResponse(IEnumerable<PointData>, String, String, CancellationToken) WritePointsAsyncWithIRestResponse(IEnumerable<PointData>, String?, String?, CancellationToken?)
    WriteRecordAsync(WritePrecision, String, CancellationToken) WriteRecordAsync(String, WritePrecision?, String?, String?, CancellationToken?)
    WriteRecordAsync(String, String, WritePrecision, String, CancellationToken) WriteRecordAsync(String, WritePrecision?, String?, String?, CancellationToken?)
    WriteRecordsAsync(WritePrecision, String[]) WriteRecordsAsync(String[], WritePrecision?, String?, String?, CancellationToken?)
    WriteRecordsAsync(WritePrecision, CancellationToken, String[]) WriteRecordsAsync(String[], WritePrecision?, String?, String?, CancellationToken?)
    WriteRecordsAsync(String, String, WritePrecision, String[]) WriteRecordsAsync(String[], WritePrecision?, String?, String?, CancellationToken?)
    WriteRecordsAsync(String, String, WritePrecision, CancellationToken, String[]) WriteRecordsAsync(String[], WritePrecision?, String?, String?, CancellationToken?)
    WriteRecordsAsync(WritePrecision, List<String>, CancellationToken) WriteRecordsAsync(List<String>, WritePrecision?, String?, String?, CancellationToken?)
    WriteRecordsAsync(String, String, WritePrecision, List<String>, CancellationToken) WriteRecordsAsync(List<String>, WritePrecision?, String?, String?, CancellationToken?)
    WriteRecordsAsyncWithIRestResponse(IEnumerable<String>, String, String, WritePrecision, CancellationToken) WriteRecordsAsyncWithIRestResponse(IEnumerable<String>, WritePrecision?, String?, String?, CancellationToken?)
  • FluxClient has changed method signatures:

    3.3.0 4.0.0
    QueryAsync(String) QueryAsync(String, CancellationToken?)
    QueryAsync(String, Action<ICancellable, FluxRecord>) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, CancellationToken?)
    QueryAsync(String, Action<ICancellable, FluxRecord>, Action<Exception>) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, CancellationToken?)
    QueryAsync(String, Action<ICancellable, FluxRecord>, Action<Exception>, Action) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, CancellationToken?)
    QueryAsync<T>(String) QueryAsync<T>(String, CancellationToken?)
    QueryAsync<T>(String, Action<ICancellable, T>) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, CancellationToken?)
    QueryAsync<T>(String, Action<ICancellable, T>, Action<Exception>) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, CancellationToken?)
    QueryAsync<T>(String, Action<ICancellable, T>, Action<Exception>, Action) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, CancellationToken?)
    QueryRawAsync(String) QueryRawAsync(String, String?, CancellationToken?)
    QueryRawAsync(String, String) QueryRawAsync(String, String?, CancellationToken?)
    QueryRawAsync(String, Action<ICancellable, String>) QueryRawAsync(String, Action<String>, String?, Action<Exception>?, Action?, CancellationToken?)
    QueryRawAsync(String, Action<ICancellable, String>, Action<Exception>) QueryRawAsync(String, Action<String>, String?, Action<Exception>?, Action?, CancellationToken?)
    QueryRawAsync(String, Action<ICancellable, String>, Action<Exception>, Action) QueryRawAsync(String, Action<String>, String?, Action<Exception>?, Action?, CancellationToken?)
    QueryRawAsync(String, String, Action<ICancellable, String>) QueryRawAsync(String, Action<String>, String?, Action<Exception>?, Action?, CancellationToken?)
    QueryRawAsync(String, String, Action<ICancellable, String>, Action<Exception>) QueryRawAsync(String, Action<String>, String?, Action<Exception>?, Action?, CancellationToken?)
    QueryRawAsync(String, String, Action<ICancellable, String>, Action<Exception>, Action) QueryRawAsync(String, Action<String>, String?, Action<Exception>?, Action?, CancellationToken?)
  • Response type for WriteApiAsync.WritePointsAsyncWithIRestResponse is RestResponse[] instead of IRestResponse[].

  • Response type for WriteApiAsync.WriteMeasurementsAsyncWithIRestResponse is RestResponse instead of IRestResponse.

  • Response type for WriteApiAsync.WriteRecordsAsyncWithIRestResponse is RestResponse instead of IRestResponse.

  • TelegrafsApi uses TelegrafPluginRequest to create Telegraf configuration.

  • Rename TelegrafPlugin types:

    • from TelegrafPlugin.TypeEnum.Inputs to TelegrafPlugin.TypeEnum.Input
    • from TelegrafPlugin.TypeEnum.Outputs to TelegrafPlugin.TypeEnum.Output
  • TasksApi.FindTasksByOrganizationIdAsync(string orgId) requires pass Organization ID as a parameter. For find Tasks by Organization name you can use: _tasksApi.FindTasksAsync(org: "my-org").

  • Removed orgId argument from TelegrafsApi.GetRunsAsync methods

  • Change type of PermissionResource.Type to string. You are able to easily migrate by:

    - new PermissionResource { Type = PermissionResource.TypeEnum.Users, OrgID = _organization.Id }
    + new PermissionResource { Type = PermissionResource.TypeUsers, OrgID = _organization.Id }

Services

This release also uses new version of InfluxDB OSS API definitions - oss.yml. The following breaking changes are in underlying API services and doesn't affect common apis such as - WriteApi, QueryApi, BucketsApi, OrganizationsApi...

  • Add ConfigService to retrieve InfluxDB's runtime configuration
  • Add RemoteConnectionsService to deal with registered remote InfluxDB connections
  • Add MetricsService to deal with exposed prometheus metrics
  • Update TemplatesService to deal with Stack and Template API
  • Update BackupService to deal with new backup functions of InfluxDB
  • Update RestoreService to deal with new restore functions of InfluxDB
  • Remove DocumentApi in favour of InfluxDB Community Templates. For more info see - influxdb#19300, openapi#192
  • Remove DefaultSerive:
    • GetRoutes operation is moved to RoutesService
    • GetTelegrafPlugin operation is moved to TelegrafsService
    • PostSignin operation is moved to SigninService
    • PostSignout operation is moved to SignoutService
  • Change type of Duration.magnitude from int? to long?
  • TelegrafsService uses TelegrafPluginRequest to create Telegraf configuration
  • TelegrafsService uses TelegrafPluginRequest to update Telegraf configuration

Features

  1. #282: Add support for AggregateWindow function [LINQ]
  2. #283: Allow to set a client certificates
  3. #291: Add possibility to generate Flux query without pivot() function [LINQ]
  4. #289: Async APIs uses CancellationToken in all async methods
  5. #294: Optimize serialization PointData into LineProtocol

Bug Fixes

  1. #287: Filter tasks by Organization ID
  2. #290: Change PermissionResource.Type to String
  3. #293: Type of CheckBase.LatestCompleted is DateTime
  4. #297: Get version from X-Influxdb-Version header

CI

  1. #292: Use new Codecov uploader for reporting code coverage
  2. #283: Remove out of support .NET Core versions - 2.2, 3.0
  3. #283: Add check to compilation warnings
  4. #283: Add check to correctness of code formatting

Dependencies

#283: Update dependencies:

Build:

- RestSharp to 107.3.0
- CsvHelper to 27.2.1
- NodaTime to 3.0.9
- Microsoft.Extensions.ObjectPool to 6.0.1
- System.Collections.Immutable to 6.0.0
- System.Configuration.ConfigurationManager to 6.0.0

Test:

- Microsoft.NET.Test.Sdk to 17.0.0
- NUnit3TestAdapter to 4.2.1
- WireMock.Net to 1.4.34
- Moq to 4.16.1
- System.Linq.Async to 6.0.1
- Tomlyn.Signed to 0.10.2
- coverlet.collector to 3.1.2

4.0.0-rc3 [2022-03-04]

Features

  1. #295: Add possibility to put generic type object as a value for PointData and PointData.Builder

4.0.0-rc2 [2022-02-25]

Migration Notice

  • New versions of QueryApi, QueryApiSync, WriteApi, WriteApiAsync and FluxClient methods uses default named argument values so you are able to easily migrate by:
- _client.GetQueryApi().QueryAsyncEnumerable<T>(fluxQuery, token);
+ _client.GetQueryApi().QueryAsyncEnumerable<T>(fluxQuery, cancellationToken: token);

Breaking Changes

API

  • Removed orgId argument from TelegrafsApi.GetRunsAsync methods
  • Change type of PermissionResource.Type to string. You are able to easily migrate by:
    - new PermissionResource { Type = PermissionResource.TypeEnum.Users, OrgID = _organization.Id }
    + new PermissionResource { Type = PermissionResource.TypeUsers, OrgID = _organization.Id }

Features

  1. #291: Add possibility to generate Flux query without pivot() function [LINQ]
  2. #289: Async APIs uses CancellationToken in all async methods
  3. #294: Optimize serialization PointData into LineProtocol

Bug Fixes

  1. #290: Change PermissionResource.Type to String
  2. #293: Type of CheckBase.LatestCompleted is DateTime

CI

  1. #292: Use new Codecov uploader for reporting code coverage

4.0.0-rc1 [2022-02-18]

Breaking Changes

⚠️ The underlying RestSharp library was updated the latest major version v107. The new version of RestSharp switched from the legacy HttpWebRequest class to the standard well-known System.Net.Http.HttpClient instead. This improves performance and solves lots of issues, like hanging connections, updated protocols support, and many other problems.

API

  • The Client no longer supports the ReadWriteTimeout for HTTP Client. This settings is not supported by the HttpClient. Use can use Timeout property instead.

  • The FluxClient uses IDisposable interface to releasing underlying HTTP connections:

    From
    var client = FluxClientFactory.Create("http://localhost:8086/");
    To
    using var client = FluxClientFactory.Create("http://localhost:8086/");
  • The Query APIs uses CancellationToken instead of ICancellable:

    From
    await QueryApi.QueryAsync(flux, (cancellable, record) =>
    {
        // process record
        Console.WriteLine($"record: {record}");
    
        if (your_condition)
        {
            // cancel stream
            source.Cancel();
        }
    })
    To
    var source = new CancellationTokenSource();
    await QueryApi.QueryAsync(flux, record =>
    {
        // process record
        Console.WriteLine($"record: {record}");
    
        if (your_condition)
        {
            // cancel stream
            source.Cancel();
        }
    }, source.Token);
  • QueryApi has changed method signatures:

    3.3.0 4.0.0
    QueryAsync(String) QueryAsync(String, String?, CancellationToken?)
    QueryAsync(String, String) QueryAsync(String, String?, CancellationToken?)
    QueryAsync(Query) QueryAsync(Query, String?, CancellationToken?)
    QueryAsync(Query, String) QueryAsync(Query, String?, CancellationToken?)
    QueryAsync(String, Type) QueryAsync(String, Type, String?, CancellationToken?)
    QueryAsync(String, String, Type) QueryAsync(String, Type, String?, CancellationToken?)
    QueryAsync(Query, Type) QueryAsync(Query, Type, String?, CancellationToken?)
    QueryAsync(Query, String, Type) QueryAsync(Query, Type, String?, CancellationToken?)
    QueryAsync(String, Action<ICancellable, FluxRecord>) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(String, Action<ICancellable, FluxRecord>, Action<Exception>) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(String, Action<ICancellable, FluxRecord>, Action<Exception>, Action) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(String, String, Action<ICancellable, FluxRecord>) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(String, String, Action<ICancellable, FluxRecord>, Action<Exception>) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(String, String, Action<ICancellable, FluxRecord>, Action<Exception>, Action) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(Query, Action<ICancellable, FluxRecord>) QueryAsync(Query, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(Query, Action<ICancellable, FluxRecord>, Action<Exception>) QueryAsync(Query, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(Query, Action<ICancellable, FluxRecord>, Action<Exception>, Action) QueryAsync(Query, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(Query, String, Action<ICancellable, FluxRecord>) QueryAsync(Query, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(Query, String, Action<ICancellable, FluxRecord>, Action<Exception>) QueryAsync(Query, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(Query, String, Action<ICancellable, FluxRecord>, Action<Exception>, Action) QueryAsync(Query, Action<FluxRecord>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(String, String, Action<ICancellable, Object>, Action<Exception>, Action, Type) QueryAsync(String, Type, Action<Object>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync(Query, String, Action<ICancellable, Object>, Action<Exception>, Action, Type) QueryAsync(Query, Type, Action<Object>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(String) QueryAsync<T>(String, String?, CancellationToken?)
    QueryAsync<T>(String, String) QueryAsync<T>(String, String?, CancellationToken?)
    QueryAsync<T>(String, Action<ICancellable, T>) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(String, Action<ICancellable, T>, Action<Exception>) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(String, Action<ICancellable, T>, Action<Exception>, Action) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(String, String, Action<ICancellable, T>) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(String, String, Action<ICancellable, T>, Action<Exception>) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(String, String, Action<ICancellable, T>, Action<Exception>, Action) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(Query) QueryAsync<T>(Query, String?, CancellationToken?)
    QueryAsync<T>(Query, String) QueryAsync<T>(Query, String?, CancellationToken?)
    QueryAsync<T>(Query, Action<ICancellable, T>) QueryAsync<T>(Query, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(Query, Action<ICancellable, T>, Action<Exception>) QueryAsync<T>(Query, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(Query, Action<ICancellable, T>, Action<Exception>, Action) QueryAsync<T>(Query, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(Query, String, Action<ICancellable, T>) QueryAsync<T>(Query, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(Query, String, Action<ICancellable, T>, Action<Exception>) QueryAsync<T>(Query, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsync<T>(Query, String, Action<ICancellable, T>, Action<Exception>, Action) QueryAsync<T>(Query, Action<T>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryAsyncEnumerable<T>(Query, String, CancellationToken) QueryAsyncEnumerable<T>(Query, String?, CancellationToken?)
    QueryAsyncEnumerable<T>(String, CancellationToken) QueryAsyncEnumerable<T>(String, String?, CancellationToken?)
    QueryAsyncEnumerable<T>(String, String, CancellationToken) QueryAsyncEnumerable<T>(String, String?, CancellationToken?)
    QueryRawAsync(Query) QueryRawAsync(Query, String?, CancellationToken?)
    QueryRawAsync(Query, Action<ICancellable, String>) QueryRawAsync(Query, Action<String>, Action<Exception>?, Action?, String?, CancellationToken?)
    QueryRawAsync(Query, Action<ICancellable, String>, Action<Exception>) QueryRawAsync(Query, Action<String>, Action<Exception>?, Action?, String?, CancellationToken?)
  • QueryApiSync has changed method signatures:

    3.3.0 4.0.0
    QuerySync(String) QuerySync(String, String?, CancellationToken?)
    QuerySync(String, String) QuerySync(String, String?, CancellationToken?)
    QuerySync(Query) QuerySync(Query, String?, CancellationToken?)
    QuerySync(Query, String) QuerySync(Query, String?, CancellationToken?)
    QuerySync<T>(String) QuerySync<T>(String, String?, CancellationToken?)
    QuerySync<T>(String, String) QuerySync<T>(String, String?, CancellationToken?)
    QuerySync<T>(Query) QuerySync<T>(Query, String?, CancellationToken?)
    QuerySync<T>(Query, String) QuerySync<T>(Query, String?, CancellationToken?)
  • WriteApi has changed method signatures:

    3.3.0 4.0.0
    WriteMeasurement<TM>(WritePrecision, TM) WriteMeasurement<TM>(TM, WritePrecision?, String?, String?)
    WriteMeasurement<TM>(String, String, WritePrecision, TM) WriteMeasurement<TM>(TM, WritePrecision?, String?, String?)
    WriteMeasurements<TM>(WritePrecision, TM[]) WriteMeasurements<TM>(TM[], WritePrecision?, String?, String?)
    WriteMeasurements<TM>(String, String, WritePrecision, TM[]) WriteMeasurements<TM>(TM[], WritePrecision?, String?, String?)
    WriteMeasurements<TM>(WritePrecision, List<TM>) WriteMeasurements<TM>(List<TM>, WritePrecision?, String?, String?)
    WriteMeasurements<TM>(String, String, WritePrecision, List<TM>) WriteMeasurements<TM>(List<TM>, WritePrecision?, String?, String?)
    WritePoint(PointData) WritePoint(PointData, String?, String?)
    WritePoint(String, String, PointData) WritePoint(PointData, String?, String?)
    WritePoints(PointData[]) WritePoints(PointData[], String?, String?)
    WritePoints(String, String, PointData[]) WritePoints(PointData[], String?, String?)
    WritePoints(List<PointData>) WritePoints(List<PointData>, String?, String?)
    WritePoints(String, String, List<PointData>) WritePoints(List<PointData>, String?, String?)
    WriteRecord(WritePrecision, String) WriteRecord(String, WritePrecision?, String?, String?)
    WriteRecord(String, String, WritePrecision, String) WriteRecord(String, WritePrecision?, String?, String?)
    WriteRecords(WritePrecision, String[]) WriteRecords(String[], WritePrecision?, String?, String?)
    WriteRecords(String, String, WritePrecision, String[]) WriteRecords(String[], WritePrecision?, String?, String?)
    WriteRecords(WritePrecision, List<String>) WriteRecords(List<String>, WritePrecision?, String?, String?)
    WriteRecords(String, String, WritePrecision, List<String>) WriteRecords(List<String>, WritePrecision?, String?, String?)
  • WriteApiAsync has changed method signatures:

    3.3.0 4.0.0
    WriteMeasurementAsync<TM>(WritePrecision, TM, CancellationToken) WriteMeasurementAsync<TM>(TM, WritePrecision?, String?, String?, CancellationToken?)
    WriteMeasurementAsync<TM>(String, String, WritePrecision, TM, CancellationToken) WriteMeasurementAsync<TM>(TM, WritePrecision?, String?, String?, CancellationToken?)
    WriteMeasurementsAsync<TM>(WritePrecision, TM[]) WriteMeasurementsAsync<TM>(TM[], WritePrecision?, String?, String?, CancellationToken?)
    WriteMeasurementsAsync<TM>(WritePrecision, CancellationToken, TM[]) WriteMeasurementsAsync<TM>(TM[], WritePrecision?, String?, String?, CancellationToken?)
    WriteMeasurementsAsync<TM>(String, String, WritePrecision, TM[]) WriteMeasurementsAsync<TM>(TM[], WritePrecision?, String?, String?, CancellationToken?)
    WriteMeasurementsAsync<TM>(String, String, WritePrecision, CancellationToken, TM[]) WriteMeasurementsAsync<TM>(TM[], WritePrecision?, String?, String?, CancellationToken?)
    WriteMeasurementsAsync<TM>(WritePrecision, List<TM>, CancellationToken) WriteMeasurementsAsync<TM>(List<TM>, WritePrecision?, String?, String?, CancellationToken?)
    WriteMeasurementsAsync<TM>(String, String, WritePrecision, List<TM>, CancellationToken) WriteMeasurementsAsync<TM>(List<TM>, WritePrecision?, String?, String?, CancellationToken?)
    WriteMeasurementsAsyncWithIRestResponse<TM>(IEnumerable<TM>, String, String, WritePrecision, CancellationToken) WriteMeasurementsAsyncWithIRestResponse<TM>(IEnumerable<TM>, WritePrecision?, String?, String?, CancellationToken?)
    WritePointAsync(PointData, CancellationToken) WritePointAsync(PointData, String?, String?, CancellationToken?)
    WritePointAsync(String, String, PointData, CancellationToken) WritePointAsync(PointData, String?, String?, CancellationToken?)
    WritePointsAsync(PointData[]) WritePointsAsync(PointData[], String?, String?, CancellationToken?)
    WritePointsAsync(CancellationToken, PointData[]) WritePointsAsync(PointData[], String?, String?, CancellationToken?)
    WritePointsAsync(String, String, PointData[]) WritePointsAsync(PointData[], String?, String?, CancellationToken?)
    WritePointsAsync(String, String, CancellationToken, PointData[]) WritePointsAsync(PointData[], String?, String?, CancellationToken?)
    WritePointsAsync(List<PointData>, CancellationToken) WritePointsAsync(List<PointData>, String?, String?, CancellationToken?)
    WritePointsAsync(String, String, List<PointData>, CancellationToken) WritePointsAsync(List<PointData>, String?, String?, CancellationToken?)
    WritePointsAsyncWithIRestResponse(IEnumerable<PointData>, String, String, CancellationToken) WritePointsAsyncWithIRestResponse(IEnumerable<PointData>, String?, String?, CancellationToken?)
    WriteRecordAsync(WritePrecision, String, CancellationToken) WriteRecordAsync(String, WritePrecision?, String?, String?, CancellationToken?)
    WriteRecordAsync(String, String, WritePrecision, String, CancellationToken) WriteRecordAsync(String, WritePrecision?, String?, String?, CancellationToken?)
    WriteRecordsAsync(WritePrecision, String[]) WriteRecordsAsync(String[], WritePrecision?, String?, String?, CancellationToken?)
    WriteRecordsAsync(WritePrecision, CancellationToken, String[]) WriteRecordsAsync(String[], WritePrecision?, String?, String?, CancellationToken?)
    WriteRecordsAsync(String, String, WritePrecision, String[]) WriteRecordsAsync(String[], WritePrecision?, String?, String?, CancellationToken?)
    WriteRecordsAsync(String, String, WritePrecision, CancellationToken, String[]) WriteRecordsAsync(String[], WritePrecision?, String?, String?, CancellationToken?)
    WriteRecordsAsync(WritePrecision, List<String>, CancellationToken) WriteRecordsAsync(List<String>, WritePrecision?, String?, String?, CancellationToken?)
    WriteRecordsAsync(String, String, WritePrecision, List<String>, CancellationToken) WriteRecordsAsync(List<String>, WritePrecision?, String?, String?, CancellationToken?)
    WriteRecordsAsyncWithIRestResponse(IEnumerable<String>, String, String, WritePrecision, CancellationToken) WriteRecordsAsyncWithIRestResponse(IEnumerable<String>, WritePrecision?, String?, String?, CancellationToken?)
  • FluxClient has changed method signatures:

    3.3.0 4.0.0
    QueryAsync(String) QueryAsync(String, CancellationToken?)
    QueryAsync(String, Action<ICancellable, FluxRecord>) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, CancellationToken?)
    QueryAsync(String, Action<ICancellable, FluxRecord>, Action<Exception>) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, CancellationToken?)
    QueryAsync(String, Action<ICancellable, FluxRecord>, Action<Exception>, Action) QueryAsync(String, Action<FluxRecord>, Action<Exception>?, Action?, CancellationToken?)
    QueryAsync<T>(String) QueryAsync<T>(String, CancellationToken?)
    QueryAsync<T>(String, Action<ICancellable, T>) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, CancellationToken?)
    QueryAsync<T>(String, Action<ICancellable, T>, Action<Exception>) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, CancellationToken?)
    QueryAsync<T>(String, Action<ICancellable, T>, Action<Exception>, Action) QueryAsync<T>(String, Action<T>, Action<Exception>?, Action?, CancellationToken?)
    QueryRawAsync(String) QueryRawAsync(String, String?, CancellationToken?)
    QueryRawAsync(String, String) QueryRawAsync(String, String?, CancellationToken?)
    QueryRawAsync(String, Action<ICancellable, String>) QueryRawAsync(String, Action<String>, String?, Action<Exception>?, Action?, CancellationToken?)
    QueryRawAsync(String, Action<ICancellable, String>, Action<Exception>) QueryRawAsync(String, Action<String>, String?, Action<Exception>?, Action?, CancellationToken?)
    QueryRawAsync(String, Action<ICancellable, String>, Action<Exception>, Action) QueryRawAsync(String, Action<String>, String?, Action<Exception>?, Action?, CancellationToken?)
    QueryRawAsync(String, String, Action<ICancellable, String>) QueryRawAsync(String, Action<String>, String?, Action<Exception>?, Action?, CancellationToken?)
    QueryRawAsync(String, String, Action<ICancellable, String>, Action<Exception>) QueryRawAsync(String, Action<String>, String?, Action<Exception>?, Action?, CancellationToken?)
    QueryRawAsync(String, String, Action<ICancellable, String>, Action<Exception>, Action) QueryRawAsync(String, Action<String>, String?, Action<Exception>?, Action?, CancellationToken?)
  • Response type for WriteApiAsync.WritePointsAsyncWithIRestResponse is RestResponse[] instead of IRestResponse[].

  • Response type for WriteApiAsync.WriteMeasurementsAsyncWithIRestResponse is RestResponse instead of IRestResponse.

  • Response type for WriteApiAsync.WriteRecordsAsyncWithIRestResponse is RestResponse instead of IRestResponse.

  • TelegrafsApi uses TelegrafPluginRequest to create Telegraf configuration.

  • Rename TelegrafPlugin types:

    • from TelegrafPlugin.TypeEnum.Inputs to TelegrafPlugin.TypeEnum.Input
    • from TelegrafPlugin.TypeEnum.Outputs to TelegrafPlugin.TypeEnum.Output
  • TasksApi.FindTasksByOrganizationIdAsync(string orgId) requires pass Organization ID as a parameter. For find Tasks by Organization name you can use: _tasksApi.FindTasksAsync(org: "my-org").

Services

This release also uses new version of InfluxDB OSS API definitions - oss.yml. The following breaking changes are in underlying API services and doesn't affect common apis such as - WriteApi, QueryApi, BucketsApi, OrganizationsApi...

  • Add ConfigService to retrieve InfluxDB's runtime configuration
  • Add RemoteConnectionsService to deal with registered remote InfluxDB connections
  • Add MetricsService to deal with exposed prometheus metrics
  • Update TemplatesService to deal with Stack and Template API
  • Update BackupService to deal with new backup functions of InfluxDB
  • Update RestoreService to deal with new restore functions of InfluxDB
  • Remove DocumentApi in favour of InfluxDB Community Templates. For more info see - influxdb#19300, openapi#192
  • Remove DefaultSerive:
    • GetRoutes operation is moved to RoutesService
    • GetTelegrafPlugin operation is moved to TelegrafsService
    • PostSignin operation is moved to SigninService
    • PostSignout operation is moved to SignoutService
  • Change type of Duration.magnitude from int? to long?
  • TelegrafsService uses TelegrafPluginRequest to create Telegraf configuration
  • TelegrafsService uses TelegrafPluginRequest to update Telegraf configuration

Features

  1. #282: Add support for AggregateWindow function [LINQ]
  2. #283: Allow to set a client certificates

CI

  1. #283: Remove out of support .NET Core versions - 2.2, 3.0
  2. #283: Add check to compilation warnings
  3. #283: Add check to correctness of code formatting

Dependencies

#283: Update dependencies:

Build:

- RestSharp to 107.3.0
- CsvHelper to 27.2.1
- NodaTime to 3.0.9
- Microsoft.Extensions.ObjectPool to 6.0.1
- System.Collections.Immutable to 6.0.0
- System.Configuration.ConfigurationManager to 6.0.0

Test:

- Microsoft.NET.Test.Sdk to 17.0.0
- NUnit3TestAdapter to 4.2.1
- WireMock.Net to 1.4.34
- Moq to 4.16.1
- System.Linq.Async to 6.0.1
- Tomlyn.Signed to 0.10.2
- coverlet.collector to 3.1.2

Bug Fixes

  1. #287: Filter tasks by Organization ID

3.3.0 [2022-02-04]

Bug Fixes

  1. #277: Add missing PermissionResources from Cloud API definition
  2. #281: Serialization query response into POCO with optional DateTime

3.2.0 [2021-11-26]

Deprecates

  • InfluxDBClient.HealthAsync(): instead use InfluxDBClient.PingAsync()

Features

  1. #257: Add PingService to check status of OSS and Cloud instance
  2. #260: Changed internal to public visibility of InfluxDBClientOptions.Builder.ConnectionString
  3. #266: Add option to accept self-signed certificates

CI

  1. #264: Add build for dotnet6

Bug Fixes

  1. #262: InfluxDB 2.1 Incompatibility with Session Cookie

3.1.0 [2021-10-22]

Features

  1. #239: Add support for Asynchronous queries [LINQ]
  2. #240: Add IsMeasurement option to Column attribute for dynamic measurement names in POCO classes
  3. #246, #251: Add support for deserialization of POCO column property types with a "Parse" method, such as Guid
  4. #249: Add support for LINQ Contains subqueries [LINQ]
  5. #256: Add support for Anonymous authentication - anonymous authentication is used if the user does not specify a token or an username with password

Dependencies

  1. #252: Update dependencies:
    • NUnit to 3.13.2
    • NUnit3TestAdapter to 4.0.0

3.0.0 [2021-09-17]

Breaking Changes

Adds a Type overload for POCOs to QueryAsync. This will add object ConvertToEntity(FluxRecord, Type) to IFluxResultMapper

Features

  1. #232: Add a Type overload for POCOs to QueryAsync.
  2. #233: Add possibility to follow HTTP redirects

Bug Fixes

  1. #236: Mapping long type into Flux AST [LINQ]

2.1.0 [2021-08-20]

Bug Fixes

  1. #221: Parsing infinite numbers
  2. #229: Fix cookie handling in session mode

Dependencies

  1. #222: Update dependencies:
    • RestSharp to 106.12.0

2.0.0 [2021-07-09]

Breaking Changes

This release introduces a support for new InfluxDB OSS API definitions - oss.yml. The following breaking changes are in underlying API services and doesn't affect common apis such as - WriteApi, QueryApi, BucketsApi, OrganizationsApi...

  • UsersService uses PostUser to create User
  • AuthorizationsService uses AuthorizationPostRequest to create Authorization
  • BucketsService uses PatchBucketRequest to update Bucket
  • OrganizationsService uses PostOrganizationRequest to create Organization
  • OrganizationsService uses PatchOrganizationRequest to update Organization
  • DashboardsService uses PatchDashboardRequest to update Dashboard
  • DeleteService is used to delete time series data instead of DefaultService
  • Run contains list of LogEvent in Log property
  • DBRPs contains list of DBRP in Content property
  • DBRPsService uses DBRPCreate to create DBRP
  • Inheritance structure:
    • Check <- CheckDiscriminator <- CheckBase
    • NotificationEndpoint <- NotificationEndpointDiscriminator <- NotificationEndpointBase
    • NotificationRule <- NotificationRuleDiscriminator <- NNotificationRuleBase
  • Flux AST literals extends the AST Expression object

Deprecates

  • AuthorizationsApi.CreateAuthorizationAsync(Authorization): instead use AuthorizationsApi.CreateAuthorizationAsync(AuthorizationPostRequest)

Features

  1. #206: Use optional args to pass query parameters into API list call - useful for the ability to use pagination.

API

  1. #206, #210, #211: Use InfluxDB OSS API definitions to generated APIs

Dependencies

  1. #209: Update dependencies:
    • CsvHelper to 27.1.0
    • Newtonsoft.Json 13.0.1
    • NodaTime to 3.0.5
    • NodaTime.Serialization.JsonNet to 3.0.0
    • Microsoft.Extensions.ObjectPool to 5.0.7

Documentation

  1. #213: API documentation is deploy to GitHub Pages

1.19.0 [2021-06-04]

Features

  1. #194: Add possibility to handle HTTP response from InfluxDB server [write]
  2. #197: Optimize Flux Query for querying one time-series [LINQ]
  3. #205: Exponential random retry [write]

Bug Fixes

  1. #193: Create services without API implementation
  2. #202: Flux AST for Tag parameters which are not String [LINQ]

1.18.0 [2021-04-30]

Features

  1. #184: Add possibility to specify WebProxy for Client
  2. #185: Use group() function in output Flux query. See details - Group function [LINQ]
  3. #186: Produce a typed HTTP exception
  4. #188: Switch pivot() and drop() function to achieve better performance

Bug Fixes

  1. #183: Propagate runtime exception to EventHandler

1.17.0 [2021-04-01]

Features

  1. #146: Add support for querying by LINQ
  2. #171: Add QueryApiSync for synchronous querying
  3. #171: Add IDomainObjectMapper for custom mapping DomainObject from/to InfluxDB
  4. #180: Add a mutable PointData.Builder to optimize building of immutable PointData

API

  1. #174: Add possibility to use CancellationToken in REST API
  2. #179: Add possibility to use CancellationToken in the async write API (WriteApiAsync)

Bug Fixes

  1. #168: DateTime is always serialized into UTC
  2. #169: Fix domain structure for Flux AST
  3. #181: Remove download overhead for Queries

Dependencies

  1. #175: Update dependencies of InfluxDB.Client:
    • JsonSubTypes to 1.8.0
    • Microsoft.Extensions.ObjectPool to 5.0.4
    • Microsoft.Net.Http.Headers to 2.2.8
    • System.Collections.Immutable to 5.0.0
    • System.Configuration.ConfigurationManager to 5.0.0
    • System.Reactive to 5.0.0
  2. #182: Update test dependencies:
    • Microsoft.NET.Test.Sdk to 16.5.0

CI

  1. #182: Add build for dotnet5, Fix code coverage report

1.16.0 [2021-03-05]

Bug Fixes

  1. #154: Always use ConfigureAwait(false) to avoid unnecessary context switching and potential dead-locks. Avoid unnecessary await overhead.
  2. #158: Remove unnecessary dependencies: System.Net.Http and Microsoft.Bcl.AsyncInterfaces

CI

  1. #165: Updated stable image to influxdb:latest and nightly to quay.io/influxdb/influxdb:nightly

1.15.0 [2021-01-29]

Bug Fixes

  1. #143: Added validation that a configuration is present when is client configured via file
  2. #150: The unsigned numbers are serialized with u postfix

Dependencies

  1. #145: Updated RestSharp to 106.11.7
  2. #148: Updated CsvHelper to 18.0.0

CI

  1. #140: Updated default docker image to v2.0.3

1.14.0 [2020-12-04]

Features

  1. #136: CSV parser is able to parse export from UI

CI

  1. #138: Updated default docker image to v2.0.2

1.13.0 [2020-10-30]

Features

  1. #121: Added IAsyncEnumerable<T> query overloads to QueryAPI
  2. #127: Added exponential backoff strategy for batching writes. Default value for RetryInterval is 5_000 milliseconds.
  3. #128: Improved logging message for retries

1.12.0 [2020-10-02]

Features

  1. #117: Added support for string token
  2. #121: Added IAsyncEnumerable<T> query overloads to QueryAPI

API

  1. #122: Default port changed from 9999 to 8086
  2. #124: Removed labels in organization API, removed Pkg* structure and package service

Bug Fixes

  1. #119: No timestamp returned via POCO based QueryAsync<T>

1.11.0 [2020-08-14]

Features

  1. #97: Improved WriteApi performance
  2. #116: Moved api generator to separate module influxdb-clients-apigen

Bug Fixes

  1. #113: Fixed unnecessary API call when writing collection of DataPoints

1.10.0 [2020-07-17]

Features

  1. #102: Added WriteApiAsync for asynchronous write without batching

Bug Fixes

  1. #106: Fixed serialization of \n, \r and \t to Line Protocol, = is valid sign for measurement name
  2. #108: Replaced useless .ContinueWith in Api by direct call

1.9.0 [2020-06-19]

Features

  1. #96: The PointData builder is now immutable

API

  1. #94: Update swagger to latest version
  2. #103: Removed log system from Bucket, Dashboard, Organization, Task and Users API - influxdb#18459

CI

  1. #104: Upgraded InfluxDB 1.7 to 1.8

Bug Fixes

  1. #100: Thread-safety disposing of clients
  2. #101: Use Trace output when disposing WriteApi

1.8.0 [2020-05-15]

Features

  1. #84: Add possibility to authenticate by Basic Authentication or the URL query parameters
  2. #91: Added support "inf" in Duration
  3. #92: Remove trailing slash from connection URL

Bug Fixes

  1. #81: Fixed potentially hangs on of WriteApi.Dispose()
  2. #83: Fixed parsing error response for 1.x

1.7.0 [2020-04-17]

Features

  1. #70: Optimized mapping of measurements into PointData

Bug Fixes

  1. #69: Write buffer uses correct flush interval and batch size under heavy load

Documentation

  1. #77: Clarify how to use a client with InfluxDB 1.8

Dependencies

  1. #74: update CsvHelper to [15.0.4,16.0)

1.6.0 [2020-03-13]

Features

  1. #61: Set User-Agent to influxdb-client-csharp/VERSION for all requests
  2. #64: Add authentication with Username and Password for Client.Legacy

Bug Fixes

  1. #63: Correctly parse CSV where multiple results include multiple tables

1.5.0 [2020-02-14]

Features

  1. #57: LogLevel Header also contains query parameters

CI

  1. #58: CircleCI builds over dotnet 2.2, 3.0 and 3.1; Added build on Windows Server 2019
  2. #60: Deploy dev version to Nuget repository

1.4.0 [2020-01-17]

API

  1. #52: Updated swagger to latest version

CI

  1. #54: Added beta release to continuous integration

Bug Fixes

  1. #56: WriteApi is disposed after a buffer is fully processed

1.3.0 [2019-12-06]

Performance

  1. #49: Optimized serialization to LineProtocol

API

  1. #46: Updated swagger to latest version

Bug Fixes

  1. #45: Assemblies are strong-named
  2. #48: Packing library icon into a package

1.2.0 [2019-11-08]

Features

  1. #43 Added DeleteApi

API

  1. #42: Updated swagger to latest version

1.1.0 [2019-10-11]

Breaking Changes

  1. #34: Renamed Point class to PointData and Task class to TaskType (improving the usability of this library)
  2. #40: Added Async suffix into asynchronous methods

Features

  1. #59: Added support for Monitoring & Alerting

API

  1. #36: Updated swagger to latest version

Bug Fixes

  1. #31: Drop NaN and infinity values from fields when writing to InfluxDB
  2. #39: FluxCSVParser uses a CultureInfo for parsing string to double

1.0.0 [2019-08-23]

Features

  1. #29: Added support for gzip compression of query response and write body

Bug Fixes

  1. #27: The org parameter takes either the ID or Name interchangeably

API

  1. #25: Updated swagger to latest version

1.0.0.M2 [2019-08-01]

Features

  1. #18: Auto-configure client from configuration file
  2. #20: Possibility to specify default tags

Bug Fixes

  1. #24: The data point without field should be ignored

1.0.0.M1

Features

  1. Client: The reference C# client that allows query, write and InfluxDB 2.0 management
  2. Client.Legacy: The reference C# client that allows you to perform Flux queries against InfluxDB 1.7+