LittleAPI

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.

API REST activa

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

Aplicaciónhttps://littleapi.online/
Documentaciónhttps://littleapi.online/docs/
API base activahttps://dnwaapropjmoyqxquzvs.supabase.co/functions/v1/sheetpilot-api
Ruta de marca previstahttps://littleapi.online/api/v1/{API_ID}
Repositoriohttps://github.com/fernand21/sheetpilot
Callback Googlehttps://dnwaapropjmoyqxquzvs.supabase.co/auth/v1/callback
Nota de URL: GitHub Pages no ejecuta rutas dinámicas. La ruta de marca se activará con un proxy, mientras que la URL de la Edge Function ya está lista.

Capacidades

✅ Crear API por libro y pestaña
✅ Leer filas como objetos JSON
✅ Filtrar, buscar y ordenar
✅ Paginación y respuestas con metadatos
✅ Insertar, actualizar y eliminar filas
✅ Crear, renombrar y eliminar pestañas
✅ Formatear, limpiar y ejecutar lotes
✅ Conteo, suma, promedio, mínimo y máximo
✅ Leer celdas y esquema
✅ Listar, subir, descargar, renombrar y borrar Drive

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 rutaUsoAutenticación
GET /{API_ID}Lista filas; responde data,total,limit,offset,meta.Público si public_read=true
GET /{API_ID}/searchFiltros combinados; search para texto completo.Público o clave
GET /{API_ID}/search_orCoincide cualquier condición.Público o clave
GET /keys, /name, /countEsquema, nombre y conteo.Público o clave
GET /cells/A1,B2Lectura de coordenadas.Público o clave
GET /metadata, /openapi.json, /statsMetadatos, 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 /sheetsCrear, renombrar o borrar pestañas.X-API-Key
POST /format, /clear, /batchFormato, 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.

RutaDescripciónCuerpo
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

  1. En Supabase ejecuta supabase-schema.sql y supabase-api-schema.sql.
  2. En Edge Functions → Secrets agrega GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET y GOOGLE_TOKEN_ENCRYPTION_KEY.
  3. Entra de nuevo con Google y acepta Sheets y Drive; la aplicación guarda el refresh token cifrado.
  4. La cuenta creadora sí requiere login; las aplicaciones que consumen la URL no.
  5. En Google Cloud registra como origen autorizado https://littleapi.online, https://www.littleapi.online y https://fernand21.github.io, sin añadir /sheetpilot/.
  6. Para publicar sin modo de pruebas completa la verificación de marca y de acceso a datos de Google.
Cuotas: Google aplica límites por proyecto y usuario. LittleAPI usa caché y límites de página; para un negocio conviene añadir límites por plan y monitorización antes de abrirlo a mucho tráfico.

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.