CloudSealed

api.cloudsealed.com

REST API

JSON sobre HTTPS. Orientada a recursos. Status codes predecibles. Documentada en OpenAPI 3.1.

Autenticación

Toda solicitud requiere un Bearer token en el header Authorization. Soportamos dos tipos de credencial — elige la que combine con tu integración.

Personal Access Tokens

De larga duración, scoped por usuario. Ideales para scripts, jobs de CI y herramientas internas.

OAuth 2.0

Access tokens de corta duración emitidos vía flujo authorization-code. Ideales para integraciones de terceros y apps multi-tenant.

# All requests require a Bearer token
curl https://api.cloudsealed.com/v1/findings \
  -H "Authorization: Bearer $CS_TOKEN"

# OAuth: exchange an authorization code for a short-lived access token
curl -X POST https://api.cloudsealed.com/oauth/token \
  -d grant_type=authorization_code \
  -d code=$CODE \
  -d client_id=$CLIENT_ID \
  -d client_secret=$CLIENT_SECRET

Recursos principales

El puñado de sustantivos alrededor de los que gira la API. Todo lo demás se compone a partir de estos.

  • Findings

    GET /v1/findings

    Issues individuales de seguridad, costo, arquitectura o compliance detectados durante una auditoría 4D. La unidad atómica de CloudSealed.

  • Resources

    GET /v1/resources

    Objetos de nube descubiertos en tu tenant — instancias, buckets, principales IAM, reglas de red. Los findings se atan a recursos.

  • Audits

    GET /v1/audits

    Una pasada forense sobre tu entorno. Lista, recupera y reanaliza on demand.

  • Policies

    GET /v1/policies

    Reglas a medida montadas sobre el framework 4D. Define qué cuenta como crítico para tu organización.

  • Reports

    GET /v1/reports

    Entregables generados — resúmenes ejecutivos, planes de remediación, evidencias de compliance — descargables en PDF o JSON.

Paginación

Los endpoints de listado devuelven resultados paginados por cursor. Pasa ?limit=50 (máx 200) y usa el campo next_cursor de la respuesta para traer la siguiente página.

GET /v1/findings?limit=50&cursor=eyJpZCI6Im...

{
  "data": [ /* ... 50 items ... */ ],
  "next_cursor": "eyJpZCI6Imp...",
  "has_more": true
}

Límites de tasa

1.000 solicitudes/minuto por token por defecto. Los endpoints pesados (generación de reporte, reanálisis completo) tienen presupuestos aparte. Toda respuesta lleva headers X-RateLimit-* — retrocede proactivamente.

Errores

Status codes HTTP estándar. Cada cuerpo de error incluye un error.code estable, un mensaje legible y un request_id que puedes citar al soporte. Nunca parsees el mensaje — es para humanos; el code es para máquinas.

HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json

{
  "error": {
    "code": "invalid_severity_filter",
    "message": "severity must be one of: info, low, medium, high, critical",
    "request_id": "req_01HZ8K3..."
  }
}