{"id":17236896,"url":"https://github.com/gonace/cronitor","last_synced_at":"2026-02-17T13:03:43.995Z","repository":{"id":40275504,"uuid":"406615257","full_name":"gonace/Cronitor","owner":"gonace","description":".NET Client for Cronitor!","archived":false,"fork":false,"pushed_at":"2025-01-25T09:18:17.000Z","size":260,"stargazers_count":8,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-07T03:18:50.037Z","etag":null,"topics":["cron","cronitor","ping","sdk","telemetry"],"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/gonace.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2021-09-15T04:38:51.000Z","updated_at":"2025-01-25T09:18:20.000Z","dependencies_parsed_at":"2024-11-27T08:16:03.520Z","dependency_job_id":null,"html_url":"https://github.com/gonace/Cronitor","commit_stats":null,"previous_names":["gonace/cronitor-net"],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gonace%2FCronitor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gonace%2FCronitor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gonace%2FCronitor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gonace%2FCronitor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gonace","download_url":"https://codeload.github.com/gonace/Cronitor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248813827,"owners_count":21165631,"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":["cron","cronitor","ping","sdk","telemetry"],"created_at":"2024-10-15T05:37:12.338Z","updated_at":"2026-02-17T13:03:43.987Z","avatar_url":"https://github.com/gonace.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"﻿# Cronitor API Client\nCronitor is a service for heartbeat-style monitoring of anything that can send an HTTP request. It's particularly well suited for monitoring cron jobs, Jenkins jobs, or any other scheduled task.\n\n![Nuget](https://img.shields.io/nuget/v/Cronitor)\n![Nuget](https://img.shields.io/nuget/dt/Cronitor)\n\n## Supported APIs\nThis .NET library provides a simple way of pinging a Cronitor monitor. For a better understanding of the API this library talks to, please see the documentation, links below.\n* [Activity API](https://cronitor.io/docs/activity-api)\n* [Issues API](https://cronitor.io/docs/issues-api)\n* [Monitor API](https://cronitor.io/docs/monitor-api)\n* [Notifications API](https://cronitor.io/docs/template-api)\n* [Telemetry API](https://cronitor.io/docs/telemetry-api)\n\n## Install\nYou can download the cronitor client nuget.\n[https://www.nuget.org/packages/Cronitor](https://www.nuget.org/packages/Cronitor)\n\n## Usage\n\u003e For the full documentation, please read our [wiki](https://github.com/gonace/Cronitor/wiki), [telemetry wiki](https://github.com/gonace/Cronitor/wiki/Telemetry)!\n\n### NET Generic Host\n\u003e If you're using .NET HostBuilder and utilizing the default hosting and startup pattern (`Microsoft.Extensions.Hosting`).\n\u003e\n\u003e The easiest way to use the client is to run `.UseCronitor()`, this will create a static instance (`Cronitor`) of the client that can be used throughout your application.\n\n#### Examples\n```c#\nawait Host.CreateDefaultBuilder()\n    .UseCronitor(\"apiKey\")\n    .Build()\n    .RunAsync();\n```\n```c#\nawait Host.CreateDefaultBuilder()\n    .UseCronitor((context) =\u003e context.Configuration.GetValue\u003cstring\u003e(\"Cronitor:ApiKey\"))\n    .Build()\n    .RunAsync();\n```\n\nAnd then you'll be able to use it like this:\n```c#\npublic class SomeClass\n{\n    public Monitor Create()\n    {\n        var monitor = new Monitor();\n        var request = new CreateMonitorRequest(monitor);\n        var response = Cronitor.Monitors.Create(request);\n\n        return response;\n    }\n\n    public async Task\u003cMonitor\u003e CreateAsync()\n    {\n        var monitor = new Monitor();\n        var request = new CreateMonitorRequest(monitor);\n        var response = await Cronitor.Monitors.CreateAsync(request);\n\n        return resposne;\n    }\n}\n```\n\nIf you much rather like to use each client (`IssuesClient`, `MonitorsClient`, `NotificationsClient` or `TelemetriesClient`) you can use each client on its own by running `.ConfigureCronitor()` instead, this will not configure the static client.\n\n#### Examples\n```c#\nawait Host.CreateDefaultBuilder()\n    .ConfigureCronitor(\"apiKey\")\n    .Build()\n    .RunAsync();\n```\n```c#\nawait Host.CreateDefaultBuilder()\n    .ConfigureCronitor((context) =\u003e context.Configuration.GetValue\u003cstring\u003e(\"Cronitor:ApiKey\"))\n    .Build()\n    .RunAsync();\n```\n\nAnd then you'll be able to use it like this:\n```c#\npublic class SomeClass\n{\n    private readonly IMonitorsClient _monitorsClient;\n\n    public SomeClass(IMonitorsClient monitorsClient)\n    {\n        _monitorsClient = monitorsClient;\n    }\n\n    public Monitor Create()\n    {\n        var monitor = new Monitor();\n        var request = new CreateMonitorRequest(monitor);\n        var response = _monitorsClient.Create(request);\n\n        return response;\n    }\n\n    public async Task\u003cMonitor\u003e CreateAsync()\n    {\n        var monitor = new Monitor();\n        var request = new CreateMonitorRequest(monitor);\n        var response = await _monitorsClient.CreateAsync(request);\n\n        return resposne;\n    }\n}\n```\n\n### Simple\n#### Examples\n```c#\nusing Cronitor.Models;\nusing Cronitor.Requests;\n\nCronitor.Configure(\"apiKey\")\n\nvar monitor = new Monitor();\nvar request = new CreateMonitorRequest(monitor);\nvar response = Cronitor.Monitors.Create(request);\n```\n\n### Manual\nIf you only need access to one (or a few) clients you're able to configure each client individually.\n\n#### Examples\n```c#\nusing Cronitor.Models;\nusing Cronitor.Requests;\n\npublic class SomeClass\n{\n    private readonly IMonitorsClient _monitorsClient;\n\n    public SomeClass()\n    {\n        _monitorsClient = new IMonitorsClient(\"apiKey\");\n    }\n\n    public Monitor Create()\n    {\n        var monitor = new Monitor();\n        var request = new CreateMonitorRequest(monitor);\n        var response = _monitorsClient.Create(request);\n\n        return response;\n    }\n\n    public async Task\u003cMonitor\u003e CreateAsync()\n    {\n        var monitor = new Monitor();\n        var request = new CreateMonitorRequest(monitor);\n        var response = await _monitorsClient.CreateAsync(request);\n\n        return resposne;\n    }\n}\n```\n\n## Development\n### Suggestions\n* Add support for Quartz.NET Jobs\n* Implement Timezone constant (if not too big of a hassle to maintain)\n* Implement cron expression-language (if found as needed?)\n* Implement Cronitor `assertions`-language (if found as needed?)\n\n## Contributing\nPull requests and features are happily considered! By participating in this project you agree to abide by the [Code of Conduct](http://contributor-covenant.org/version/2/0).\n\n### To contribute\n\nFork, then clone the repo:\n```\ngit clone git@github.com:your-username/Cronitor.git\n```\nPush to your fork and [submit a pull request](https://github.com/gonace/Cronitor/compare/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgonace%2Fcronitor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgonace%2Fcronitor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgonace%2Fcronitor/lists"}