LITTLEAPI · API REST
Una hoja. Una URL. Todas tus operaciones.
Conecta un libro de Google Sheets, crea un identificador y usa sus datos desde JavaScript, Python, PHP, mobile o cualquier cliente HTTP.
Las lecturas, búsquedas, CRUD, pestañas, formato, estadísticas y Drive responden por URL. Los consumidores no necesitan una cuenta de LittleAPI: lectura pública o X-API-Key para mutaciones.
URLs reales
https://littleapi.online/https://littleapi.online/docs/https://dnwaapropjmoyqxquzvs.supabase.co/functions/v1/sheetpilot-apihttps://littleapi.online/api/v1/{API_ID}https://github.com/fernand21/sheetpilothttps://dnwaapropjmoyqxquzvs.supabase.co/auth/v1/callbackCapacidades
La superficie cubre las operaciones de lectura, escritura, formato, sincronización y Drive disponibles en el código maestro de Gsheetsplus.
Google Sheets REST
La primera fila de la pestaña se usa como nombres de propiedades. Todas las rutas se forman con:
https://dnwaapropjmoyqxquzvs.supabase.co/functions/v1/sheetpilot-api/{API_ID}| Método y ruta | Uso | Autenticación |
|---|---|---|
GET /{API_ID} | Lista filas; responde data,total,limit,offset,meta. | Público si public_read=true |
GET /{API_ID}/search | Filtros combinados; search para texto completo. | Público o clave |
GET /{API_ID}/search_or | Coincide cualquier condición. | Público o clave |
GET /keys, /name, /count | Esquema, nombre y conteo. | Público o clave |
GET /cells/A1,B2 | Lectura de coordenadas. | Público o clave |
GET /metadata, /openapi.json, /stats | Metadatos, contrato OpenAPI y estadísticas. | Público o clave |
POST /{API_ID} | Inserta una fila, un objeto o {rows:[...]}. | X-API-Key |
PATCH /{API_ID} | Actualiza con {where,data} o un rango. | X-API-Key |
DELETE /{API_ID} | Elimina las filas que cumplen where. | X-API-Key |
POST/PATCH/DELETE /sheets | Crear, renombrar o borrar pestañas. | X-API-Key |
POST /format, /clear, /batch | Formato, limpieza y hasta 50 cambios atómicos. | X-API-Key |
Filtros, orden y agregados
Usa ?limit=20&offset=40, ?sort=fecha&order=desc, ?estado=ACTIVO, ?contains[nombre]=ana, ?search=texto, ?cast_numbers=total, ?single_object=true o ?sheet=Ventas. Los valores aceptan !, * y > < >= <=. Para agregados usa ?group_by=estado&sum=total&avg=total.
Para conservar una respuesta de sólo filas añade legacy=true. Las lecturas se almacenan en caché por el cache_ttl de la API (0–3600 segundos) para reducir cuotas de Google.
Google Drive REST
Registra una API de tipo drive para exponer un archivo o carpeta autorizada.
| Ruta | Descripción | Cuerpo |
|---|---|---|
GET /{API_ID}/children/{FOLDER_ID} | Lista archivos y carpetas. | — |
GET /{API_ID}/{FILE_ID} | Metadatos de un archivo. | — |
GET /{API_ID}/download/{FILE_ID} | Descarga el contenido. | — |
POST /{API_ID}/{FOLDER_ID} | Crea archivo o carpeta. | {name,mimeType,parents} |
POST /{API_ID}/{FOLDER_ID} | Sube contenido base64. | {name,mimeType,content_base64} |
PATCH /{API_ID}/{FILE_ID} | Renombra un archivo. | {name} |
DELETE /{API_ID}/{FILE_ID} | Elimina un archivo. | — |
Drive usa la misma X-API-Key y el refresh token del propietario, nunca una credencial del consumidor.
Ejemplos
Leer desde JavaScript
const API = "https://dnwaapropjmoyqxquzvs.supabase.co/functions/v1/sheetpilot-api/TU_API_ID";
const page = await fetch(API + "?limit=20&sort=nombre&order=asc").then(r => r.json());
console.log(page.data, page.total);CRUD con curl
curl -X POST "$API" -H "X-API-Key: $LITTLEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{"data":{"nombre":"Ana","estado":"ACTIVO"}}'
curl -X PATCH "$API" -H "X-API-Key: $LITTLEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{"where":{"id":"42"},"data":{"estado":"CERRADO"}}'
curl -X DELETE "$API" -H "X-API-Key: $LITTLEAPI_KEY" \
-H "Content-Type: application/json" -d '{"where":{"id":"42"}}'Python
import requests
page = requests.get(API, params={"estado":"ACTIVO","limit":50}).json()
for row in page["data"]:
print(row)Seguridad
- Los consumidores públicos no necesitan una cuenta LittleAPI.
- Las lecturas pueden ser públicas; las mutaciones siempre requieren X-API-Key.
- La clave completa sólo se muestra al crear la API y se guarda como hash.
- RLS limita al propietario la administración de APIs y el catálogo público no contiene tokens.
- El refresh token de Google se cifra con AES-GCM en una tabla sin permisos para anon ni authenticated.
- Nunca subas
GOOGLE_CLIENT_SECRET, service role ni encryption key a GitHub.
Configuración comercial
- En Supabase ejecuta
supabase-schema.sqlysupabase-api-schema.sql. - En Edge Functions → Secrets agrega
GOOGLE_CLIENT_ID,GOOGLE_CLIENT_SECRETyGOOGLE_TOKEN_ENCRYPTION_KEY. - Entra de nuevo con Google y acepta Sheets y Drive; la aplicación guarda el refresh token cifrado.
- La cuenta creadora sí requiere login; las aplicaciones que consumen la URL no.
- En Google Cloud registra como origen autorizado
https://littleapi.online,https://www.littleapi.onlineyhttps://fernand21.github.io, sin añadir/sheetpilot/. - Para publicar sin modo de pruebas completa la verificación de marca y de acceso a datos de Google.
Alcance Drive
LittleAPI solicita https://www.googleapis.com/auth/drive junto con https://www.googleapis.com/auth/spreadsheets para cubrir la biblioteca completa: listar, buscar, crear, editar, subir, descargar, renombrar y eliminar archivos y hojas del Drive del propio usuario. En modo de pruebas sólo acceden las cuentas autorizadas; la publicación comercial requiere completar la revisión de Google.