C# SDK
Jaina.Client — .NET / Unity client targeting netstandard2.0.
Install
Heads up:
Jaina.Clientis publishing soon and is not yet on NuGet. Until it ships, use the REST API directly. The examples below are correct for when the package is live.
dotnet add package Jaina.Client
For Unity, download the DLL from NuGet and drop into Assets/Plugins/. Set the meta to Any Platform.
Quickstart
using Jaina.Client;
var client = new JainaClient(apiKey: System.Environment.GetEnvironmentVariable("JAINA_API_KEY"));
var projects = await client.Projects.ListAsync();
foreach (var p in projects.Items)
{
System.Console.WriteLine(p.Slug);
}
Typed records
public class Enemy
{
public string Name { get; set; }
public int Hp { get; set; }
public int Attack { get; set; }
public string Sprite { get; set; }
public string Rarity { get; set; }
}
var enemies = await client.Records.ListAsync<Enemy>("my-game", "enemy", new ListOptions {
Filter = new { hp = new { gte = 50 } }
});
foreach (var e in enemies.Items)
{
System.Console.WriteLine($"{e.Name} (HP {e.Hp})");
}
Generate the POCO with jaina codegen --lang csharp.
CancellationToken
Every async method accepts a CancellationToken:
using var cts = new CancellationTokenSource(TimeSpan.FromSeconds(5));
var enemies = await client.Records.ListAsync<Enemy>("my-game", "enemy", cancellationToken: cts.Token);
IDisposable
JainaClient implements IDisposable. In typical app patterns, wrap with using or register as a singleton in DI.
using var client = new JainaClient(apiKey: "...");
Unity gotchas
Newtonsoft.Jsonis required (already in Unity 2020+). The SDK uses it for serialization.- Async/await in Unity requires UniTask or
Taskinterop. Both work. - WebGL builds: requests use UnityWebRequest under the hood. CORS applies — your Jaina API must allow your game's origin.
Error handling
try
{
await client.Records.CreateAsync("my-game", "enemy", new { name = "Goblin" });
}
catch (JainaApiException ex)
{
Console.WriteLine($"{ex.Status} {ex.Code}: {ex.Message}");
}
