tai-api¶
Framework declarativo de Python, sobre FastAPI, que convierte un schema de tai-sql en una API REST completa. No se escriben endpoints: se declara la base de datos con tai-sql, se declara quién puede hacer qué en un fichero de permisos, y tai-api genera el resto —endpoints, autenticación, permisos, filtrado por fila, documentación— y el cliente TypeScript que la consume.
schemas/public.py (tai-sql) ──▶ tai-api generate ──▶ la API: /public/<tabla>, /auth, /rbac, /docs
rbac/main.py ──▶ tai-api rbac push ──▶ permisos, roles y RLS en la base de datos o en Keycloak
tai-api generate ──▶ el cliente TypeScript del frontend
La API que genera tiene la misma forma en todos los proyectos: un frontend sabe consultarla sin haberla visto antes.
Empieza por aquí¶
-
Instalación
Qué instalar, y por qué son dos instalaciones y no una.
-
Tu primera API
De un schema de tai-sql a una API con login, paso a paso.
-
La API generada
Las rutas de cada tabla, sus filtros y cómo llega un error.
-
El cliente TypeScript
El cliente de React o Svelte, con la sesión ya resuelta.
Los principios que explican el resto¶
- La API es un derivado desechable. Sale del schema de tai-sql y del
.taiapiproject, y se regenera entera. Lo generado no se edita: si no hace lo que necesitas, se cambia la declaración o se extiende por los puntos previstos. - tai-api no reimplementa nada de tai-sql. Los modelos, los DTOs y los DAOs son el cliente que genera tai-sql; tai-api aporta lo que tai-sql no hace: la capa HTTP, la identidad, los permisos y el filtrado por fila.
- El código generado nunca importa
tai_api. tai-api es una herramienta de desarrollo: la API se despliega donde no está instalado. - La configuración se hornea. Lo que declara el proyecto acaba escrito en el código generado; lo que viene del entorno son solo los secretos y las URLs. Cambiar una política exige regenerar y volver a desplegar.
- Un error dice cómo arreglarlo. Todo error del CLI trae su solución, y la API responde con códigos estables que un cliente puede interpretar.
Un vistazo¶
Cómo está organizado este manual¶
| Sección | Qué responde |
|---|---|
| Inicio | Qué instalar, cómo montar un proyecto y cómo es por dentro |
| La API | Qué endpoints tiene cada tabla, cómo se consultan y cómo llegan los errores |
| Autenticación | Los dos modos, la sesión, los permisos y el filtrado por fila |
| El cliente TypeScript | El cliente del frontend y cómo desplegarlo |
| El proyecto | La configuración, cómo extender la API y cómo desplegarla |
| Referencia | Los comandos, las variables de entorno, los códigos de error y las novedades de cada versión |