API REST
Una API HTTPS con OpenAPI 3.1 que traduce cada ruta a un comando de MongoDB.
Cada nodo sirve una API REST en https://<nodo>:27080/v1. Cada ruta construye el comando de MongoDB equivalente, con la
misma autorización por roles, los mismos códigos de error y la misma auditoría que el wire protocol. El documento
OpenAPI 3.1 está en /v1/openapi.json.
Autenticación
Con una clave de API en la cabecera Authorization: Bearer, un certificado de cliente o un token OIDC. Una clave se crea
para un usuario, lleva un subconjunto de sus roles y caduca a los 90 días por defecto; se muestra una sola vez.
teseladb admin apikey create --user tienda-apiUn ejemplo
curl -s https://node-01:27080/v1/databases/tienda/collections/pedidos/find \
--cacert ./ca.pem \
-H "Authorization: Bearer $TESELADB_API_KEY" \
-H "Content-Type: application/json" \
-d '{"filter": {"total": {"$gt": 100}}, "limit": 10}'Los cuerpos van en Extended JSON v2 relajado. Una consulta devuelve el primer lote y un cursor que sigues con
GET /v1/cursors/{id}. Los errores siguen el formato application/problem+json con code y codeName de MongoDB.
Rutas
| Método y ruta | Comando de MongoDB |
|---|---|
GET /databases | listDatabases |
GET /databases/{db}/collections | listCollections |
POST /databases/{db}/collections/{coll}/find | find |
POST /databases/{db}/collections/{coll}/aggregate | aggregate |
GET /databases/{db}/collections/{coll}/documents/{id} | find por _id |
PUT · PATCH · DELETE /databases/{db}/collections/{coll}/documents/{id} | update o delete por _id |
POST /databases/{db}/collections/{coll}/insertOne · insertMany | insert |
POST /databases/{db}/collections/{coll}/updateOne · updateMany | update |
POST /databases/{db}/collections/{coll}/deleteOne · deleteMany | delete |
POST /databases/{db}/collections/{coll}/bulkWrite | bulkWrite |
GET · POST /databases/{db}/collections/{coll}/indexes | listIndexes, createIndexes |
GET · POST /databases/{db}/collections/{coll}/changeStream | $changeStream, como eventos SSE |
POST /databases/{db}/command | cualquier comando |
GET · DELETE /cursors/{id} | getMore, killCursors |
POST /transactions | transacción con varias operaciones |
GET · POST /apiKeys | claves de API |
GET /openapi.json | documento OpenAPI 3.1 |
Idempotencia y consistencia
Una escritura con la cabecera Idempotency-Key no se aplica dos veces aunque la repitas. Cada respuesta lleva
TeselaDB-Operation-Time; mándalo en TeselaDB-After-Cluster-Time para leer después de esa operación.