.NET SDK Quickstart¶
Run fully managed ASP.NET Core extensions with the Kiket.SDK NuGet package.
1. Install¶
Targets .NET 8.0+. Add LangVersion=latest to your project file for best experience.
2. Configure environment¶
| Variable | Description |
|---|---|
KIKET_WEBHOOK_SECRET |
Verifies inbound payloads (X-Kiket-Signature). |
KIKET_WORKSPACE_TOKEN |
Used by the HTTP client for REST calls. |
KIKET_BASE_URL (optional) |
Defaults to https://kiket.dev. |
KIKET_SDK_TELEMETRY_URL (optional) |
Mirror telemetry elsewhere. |
KIKET_SDK_TELEMETRY_OPTOUT=1 (optional) |
Disable telemetry. |
KIKET_SECRET_<KEY> |
Inject manifest secrets (e.g., KIKET_SECRET_API_TOKEN). |
3. Register handlers¶
using Kiket.SDK;
var sdk = new KiketSDK(new SDKConfig
{
WebhookSecret = Environment.GetEnvironmentVariable("KIKET_WEBHOOK_SECRET"),
WorkspaceToken = Environment.GetEnvironmentVariable("KIKET_WORKSPACE_TOKEN"),
ExtensionId = "com.example.marketing",
ExtensionVersion = "1.0.0"
});
sdk.Register("issue.created", "v1", async (payload, context) =>
{
var summary = payload["issue"]["title"].ToString();
await context.Endpoints.LogEventAsync("issue.created", new Dictionary<string, object?>
{
["summary"] = summary
});
await context.Secrets.SetAsync("WEBHOOK_TOKEN", Guid.NewGuid().ToString());
return new { ok = true };
});
sdk.Register("workflow.sla_status", "v1", async (payload, context) =>
{
var projectId = payload["issue"]["project_id"].ToString();
var events = await context.Endpoints.SlaEvents(projectId!).ListAsync(new SlaEventsListOptions
{
State = "imminent",
Limit = 5
});
if (events?.Data?.Count == 0) return new { ok = true };
return new { acknowledged = true };
});
sdk.Run("127.0.0.1", 8080);
4. Telemetry & feedback¶
var sdk = new KiketSDK(new SDKConfig
{
TelemetryEnabled = true,
FeedbackHook = record =>
{
Console.WriteLine($"[telemetry] {record.Event}@{record.Version} {record.Status} ({record.DurationMs}ms)");
}
});
Telemetry automatically posts to /api/v1/ext/telemetry using the runtime token from webhook payloads. Set KIKET_SDK_TELEMETRY_OPTOUT=1 to disable.
5. Add a setup wizard (optional)¶
Create a guided setup experience by adding a setup section to your manifest:
.kiket/extension.yaml
model_version: "1.0"
extension:
id: com.example.marketing
name: Marketing Hub
version: 1.0.0
delivery: http
callback:
url: ${EXTENSION_BASE_URL}
secret: env.KIKET_WEBHOOK_SECRET
configuration:
AZURE_CONNECTION_STRING:
type: string
secret: true
required: true
label: Azure Connection String
storage_container:
type: string
default: kiket-data
label: Storage Container Name
setup:
- secrets:
id: azure
title: Connect Azure Storage
collect:
- AZURE_CONNECTION_STRING
- configure:
id: storage
title: Configure Storage
collect:
- storage_container
- test:
id: verify
title: Verify Connection
endpoint: /test-azure
See the Setup Wizard Guide for all step types.
6. Next steps¶
- Consult the .NET API reference for
HandlerContext, endpoints, and telemetry payloads. - Follow the deployment cookbook for container builds, Azure/GCP hosting, and CLI automation.