← Volver

Interoperabilidad: enviar y recibir datos

Esta herramienta nunca es una isla de información: usa el formato estándar PFIF 1.4 para intercambiar datos con la Cruz Roja, el CICR y otras instancias compatibles.

1. Enviar datos (importar tus reportes aquí)

Escribir datos requiere autorización. Si representas a una organización y quieres que tus reportes aparezcan aquí, sigue estos pasos:

  1. Pide una clave de importación al responsable del tratamiento (contacto al final de esta página). Te dará un token y te indicará a qué desastre (slug) corresponde.
  2. Elige el formato que más te convenga: PFIF 1.4 (XML, el estándar) o un JSON más simple con la misma información. Si tus datos vienen como CSV/JSONL en vez de cualquiera de los dos, este proyecto incluye dos conversores listos para usar: import_csv.py (con fotos locales) e import_reconexion.py (formato propio de la web ciudadana). Pide el script al responsable si lo necesitas.
  3. Si tienes fotos, sube cada una primero a /api/admin/upload-photo (multipart, campo file, misma clave) y usa la URL que te devuelve como photo_url.
  4. Manda el lote completo:

Opción A: PFIF 1.4 (XML)

curl -X POST "https://crisisglow.com/api/import?disaster=SLUG_DEL_DESASTRE" \
  -H "Authorization: Bearer TU_CLAVE" \
  -H "Content-Type: application/xml" \
  --data-binary @tu_archivo_pfif.xml

Opción B: JSON

Mismo resultado, sin tocar XML. Añade &format=json a la URL:

curl -X POST "https://crisisglow.com/api/import?disaster=SLUG_DEL_DESASTRE&format=json" \
  -H "Authorization: Bearer TU_CLAVE" \
  -H "Content-Type: application/json" \
  --data-binary @tu_archivo.json
{
  "persons": [
    {
      "record_id": "crisisglow.com/12345",
      "full_name": "Nombre completo",
      "age": "30", "sex": "female",
      "home_city": "Última ubicación conocida",
      "description": "...",
      "photo_url": "https://...",
      "author_name": "Quién reporta",
      "author_email": "contacto-privado@ejemplo.org",
      "source_date": "2026-06-20T10:00:00Z",
      "notes": [
        { "note_record_id": "crisisglow.com/n1", "status": "believed_alive", "text": "..." }
      ]
    }
  ],
  "notes": []
}

Las claves son las mismas que en PFIF (home_city = última ubicación, author_email/author_phone = contacto privado de quien reporta, nunca de la persona buscada). notes puede ir anidado dentro de cada persona o suelto en el nivel superior con su propio person_record_id — igual que en PFIF.

La respuesta indica {"parsed", "written", "skipped", "errors"}. Es seguro reenviar el mismo lote más de una vez: se actualiza por record_id (upsert), nunca se duplica. Los registros con un record_id que ya es nuestro nunca se sobrescriben desde fuera — solo se actualizan los que tú mismo importaste antes.

2. Recibir y sincronizar nuestros datos

Estos endpoints son públicos, sin token: por diseño, para que cualquier herramienta compatible pueda agregar nuestros datos sin pedirnos permiso.

Volcado completo

GET https://crisisglow.com/api/export/pfif?disaster=SLUG_O_all

Sincronización incremental (recomendada si repites la consulta)

Sigue el mismo algoritmo que Person Finder: la primera vez, llama sin min_entry_date; guarda el entry_date más reciente que recibiste y pásalo en la siguiente llamada. Usa skip para avanzar entre registros con la misma fecha exacta, así no te pierdes ninguno.

GET https://crisisglow.com/api/feed/person?disaster=SLUG&min_entry_date=2026-06-20T00:00:00Z&skip=0&max_results=100
GET https://crisisglow.com/api/feed/note?disaster=SLUG&min_entry_date=2026-06-20T00:00:00Z&skip=0&max_results=100

Añade &format=json a cualquiera de los dos si prefieres recibir JSON en vez de XML PFIF.

3. Antes de sincronizar, ten en cuenta

¿Dudas técnicas o necesitas una clave de importación? Contacto: .