TypeScript · Python · Go · C#

SDKs

First-class clients, generated from the same OpenAPI 3.1 spec that powers the REST API. Typed, retried, paginated — no glue code.

TypeScript

@cloudsealed/sdk

Runs in Node, Bun, Deno, and modern browsers. Fully typed, ESM-first, with first-class support for AbortController.

// npm install @cloudsealed/sdk
import { CloudSealed } from "@cloudsealed/sdk";

const cs = new CloudSealed({ token: process.env.CS_TOKEN });

// Auto-paginated iterator — no cursors to track
for await (const finding of cs.findings.iterate({ severity: "critical" })) {
  console.log(finding.id, finding.title);
}

Python

cloudsealed

Python 3.10+. Sync and async clients (httpx). Pydantic models for every resource.

# pip install cloudsealed
from cloudsealed import CloudSealed

cs = CloudSealed(token=os.environ["CS_TOKEN"])

# Auto-paginated iterator
for finding in cs.findings.iterate(severity="critical"):
    print(finding.id, finding.title)

# Async variant
async with cs.async_client() as client:
    findings = await client.findings.list(severity="critical")

Go

github.com/cloudsealed/cloudsealed-go

Idiomatic Go. Context-aware. Zero external dependencies beyond the standard library and a single HTTP/2 transport.

// go get github.com/cloudsealed/cloudsealed-go
import "github.com/cloudsealed/cloudsealed-go"

cs := cloudsealed.New(cloudsealed.WithToken(os.Getenv("CS_TOKEN")))

iter := cs.Findings.Iterate(ctx, &cloudsealed.FindingListParams{
    Severity: cloudsealed.SeverityCritical,
})
for iter.Next() {
    f := iter.Finding()
    fmt.Println(f.ID, f.Title)
}

C# / .NET

CloudSealed.Sdk

.NET 8+. Fully async, dependency-injection friendly, with strongly-typed records for every resource. Ships with an IHttpClientFactory integration out of the box.

// dotnet add package CloudSealed.Sdk
using CloudSealed;

var cs = new CloudSealedClient(
    Environment.GetEnvironmentVariable("CS_TOKEN")!);

// Async-paginated — no cursors to track
await foreach (var finding in cs.Findings.IterateAsync(
    new FindingListParams { Severity = Severity.Critical }))
{
    Console.WriteLine($"{finding.Id} {finding.Title}");
}

// ASP.NET Core: register once, inject anywhere
builder.Services.AddCloudSealed(opts =>
    opts.Token = builder.Configuration["CloudSealed:Token"]!);

What every SDK gives you

  • Type-safe responses for every endpoint
  • Automatic pagination — iterate without thinking about cursors
  • Exponential backoff with jitter on transient errors
  • Pluggable logging and instrumentation hooks
  • Versioned alongside the REST API — v1.x of the SDK targets /v1 of the API

Versioning

We follow semver. Breaking changes only land in major versions, and only after the previous major has been supported for at least twelve months. Patch and minor releases never break runtime behavior.