Saltar al contenido principal

API

El NNumbers WAF tiene una API REST documentada en OpenAPI. Es la misma API que usa la Console: todo lo que haces en pantalla puede hacerse por llamada, con el mismo permiso y el mismo aislamiento por organización.

Visión general​

ÍtemCómo funciona
EstiloREST, cuerpo en JSON, campos en snake_case
IdentificadoresUUID versión 7, en texto
Fechas y horasRFC 3339, en UTC
DocumentaciónEspecificación OpenAPI publicada con el producto
AlcanceSiempre la organización de tu sesión

La Console es el camino recomendado para empezar: muestra el estado de cada etapa y evita errores al armar la llamada. La API sirve para automatización — crear dominios en lote, sincronizar la política con tu aprovisionamiento, llevar eventos a tu SIEM.

Autenticación​

La autenticación se hace por la Console: obtienes la credencial en tu acceso de NNumbers Console y la usas en las llamadas. No hay usuario y contraseña propios del WAF, y la API no acepta credencial de otra organización.

La organización viene de la credencial, nunca del cuerpo, de la query ni de una cabecera de la llamada. Un recurso de otra organización responde 404, y no 403: su existencia no se revela.

Permisos​

Cada operación exige un permiso, coherente con los roles de la Console:

PermisoCubre
domains.readConsultar dominios, verificación, estado y origen
domains.manageCrear, cambiar y eliminar dominio, origen y verificación
protection.manageActivar y desactivar protección
policies.readConsultar políticas, reglas, excepciones y revisiones
policies.manageCrear y cambiar política y reglas
exceptions.manageCrear y eliminar excepciones
events.readConsultar eventos
metrics.readConsultar visión general y métricas

Una llamada sin el permiso necesario responde error de alcance, con el identificador de correlación para llevarlo al soporte.

Paginación​

Las listas usan cursor:

ParámetroValor
limitDe 1 a 200; por defecto 50
cursorValor opaco devuelto en la respuesta anterior

La respuesta trae los ítems y el cursor siguiente:

{
"items": [],
"next_cursor": "opaco"
}

Cuando next_cursor viene nulo, la lista terminó. No construyas el cursor por tu cuenta ni guardes posición por número de página: el cursor es opaco y puede cambiar de forma.

Idempotencia​

Toda llamada que crea, cambia o elimina exige la cabecera Idempotency-Key, con 1 a 128 caracteres.

SituaciónRespuesta
Primera llamada con la claveOperación ejecutada
Repetición con la misma clave y el mismo cuerpoLa misma respuesta de la primera, marcada como repetida
Repetición con la misma clave y cuerpo diferenteConflicto de idempotencia
Clave ya expiradaLa clave se descarta después de 24 horas

Usa una clave por intención de cambio, generada una vez y reutilizada en los reintentos. Eso es lo que impide un dominio duplicado cuando la red falla a mitad de camino.

Los cambios también aceptan control de versión: el recurso tiene una versión entera, y la llamada puede exigir que la versión siga siendo la misma. Si otra persona cambió antes, la respuesta es conflicto de versión, y no sobrescritura silenciosa.

Errores​

El error tiene siempre la misma forma:

{
"error": {
"code": "validation_failed",
"message": "Texto legible sobre lo que falló",
"correlation_id": "identificador de la llamada"
}
}
CódigoCuándo ocurre
unauthorizedCredencial ausente o inválida
forbidden_scopeCredencial válida sin el permiso de la operación
not_foundRecurso inexistente en tu organización
validation_failedCuerpo o parámetro inválido
conflictConflicto con el estado actual
version_conflictLa versión exigida ya no es la actual
idempotency_conflictMisma clave de idempotencia con cuerpo diferente
hostname_unavailableHostname ya registrado por otra organización
invalid_state_transitionLa etapa no es válida en el estado actual del dominio
verification_failedLa verificación de propiedad no pasó
origin_rejectedOrigen rechazado por las reglas de dirección o puerto
policy_in_usePolítica aún usada por un dominio
payload_too_largeCuerpo por encima del límite de la API
rate_limitedLlamadas por encima del límite de la API
dependency_unavailableServicio temporalmente indisponible; repite después

Guarda el correlation_id de toda falla: es lo que une la llamada al registro del lado de NNumbers, sin necesidad de reproducir el error.

Operaciones largas​

Verificar, activar, desactivar, eliminar y aplicar política son operaciones que no terminan en la misma respuesta. La llamada responde con el recurso y el estado actual, y sigues el avance por el estado del dominio — los mismos estados que muestra la Console.

Próximos pasos​