Ir al contenido

DBaaS

POST /v1/dbaas/{id}/backups · scope dbaas:write · reversible · asincrona · idempotente

Devuelve 202 en cuanto la tarea arranca, no cuando el archivo está listo: un dump puede tardar minutos, muy por encima de cualquier timeout HTTP. La operación se resuelve contra la lista de backups —aparece uno nuevo o no— y no contra el resultado del POST, así que sobrevive a que la llamada expire con el backup corriendo. Esperala con GET /v1/operations/{id}.

Ventana de terminal
curl https://api.truo.cloud/v1/dbaas/svc_10432/backups \
-X POST \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: dbaas.backups.create

GET /v1/dbaas/{id}/backups · scope dbaas:read

Del más nuevo al más viejo. Un servicio cuyo motor no tiene backups gestionados devuelve una lista vacía, no un error.

Ventana de terminal
curl https://api.truo.cloud/v1/dbaas/svc_10432/backups \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: dbaas.backups.list

GET /v1/dbaas/{id}/connection · scope dbaas:read

Host, puerto, base, usuario administrador, modo TLS y la CA del servicio — que es pública y sirve para verificar al servidor. No incluye la password ni ninguna URI que la contenga: la credencial sale de POST /v1/dbaas/{id}/credentials, que exige el scope dbaas:credentials.

Ventana de terminal
curl https://api.truo.cloud/v1/dbaas/svc_10432/connection \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: dbaas.connection.get

POST /v1/dbaas/{id}/credentials · scope dbaas:credentials

Devuelve la password del administrador en claro. No rota nada: es la credencial que ya está en uso.

Es un POST y no un GET a propósito. Un GET queda en el historial del navegador, en los logs de cualquier proxy y en cachés intermedias, y se puede disparar sin querer desde un link; un POST obliga a una acción deliberada y entra al audit log como mutación, así que revelar la credencial de una base deja rastro. Por lo mismo vive en su propio scope (dbaas:credentials): dbaas:write crea bases y usuarios acotados, esto da acceso total a los datos y sobrevive a revocar la key.

Ventana de terminal
curl https://api.truo.cloud/v1/dbaas/svc_10432/credentials \
-X POST \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: dbaas.credentials.create

POST /v1/dbaas/{id}/databases · scope dbaas:write · reversible · idempotente

charset y collation son de MySQL; owner, de PostgreSQL. El resto de los motores los ignora. La respuesta no trae tamaño ni conteo de tablas: la base nace vacía y releerla costaría otra llamada para informar un cero.

Ventana de terminal
curl https://api.truo.cloud/v1/dbaas/svc_10432/databases \
-X POST \
-H "Authorization: Bearer $TRUO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"appdb"}'

operationId: dbaas.databases.create

DELETE /v1/dbaas/{id}/databases/{name} · scope dbaas:write · destructiva — no tiene vuelta atras · idempotente

Destructivo e irreversible: se van los datos y no hay papelera. Lo único que queda es lo que haya en GET /v1/dbaas/{id}/backups.

Ventana de terminal
curl https://api.truo.cloud/v1/dbaas/svc_10432/databases/appdb \
-X DELETE \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: dbaas.databases.delete

GET /v1/dbaas/{id}/databases · scope dbaas:read

Ventana de terminal
curl https://api.truo.cloud/v1/dbaas/svc_10432/databases \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: dbaas.databases.list

Obtener una base de datos con su estado real

Sección titulada «Obtener una base de datos con su estado real»

GET /v1/dbaas/{id} · scope dbaas:read

Consulta el backend. Si no responde, los campos de estado vuelven en null y capabilities queda sin databases/users en vez de fallar: que el backend tenga un hipo no debería impedirte leer el resto del recurso.

Ventana de terminal
curl https://api.truo.cloud/v1/dbaas/svc_10432 \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: dbaas.instances.get

Listar las bases de datos gestionadas de la cuenta

Sección titulada «Listar las bases de datos gestionadas de la cuenta»

GET /v1/dbaas · scope dbaas:read

Sale de la base, sin consultar el backend: engine, state, host y plan vienen en null, y capabilities omite databases y users porque saber si el motor las tiene costaría una llamada por elemento de la página. Una clave ausente es “no se consultó”, que no es lo mismo que false. Para el estado real de una, GET /v1/dbaas/{id}.

Ventana de terminal
curl https://api.truo.cloud/v1/dbaas \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: dbaas.instances.list

POST /v1/dbaas/{id}/restart · scope dbaas:write · reversible · idempotente

Corta las conexiones abiertas: las transacciones en vuelo se pierden. Devuelve 202 con una operación ya terminada —el reinicio es síncrono en los dos backends— para que el cliente trate todas las mutaciones largas igual, y para que el día que deje de serlo no cambie el contrato sino la columna backend de la operación.

Ventana de terminal
curl https://api.truo.cloud/v1/dbaas/svc_10432/restart \
-X POST \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: dbaas.instances.restart

GET /v1/dbaas/{id}/logs · scope dbaas:read

La cola del log del proceso del motor, de la más vieja a la más nueva. No es un log de consultas ni de auditoría: son los mensajes de arranque, errores y avisos del motor.

Ventana de terminal
curl https://api.truo.cloud/v1/dbaas/svc_10432/logs \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: dbaas.logs.get

GET /v1/dbaas/{id}/stats · scope dbaas:read

Instantánea, no serie temporal. Qué campos vienen llenos depende del backend del servicio: unos miden el contenedor y otros el motor.

Ventana de terminal
curl https://api.truo.cloud/v1/dbaas/svc_10432/stats \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: dbaas.stats.get

POST /v1/dbaas/{id}/users · scope dbaas:write · reversible · idempotente

La password no se guarda de nuestro lado ni se devuelve después: si se pierde, se cambia con POST /v1/dbaas/{id}/users/{username}/password.

Ventana de terminal
curl https://api.truo.cloud/v1/dbaas/svc_10432/users \
-X POST \
-H "Authorization: Bearer $TRUO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"username":"app","password":"<password>"}'

operationId: dbaas.users.create

DELETE /v1/dbaas/{id}/users/{username} · scope dbaas:write · destructiva — no tiene vuelta atras · idempotente

Corta el acceso de todo lo que estuviera conectado con ese usuario. No borra datos: las bases que creó siguen ahí.

Ventana de terminal
curl https://api.truo.cloud/v1/dbaas/svc_10432/users/app \
-X DELETE \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: dbaas.users.delete

GET /v1/dbaas/{id}/users · scope dbaas:read

Incluye al administrador. En MySQL el mismo nombre puede aparecer con varios host: el par usuario@host es lo que identifica al usuario, y por eso es el id del recurso.

Ventana de terminal
curl https://api.truo.cloud/v1/dbaas/svc_10432/users \
-H "Authorization: Bearer $TRUO_TOKEN"

operationId: dbaas.users.list

POST /v1/dbaas/{id}/users/{username}/password · scope dbaas:write · reversible · idempotente

Toma efecto de inmediato: las aplicaciones que sigan usando la anterior van a fallar al reconectar. Sirve también para el usuario administrador.

Ventana de terminal
curl https://api.truo.cloud/v1/dbaas/svc_10432/users/app/password \
-X POST \
-H "Authorization: Bearer $TRUO_TOKEN" \
-H "Content-Type: application/json" \
-d '{"password":"<password>"}'

operationId: dbaas.users.set_password