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_SECRETRecursos 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/findingsIssues individuales de seguridad, costo, arquitectura o compliance detectados durante una auditoría 4D. La unidad atómica de CloudSealed.
Resources
GET /v1/resourcesObjetos de nube descubiertos en tu tenant — instancias, buckets, principales IAM, reglas de red. Los findings se atan a recursos.
Audits
GET /v1/auditsUna pasada forense sobre tu entorno. Lista, recupera y reanaliza on demand.
Policies
GET /v1/policiesReglas a medida montadas sobre el framework 4D. Define qué cuenta como crítico para tu organización.
Reports
GET /v1/reportsEntregables 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..."
}
}