Volver al mapa

API

APIs públicas para consultar y administrar los refugios y centros de comida del mapa. Este proyecto es open source.

Lo básico

  • Base URL: https://jewiqrfjotzbwsmiomjx.supabase.co/functions/v1
  • Header obligatorio en toda llamada:
apikey: TU_API_KEY

Las respuestas siempre son JSON: { "data": ... } y, en las listas, también { "pagination": ... }.

Lectura (listar / obtener): abierta con la llave pública del proyecto. Escritura (crear · editar · borrar): requiere una llave de escritura. Escríbeme para coordinarla: 6467899045.

Refugios

GET/refugios

Listar refugios (paginado + filtros)

curl "https://jewiqrfjotzbwsmiomjx.supabase.co/functions/v1/refugios?page=1&page_size=20" \
  -H "apikey: TU_API_KEY"

Paginación: page (def. 1), page_size (def. 20, máx. 100).

ParámetroEjemploQué hace
searchsearch=escuelaBusca en nombre, dirección y ciudad
statestate=MirandaEstado
citycity=CaracasCiudad
statusstatus=activoactivo · lleno · cerrado
typetype=escuelaescuela · iglesia · refugio_oficial · centro_comunitario · hospital · estadio · casa_particular · otro
verifiedverified=trueSolo verificados
has_waterhas_water=trueTiene agua
has_foodhas_food=trueTiene comida
has_medicalhas_medical=trueTiene atención médica
has_electricityhas_electricity=trueTiene electricidad
pets_allowedpets_allowed=trueAcepta mascotas
min_lat max_lat min_lng max_lngCaja del mapa (bounding box)
sortsort=namecreated_at (def.) · updated_at · name
orderorder=ascasc · desc (def.)

Respuesta:

{
  "data": [ { "id": "…", "name": "…", "status": "activo", "...": "..." } ],
  "pagination": { "page": 1, "page_size": 20, "total": 134, "total_pages": 7, "has_more": true }
}
GET/refugios?id=<uuid>

Obtener un refugio

curl "https://jewiqrfjotzbwsmiomjx.supabase.co/functions/v1/refugios?id=UUID" \
  -H "apikey: TU_API_KEY"
POST/refugios

Crear refugio

Obligatorios: name, address, latitude, longitude, capacity. Responde 201.

curl -X POST "https://jewiqrfjotzbwsmiomjx.supabase.co/functions/v1/refugios" \
  -H "apikey: TU_LLAVE_DE_ESCRITURA" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Escuela Bolívar",
    "address": "Av. Principal, Caracas",
    "city": "Caracas",
    "state": "Distrito Capital",
    "latitude": 10.4806,
    "longitude": -66.9036,
    "capacity": 120,
    "type": "escuela",
    "has_water": true,
    "has_food": true,
    "contact_phone": "0212-1234567"
  }'

Campos aceptados: name, type, address, city, state, latitude, longitude, capacity, current_occupancy, status, managed_by, contact_phone, contact_whatsapp, has_water, has_food, has_medical, has_electricity, pets_allowed, notes, reporter_name, reporter_contact.

PATCH/refugios?id=<uuid>

Editar refugio

Manda solo los campos que quieras cambiar (mismos nombres que en crear).

curl -X PATCH "https://jewiqrfjotzbwsmiomjx.supabase.co/functions/v1/refugios?id=UUID" \
  -H "apikey: TU_LLAVE_DE_ESCRITURA" \
  -H "Content-Type: application/json" \
  -d '{ "status": "lleno", "current_occupancy": 120 }'
DELETE/refugios?id=<uuid>

Borrar refugio

curl -X DELETE "https://jewiqrfjotzbwsmiomjx.supabase.co/functions/v1/refugios?id=UUID" \
  -H "apikey: TU_LLAVE_DE_ESCRITURA"

Responde { "data": {...}, "deleted": true }.

Centros de comida

GET/centros-comida

Listar centros de comida (paginado + filtros)

curl "https://jewiqrfjotzbwsmiomjx.supabase.co/functions/v1/centros-comida?page=1&page_size=20" \
  -H "apikey: TU_API_KEY"

Misma paginación que refugios.

ParámetroEjemploQué hace
searchsearch=comedorBusca en nombre, dirección y ciudad
state / citystate=ZuliaUbicación
food_typefood_type=comedorcomedor · olla · donacion · reparto · mercado · otro
accepts_donationsaccepts_donations=trueRecibe donaciones
is_freeis_free=trueEs gratis
has_needshas_needs=trueSolo los que publicaron necesidades
verifiedverified=trueSolo verificados
min_lat max_lat min_lng max_lngCaja del mapa
sort / ordersort=name&order=ascOrden
GET/centros-comida?id=<uuid>

Obtener un centro de comida

curl "https://jewiqrfjotzbwsmiomjx.supabase.co/functions/v1/centros-comida?id=UUID" \
  -H "apikey: TU_API_KEY"

Errores

Siempre JSON con error:

{ "error": "Faltan campos: name, address" }

Códigos: 400 (datos inválidos) · 404 (no encontrado) · 405 (método no permitido) · 500 (error interno).