{"id":23364249,"url":"https://github.com/georg-jung/fluentcloudflare","last_synced_at":"2025-10-29T23:40:09.826Z","repository":{"id":36533749,"uuid":"228252026","full_name":"georg-jung/FluentCloudflare","owner":"georg-jung","description":"A fluent .Net Standard 2.0 wrapper for the Cloudflare API v4.","archived":false,"fork":false,"pushed_at":"2022-07-18T09:49:11.000Z","size":139,"stargazers_count":3,"open_issues_count":3,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-10T07:05:28.379Z","etag":null,"topics":["cloudflare","fluent-api","fluent-design","httpclient","rest","restful-api"],"latest_commit_sha":null,"homepage":"","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/georg-jung.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}},"created_at":"2019-12-15T21:02:20.000Z","updated_at":"2023-10-10T04:43:19.000Z","dependencies_parsed_at":"2022-08-22T19:10:10.758Z","dependency_job_id":null,"html_url":"https://github.com/georg-jung/FluentCloudflare","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/georg-jung%2FFluentCloudflare","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/georg-jung%2FFluentCloudflare/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/georg-jung%2FFluentCloudflare/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/georg-jung%2FFluentCloudflare/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/georg-jung","download_url":"https://codeload.github.com/georg-jung/FluentCloudflare/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248220291,"owners_count":21067278,"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":["cloudflare","fluent-api","fluent-design","httpclient","rest","restful-api"],"created_at":"2024-12-21T13:14:41.807Z","updated_at":"2025-10-29T23:40:09.750Z","avatar_url":"https://github.com/georg-jung.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.nuget.org/packages/FluentCloudflare/\"\u003e\n    \u003cimg\n      alt=\"FluentCloudflare\"\n      src=\"doc/logo.svg\"\n      width=\"100\"\n    /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n# FluentCloudflare\n\n[![Build Status](https://dev.azure.com/georg-jung/FluentCloudflare/_apis/build/status/georg-jung.FluentCloudflare?branchName=master)](https://dev.azure.com/georg-jung/FluentCloudflare/_build/latest?definitionId=4\u0026branchName=master)\n[![NuGet version (FluentCloudflare)](https://img.shields.io/nuget/v/FluentCloudflare.svg?style=flat)](https://www.nuget.org/packages/FluentCloudflare/)\n[![Dependabot Status](https://api.dependabot.com/badges/status?host=github\u0026repo=georg-jung/FluentCloudflare)](https://dependabot.com)\n\n\nThis .Net Standard 2.0 library lets you consume the [Cloudflare REST API v4](https://api.cloudflare.com/) using a fluent syntax. It enables you to build requests and parse their results with ease. Bring your own `HttpClient`.\n\nPlease note this is currently in active development and the API is likely to change. For recent changes and updating instructions see the [Changelog](CHANGELOG.md).\n\n## Getting Started\n\n* [NuGet Package](https://www.nuget.org/packages/FluentCloudflare/)\n  * `PM\u003e Install-Package FluentCloudflare`\n\n```c#\nusing FluentCloudflare;\nusing FluentCloudflare.Extensions;\n\nusing var hc = new HttpClient();\nvar context = Cloudflare.WithToken(YourApiToken); // or .WithKey(ApiKey, \"you@example.com\");\n\n// Get all zones of all accounts which exactly match the given name - in this case exactly one.\nvar zones = await context.Zones.List()\n    .WithName(\"cloudflare-api-debug.com\")\n    .CallAsync(hc);\nvar zone = zones.First();\n\n// We dont need to start every request from scratch.\nvar zoneCtx = context.Zone(zone.Id);\nvar dns = zoneCtx.Dns;\n\n// Notice the call to ParseAsync instead of CallAsync. This way we dont get the\n// result contained in the response but the whole response.\n// Actually, CallAsync is an extension method in FluentCloudflare.Extensions which uses ParseAsync internally.\nvar recordsResponse = await dns.List().PerPage(100).ParseAsync(hc);\nif (recordsResponse.ResultInfo.TotalCount \u003e 100)\n    Console.WriteLine(\"We got more than 100 DNS records! We may want to get more of them using paging...\");\n\nvar records = recordsResponse.Unpack(); // or recordsResponse.Result, skipping validation of the call's success\nvar first = records.First();\n\nawait dns.Delete(first).CallAsync(hc);\nawait dns.Create(first.Type, $\"new-{first.Name}\", first.Content).CallAsync(hc);\n```\n\n## Features / Scope\n\nThe Cloudflare API offers quite many methods. While this library offers multiple layers of abstraction, making it easily extendable, it does not support the full API on the highest level. Supporting bigger parts of the API is subject to active development. Feel free to contribute and send PRs.\n\nCurrently, the following APIs are supported:\n\n| Area          | Supported     | Comments |\n| ------------- | ------------- | -------- |\n| [Authorization](https://api.cloudflare.com/#getting-started-requests) | :white_check_mark: | API Tokens, API Keys and Origin CA Keys are supported |\n| [DNS Records](https://api.cloudflare.com/#dns-records-for-a-zone-properties) | :white_check_mark: except [import](https://api.cloudflare.com/#dns-records-for-a-zone-import-dns-records) |\n| [Cloudflare IPs](https://api.cloudflare.com/#cloudflare-ips-properties) | :white_check_mark: |\n| [Zone](https://api.cloudflare.com/#zone-properties) | [List](https://api.cloudflare.com/#zone-list-zones), [create](https://api.cloudflare.com/#zone-create-zone), [purge all files](https://api.cloudflare.com/#zone-purge-all-files) and [purge by url](https://api.cloudflare.com/#zone-purge-files-by-url)\n| [Accounts](https://api.cloudflare.com/#accounts-properties) | [List](https://api.cloudflare.com/#accounts-list-accounts) and [get](https://api.cloudflare.com/#accounts-account-details)\n| [Origin CA](https://api.cloudflare.com/#origin-ca-properties) | [List](https://api.cloudflare.com/#origin-ca-list-certificates) and [get](https://api.cloudflare.com/#origin-ca-get-certificate)\n\nIf you have a requirement for a specific area feel free to open an issue.\n\n## Disclaimer\n\nI'm not related to Cloudflare in any way. This is no official product. ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeorg-jung%2Ffluentcloudflare","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgeorg-jung%2Ffluentcloudflare","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgeorg-jung%2Ffluentcloudflare/lists"}