TypeScript · Python · Go · C#
SDKs
Clientes de primera, generados desde la misma spec OpenAPI 3.1 que alimenta la REST API. Tipados, con retry, paginados — cero código de pegado.
TypeScript
@cloudsealed/sdk
Corre en Node, Bun, Deno y navegadores modernos. Totalmente tipado, ESM-first, con soporte de primera para 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+. Clientes sync y 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. Context-aware. Cero dependencias externas más allá de la standard library y un único transporte 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+. Completamente async, amigable con dependency injection, con records fuertemente tipados para cada recurso. Trae integración nativa con 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"]!);Lo que cada SDK te da
- Respuestas tipadas para cada endpoint
- Paginación automática — itera sin pensar en cursores
- Backoff exponencial con jitter en errores transitorios
- Hooks plugables de logging e instrumentación
- Versionado junto a la REST API — v1.x del SDK habla con /v1 de la API
Versionado
Seguimos semver. Los cambios disruptivos sólo entran en versiones major y sólo después de que la major anterior haya tenido al menos doce meses de soporte. Los releases patch y minor nunca rompen el comportamiento en runtime.