CHANGELOG.md
June 10, 2026 · View on GitHub
5.2.0 [unreleased]
5.1.0 [2026-06-10]
CI
- #712: Update dotnet-5.0 image from "mcr.microsoft.com/dotnet/sdk:5.0" to "mcr.microsoft.com/dotnet/sdk:5.0-bullseye-slim".
- #724: Set snapshot version properly in ci-deploy-snapshot.sh
- #728: Set up auto merge dependabot workflow.
- #738: The token in the Management API is no longer plain text.
- #748: Set prefix commit message for dependabot.
5.0.0 [2026-01-13]
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.
Features
- #615: Use IEnumerable in WriteApi to eliminate unnescessary memmory allocations
CI
- #681: Add build for
dotnet8
4.18.0 [2024-09-13]
Features:
- #658: Add HttpHeaders as
IEnumerable<RestSharp.HttpParameter>toHttpExceptionand facilitate access inWriteErrorEvent. Includes new exampleHttpErrorHandling.
Dependencies
Update dependencies:
Build:
- #659:
RestSharpto112.0.0
Test:
- #663:
WireMock.Netto1.6.1
4.17.0 [2024-08-12]
Breaking Changes
API
ApiResponseheaders has been changed toIEnumerable<(string Name, string Value)>
Bug Fixes
- #649: Use HttpCompletionOption.ResponseHeadersRead for asynchronous QueryApi
Dependencies
Update dependencies:
Build:
Test:
- #652:
NUnit3TestAdapterto4.6.0 - #654:
WireMock.Netto1.5.62 - #661:
Microsoft.NET.Test.Sdkto17.11.0
Examples:
- #664:
Radzen.Blazorto5.1.6
4.16.0 [2024-06-24]
Features:
- #633: Add package XML documentation.
Dependencies
Update dependencies:
Build:
- #634:
CsvHelperto32.0.3 - #635:
Microsoft.Extensions.ObjectPoolto8.0.6 - #638:
System.Reactiveto6.0.1
Test:
Examples:
- #636:
Radzen.Blazorto4.32.3
4.15.0 [2024-05-17]
Bug Fixes
- #632: Use HttpCompletionOption.ResponseHeadersRead for streaming
Dependencies
Update dependencies:
Build:
Test:
- #608:
NUnitto3.14.0 - #616:
Microsoft.NET.Test.Sdkto17.9.0 - #626:
coverlet.collectorto6.0.2 - #628:
WireMock.Netto1.5.51
Examples:
4.14.0 [2023-11-07]
Features
- #590: Allows disable Trace verbose messages
Dependencies
Update dependencies:
Build:
- #597:
Microsoft.Extensions.ObjectPoolto8.0.0 - #572:
NodaTime.Serialization.JsonNetto3.1.0 - #595:
System.Collections.Immutableto8.0.0 - #599:
System.Configuration.ConfigurationManagerto8.0.0
Examples:
- #593:
Radzen.Blazorto4.22.1
Test:
- #596:
WireMock.Netto1.5.40 - #598:
Microsoft.NET.Test.Sdkto17.8.0 - #568:
Moqto4.20.69 - #594:
Tomlyn.Signedto0.17.0
4.13.0 [2023-07-28]
Features
- #528: Add HttpClient as a part of InfluxDBClientOptions
Bug Fixes
- #555: Chaining multiple conditions in LINQ queries
Dependencies
Update dependencies:
Build:
Examples:
- #556:
Radzen.Blazorto4.14.1
Test:
- #543:
Microsoft.NET.Test.Sdkto17.6.3 - #524:
coverlet.collectorto6.0.0 - #550:
WireMock.Netto1.5.32 - #529:
NUnit3TestAdapterto4.5.0
4.12.0 [2023-04-28]
Bug Fixes
- #510: Passing aggregation function to AggregateWindow for LINQ queries
Dependencies
Update dependencies:
Build:
- #497:
NodaTimeto3.1.9 - #485:
Newtonsoft.Jsonto13.0.3 - #506:
Microsoft.Extensions.ObjectPoolto7.0.5 - #509:
RestSharpto110.2.0
Examples:
- #511:
Radzen.Blazorto4.10.1
Test:
- #508:
WireMock.Netto1.5.23 - #480:
NUnit3TestAdapterto4.4.2 - #473:
Microsoft.NET.Test.Sdkto17.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.LocalandDateTimeKind.Localas a timestamp for Data point
Dependencies
Update dependencies:
Examples:
- #446:
Radzen.Blazorto4.4.7
Test:
4.9.0 [2020-12-06]
Bug Fixes
- #408: Conversion of double to string can result in a loss of precision
Others
- #433: Add
.NET 7.0to supported.NETversions
Dependencies
Update dependencies:
Build:
- #430:
NodaTimeto3.1.6
Examples:
- #432:
Radzen.Blazorto4.4.2
Test:
4.8.0 [2022-12-01]
:warning: The client can be created without InfluxDBClientFactory:
using var client = new InfluxDBClient("http://localhost:8086", "my-token");
Features
- #388: Initialize C# client without
InfluxDBClientFactory
Bug Fixes
- #426: Parsing HTTP headers with duplicated name
CI
- #416: Add build for
.NET 7.0
Dependencies
Update dependencies:
Build:
- #418:
RestSharpto108.0.3 - #423:
Newtonsoft.Jsonto13.0.2 - #405:
NodaTime.Serialization.JsonNetto3.0.1 - #413:
CsvHelperto30.0.1
Examples:
- #424:
Radzen.Blazorto4.3.8
Test:
- #422:
WireMock.Netto1.5.11 - #412:
Microsoft.NET.Test.Sdkto17.4.0 - #417:
NUnit3TestAdapterto4.3.1
4.7.0 [2022-11-03]
Features
- #376: Add
FluxRecord.Rowwhich stores response data in a list - #404: Expose
FluxCsvParserasAnnotatedCsvParser
Dependencies
Update dependencies:
Build:
- #397:
CsvHelperto30.0.0 - #384:
Microsoft.Extensions.ObjectPoolto6.0.10 - #402:
NodaTimeto3.1.5 - #392:
JsonSubTypesto2.0.1
Examples:
- #401:
Radzen.Blazorto4.1.15
Test:
- #403:
Tomlyn.Signedto0.16.1 - #400:
WireMock.Netto1.5.9 - #398:
NUnit3TestAdapterto4.3.0 - #399:
coverlet.collectorto3.2.0
4.6.0 [2022-09-29]
Bug Fixes
- #353: Support for
doubletypes in LINQ expression [LINQ] - #360: Designated
HealthAsyncas obsolete inIInfluxDBClient
Others
- #368: Use builtin support for synchronous HTTP requests from
RestSharp
Documentation
- #355: Add an example how to use
EventHandlerforWriteApi
Dependencies
Update dependencies:
Build:
- #364:
System.Configuration.ConfigurationManagerto6.0.1 - #365:
Microsoft.Extensions.ObjectPoolto6.0.9 - #368:
RestSharpto108.0.2 - #371:
NodaTimeto3.1.3
Examples:
- #375:
Radzen.Blazorto4.1.4
Test:
4.5.0 [2022-08-29]
Bug Fixes
- #348: Append
task optionat the end of script
Dependencies
Update dependencies:
Build:
Test:
4.4.0 [2022-07-29]
Bug Fixes
- #330: Redact the
AuthorizationHTTP header from log
Dependencies
Update dependencies:
Build:
Test:
4.3.0 [2022-06-24]
Features
- #327: Add interfaces to client's APIs
Bug Fixes
- #329: Writing data to multiple destination by the background writer
Dependencies
- #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
- #319: Optionally align
limit()andtail()beforepivot()function [LINQ] - #322: Possibility to specify default value for
startandstopparameter of range function [LINQ] - #323: Add callback function for handling the SSL Certificate Validation
Breaking Changes
- #316: Rename
InvocableScriptstoInvokableScripts
Bug Fixes
- #313: Using default
organdbucketinWriteApiAsync - #317: Decompress Gzipped data
- #317: Logging HTTP headers from streaming request
Documentation
4.1.0 [2022-04-19]
Features
- #304: Add
InvokableScriptsApito create, update, list, delete and invoke scripts by seamless way - #308: Add support for
TakeLastexpression [LINQ]
Bug Fixes
- #305: Authentication Cookies follow redirects
- #309: Query expression for joins of binary operators [LINQ]
4.0.0 [2022-03-18]
:warning: 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,WriteApiAsyncandFluxClientmethods 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
ReadWriteTimeoutfor HTTP Client. This settings is not supported by theHttpClient. Use can useTimeoutproperty instead. -
The
FluxClientusesIDisposableinterface 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
CancellationTokeninstead ofICancellable: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); -
QueryApihas 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?) -
QueryApiSynchas 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?) -
WriteApihas 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?) -
WriteApiAsynchas 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?) -
FluxClienthas 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.WritePointsAsyncWithIRestResponseisRestResponse[]instead ofIRestResponse[]. -
Response type for
WriteApiAsync.WriteMeasurementsAsyncWithIRestResponseisRestResponseinstead ofIRestResponse. -
Response type for
WriteApiAsync.WriteRecordsAsyncWithIRestResponseisRestResponseinstead ofIRestResponse. -
TelegrafsApiusesTelegrafPluginRequestto createTelegrafconfiguration. -
Rename
TelegrafPlugintypes:- from
TelegrafPlugin.TypeEnum.InputstoTelegrafPlugin.TypeEnum.Input - from
TelegrafPlugin.TypeEnum.OutputstoTelegrafPlugin.TypeEnum.Output
- from
-
TasksApi.FindTasksByOrganizationIdAsync(string orgId)requires pass OrganizationIDas a parameter. For find Tasks by Organization name you can use:_tasksApi.FindTasksAsync(org: "my-org"). -
Removed
orgIdargument fromTelegrafsApi.GetRunsAsyncmethods -
Change type of
PermissionResource.Typetostring. 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
ConfigServiceto retrieve InfluxDB's runtime configuration - Add
RemoteConnectionsServiceto deal with registered remote InfluxDB connections - Add
MetricsServiceto deal with exposed prometheus metrics - Update
TemplatesServiceto deal withStackandTemplateAPI - Update
BackupServiceto deal with new backup functions of InfluxDB - Update
RestoreServiceto deal with new restore functions of InfluxDB - Remove
DocumentApiin favour of InfluxDB Community Templates. For more info see - influxdb#19300, openapi#192 - Remove
DefaultSerive:GetRoutesoperation is moved toRoutesServiceGetTelegrafPluginoperation is moved toTelegrafsServicePostSigninoperation is moved toSigninServicePostSignoutoperation is moved toSignoutService
- Change type of
Duration.magnitudefromint?tolong? TelegrafsServiceusesTelegrafPluginRequestto createTelegrafconfigurationTelegrafsServiceusesTelegrafPluginRequestto updateTelegrafconfiguration
Features
- #282: Add support for AggregateWindow function [LINQ]
- #283: Allow to set a client certificates
- #291: Add possibility to generate Flux query without
pivot()function [LINQ] - #289: Async APIs uses
CancellationTokenin allasyncmethods - #294: Optimize serialization
PointDatainto LineProtocol
Bug Fixes
- #287: Filter tasks by Organization ID
- #290: Change
PermissionResource.TypetoString - #293: Type of
CheckBase.LatestCompletedisDateTime - #297: Get version from
X-Influxdb-Versionheader
CI
- #292: Use new Codecov uploader for reporting code coverage
- #283: Remove out of support
.NET Coreversions -2.2,3.0 - #283: Add check to compilation warnings
- #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
- #295: Add possibility to put generic type object as a value for
PointDataandPointData.Builder
4.0.0-rc2 [2022-02-25]
Migration Notice
- New versions of
QueryApi,QueryApiSync,WriteApi,WriteApiAsyncandFluxClientmethods 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
orgIdargument fromTelegrafsApi.GetRunsAsyncmethods - Change type of
PermissionResource.Typetostring. 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
- #291: Add possibility to generate Flux query without
pivot()function [LINQ] - #289: Async APIs uses
CancellationTokenin allasyncmethods - #294: Optimize serialization
PointDatainto LineProtocol
Bug Fixes
CI
- #292: Use new Codecov uploader for reporting code coverage
4.0.0-rc1 [2022-02-18]
Breaking Changes
:warning: 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
ReadWriteTimeoutfor HTTP Client. This settings is not supported by theHttpClient. Use can useTimeoutproperty instead. -
The
FluxClientusesIDisposableinterface 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
CancellationTokeninstead ofICancellable: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); -
QueryApihas 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?) -
QueryApiSynchas 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?) -
WriteApihas 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?) -
WriteApiAsynchas 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?) -
FluxClienthas 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.WritePointsAsyncWithIRestResponseisRestResponse[]instead ofIRestResponse[]. -
Response type for
WriteApiAsync.WriteMeasurementsAsyncWithIRestResponseisRestResponseinstead ofIRestResponse. -
Response type for
WriteApiAsync.WriteRecordsAsyncWithIRestResponseisRestResponseinstead ofIRestResponse. -
TelegrafsApiusesTelegrafPluginRequestto createTelegrafconfiguration. -
Rename
TelegrafPlugintypes:- from
TelegrafPlugin.TypeEnum.InputstoTelegrafPlugin.TypeEnum.Input - from
TelegrafPlugin.TypeEnum.OutputstoTelegrafPlugin.TypeEnum.Output
- from
-
TasksApi.FindTasksByOrganizationIdAsync(string orgId)requires pass OrganizationIDas 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
ConfigServiceto retrieve InfluxDB's runtime configuration - Add
RemoteConnectionsServiceto deal with registered remote InfluxDB connections - Add
MetricsServiceto deal with exposed prometheus metrics - Update
TemplatesServiceto deal withStackandTemplateAPI - Update
BackupServiceto deal with new backup functions of InfluxDB - Update
RestoreServiceto deal with new restore functions of InfluxDB - Remove
DocumentApiin favour of InfluxDB Community Templates. For more info see - influxdb#19300, openapi#192 - Remove
DefaultSerive:GetRoutesoperation is moved toRoutesServiceGetTelegrafPluginoperation is moved toTelegrafsServicePostSigninoperation is moved toSigninServicePostSignoutoperation is moved toSignoutService
- Change type of
Duration.magnitudefromint?tolong? TelegrafsServiceusesTelegrafPluginRequestto createTelegrafconfigurationTelegrafsServiceusesTelegrafPluginRequestto updateTelegrafconfiguration
Features
CI
- #283: Remove out of support
.NET Coreversions -2.2,3.0 - #283: Add check to compilation warnings
- #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
- #287: Filter tasks by Organization ID
3.3.0 [2022-02-04]
Bug Fixes
- #277: Add missing PermissionResources from Cloud API definition
- #281: Serialization query response into POCO with optional DateTime
3.2.0 [2021-11-26]
Deprecates
InfluxDBClient.HealthAsync(): instead useInfluxDBClient.PingAsync()
Features
- #257: Add
PingServiceto check status of OSS and Cloud instance - #260: Changed
internaltopublicvisibility ofInfluxDBClientOptions.Builder.ConnectionString - #266: Add option to accept self-signed certificates
CI
- #264: Add build for
dotnet6
Bug Fixes
- #262: InfluxDB 2.1 Incompatibility with Session Cookie
3.1.0 [2021-10-22]
Features
- #239: Add support for Asynchronous queries [LINQ]
- #240: Add IsMeasurement option to Column attribute for dynamic measurement names in POCO classes
- #246, #251: Add support for deserialization of POCO column property types with a "Parse" method, such as Guid
- #249: Add support for LINQ Contains subqueries [LINQ]
- #256: Add support for Anonymous authentication - anonymous authentication is used if the user does not specify a token or an username with password
Dependencies
- #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
Bug Fixes
- #236: Mapping
longtype into Flux AST [LINQ]
2.1.0 [2021-08-20]
Bug Fixes
Dependencies
- #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...
UsersServiceusesPostUserto createUserAuthorizationsServiceusesAuthorizationPostRequestto createAuthorizationBucketsServiceusesPatchBucketRequestto updateBucketOrganizationsServiceusesPostOrganizationRequestto createOrganizationOrganizationsServiceusesPatchOrganizationRequestto updateOrganizationDashboardsServiceusesPatchDashboardRequestto updateDashboardDeleteServiceis used to delete time series data instead ofDefaultServiceRuncontains list ofLogEventinLogpropertyDBRPscontains list ofDBRPinContentpropertyDBRPsServiceusesDBRPCreateto createDBRP- Inheritance structure:
Check<-CheckDiscriminator<-CheckBaseNotificationEndpoint<-NotificationEndpointDiscriminator<-NotificationEndpointBaseNotificationRule<-NotificationRuleDiscriminator<-NNotificationRuleBase
- Flux AST literals extends the AST
Expressionobject
Deprecates
AuthorizationsApi.CreateAuthorizationAsync(Authorization): instead useAuthorizationsApi.CreateAuthorizationAsync(AuthorizationPostRequest)
Features
- #206: Use optional args to pass query parameters into API list call - useful for the ability to use pagination.
API
Dependencies
- #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
- #213: API documentation is deploy to GitHub Pages
1.19.0 [2021-06-04]
Features
- #194: Add possibility to handle HTTP response from InfluxDB server [write]
- #197: Optimize Flux Query for querying one time-series [LINQ]
- #205: Exponential random retry [write]
Bug Fixes
- #193: Create services without API implementation
- #202: Flux AST for Tag parameters which are not
String[LINQ]
1.18.0 [2021-04-30]
Features
- #184: Add possibility to specify
WebProxyfor Client - #185: Use
group()function in output Flux query. See details - Group function [LINQ] - #186: Produce a typed HTTP exception
- #188: Switch
pivot()anddrop()function to achieve better performance
Bug Fixes
- #183: Propagate runtime exception to EventHandler
1.17.0 [2021-04-01]
Features
- #146: Add support for querying by
LINQ - #171: Add
QueryApiSyncfor synchronous querying - #171: Add
IDomainObjectMapperfor custom mapping DomainObject from/to InfluxDB - #180: Add a mutable
PointData.Builderto optimize building of immutablePointData
API
- #174: Add possibility to use
CancellationTokenin REST API - #179: Add possibility to use
CancellationTokenin the async write API (WriteApiAsync)
Bug Fixes
- #168: DateTime is always serialized into UTC
- #169: Fix domain structure for Flux AST
- #181: Remove download overhead for Queries
Dependencies
- #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
- #182: Update test dependencies:
- Microsoft.NET.Test.Sdk to 16.5.0
CI
- #182: Add build for
dotnet5, Fix code coverage report
1.16.0 [2021-03-05]
Bug Fixes
- #154: Always use
ConfigureAwait(false)to avoid unnecessary context switching and potential dead-locks. Avoid unnecessary await overhead. - #158: Remove unnecessary dependencies:
System.Net.HttpandMicrosoft.Bcl.AsyncInterfaces
CI
- #165: Updated stable image to
influxdb:latestand nightly toquay.io/influxdb/influxdb:nightly
1.15.0 [2021-01-29]
Bug Fixes
- #143: Added validation that a configuration is present when is client configured via file
- #150: The unsigned numbers are serialized with
upostfix
Dependencies
CI
- #140: Updated default docker image to v2.0.3
1.14.0 [2020-12-04]
Features
- #136: CSV parser is able to parse export from UI
CI
- #138: Updated default docker image to v2.0.2
1.13.0 [2020-10-30]
Features
- #121: Added IAsyncEnumerable<T> query overloads to QueryAPI
- #127: Added exponential backoff strategy for batching writes. Default value for
RetryIntervalis 5_000 milliseconds. - #128: Improved logging message for retries
1.12.0 [2020-10-02]
Features
API
- #122: Default port changed from 9999 to 8086
- #124: Removed labels in organization API, removed Pkg* structure and package service
Bug Fixes
- #119: No timestamp returned via POCO based QueryAsync<T>
1.11.0 [2020-08-14]
Features
- #97: Improved WriteApi performance
- #116: Moved api generator to separate module influxdb-clients-apigen
Bug Fixes
- #113: Fixed unnecessary API call when writing collection of DataPoints
1.10.0 [2020-07-17]
Features
- #102: Added WriteApiAsync for asynchronous write without batching
Bug Fixes
- #106: Fixed serialization of
\n,\rand\tto Line Protocol,=is valid sign for measurement name - #108: Replaced useless .ContinueWith in Api by direct call
1.9.0 [2020-06-19]
Features
- #96: The PointData builder is now immutable
API
- #94: Update swagger to latest version
- #103: Removed log system from Bucket, Dashboard, Organization, Task and Users API - influxdb#18459
CI
- #104: Upgraded InfluxDB 1.7 to 1.8
Bug Fixes
1.8.0 [2020-05-15]
Features
- #84: Add possibility to authenticate by Basic Authentication or the URL query parameters
- #91: Added support "inf" in Duration
- #92: Remove trailing slash from connection URL
Bug Fixes
1.7.0 [2020-04-17]
Features
- #70: Optimized mapping of measurements into
PointData
Bug Fixes
- #69: Write buffer uses correct flush interval and batch size under heavy load
Documentation
- #77: Clarify how to use a client with InfluxDB 1.8
Dependencies
- #74: update CsvHelper to [15.0.4,16.0)
1.6.0 [2020-03-13]
Features
- #61: Set User-Agent to influxdb-client-csharp/VERSION for all requests
- #64: Add authentication with Username and Password for Client.Legacy
Bug Fixes
- #63: Correctly parse CSV where multiple results include multiple tables
1.5.0 [2020-02-14]
Features
- #57: LogLevel Header also contains query parameters
CI
- #58: CircleCI builds over dotnet 2.2, 3.0 and 3.1; Added build on Windows Server 2019
- #60: Deploy dev version to Nuget repository
1.4.0 [2020-01-17]
API
- #52: Updated swagger to latest version
CI
- #54: Added beta release to continuous integration
Bug Fixes
- #56: WriteApi is disposed after a buffer is fully processed
1.3.0 [2019-12-06]
Performance
- #49: Optimized serialization to LineProtocol
API
- #46: Updated swagger to latest version
Bug Fixes
1.2.0 [2019-11-08]
Features
- #43 Added DeleteApi
API
- #42: Updated swagger to latest version
1.1.0 [2019-10-11]
Breaking Changes
- #34: Renamed Point class to PointData and Task class to TaskType (improving the usability of this library)
- #40: Added
Asyncsuffix into asynchronous methods
Features
- #59: Added support for Monitoring & Alerting
API
- #36: Updated swagger to latest version
Bug Fixes
- #31: Drop NaN and infinity values from fields when writing to InfluxDB
- #39: FluxCSVParser uses a CultureInfo for parsing string to double
1.0.0 [2019-08-23]
Features
- #29: Added support for gzip compression of query response and write body
Bug Fixes
- #27: The org parameter takes either the ID or Name interchangeably
API
- #25: Updated swagger to latest version
1.0.0.M2 [2019-08-01]
Features
Bug Fixes
- #24: The data point without field should be ignored
1.0.0.M1
Features
- Client: The reference C# client that allows query, write and InfluxDB 2.0 management
- Client.Legacy: The reference C# client that allows you to perform Flux queries against InfluxDB 1.7+