Skip to content

Latest commit

 

History

History
1226 lines (968 loc) · 94.6 KB

CHANGELOG.md

File metadata and controls

1226 lines (968 loc) · 94.6 KB

4.17.0 [unreleased]

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+