TimeWizard.Sdk
0.1.116
dotnet add package TimeWizard.Sdk --version 0.1.116
NuGet\Install-Package TimeWizard.Sdk -Version 0.1.116
<PackageReference Include="TimeWizard.Sdk" Version="0.1.116" />
<PackageVersion Include="TimeWizard.Sdk" Version="0.1.116" />
<PackageReference Include="TimeWizard.Sdk" />
paket add TimeWizard.Sdk --version 0.1.116
#r "nuget: TimeWizard.Sdk, 0.1.116"
#:package TimeWizard.Sdk@0.1.116
#addin nuget:?package=TimeWizard.Sdk&version=0.1.116
#tool nuget:?package=TimeWizard.Sdk&version=0.1.116
Time Wizard .NET SDK
Official .NET client for the Time Wizard public REST API. Generated from the live OpenAPI spec on every push, so the SDK never lags behind the API.
Install
dotnet add package TimeWizard.Sdk
Targets netstandard2.1.
Quick start
using TimeWizard.Sdk;
var client = new TimeWizardClient("acme", "tw_...");
var workers = await client.Workers.ListWorkersAsync();
foreach (var worker in workers)
{
Console.WriteLine($"{worker.FirstName} {worker.LastName}");
}
The constructor takes:
slug— your workspace slug, i.e. the subdomain ontimewizard.io.apiKey— a tenant-scoped API key minted from the admin "API keys" screen. Keys are prefixedtw_.
The client targets https://{slug}.timewizard.io/api/v1 and sends the
key as Authorization: Bearer <apiKey> on every request.
Identifying your application
Pass an optional userAgent to identify your integration in our
server logs — useful when you contact support or want to correlate
spikes back to a specific deployment:
var client = new TimeWizardClient("acme", "tw_...", userAgent: "AcmePayroll/2.3");
Your token is prefixed to the SDK identifier rather than replacing it, so requests go out with:
User-Agent: AcmePayroll/2.3 TimeWizard.Sdk/1.2.3
The SDK portion always reflects the installed package version, so we can tell at a glance whether a customer is on a recent release.
What's exposed
One property per resource group, returning a typed API class:
| Property | API |
|---|---|
client.Workers |
WorkersApi |
client.Recruiters |
RecruitersApi |
client.Clients |
ClientsApi |
client.Sites |
SitesApi |
client.Suppliers |
SuppliersApi |
client.BillingGroups |
BillingGroupsApi |
client.Invoices |
InvoicesApi |
client.Jobs |
JobsApi |
client.PayCycles |
PayCyclesApi |
client.Timesheets |
TimesheetsApi |
client.Approvers |
ApproversApi |
client.Webhooks |
WebhooksApi |
client.Authentication |
AuthenticationApi |
Upsert semantics
Mutations on most resources are upserts keyed by atsReference —
your system-of-record's identifier for the entity. A single
POST /{resource} either inserts a new row or full-replaces the
existing one matched by atsReference. The response carries an
Operation discriminator (Created / Updated) so you can branch
on it without a separate "does it exist?" round-trip.
Errors
Non-2xx responses throw ApiException. The body is the shared
ApiError envelope ({ "error": { "code", "message", "details?" } })
— call .AsApiError() to get a typed view:
try
{
await client.Workers.UpsertWorkerAsync(input);
}
catch (ApiException ex)
{
var error = ex.AsApiError();
if (error?.Error.Code == "ats_reference_in_use")
{
// handle the conflict
}
}
Common status / code combinations:
422 validation_failed— request didn't match the schema;detailsis a flatten of which fields failed.409 ats_reference_in_use(and other resource-specific codes) — business-rule conflict.401 not_authenticated— missing or invalid API key.403 missing_permission— your key lacks the required scope.
API reference
The full OpenAPI document and an interactive playground live at
https://{slug}.timewizard.io/api/v1/docs.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- JsonSubTypes (>= 2.0.1)
- Newtonsoft.Json (>= 13.0.3)
- Polly (>= 8.1.0)
- RestSharp (>= 112.0.0)
- System.ComponentModel.Annotations (>= 5.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.116 | 38 | 6/3/2026 |
| 0.1.114 | 94 | 5/19/2026 |
| 0.1.107 | 102 | 5/18/2026 |
| 0.1.106 | 94 | 5/18/2026 |
| 0.1.100 | 91 | 5/15/2026 |
| 0.1.98 | 93 | 5/14/2026 |
| 0.1.97 | 89 | 5/14/2026 |
| 0.1.96 | 88 | 5/14/2026 |
| 0.1.80 | 87 | 5/14/2026 |
| 0.1.79 | 82 | 5/14/2026 |
| 0.1.72 | 83 | 5/13/2026 |
| 0.1.71 | 86 | 5/13/2026 |
| 0.1.63 | 90 | 5/13/2026 |
| 0.1.62 | 95 | 5/13/2026 |
Minor update