CloudSealed

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.