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.

Shell
teseladb admin apikey create --user tienda-api

Un ejemplo

Shell
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 rutaComando de MongoDB
GET /databaseslistDatabases
GET /databases/{db}/collectionslistCollections
POST /databases/{db}/collections/{coll}/findfind
POST /databases/{db}/collections/{coll}/aggregateaggregate
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 · insertManyinsert
POST /databases/{db}/collections/{coll}/updateOne · updateManyupdate
POST /databases/{db}/collections/{coll}/deleteOne · deleteManydelete
POST /databases/{db}/collections/{coll}/bulkWritebulkWrite
GET · POST /databases/{db}/collections/{coll}/indexeslistIndexes, createIndexes
GET · POST /databases/{db}/collections/{coll}/changeStream$changeStream, como eventos SSE
POST /databases/{db}/commandcualquier comando
GET · DELETE /cursors/{id}getMore, killCursors
POST /transactionstransacción con varias operaciones
GET · POST /apiKeysclaves de API
GET /openapi.jsondocumento 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.