CloudSealed

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.