{"id":20259833,"url":"https://github.com/influxdata/influxdb-client-csharp","last_synced_at":"2025-05-14T05:10:30.185Z","repository":{"id":37759332,"uuid":"150225803","full_name":"influxdata/influxdb-client-csharp","owner":"influxdata","description":"InfluxDB 2.x C# Client","archived":false,"fork":false,"pushed_at":"2025-05-01T03:12:45.000Z","size":5593,"stargazers_count":371,"open_issues_count":41,"forks_count":96,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-05-12T03:46:07.421Z","etag":null,"topics":["csharp","flux","influxdata","influxdb","reactive","timeseries"],"latest_commit_sha":null,"homepage":"https://influxdata.github.io/influxdb-client-csharp/api/InfluxDB.Client.html","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/influxdata.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-09-25T07:38:15.000Z","updated_at":"2025-04-11T03:02:44.000Z","dependencies_parsed_at":"2024-04-02T11:26:02.380Z","dependency_job_id":"65c55c22-0e32-4117-99ca-bb514ee68197","html_url":"https://github.com/influxdata/influxdb-client-csharp","commit_stats":{"total_commits":714,"total_committers":29,"mean_commits":"24.620689655172413","dds":"0.40756302521008403","last_synced_commit":"314ce1c276ca5670e66065615b3b66b887d852aa"},"previous_names":[],"tags_count":48,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/influxdata%2Finfluxdb-client-csharp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/influxdata%2Finfluxdb-client-csharp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/influxdata%2Finfluxdb-client-csharp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/influxdata%2Finfluxdb-client-csharp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/influxdata","download_url":"https://codeload.github.com/influxdata/influxdb-client-csharp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254076848,"owners_count":22010611,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","flux","influxdata","influxdb","reactive","timeseries"],"created_at":"2024-11-14T11:16:46.423Z","updated_at":"2025-05-14T05:10:30.151Z","avatar_url":"https://github.com/influxdata.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# influxdb-client-csharp\n\n[![CircleCI](https://circleci.com/gh/influxdata/influxdb-client-csharp.svg?style=svg)](https://circleci.com/gh/influxdata/influxdb-client-csharp)\n[![codecov](https://codecov.io/gh/influxdata/influxdb-client-csharp/branch/master/graph/badge.svg)](https://codecov.io/gh/influxdata/influxdb-client-csharp)\n[![Nuget](https://img.shields.io/nuget/v/InfluxDB.Client)](https://www.nuget.org/packages/InfluxDB.Client/)\n[![License](https://img.shields.io/github/license/influxdata/influxdb-client-csharp.svg)](https://github.com/influxdata/influxdb-client-csharp/blob/master/LICENSE)\n[![GitHub issues](https://img.shields.io/github/issues-raw/influxdata/influxdb-client-csharp.svg)](https://github.com/influxdata/influxdb-client-csharp/issues)\n[![GitHub pull requests](https://img.shields.io/github/issues-pr-raw/influxdata/influxdb-client-csharp.svg)](https://github.com/influxdata/influxdb-client-csharp/pulls)\n[![Slack Status](https://img.shields.io/badge/slack-join_chat-white.svg?logo=slack\u0026style=social)](https://www.influxdata.com/slack)\n\nThis repository contains the C# client library for use with InfluxDB 2.x and Flux. InfluxDB 3.x users should instead use the lightweight [v3 client library](https://github.com/InfluxCommunity/influxdb3-csharp). InfluxDB 1.x users should use the [v1 client library](https://github.com/influxdata/influxdb-csharp).\n\nFor ease of migration and a consistent query and write experience, v2 users should consider using InfluxQL and the [v1 client library](https://github.com/influxdata/influxdb-csharp).\n\n- [Features](#features)\n- [Documentation](#documentation)\n- [How To Use](#how-to-use)\n    - [Writes and Queries in InfluxDB 2.x](#writes-and-queries-in-influxdb-2x)\n    - [Use Management API to create a new Bucket in InfluxDB 2.x](#use-management-api-to-create-a-new-bucket-in-influxdb-2x)\n    - [Flux queries in InfluxDB 1.7+](#flux-queries-in-influxdb-17)\n- [Contributing](#contributing)\n- [License](#license)\n\n\n## Documentation\n\nThis section contains links to the client library documentation.\n\n* [Product documentation](https://docs.influxdata.com/influxdb/latest/api-guide/client-libraries/), [Getting Started](#how-to-use)\n* [Examples](Examples)\n* [API Reference](https://influxdata.github.io/influxdb-client-csharp/api/InfluxDB.Client.html)\n* [Changelog](CHANGELOG.md)\n\n| Client | Description                                                                            | Documentation | Compatibility |\n| --- |----------------------------------------------------------------------------------------| --- |---------------|\n| **[Client](./Client#influxdbclient)** | The reference C# client that allows query, write and InfluxDB 2.x management.          | [readme](./Client#influxdbclient)| 2.x           |\n| **[Client.Linq](./Client.Linq#influxdbclientlinq)**  | The library supports to use a LINQ expression to query the InfluxDB.                   | [readme](./Client.Linq#influxdbclientlinq) | 2.x           |\n| **[Client.Legacy](./Client.Legacy#influxdbclientflux)**  | The reference C# client that allows you to perform Flux queries against InfluxDB 1.7+. | [readme](./Client.Legacy#influxdbclientflux) | 1.7+          |\n\n## Features\n\n- Supports querying using the Flux language over the InfluxDB 1.7+ REST API (`/api/v2/query endpoint`) \n- InfluxDB 2.x client\n    - Querying data using the Flux language\n    - Writing data using\n        - [Line Protocol](https://docs.influxdata.com/influxdb/v1.6/write_protocols/line_protocol_tutorial/) \n        - [Data Point](https://github.com/influxdata/influxdb-client-csharp/blob/master/Client/Writes/PointData.cs#L17) \n        - POCO\n    - InfluxDB 2.x Management API client for managing\n        - sources, buckets\n        - tasks\n        - authorizations\n        - health check\n        - ...\n    \n## How To Use \n\n### Writes and Queries in InfluxDB 2.x\n\nThe following example demonstrates how to write data to InfluxDB 2.x and read them back using the Flux language:\n\n#### Installation\n\nUse the latest version:\n\n##### .Net CLI\n```bash\ndotnet add package InfluxDB.Client\n```\n\n##### Or when using Package Manager\n```bash\nInstall-Package InfluxDB.Client\n```\n\n```c#\nusing System;\nusing InfluxDB.Client;\nusing InfluxDB.Client.Api.Domain;\nusing InfluxDB.Client.Core;\nusing InfluxDB.Client.Writes;\nusing Task = System.Threading.Tasks.Task;\n\nnamespace Examples\n{\n    public static class QueriesWritesExample\n    {\n        private static readonly char[] Token = \"\".ToCharArray();\n\n        public static async Task Main()\n        {\n            using var client = new InfluxDBClient(\"http://localhost:8086\", Token);\n\n            //\n            // Write Data\n            //\n            using (var writeApi = client.GetWriteApi())\n            {\n                //\n                // Write by Point\n                //\n                var point = PointData.Measurement(\"temperature\")\n                    .Tag(\"location\", \"west\")\n                    .Field(\"value\", 55D)\n                    .Timestamp(DateTime.UtcNow.AddSeconds(-10), WritePrecision.Ns);\n                \n                writeApi.WritePoint(point, \"bucket_name\", \"org_id\");\n                \n                //\n                // Write by LineProtocol\n                //\n                writeApi.WriteRecord(\"temperature,location=north value=60.0\", WritePrecision.Ns, \"bucket_name\", \"org_id\");\n                \n                //\n                // Write by POCO\n                //\n                var temperature = new Temperature {Location = \"south\", Value = 62D, Time = DateTime.UtcNow};\n                writeApi.WriteMeasurement(temperature, WritePrecision.Ns, \"bucket_name\", \"org_id\");\n            }\n            \n            //\n            // Query data\n            //\n            var flux = \"from(bucket:\\\"temperature-sensors\\\") |\u003e range(start: 0)\";\n\n            var fluxTables = await influxDBClient.GetQueryApi().QueryAsync(flux, \"org_id\");\n            fluxTables.ForEach(fluxTable =\u003e\n            {\n                var fluxRecords = fluxTable.Records;\n                fluxRecords.ForEach(fluxRecord =\u003e\n                {\n                    Console.WriteLine($\"{fluxRecord.GetTime()}: {fluxRecord.GetValue()}\");\n                });\n            });\n        }\n        \n        [Measurement(\"temperature\")]\n        private class Temperature\n        {\n            [Column(\"location\", IsTag = true)] public string? Location { get; set; }\n\n            [Column(\"value\")] public double Value { get; set; }\n\n            [Column(IsTimestamp = true)] public DateTime Time { get; set; }\n        }\n    }\n}\n```\n\n### Use Management API to create a new Bucket in InfluxDB 2.x  \n\nThe following example demonstrates how to use a InfluxDB 2.x Management API. For further information see [client documentation](./Client#management-api).\n\n#### Installation\n\nUse the latest version:\n\n##### .Net CLI\n```bash\ndotnet add package InfluxDB.Client\n```\n\n##### Or when using Package Manager\n```bash\nInstall-Package InfluxDB.Client\n```\n\n```c#\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing InfluxDB.Client;\nusing InfluxDB.Client.Api.Domain;\nusing Task = System.Threading.Tasks.Task;\n\nnamespace Examples\n{\n    public static class ManagementExample\n    {\n        public static async Task Main()\n        {\n            const string url = \"http://localhost:8086\";\n            const string token = \"my-token\";\n            const string org = \"my-org\";\n            \n            using var client = new InfluxDBClient(url, token);\n\n            // Find ID of Organization with specified name (PermissionAPI requires ID of Organization).\n            var orgId = (await client.GetOrganizationsApi().FindOrganizationsAsync(org: org)).First().Id;\n\n            //\n            // Create bucket \"iot_bucket\" with data retention set to 3,600 seconds\n            //\n            var retention = new BucketRetentionRules(BucketRetentionRules.TypeEnum.Expire, 3600);\n\n            var bucket = await client.GetBucketsApi().CreateBucketAsync(\"iot_bucket\", retention, orgId);\n\n            //\n            // Create access token to \"iot_bucket\"\n            //\n            var resource = new PermissionResource(PermissionResource.TypeEnum.Buckets, bucket.Id, null,\n                orgId);\n\n            // Read permission\n            var read = new Permission(Permission.ActionEnum.Read, resource);\n\n            // Write permission\n            var write = new Permission(Permission.ActionEnum.Write, resource);\n\n            var authorization = await client.GetAuthorizationsApi()\n                .CreateAuthorizationAsync(orgId, new List\u003cPermission\u003e { read, write });\n\n            //\n            // Created token that can be use for writes to \"iot_bucket\"\n            //\n            Console.WriteLine($\"Authorized token to write into iot_bucket: {authorization.Token}\");\n        }\n    }\n}\n```\n\n### InfluxDB 1.8 API compatibility\n\n[InfluxDB 1.8.0 introduced forward compatibility APIs](https://docs.influxdata.com/influxdb/v1.8/tools/api/#influxdb-2-0-api-compatibility-endpoints) for InfluxDB 2.x. This allow you to easily move from InfluxDB 1.x to InfluxDB 2.x Cloud or open source.\n\nThe following forward compatible APIs are available:\n\n| API | Endpoint | Description                                                                                                                                                                                                                                                    |\n|:----------|:----------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [QueryApi.cs](Client/QueryApi.cs) | [/api/v2/query](https://docs.influxdata.com/influxdb/v1.8/tools/api/#apiv2query-http-endpoint) | Query data in InfluxDB 1.8.0+ using the InfluxDB 2.x API and [Flux](https://docs.influxdata.com/flux/latest/) _(endpoint should be enabled by [`flux-enabled` option](https://docs.influxdata.com/influxdb/latest/administration/config/#flux-enabled-false))_ |\n| [WriteApi.cs](Client/WriteApi.cs) | [/api/v2/write](https://docs.influxdata.com/influxdb/v1.8/tools/api/#apiv2write-http-endpoint) | Write data to InfluxDB 1.8.0+ using the InfluxDB 2.x API                                                                                                                                                                                                       |\n| [PingAsync](Client/InfluxDBClient.cs#L431) | [/ping](https://docs.influxdata.com/influxdb/v1.8/tools/api/#ping-http-endpoint) | Checks the status of InfluxDB instance and version of InfluxDB.                                                                                                                                                                                                |    \n\nFor detail info see [InfluxDB 1.8 example](Examples/InfluxDB18Example.cs).\n\n\n### Flux queries in InfluxDB 1.7+\n\nThe following example demonstrates querying using the Flux language.\n\n#### Installation\n\nUse the latest version:\n\n##### .Net CLI\n```bash\ndotnet add package InfluxDB.Client.Flux\n```\n\n##### Or when using Package Manager\n```bash\nInstall-Package InfluxDB.Client.Flux\n``` \n\n```c#\nusing System;\nusing InfluxDB.Client.Flux;\n\nnamespace Examples\n{\n    public static class FluxExample\n    {\n        public static void Run()\n        {\n            using var client = new FluxClient(\"http://localhost:8086/\");\n\n            var fluxQuery = \"from(bucket: \\\"telegraf\\\")\\n\"\n                               + \" |\u003e filter(fn: (r) =\u003e (r[\\\"_measurement\\\"] == \\\"cpu\\\" AND r[\\\"_field\\\"] == \\\"usage_system\\\"))\"\n                               + \" |\u003e range(start: -1d)\"\n                               + \" |\u003e sample(n: 5, pos: 1)\";\n\n            client.QueryAsync(fluxQuery, record =\u003e\n                            {\n                                // process the flux query records\n                                Console.WriteLine(record.GetTime() + \": \" + record.GetValue());\n                            },\n                            (error) =\u003e\n                            {\n                                // error handling while processing result\n                                Console.WriteLine(error.ToString());\n\n                            }, () =\u003e\n                            {\n                                // on complete\n                                Console.WriteLine(\"Query completed\");\n                            }).GetAwaiter().GetResult();\n        }\n    }\n}\n```\n\n## Contributing\n\nIf you would like to contribute code you can do through GitHub by forking the repository and sending a pull request into the `master` branch.\n\n## License\n\nThe InfluxDB 2.x Clients are released under the [MIT License](https://opensource.org/licenses/MIT).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfluxdata%2Finfluxdb-client-csharp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finfluxdata%2Finfluxdb-client-csharp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finfluxdata%2Finfluxdb-client-csharp/lists"}