TypeScript · Python · Go · C#
SDKs
Clients de primeira classe, gerados a partir da mesma spec OpenAPI 3.1 que alimenta a REST API. Tipados, com retry, paginados — sem código de cola.
TypeScript
@cloudsealed/sdk
Roda em Node, Bun, Deno e nos navegadores modernos. Totalmente tipado, ESM-first, com suporte de primeira classe a 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+. Clients sync e async (httpx). Modelos Pydantic para cada recurso.
# 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
Go idiomático. Ciente de context. Zero dependências externas além da standard library e um único transport HTTP/2.
// 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+. Totalmente async, amigável a dependency injection, com records fortemente tipados para cada recurso. Já vem com integração nativa ao IHttpClientFactory.
// 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"]!);O que cada SDK te entrega
- Respostas tipadas para cada endpoint
- Paginação automática — itere sem pensar em cursores
- Backoff exponencial com jitter em erros transitórios
- Hooks plugáveis de logging e instrumentação
- Versionado em paralelo com a REST API — v1.x do SDK fala com /v1 da API
Versionamento
Seguimos semver. Quebras só entram em versões major e apenas depois que a major anterior teve no mínimo doze meses de suporte. Releases patch e minor nunca quebram comportamento em runtime.