API Gateway · BaaS

Developer Portal

REST API v1 · SHA-256 + HMAC-SHA256 · Ley 21.719 · GDPR

Endpoints

4

Versión

v1

Latencia

≤ 2ms

Quick Start

Base URLhttp://localhost:3000/api/v1Producción: https://api.eab64.com/api/v1
SHA-256 + HMAC-SHA256Ley 21.719 · GDPRSLA 99.99%Bearer Token AuthContent-Type: application/jsonBloques 128 hex / 64 bytes

Autenticación

El endpoint POST /api/v1/audit/seal requiere un Bearer Token en el header Authorization. Obtén tu token en Settings → API Keys.

Authorization: Bearer eab64_sk_prod_ab3f...
401Unauthorized

Header ausente o sin prefijo Bearer.

{
  "error": "Authorization header requerido.",
  "code":  "UNAUTHORIZED",
  "hint":  "Incluye: Authorization: Bearer <token>"
}
429Rate Limit Exceeded

Token terminado en _limit — cuota agotada.

{
  "error":          "Límite de solicitudes superado.",
  "code":           "RATE_LIMIT_EXCEEDED",
  "retry_after_ms": 60000
}
// Header: Retry-After: 60

Gestiona tus tokens, revoca accesos y consulta tu quota en Settings → API Keys · Cada token tiene un prefijo único visible tras la generación.

Endpoints

POST/api/v1/audit/sealSella un payload — respuesta ≤ 2 ms
Requiere autenticaciónAuthorization: Bearer <token>Ver docs →

Request Body (application/json)

payloadREQ
stringTexto a sellar. Máximo 4 096 caracteres.
node_id
numberIdentificador del nodo EAB-64 (default: 1).
opcode
numberCódigo de operación Rust u8 (default: 0x01 = NOTARY).
flags
numberNibble de flags de seguridad (default: 0b00000011).

Response 200 OK

eab_block_hex
stringBloque sellado — 128 hex chars / 64 bytes.
node_id
numberNodo que procesó la solicitud.
opcode
numberOpcode aplicado.
flags
numberFlags de seguridad aplicados.
timestamp_utc
stringISO 8601 UTC del sellado.
latency_ms
numberLatencia del core Rust en ms.
compliance
object{ ley_21719, arco_rights: boolean; tier: number }.

Response Headers

X-EAB64-VersionSemver de la API
X-EAB64-NodeNodo procesador (ej. N01)
X-EAB64-Latency-MsLatencia del core Rust
X-EAB64-ComplianceFlags de compliance inline

Error Codes

401 UNAUTHORIZEDheader Authorization ausente o malformado
429 RATE_LIMIT_EXCEEDEDcuota agotada — token termina en _limit
400 MISSING_PAYLOADpayload ausente o vacío
400 PAYLOAD_TOO_LONGpayload > 4 096 chars
400 INVALID_JSONbody no es JSON válido

Ejemplos de código

curl -s -X POST http://localhost:3000/api/v1/audit/seal \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eab64_sk_prod_ab3f..." \
  -d '{"payload": "Score crediticio cliente #8821"}'
GET/api/v1/audit/ledgerRegistro de auditoría paginado

Query Parameters

limit
numberMáximo de registros a retornar (default: 50, max: 100).
offset
numberDesplazamiento para paginación (default: 0).
node_id
numberFiltrar bloques por nodo específico.

Response 200 OK

data
arrayEabBlockRecord[] — registros de la página.
meta.total
numberTotal de registros en el ledger.
meta.returned
numberRegistros en esta respuesta.
meta.has_more
booleantrue si hay más páginas disponibles.

Ejemplos de código

# Todos los registros (paginados)
curl -s http://localhost:3000/api/v1/audit/ledger

# Con paginación y filtro por nodo
curl -s "http://localhost:3000/api/v1/audit/ledger?limit=10&offset=0&node_id=2"
POST/api/v1/audit/verifyVerifica la integridad de un bloque

Request Body

eab_block_hexREQ
stringBloque a verificar — debe ser exactamente 128 caracteres hex.
payloadREQ
stringPayload original que fue sellado.

Response

valid
booleantrue si el bloque es íntegro y bien formado.
message
stringDescripción legible del resultado.
block_length
numberLongitud del hex recibido (128 = válido).
algorithm
string'SHA-256 + HMAC-SHA256'
verified_at
stringISO 8601 del momento de verificación.

HTTP 200 → válido · HTTP 422 → inválido

Ejemplos de código

curl -s -X POST http://localhost:3000/api/v1/audit/verify \
  -H "Content-Type: application/json" \
  -d '{
    "eab_block_hex": "365a985f6f493480e9eadf2c68ae9a001908ea9c93b3a2d0d9bb07cf746260a6f3dbc54f009827a3f1fea93ece06d5e928ed9520901be45a7e25d87f8c4fc7c5",
    "payload": "Score crediticio cliente #8821 — Riesgo Bajo"
  }'
GET/api/v1/healthEstado del sistema · SLA · Latencias

Response 200 OK

status
string'healthy' | 'degraded' | 'unhealthy'
version
stringVersión de la API (semver).
uptime_pct
numberUptime garantizado (99.99 = 4 nines).
services
object{ rust_core, python_mesh, data_lake, api_gateway } — status + latency_ms.
compliance
object{ ley_21719, gdpr, iso_27001: boolean }.

Sin parámetros. Header Cache-Control: no-store — siempre datos en tiempo real.

Ejemplos de código

curl -s http://localhost:3000/api/v1/health | python3 -m json.tool

Live Playground

Prueba el endpoint POST /api/v1/audit/seal directamente desde el navegador. Ingresa tu Bearer Token — sin token recibirás 401, con token terminado en _limit recibirás 429.

POST
/api/v1/audit/sealEntorno: localhost:3000

Request Body

Bearer

Sin token recibirás 401 · Token terminado en _limit429

Ejecuta una llamada para ver la respuesta

Type Reference

interfaceSealRequest
interface SealRequest {
  payload:  string;   // required — max 4 096 chars
  node_id?: number;   // optional — default: 1
  opcode?:  number;   // optional — default: 0x01
  flags?:   number;   // optional — default: 0b00000011
}
interfaceSealResponse
interface SealResponse {
  eab_block_hex: string;   // 128 hex chars / 64 bytes
  node_id:       number;
  opcode:        number;
  flags:         number;
  timestamp_utc: string;   // ISO 8601 UTC
  latency_ms:    number;   // ≤ 2 ms
  compliance: {
    ley_21719:   boolean;
    arco_rights: boolean;
    tier:        number;   // 1 | 2
  };
}
interfaceEabBlockRecord
interface EabBlockRecord {
  id:            string;  // "eab-XXXX"
  payload:       string;
  eab_block_hex: string;  // 128 hex chars
  node_id:       number;
  opcode:        number;
  flags:         number;
  created_at:    string;  // ISO 8601 UTC
}
EAB-64 Block Layout (RFC v1.3)

// 128 hex chars = 64 bytes total

chars 000-031bytes 00-15SHA-256 hash fragment
chars 032-047bytes 16-23Timestamp (epoch, big-endian)
chars 048-063bytes 24-31Nonce (8 bytes)
chars 064-127bytes 32-63HMAC-SHA256 MAC (32 bytes)