En esta página están todos los objetos que devuelve la API, con sus campos y un ejemplo. La página de referencia de cada recurso muestra los mismos objetos junto a los endpoints que los devuelven.
Cómo son las respuestas
Las respuestas tienen una de estas cinco formas:
- Un objeto. Una petición de un solo registro devuelve el propio objeto.
GET /v1/leads/{id}devuelve el lead con sus dos facetas,attributionyresponse, dentro. - Una lista. Las listas devuelven
object: "list", los objetos endata,has_moreynext_cursor, que esnullen la última página. Lo explica Listas y paginación. - Una página del feed de cambios. El mismo sobre, pero
datacontiene elementos del feed (el objetoFeedItemde más abajo) ynext_cursorsiempre es una cadena, también en una página vacía. Lo explica Sincroniza una copia. - Un error. Un cuerpo
application/problem+json, descrito en Errores. - La comprobación de estado.
GET /v1/healthresponde{"object": "health", "status": "ok"}.
Los registros, como un lead, una llamada o un equipo, llevan object, que indica su tipo, y livemode, que es true en todo lo que devuelve la API. Los registros que entrega el feed de cambios llevan además version y updated_at, como explica Convenciones.
Cómo leer una lista de campos
- Todos los campos están siempre. En una respuesta, cada campo de la lista aparece en todos los objetos, con dos excepciones: un elemento del feed lleva exactamente uno de
objectyremoved, y un error llevaparamsolo cuando indica uno. Un campo sin valor esnull: nunca falta y nunca es una cadena vacía. - Puede ser null marca un campo que puede ser
null. Cobertura de los datos explica qué puede significar unnullen cada tipo de dato. - Valores posibles enumera los valores que un campo puede tomar hoy. En cualquier versión pueden aparecer valores nuevos, así que conserva el registro cuando encuentres uno que no conoces, como explica Convenciones.
- Los identificadores muestran el prefijo del registro al que apuntan, como
brd_para un tablero, y un tipo que es otro objeto enlaza con él. - Los objetos anidados aparecen plegados: abre uno para ver sus campos.
La misma información está en el documento OpenAPI, y todos los ejemplos salen de los datos de ejemplo del kit, fixtures.json: contactos ficticios con livemode: false.
La integración propietaria de la clave, con los equipos que lee.
Atributos
objectstringSiempre
integration.idstring Prefijo del idprn_…Identificador público de la integración.
livemodebooleantruecon una clave real;falseen los datos de ejemplo.namestringEl nombre que un administrador dio a la integración.
keyobjectLa clave usada en esta petición.
last4string 4 caracteresLos cuatro últimos caracteres de la clave usada en esta petición.
teamsArray<string> Prefijo del idteam_…Los equipos que lee esta clave hoy. Sus datos están en
GET /v1/teams.scopesArray<string>Los permisos de la clave: el conjunto fijo de lectura en v1.0a.
Valores posiblesteams:readcrm:readcalls:readmessages:readcalendar:read
{
"object": "integration",
"id": "prn_m1NFIcoIU8smXfqR4ymgt6j07TfRF",
"livemode": false,
"name": "Example CRM sync",
"key": {
"last4": "Q7xZ"
},
"teams": [
"team_r9uYrIW4gSFJJ6hZQ9ip1UIpPaAD1CF7NR"
],
"scopes": [
"teams:read",
"crm:read",
"calls:read",
"messages:read",
"calendar:read"
]
}Un equipo que lee esta clave, con su zona horaria y su país predeterminado.
Atributos
idstring Prefijo del idteam_…Identificador público del registro.
objectstringSiempre
team.livemodebooleantrueen datos reales;falseen los datos de ejemplo.namestring Puede ser null ≥ 1 caracteresEl nombre del equipo tal como aparece en Totem, o null si no hay ninguno guardado.
timezonestring ≥ 1 caracteresLa zona horaria IANA del equipo: la de su horario comercial si es válida; si no, la de su país por defecto (Europe/Madrid si no hay ninguna). Úsala para interpretar las horas locales del equipo.
default_countrystring Puede ser null Patrón^[A-Z]{2}$El país por defecto del equipo (ISO 3166-1 alfa-2), que Totem usa cuando alguien escribe un teléfono sin prefijo; null si no hay ninguno. La API no lo aplica:
Lead.phonese valida sin país por defecto, así que un número guardado sin prefijo de país tienephone_status: invalid.
{
"id": "team_r9uYrIW4gSFJJ6hZQ9ip1UIpPaAD1CF7NR",
"object": "team",
"livemode": false,
"name": "Example Dental",
"timezone": "America/New_York",
"default_country": "US"
}Un miembro del equipo, solo por su nombre visible: Totem no exporta su correo electrónico, su teléfono ni su rol.
Atributos
idstring Prefijo del idmem_…Identificador público del registro.
objectstringSiempre
member.livemodebooleantrueen datos reales;falseen los datos de ejemplo.teamstring Prefijo del idteam_…El equipo al que pertenece este registro.
display_namestring Puede ser null ≥ 1 caracteresEl nombre visible del miembro, o su nombre y apellido, o null si no hay ninguno guardado. Totem no exporta su correo electrónico, su teléfono ni su rol.
{
"id": "mem_h548E7UiYhutHhucVrQCzkM0eaea0",
"object": "member",
"livemode": false,
"team": "team_r9uYrIW4gSFJJ6hZQ9ip1UIpPaAD1CF7NR",
"display_name": "Sam Lee"
}Un lead o cliente: solo los campos del lead.
Atributos
idstring Prefijo del idlead_…Identificador público del registro.
objectstringSiempre
lead.livemodebooleantrueen datos reales;falseen los datos de ejemplo.teamstring Prefijo del idteam_…El equipo al que pertenece el registro.
record_kindstringleadsi el registro tiene un estado del embudo; si no,client. Un lead cuyo estado no conoce esta versión traestatus: null.Valores posiblesleadclient
namestring Puede ser nullNombre o nombre visible, o null.
surnamestring Puede ser nullApellidos, o null.
emailstring Puede ser nullEmail tal como está guardado, o null.
companystring Puede ser nullEmpresa, o null.
phonestring Puede ser nullTeléfono en E.164, solo si el número guardado es válido; si no, null.
phone_statusstringvalid(verphone),invalid(hay un número guardado que no es válido, por ejemplo uno guardado sin prefijo de país) omissing.Valores posiblesvalidinvalidmissing
statusstring Puede ser nullEstado en el embudo; null en un cliente o si es un estado que esta versión no conoce.
convertedno significa "ganado".Valores posiblesnewcontactedqualifiednegotiatingconvertedlostarchivedunreachable
status_set_bystring Puede ser nullQuién fijó el estado actual: una persona, la IA, la automatización de Totem, una llamada a la API o desconocido (ninguna transición registrada llega a él). Null cuando
statuses null.Valores posibleshumanaisystemapiunknown
archive_reasonstring Puede ser nullPor qué se archivó el registro, como código cerrado; el texto libre guardado es
other. Null si no hay ninguno.Valores posiblesopt_outno_consentnot_interestednot_qualifiedno_contactmergedfamily_transferother
archived_from_statusstring Puede ser nullEl estado que tenía el lead antes de su archivo actual; null si no está archivado o si se desconoce.
Valores posiblesnewcontactedqualifiednegotiatingconvertedlostarchivedunreachable
contact_permissionsobjectPermisos de contacto. Aplícalos antes de cualquier contacto desde tus propios sistemas.
do_not_contactbooleanVerdadero cuando la persona pidió no ser contactada nunca (motivo de archivo
opt_out). Detén todos los canales.email_opt_outbooleanVerdadero cuando la persona se dio de baja del correo electrónico comercial y de seguimiento.
email_opt_out_atstring Puede ser null Formatodate-timeCuándo se registró la baja del correo electrónico, o null.
whatsapp_consentboolean Puede ser nullConsentimiento de WhatsApp: false si se rechazó, true si consta, null si se desconoce.
provenanceobjectEl origen de cada permiso.
do_not_contactstring Puede ser nullDe dónde viene
do_not_contact, o null cuando es falso.Valores posiblesarchive_reason
email_opt_outstring Puede ser nullQuién registró la baja del correo electrónico: el enlace de baja, una persona en Totem o desconocido. Null si no hay baja.
Valores posiblesunsubscribe_linkmanualunknown
whatsapp_consentstring Puede ser nullarchive_reasonsi el rechazo consta como motivo de archivo;storedpara el valor guardado en la ficha, que el equipo puede editar. Null si se desconoce.Valores posiblesstoredarchive_reason
merged_intostring Puede ser null Prefijo del idlead_…El lead en el que se fusionó este registro, o null (también si ese lead ya no existe).
transferred_toobject Puede ser nullAdónde se traspasó este lead dentro de tu organización, o null. El equipo puede ser uno que tu clave no lee.
teamstring Prefijo del idteam_…El equipo de destino.
leadstring Puede ser null Prefijo del idlead_…El lead de destino, o null si su id no puede nombrarse entre equipos: lo creó el traspaso de un asistente, o el traspaso cayó en un lead existente de anuncios (Meta, Google Ads o LinkedIn) u otro lead con id fijo.
revived_atstring Puede ser null Formatodate-timeCuándo volvió el contacto por su cuenta y reactivó un lead archivado por última vez, o null.
pipeline_clearedbooleanVerdadero si el lead se convirtió con "borrar datos del embudo": tablero, etapa, prioridad, responsables, valor estimado y los campos de origen salvo
source_channelson null porque se borraron.converted_atstring Puede ser null Formatodate-timeCuándo se convirtió el lead, mientras su estado es
converted; si no, null.value_at_conversionnumber Puede ser nullEl valor estimado al convertirlo, en unidades principales. Se conserva al borrar los datos del embudo.
prioritystring Puede ser nullPrioridad, o null.
Valores posibleslowmediumhighurgent
tagsArray<string>Etiquetas tal como están guardadas.
leadybookingson etiquetas del sistema.boardstring Puede ser null Prefijo del idbrd_…El tablero, resuelto a través de la etapa si la hay; o null.
stagestring Puede ser null Prefijo del idstg_…La etapa, o null.
assigneesArray<string> Puede ser null Prefijo del idmem_…Miembros asignados, ordenados. Null cuando el registro no tiene datos del embudo.
estimated_valuenumber Puede ser nullValor estimado en unidades principales tal como está guardado (con decimales), o null.
estimated_value_currencynull Puede ser nullSiempre null: Totem no guarda moneda con el valor.
sourcestring Puede ser nullEl origen guardado del lead;
apicubre también los leads que crea el propio Totem (por ejemplo, desde una conversación o una llamada), versource_detail. Null si no hay ninguno.Valores posiblesmeta_lead_adsmanualwebsite_formbooking_pagecsv_importapichatbotgoogle_adslinkedinother
source_channelstring Puede ser nullEl canal por el que empezó el registro (por ejemplo
whatsapp,phone,widget), o null. El equipo puede editarlo.source_detailstring Puede ser nullconversation,call,external:<proveedor>,gated_ad:<origen>,family_handoff,api_intakeounknown; null cuandosourceno necesita detalle.source_provenancestring Puede ser nullserver_writtensi Totem fijó el origen a partir de lo que informó la plataforma de anuncios; si no,member_editable(el equipo puede cambiarlo). Null junto consource.Valores posiblesserver_writtenmember_editable
created_atstring Formatodate-timeCuándo se creó el registro.
versioninteger Rango ≥ 1Aumenta cada vez que cambia alguno de los campos exportados del registro. Aplica un cambio solo si su versión es mayor que la que guardas.
updated_atstring Formatodate-timeCuándo registró Totem esta versión (UTC). No es la hora en que ocurrió el hecho.
{
"id": "lead_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXKSF0QbLS8CiUKJpEP34LFQG",
"object": "lead",
"livemode": false,
"team": "team_r9uYrIW4gSFJJ6hZQ9ip1UIpPaAD1CF7NR",
"record_kind": "lead",
"name": "Alex",
"surname": "Rivera",
"email": "alex.rivera@example.com",
"company": "Example Dental",
"phone": "+12025550123",
"phone_status": "valid",
"status": "contacted",
"status_set_by": "ai",
"archive_reason": null,
"archived_from_status": null,
"contact_permissions": {
"do_not_contact": false,
"email_opt_out": false,
"email_opt_out_at": null,
"whatsapp_consent": null,
"provenance": {
"do_not_contact": null,
"email_opt_out": null,
"whatsapp_consent": null
}
},
"merged_into": null,
"transferred_to": null,
"revived_at": null,
"pipeline_cleared": false,
"converted_at": null,
"value_at_conversion": null,
"priority": "high",
"tags": [
"spring-check-up"
],
"board": "brd_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMX3trzsVUZQuHcMSuDh1aRIst",
"stage": "stg_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXWBYWcKwVTY3CRZlVS3oYvs0",
"assignees": [
"mem_h548E7UiYhutHhucVrQCzkM0eaea0"
],
"estimated_value": 1200,
"estimated_value_currency": null,
"source": "meta_lead_ads",
"source_channel": null,
"source_detail": null,
"source_provenance": "member_editable",
"created_at": "2026-09-28T10:15:00.000Z",
"version": 3,
"updated_at": "2026-09-28T10:20:01.250Z"
}Un lead con sus facetas attribution y response, cada una con su propia version. Una faceta es null solo mientras Totem aún la prepara.
Atributos
idstring Prefijo del idlead_…Identificador público del registro.
objectstringSiempre
lead.livemodebooleantrueen datos reales;falseen los datos de ejemplo.teamstring Prefijo del idteam_…El equipo al que pertenece el registro.
record_kindstringleadsi el registro tiene un estado del embudo; si no,client. Un lead cuyo estado no conoce esta versión traestatus: null.Valores posiblesleadclient
namestring Puede ser nullNombre o nombre visible, o null.
surnamestring Puede ser nullApellidos, o null.
emailstring Puede ser nullEmail tal como está guardado, o null.
companystring Puede ser nullEmpresa, o null.
phonestring Puede ser nullTeléfono en E.164, solo si el número guardado es válido; si no, null.
phone_statusstringvalid(verphone),invalid(hay un número guardado que no es válido, por ejemplo uno guardado sin prefijo de país) omissing.Valores posiblesvalidinvalidmissing
statusstring Puede ser nullEstado en el embudo; null en un cliente o si es un estado que esta versión no conoce.
convertedno significa "ganado".Valores posiblesnewcontactedqualifiednegotiatingconvertedlostarchivedunreachable
status_set_bystring Puede ser nullQuién fijó el estado actual: una persona, la IA, la automatización de Totem, una llamada a la API o desconocido (ninguna transición registrada llega a él). Null cuando
statuses null.Valores posibleshumanaisystemapiunknown
archive_reasonstring Puede ser nullPor qué se archivó el registro, como código cerrado; el texto libre guardado es
other. Null si no hay ninguno.Valores posiblesopt_outno_consentnot_interestednot_qualifiedno_contactmergedfamily_transferother
archived_from_statusstring Puede ser nullEl estado que tenía el lead antes de su archivo actual; null si no está archivado o si se desconoce.
Valores posiblesnewcontactedqualifiednegotiatingconvertedlostarchivedunreachable
contact_permissionsobjectPermisos de contacto. Aplícalos antes de cualquier contacto desde tus propios sistemas.
do_not_contactbooleanVerdadero cuando la persona pidió no ser contactada nunca (motivo de archivo
opt_out). Detén todos los canales.email_opt_outbooleanVerdadero cuando la persona se dio de baja del correo electrónico comercial y de seguimiento.
email_opt_out_atstring Puede ser null Formatodate-timeCuándo se registró la baja del correo electrónico, o null.
whatsapp_consentboolean Puede ser nullConsentimiento de WhatsApp: false si se rechazó, true si consta, null si se desconoce.
provenanceobjectEl origen de cada permiso.
do_not_contactstring Puede ser nullDe dónde viene
do_not_contact, o null cuando es falso.Valores posiblesarchive_reason
email_opt_outstring Puede ser nullQuién registró la baja del correo electrónico: el enlace de baja, una persona en Totem o desconocido. Null si no hay baja.
Valores posiblesunsubscribe_linkmanualunknown
whatsapp_consentstring Puede ser nullarchive_reasonsi el rechazo consta como motivo de archivo;storedpara el valor guardado en la ficha, que el equipo puede editar. Null si se desconoce.Valores posiblesstoredarchive_reason
merged_intostring Puede ser null Prefijo del idlead_…El lead en el que se fusionó este registro, o null (también si ese lead ya no existe).
transferred_toobject Puede ser nullAdónde se traspasó este lead dentro de tu organización, o null. El equipo puede ser uno que tu clave no lee.
teamstring Prefijo del idteam_…El equipo de destino.
leadstring Puede ser null Prefijo del idlead_…El lead de destino, o null si su id no puede nombrarse entre equipos: lo creó el traspaso de un asistente, o el traspaso cayó en un lead existente de anuncios (Meta, Google Ads o LinkedIn) u otro lead con id fijo.
revived_atstring Puede ser null Formatodate-timeCuándo volvió el contacto por su cuenta y reactivó un lead archivado por última vez, o null.
pipeline_clearedbooleanVerdadero si el lead se convirtió con "borrar datos del embudo": tablero, etapa, prioridad, responsables, valor estimado y los campos de origen salvo
source_channelson null porque se borraron.converted_atstring Puede ser null Formatodate-timeCuándo se convirtió el lead, mientras su estado es
converted; si no, null.value_at_conversionnumber Puede ser nullEl valor estimado al convertirlo, en unidades principales. Se conserva al borrar los datos del embudo.
prioritystring Puede ser nullPrioridad, o null.
Valores posibleslowmediumhighurgent
tagsArray<string>Etiquetas tal como están guardadas.
leadybookingson etiquetas del sistema.boardstring Puede ser null Prefijo del idbrd_…El tablero, resuelto a través de la etapa si la hay; o null.
stagestring Puede ser null Prefijo del idstg_…La etapa, o null.
assigneesArray<string> Puede ser null Prefijo del idmem_…Miembros asignados, ordenados. Null cuando el registro no tiene datos del embudo.
estimated_valuenumber Puede ser nullValor estimado en unidades principales tal como está guardado (con decimales), o null.
estimated_value_currencynull Puede ser nullSiempre null: Totem no guarda moneda con el valor.
sourcestring Puede ser nullEl origen guardado del lead;
apicubre también los leads que crea el propio Totem (por ejemplo, desde una conversación o una llamada), versource_detail. Null si no hay ninguno.Valores posiblesmeta_lead_adsmanualwebsite_formbooking_pagecsv_importapichatbotgoogle_adslinkedinother
source_channelstring Puede ser nullEl canal por el que empezó el registro (por ejemplo
whatsapp,phone,widget), o null. El equipo puede editarlo.source_detailstring Puede ser nullconversation,call,external:<proveedor>,gated_ad:<origen>,family_handoff,api_intakeounknown; null cuandosourceno necesita detalle.source_provenancestring Puede ser nullserver_writtensi Totem fijó el origen a partir de lo que informó la plataforma de anuncios; si no,member_editable(el equipo puede cambiarlo). Null junto consource.Valores posiblesserver_writtenmember_editable
created_atstring Formatodate-timeCuándo se creó el registro.
versioninteger Rango ≥ 1Aumenta cada vez que cambia alguno de los campos exportados del registro. Aplica un cambio solo si su versión es mayor que la que guardas.
updated_atstring Formatodate-timeCuándo registró Totem esta versión (UTC). No es la hora en que ocurrió el hecho.
La faceta de atribución del lead, o null mientras Totem aún la prepara.
La faceta de respuesta del lead, o null mientras Totem aún la prepara.
{
"id": "lead_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXKSF0QbLS8CiUKJpEP34LFQG",
"object": "lead",
"livemode": false,
"team": "team_r9uYrIW4gSFJJ6hZQ9ip1UIpPaAD1CF7NR",
"record_kind": "lead",
"name": "Alex",
"surname": "Rivera",
"email": "alex.rivera@example.com",
"company": "Example Dental",
"phone": "+12025550123",
"phone_status": "valid",
"status": "contacted",
"status_set_by": "ai",
"archive_reason": null,
"archived_from_status": null,
"contact_permissions": {
"do_not_contact": false,
"email_opt_out": false,
"email_opt_out_at": null,
"whatsapp_consent": null,
"provenance": {
"do_not_contact": null,
"email_opt_out": null,
"whatsapp_consent": null
}
},
"merged_into": null,
"transferred_to": null,
"revived_at": null,
"pipeline_cleared": false,
"converted_at": null,
"value_at_conversion": null,
"priority": "high",
"tags": [
"spring-check-up"
],
"board": "brd_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMX3trzsVUZQuHcMSuDh1aRIst",
"stage": "stg_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXWBYWcKwVTY3CRZlVS3oYvs0",
"assignees": [
"mem_h548E7UiYhutHhucVrQCzkM0eaea0"
],
"estimated_value": 1200,
"estimated_value_currency": null,
"source": "meta_lead_ads",
"source_channel": null,
"source_detail": null,
"source_provenance": "member_editable",
"created_at": "2026-09-28T10:15:00.000Z",
"version": 3,
"updated_at": "2026-09-28T10:20:01.250Z",
"attribution": {
"id": "lead_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXKSF0QbLS8CiUKJpEP34LFQG",
"object": "lead_attribution",
"livemode": false,
"team": "team_r9uYrIW4gSFJJ6hZQ9ip1UIpPaAD1CF7NR",
"original_capture": {
"capture": "at_creation",
"captured_at": "2026-09-28T10:15:00.000Z",
"source": "meta_lead_ads",
"source_hint": null,
"source_channel": null,
"external_provider": null,
"received_at": "2026-09-28T10:15:00.000Z",
"submitted_at": "2026-09-28T10:14:30.000Z",
"origin": null,
"campaign": {
"id": {
"value": "120210000000000101",
"provenance": "provider"
},
"name": {
"value": "Spring check-up",
"provenance": "provider"
}
},
"ad": {
"id": {
"value": "120210000000000303",
"provenance": "provider"
},
"name": {
"value": "Free first visit",
"provenance": "provider"
}
},
"ad_set": {
"id": {
"value": "120210000000000202",
"provenance": "provider"
},
"name": {
"value": "Families nearby",
"provenance": "provider"
}
},
"ad_group": {
"id": {
"value": null,
"provenance": "not_captured"
}
},
"form": {
"id": {
"value": "900000000000000404",
"provenance": "provider"
},
"name": {
"value": "Book a check-up",
"provenance": "provider"
}
},
"creative": {
"id": {
"value": null,
"provenance": "not_captured"
}
},
"asset_group": {
"id": {
"value": null,
"provenance": "not_captured"
}
},
"page": {
"id": {
"value": "100000000000000505",
"provenance": "provider"
},
"name": {
"value": "Example Dental",
"provenance": "provider"
}
},
"utm": null,
"click_network": {
"value": null,
"provenance": "not_captured"
},
"ad_referral": null,
"family_origin": null,
"audience": {
"value": null,
"missing_reason": "unsupported"
}
},
"original_capture_missing_reason": null,
"latest_submission": null,
"latest_submission_missing_reason": "not_captured",
"version": 1,
"updated_at": "2026-09-28T10:15:02.100Z"
},
"response": {
"id": "lead_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXKSF0QbLS8CiUKJpEP34LFQG",
"object": "lead_response",
"livemode": false,
"team": "team_r9uYrIW4gSFJJ6hZQ9ip1UIpPaAD1CF7NR",
"last_inbound_at": "2026-10-01T08:58:00.000Z",
"last_outbound_at": "2026-10-01T08:59:30.000Z",
"awaiting_reply": false,
"last_answered_call_at": "2026-09-28T10:17:00.000Z",
"last_whatsapp_delivery_status": "read",
"coverage": {
"conversations": 2,
"calls": 1,
"channels_without_delivery_data": [
"email"
],
"truncated": false
},
"version": 7,
"updated_at": "2026-10-01T08:59:31.040Z"
}
}De dónde viene un lead: su captura original y su último envío.
Atributos
idstring Prefijo del idlead_…Identificador público del registro.
objectstringSiempre
lead_attribution.livemodebooleantrueen datos reales;falseen los datos de ejemplo.teamstring Prefijo del idteam_…El equipo al que pertenece el lead.
original_captureobject Puede ser nullCómo entró el lead en el CRM por primera vez, fijado una sola vez; null si no se capturó. "Original" es la primera vez que el contacto entró en el CRM, no el primer anuncio al que respondió.
capturestringat_creation: fijado con el lead tal como se guardó por primera vez.at_activation: copiado una vez del lead tal como estaba al activar la API, para un lead sin registro de captura (creado antes de que Totem empezara a registrar la atribución, o cuya creación no se registró).Valores posiblesat_creationat_activation
captured_atstring Formatodate-timeCuándo se escribió el registro.
sourcestring Puede ser nullEl origen del lead en la captura, del mismo conjunto que el
sourcedel lead;apicubre también los leads que crea el propio Totem (por ejemplo, desde una conversación o una llamada, verorigin). Null si no había ninguno.Valores posiblesmeta_lead_adsmanualwebsite_formbooking_pagecsv_importapichatbotgoogle_adslinkedinother
source_hintstring Puede ser nullEl origen real de un lead de anuncios restringido guardado como
api, o null.source_channelstring Puede ser nullEl canal en la captura, o null.
external_providerstring Puede ser nullEl portal o la plataforma de citas de un lead reenviado o sincronizado, o null.
received_atstring Puede ser null Formatodate-timeCuándo se recibió el lead, tal como se escribió la primera vez, o null.
submitted_atstring Puede ser null Formatodate-timeCuándo dice la plataforma de anuncios que se envió el formulario, o null.
originobject Puede ser nullLa conversación o llamada que creó el lead (nunca su id), o null (también para un origen de otro tipo).
kindstringconversationocall.Valores posiblesconversationcall
channelstring Puede ser nullSu canal, o null.
campaignobjectLa campaña.
idobjectSu id.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
nameobjectSu nombre.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
adobjectEl anuncio.
idobjectSu id.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
nameobjectSu nombre.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
ad_setobjectEl conjunto de anuncios de Meta.
idobjectSu id.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
nameobjectSu nombre.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
ad_groupobjectEl grupo de anuncios de Google Ads.
idobjectSu id.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
formobjectEl formulario de clientes potenciales.
idobjectSu id.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
nameobjectSu nombre.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
creativeobjectLa creatividad.
idobjectSu id.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
asset_groupobjectEl grupo de recursos de Google Ads.
idobjectSu id.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
pageobjectLa página de Facebook.
idobjectSu id.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
nameobjectSu nombre.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
utmobject Puede ser nullLas cinco claves UTM estándar, o null si no se capturó ninguna.
sourceobjectutm_source.valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
mediumobjectutm_medium.valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
campaignobjectutm_campaign.valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
termobjectutm_term.valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
contentobjectutm_content.valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
click_networkobjectLa red del primer identificador de clic (
googleometa). El identificador nunca se guarda.valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
ad_referralobject Puede ser nullEl primer referido de anuncio de Meta de la conversación que creó el lead, o null.
channelstringEl canal.
Valores posibleswhatsappfacebookinstagram
source_typestringQué abrió la conversación.
Valores posiblesadpostlinkother
ad_idstring Puede ser nullEl id del anuncio o la publicación, o null.
referred_atstring Formatodate-timeLa hora de Meta del referido.
provenancestringSiempre
provider: solo lo escriben los webhooks firmados de Meta.
family_originobject Puede ser nullEl traspaso desde otro equipo de tu organización que creó el lead, o null.
teamstring Prefijo del idteam_…El equipo de tu organización del que vino el lead.
leadstring Puede ser null Prefijo del idlead_…Su lead allí, o null si ese id no puede nombrarse entre equipos: un asistente traspasó a alguien que no lo tenía, o el lead de allí es un lead de anuncios (Meta, Google Ads o LinkedIn) u otro lead con id fijo.
automateddistingue el traspaso de un asistente del que hace una persona.automatedbooleanVerdadero en el traspaso de un asistente.
audienceobjectNo disponible en esta versión.
valuenull Puede ser nullSiempre null.
missing_reasonstringTotem no registra audiencias; un conjunto de anuncios no lo es.
Valorunsupported
original_capture_missing_reasonstring Puede ser nullnot_capturedcuandooriginal_capturees null; si no, null.Valores posiblesnot_captured
latest_submissionobject Puede ser nullEl envío de anuncio más reciente registrado para este lead, incluida una repetición sobre un contacto existente; null si no hay ninguno. Un envío que la plataforma de anuncios informa como borrado (un miembro de LinkedIn que borra su respuesta al formulario) deja de mostrarse, y cuando el más reciente caduca o se retira puede mostrarse uno anterior.
providerstringLa plataforma de anuncios.
Valores posiblesmetagoogle_adslinkedin
submitted_atstring Puede ser null Formatodate-timeCuándo dice la plataforma que se envió, o null.
campaignobjectLa campaña.
idobjectSu id.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
nameobjectSu nombre.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
adobjectEl anuncio.
idobjectSu id.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
nameobjectSu nombre.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
ad_setobjectEl conjunto de anuncios de Meta.
idobjectSu id.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
nameobjectSu nombre.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
ad_groupobjectEl grupo de anuncios de Google Ads.
idobjectSu id.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
formobjectEl formulario de clientes potenciales.
idobjectSu id.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
nameobjectSu nombre.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
creativeobjectLa creatividad.
idobjectSu id.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
asset_groupobjectEl grupo de recursos de Google Ads.
idobjectSu id.
valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
utmobject Puede ser nullSus claves UTM, o null.
sourceobjectutm_source.valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
mediumobjectutm_medium.valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
campaignobjectutm_campaign.valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
termobjectutm_term.valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
contentobjectutm_content.valuestring Puede ser nullEl valor, o null si no se capturó.
provenancestringprovider(lo informó la plataforma de anuncios),team_alias(lo escribió el equipo),stored_metadata(datos editables del lead),stored_metadata_at_activation(copiado una vez al activar la API, para un lead anterior a la captura) onot_capturedexactamente cuandovaluees null.Valores posiblesproviderteam_aliasstored_metadatastored_metadata_at_activationnot_captured
expires_atstring Puede ser null Formatodate-timeCuándo deja de poder leerse este envío (Google Ads y LinkedIn lo guardan 90 días); null en Meta.
latest_submission_missing_reasonstring Puede ser nullnot_capturedcuandolatest_submissiones null; si no, null.Valores posiblesnot_captured
versioninteger Rango ≥ 1Aumenta cada vez que cambia alguno de los campos exportados del registro. Aplica un cambio solo si su versión es mayor que la que guardas.
updated_atstring Formatodate-timeCuándo registró Totem esta versión (UTC). No es la hora en que ocurrió el hecho.
{
"id": "lead_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXKSF0QbLS8CiUKJpEP34LFQG",
"object": "lead_attribution",
"livemode": false,
"team": "team_r9uYrIW4gSFJJ6hZQ9ip1UIpPaAD1CF7NR",
"original_capture": {
"capture": "at_creation",
"captured_at": "2026-09-28T10:15:00.000Z",
"source": "meta_lead_ads",
"source_hint": null,
"source_channel": null,
"external_provider": null,
"received_at": "2026-09-28T10:15:00.000Z",
"submitted_at": "2026-09-28T10:14:30.000Z",
"origin": null,
"campaign": {
"id": {
"value": "120210000000000101",
"provenance": "provider"
},
"name": {
"value": "Spring check-up",
"provenance": "provider"
}
},
"ad": {
"id": {
"value": "120210000000000303",
"provenance": "provider"
},
"name": {
"value": "Free first visit",
"provenance": "provider"
}
},
"ad_set": {
"id": {
"value": "120210000000000202",
"provenance": "provider"
},
"name": {
"value": "Families nearby",
"provenance": "provider"
}
},
"ad_group": {
"id": {
"value": null,
"provenance": "not_captured"
}
},
"form": {
"id": {
"value": "900000000000000404",
"provenance": "provider"
},
"name": {
"value": "Book a check-up",
"provenance": "provider"
}
},
"creative": {
"id": {
"value": null,
"provenance": "not_captured"
}
},
"asset_group": {
"id": {
"value": null,
"provenance": "not_captured"
}
},
"page": {
"id": {
"value": "100000000000000505",
"provenance": "provider"
},
"name": {
"value": "Example Dental",
"provenance": "provider"
}
},
"utm": null,
"click_network": {
"value": null,
"provenance": "not_captured"
},
"ad_referral": null,
"family_origin": null,
"audience": {
"value": null,
"missing_reason": "unsupported"
}
},
"original_capture_missing_reason": null,
"latest_submission": null,
"latest_submission_missing_reason": "not_captured",
"version": 1,
"updated_at": "2026-09-28T10:15:02.100Z"
}Cómo ha respondido el equipo a un lead en sus conversaciones y llamadas: los últimos mensajes en cada sentido y si tiene una respuesta pendiente. Usa el identificador de su lead.
Atributos
idstring Prefijo del idlead_…Identificador público del registro.
objectstringSiempre
lead_response.livemodebooleantrueen datos reales;falseen los datos de ejemplo.teamstring Prefijo del idteam_…El equipo al que pertenece este registro.
last_inbound_atstring Puede ser null Formatodate-timeEl último mensaje del cliente en cualquiera de las conversaciones del lead (UTC), o null. No cuentan: mensajes borrados, historial de WhatsApp importado ni los turnos del visitante del chat web. Los contenidos compartidos de Instagram no se distinguen y sí cuentan.
last_outbound_atstring Puede ser null Formatodate-timeEl último mensaje enviado al cliente que no falló, en cualquiera de las conversaciones del lead y lo enviara quien lo enviara (UTC), o null. El historial de WhatsApp importado sí cuenta.
awaiting_replybooleanVerdadero cuando
last_inbound_ates posterior a la última respuesta en cualquiera de las conversaciones del lead. Una respuesta es un mensaje enviado que no falló y que se registró como respuesta de conversación o sin propósito; no cuentan la prospección, los mensajes transaccionales (como los recordatorios) ni el historial importado. La mayoría de los mensajes guardados no tienen propósito, así que un envío automático registrado sin él también cuenta como respuesta. Falso si el cliente nunca ha escrito.last_answered_call_atstring Puede ser null Formatodate-timeCuándo empezó la última llamada del lead cuyo
outcomeesanswered_humanoanswered_ai(UTC), o null. Una saliente conectada en las líneas de teléfono de Totem esunknown, así que no cuenta.last_whatsapp_delivery_statusstring Puede ser nulldelivered,readofaileddel último mensaje enviado al lead por WhatsApp. Null si ese mensaje aún no tiene confirmación (sentnunca se guarda) o si al lead no se le ha enviado ningún mensaje por WhatsApp.Valores posiblesdeliveredreadfailed
coverageobjectDe qué se calcularon estos datos.
conversationsinteger Rango 0–20Las conversaciones del lead con las que se calcularon estos datos, de la más reciente a la más antigua; como máximo 20.
callsinteger Rango 0–50Las llamadas del lead con las que se calculó
last_answered_call_at, de la más reciente a la más antigua; como máximo 50.channels_without_delivery_dataArray<string>Los canales de esas conversaciones que no guardan confirmaciones de entrega (todos menos WhatsApp), ordenados.
Valores posiblessmsfacebookinstagramtiktokchatbotemail
truncatedbooleanVerdadero si se alcanzó un límite de lectura (20 conversaciones, 200 mensajes o 50 llamadas): la actividad más antigua no se leyó, así que una hora puede ser null o anterior a la real, y
awaiting_replypuede no ver una respuesta más antigua.
versioninteger Rango ≥ 1Aumenta cada vez que cambia alguno de los campos exportados del registro. Aplica un cambio solo si su versión es mayor que la que guardas.
updated_atstring Formatodate-timeCuándo registró Totem esta versión (UTC). No es la hora en que ocurrió el hecho.
{
"id": "lead_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXKSF0QbLS8CiUKJpEP34LFQG",
"object": "lead_response",
"livemode": false,
"team": "team_r9uYrIW4gSFJJ6hZQ9ip1UIpPaAD1CF7NR",
"last_inbound_at": "2026-10-01T08:58:00.000Z",
"last_outbound_at": "2026-10-01T08:59:30.000Z",
"awaiting_reply": false,
"last_answered_call_at": "2026-09-28T10:17:00.000Z",
"last_whatsapp_delivery_status": "read",
"coverage": {
"conversations": 2,
"calls": 1,
"channels_without_delivery_data": [
"email"
],
"truncated": false
},
"version": 7,
"updated_at": "2026-10-01T08:59:31.040Z"
}Una transición de etapa, estado o responsables de un lead. Una actividad no cambia una vez escrita.
Atributos comunes a todas las variantes
idstring Prefijo del idact_…Identificador público del registro.
objectstringSiempre
activity.livemodebooleantrueen datos reales;falseen los datos de ejemplo.teamstring Prefijo del idteam_…El equipo al que pertenece el lead.
leadstring Puede ser null Prefijo del idlead_…El lead que cambió. Null solo mientras Totem aún no ha asignado su id al lead.
occurred_atstring Formatodate-timeCuándo se guardó el cambio.
actor_kindstringQuién hizo el cambio: una persona, la IA, la automatización de Totem, una llamada a la API o desconocido. Totem sabe quién hizo un cambio solo cuando el mismo guardado escribió el estado del lead, así que un cambio de etapa o de responsables hecho por sí solo es desconocido.
Valores posibleshumanaisystemapiunknown
stage_snapshotobject Puede ser nullLa etapa en la que quedó el lead tras el cambio (al borrar los datos del embudo, la que dejó), o null.
stagestring Puede ser null Prefijo del idstg_…La etapa.
boardstring Puede ser null Prefijo del idbrd_…Su tablero, o null en una etapa antigua sin tablero.
namestring Puede ser nullEl nombre de la etapa cuando se registró el cambio, o null si la etapa ya estaba borrada.
value_snapshotnumber Puede ser nullEl valor estimado en ese momento, en unidades principales, o null.
versioninteger Rango ≥ 1Aumenta cada vez que cambia alguno de los campos exportados del registro. Aplica un cambio solo si su versión es mayor que la que guardas.
updated_atstring Formatodate-timeCuándo registró Totem esta versión (UTC). No es la hora en que ocurrió el hecho.
Variantes
Cada Activity es exactamente una de estas 3 variantes.
Una transición de estado
Cuando type es uno de status_changed archived unarchived revived
typestringstatus_changed,archived,unarchivedorevived(el contacto volvió por su cuenta y reabrió un lead archivado).Valores posiblesstatus_changedarchivedunarchivedrevived
fromstring Puede ser nullEl estado anterior, o null si no había.
Valores posiblesnewcontactedqualifiednegotiatingconvertedlostarchivedunreachable
tostringEl estado posterior.
Valores posiblesnewcontactedqualifiednegotiatingconvertedlostarchivedunreachable
Un cambio de etapa
Cuando type es stage_changed
typestringSiempre
stage_changed.fromobject Puede ser nullLa etapa y el tablero anteriores, o null si el lead no tenía ninguno.
stagestring Puede ser null Prefijo del idstg_…La etapa.
boardstring Puede ser null Prefijo del idbrd_…El tablero, o null en una etapa antigua sin tablero.
toobjectLa etapa y el tablero posteriores.
stagestring Puede ser null Prefijo del idstg_…La etapa.
boardstring Puede ser null Prefijo del idbrd_…El tablero, o null en una etapa antigua sin tablero.
Un cambio de miembros asignados
Cuando type es assignees_changed
typestringSiempre
assignees_changed.fromArray<string> Prefijo del idmem_…Los miembros asignados antes, ordenados.
toArray<string> Prefijo del idmem_…Los miembros asignados después, ordenados.
{
"id": "act_aBgzeetVKDEjpAAkXfEFF53ZGd2ZMmGhUDKgagqLbh6c7R1GqOl0xsFw7pyRhD3SqqYWGMdb371xxj",
"object": "activity",
"livemode": false,
"type": "stage_changed",
"team": "team_r9uYrIW4gSFJJ6hZQ9ip1UIpPaAD1CF7NR",
"lead": "lead_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXKSF0QbLS8CiUKJpEP34LFQG",
"occurred_at": "2026-09-28T10:20:00.000Z",
"actor_kind": "ai",
"stage_snapshot": {
"stage": "stg_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXWBYWcKwVTY3CRZlVS3oYvs0",
"board": "brd_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMX3trzsVUZQuHcMSuDh1aRIst",
"name": "Contacted"
},
"value_snapshot": 1200,
"from": {
"stage": "stg_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXWBYWcKwVTY3CRZlVR3422Yg",
"board": "brd_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMX3trzsVUZQuHcMSuDh1aRIst"
},
"to": {
"stage": "stg_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXWBYWcKwVTY3CRZlVS3oYvs0",
"board": "brd_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMX3trzsVUZQuHcMSuDh1aRIst"
},
"version": 1,
"updated_at": "2026-09-28T10:20:01.500Z"
}Un tablero con sus etapas en el orden del embudo.
Atributos
idstring Prefijo del idbrd_…Identificador público del registro.
objectstringSiempre
board.livemodebooleantrueen datos reales;falseen los datos de ejemplo.teamstring Prefijo del idteam_…El equipo al que pertenece este registro.
namestring Puede ser null ≥ 1 caracteresEl nombre del tablero, o null si no hay ninguno guardado.
is_defaultbooleanVerdadero en el tablero por defecto del equipo, donde llegan los leads nuevos salvo que se enruten a otro.
is_archivedbooleanVerdadero si el tablero está archivado (oculto en el selector de tableros). Sus leads se siguen exportando.
appointment_booked_stagestring Puede ser null Prefijo del idstg_…La etapa de este tablero a la que pasa un lead cuando se confirma su primera cita, o null si no hay ninguna o no es una etapa de este tablero.
stagesArray<object>Las etapas del tablero, ordenadas por posición y después por id. Una etapa sin ninguna posición guardada no aparece, aunque un lead puede seguir indicándola.
objectstringSiempre
stage.idstring Prefijo del idstg_…Id público de la etapa; el
stagede un lead la nombra.namestring Puede ser null ≥ 1 caracteresEl nombre de la etapa, o null si no hay ninguno guardado.
positionnumber Puede ser nullLa posición de la etapa en su tablero, de izquierda a derecha; null si la posición guardada no es un número. Las etapas se listan en este orden.
is_defaultbooleanVerdadero en la etapa a la que entran los leads nuevos de este tablero.
is_finalbooleanVerdadero en una etapa final: mover un lead aquí lo marca como convertido.
is_archivebooleanVerdadero en una etapa de archivo, cuyos leads no se muestran en la vista principal del tablero.
modestring Puede ser nullQuién mueve los leads:
standard(solo personas),supervised(la IA puede meter leads, las personas los sacan) oautomated(la IA hace el contacto y mete y saca leads); null si es un valor que esta versión no conoce.Valores posiblesstandardsupervisedautomated
versioninteger Rango ≥ 1Aumenta cada vez que cambia alguno de los campos exportados del registro. Aplica un cambio solo si su versión es mayor que la que guardas.
updated_atstring Formatodate-timeCuándo registró Totem esta versión (UTC). No es la hora en que ocurrió el hecho.
{
"id": "brd_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMX3trzsVUZQuHcMSuDh1aRIst",
"object": "board",
"livemode": false,
"team": "team_r9uYrIW4gSFJJ6hZQ9ip1UIpPaAD1CF7NR",
"name": "New patients",
"is_default": true,
"is_archived": false,
"appointment_booked_stage": "stg_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXWBYWcKwVTY3CRZlVT1QpfZ5",
"stages": [
{
"object": "stage",
"id": "stg_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXWBYWcKwVTY3CRZlVR3422Yg",
"name": "New",
"position": 0,
"is_default": true,
"is_final": false,
"is_archive": false,
"mode": "automated"
},
{
"object": "stage",
"id": "stg_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXWBYWcKwVTY3CRZlVS3oYvs0",
"name": "Contacted",
"position": 1,
"is_default": false,
"is_final": false,
"is_archive": false,
"mode": "supervised"
},
{
"object": "stage",
"id": "stg_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXWBYWcKwVTY3CRZlVT1QpfZ5",
"name": "Visit booked",
"position": 2,
"is_default": false,
"is_final": true,
"is_archive": false,
"mode": "standard"
}
],
"version": 4,
"updated_at": "2026-09-02T16:40:00.000Z"
}Una llamada: su dirección, su horario y un resultado normalizado. Sin grabación ni transcripción.
Atributos
idstring Prefijo del idcall_…Identificador público del registro.
objectstringSiempre
call.livemodebooleantrueen datos reales;falseen los datos de ejemplo.teamstring Prefijo del idteam_…El equipo al que pertenece este registro.
leadstring Puede ser null Prefijo del idlead_…El lead al que está vinculada la llamada, o null si no está vinculada o el lead ya no existe. El nombre y el teléfono solo aparecen en el lead.
directionstring Puede ser nullinboundooutbound; null si no está guardada.Valores posiblesinboundoutbound
started_atstring Puede ser null Formatodate-timeCuándo empezó la llamada (UTC), o cuándo se registró si el proveedor no dio hora de inicio.
duration_secondsinteger Puede ser null Rango ≥ 0Segundos enteros de la llamada (redondeados hacia abajo); null mientras la llamada sigue en curso, o si no están guardados.
outcomestringCómo terminó la llamada:
answered_human,answered_ai,voicemail,no_answer,busy,failedounknown(aún en curso, o sin pruebas de quién contestó). Léelo junto conoutcome_basis.Valores posiblesanswered_humananswered_aivoicemailno_answerbusyfailedunknown
outcome_basisstringLa prueba detrás de
outcome:inbound_verdict(la clasificación de Totem de una llamada entrante en sus líneas de teléfono),ai_analysis(la clasificación que hace Totem del estado, el motivo de fin y la duración que informa Retell),duration_floor(una llamada en una centralita Zadarma conectada, donde al menos 10 segundos cuentan como contestada),carrier_answer_only(solo la señal de respuesta del operador, que nunca cuenta como contestada, así que una llamada conectada esunknown: todas las salientes en las líneas de Totem, las haga la IA o una persona, y una entrante que Totem no ha clasificado),browser_session(una sesión de voz web con el asistente) onone(ninguna prueba, como en una llamada que sigue en curso).Valores posiblesinbound_verdictai_analysisduration_floorcarrier_answer_onlybrowser_sessionnone
versioninteger Rango ≥ 1Aumenta cada vez que cambia alguno de los campos exportados del registro. Aplica un cambio solo si su versión es mayor que la que guardas.
updated_atstring Formatodate-timeCuándo registró Totem esta versión (UTC). No es la hora en que ocurrió el hecho.
{
"id": "call_m2kUbFcayHlZ5Lgs9xZNmDS3c3Jvk",
"object": "call",
"livemode": false,
"team": "team_r9uYrIW4gSFJJ6hZQ9ip1UIpPaAD1CF7NR",
"lead": "lead_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXKSF0QbLS8CiUKJpEP34LFQG",
"direction": "inbound",
"started_at": "2026-09-28T10:17:00.000Z",
"duration_seconds": 184,
"outcome": "answered_ai",
"outcome_basis": "inbound_verdict",
"version": 2,
"updated_at": "2026-09-28T10:21:04.010Z"
}Una conversación en un canal: su estado, su responsable y la hora de los últimos mensajes, nunca su contenido.
Atributos
idstring Prefijo del idconv_…Identificador público del registro.
objectstringSiempre
conversation.livemodebooleantrueen datos reales;falseen los datos de ejemplo.teamstring Prefijo del idteam_…El equipo al que pertenece este registro.
leadstring Puede ser null Prefijo del idlead_…El lead al que está vinculada la conversación, o null si no está vinculada o el lead ya no existe. El nombre, el teléfono y el usuario solo aparecen en el lead.
channel_typestring Puede ser nullEl canal:
whatsapp,email,chatbot(el chat web),facebook,instagram,smsotiktok; null si es un valor que esta versión no conoce. Un lead puede tener varias conversaciones en el mismo canal y cuenta de empresa, una por cada dirección de contacto (teléfono, correo electrónico o usuario) que haya usado, así que usa elidcomo clave de tu copia.Valores posiblessmswhatsappfacebookinstagramtiktokchatbotemail
statusstring Puede ser nullactiveoarchiveden la bandeja del equipo; null si es un valor que esta versión no conoce.Valores posiblesactivearchived
assigneestring Puede ser null Prefijo del idmem_…El miembro del equipo asignado a la conversación (ver
/members), o null.reply_modestringhumanmientras una persona ha tomado la conversación, incluido un chat de WhatsApp que se atiende desde la app WhatsApp Business;aien otro caso.aisignifica que no hay una toma activa, no que haya un asistente configurado o respondiendo en este canal. Una toma temporal vuelve aaicuando caduca, y la versión del registro cambia entonces.Valores posiblesaihuman
created_atstring Puede ser null Formatodate-timeCuándo se creó la conversación (UTC).
last_inbound_atstring Puede ser null Formatodate-timeEl último mensaje del cliente (UTC). No cuentan: mensajes borrados, historial de WhatsApp importado ni los turnos del visitante del chat web, así que una conversación
chatbotda null. Los contenidos compartidos de Instagram no se distinguen y sí cuentan.last_outbound_atstring Puede ser null Formatodate-timeEl último mensaje enviado al cliente que no falló (UTC), lo enviara quien lo enviara. El historial de WhatsApp importado sí cuenta.
versioninteger Rango ≥ 1Aumenta cada vez que cambia alguno de los campos exportados del registro. Aplica un cambio solo si su versión es mayor que la que guardas.
updated_atstring Formatodate-timeCuándo registró Totem esta versión (UTC). No es la hora en que ocurrió el hecho.
{
"id": "conv_m3GhGjRHmFbww1g10oqOp7j3gWqPJ",
"object": "conversation",
"livemode": false,
"team": "team_r9uYrIW4gSFJJ6hZQ9ip1UIpPaAD1CF7NR",
"lead": "lead_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXKSF0QbLS8CiUKJpEP34LFQG",
"channel_type": "whatsapp",
"status": "active",
"assignee": "mem_h548E7UiYhutHhucVrQCzkM0eaea0",
"reply_mode": "ai",
"created_at": "2026-09-28T10:16:00.000Z",
"last_inbound_at": "2026-10-01T08:58:00.000Z",
"last_outbound_at": "2026-10-01T08:59:30.000Z",
"version": 12,
"updated_at": "2026-10-01T08:59:31.040Z"
}Una cita y su tipo (kind): para un servicio reservable, un evento del calendario conectado o una cita importada de otro sistema.
Atributos
idstring Prefijo del idbkg_…Identificador público del registro.
objectstringSiempre
booking.livemodebooleantrueen datos reales;falseen los datos de ejemplo.teamstring Prefijo del idteam_…El equipo al que pertenece este registro.
leadstring Puede ser null Prefijo del idlead_…El lead al que pertenece la cita, o null si la cita no tiene lead o el lead ya no existe. El nombre y los datos de contacto solo aparecen en el lead.
kindstringservice_booking(una cita de un servicio reservable, creada por la IA, un cliente o una persona),calendar_event(un evento del calendario conectado) oexternal_import(sincronizada desde un sistema de citas externo o leída de un correo electrónico de un portal). Una cita de un origen que esta versión no conoce aparece comocalendar_event.Valores posiblesservice_bookingcalendar_eventexternal_import
servicestring Puede ser null Prefijo del idsvc_…El servicio de la cita (ver
/booking_services) en unaservice_booking; null en otro caso.statusstring Puede ser nullscheduled,rescheduled,cancelled,postponed,attended,no_showoteam_no_show(la asistencia solo la registran personas); null si es un valor que esta versión no conoce.rescheduledsignifica que la cita se movió sin cambiar de registro y sus horas son las nuevas; una cita que la IA sustituyó por otra queda encancelled, conrescheduled_to.Valores posiblesscheduledrescheduledcancelledpostponedattendedno_showteam_no_show
starts_atstring Puede ser null Formatodate-timeCuándo empieza la cita (UTC).
ends_atstring Puede ser null Formatodate-timeCuándo termina la cita (UTC).
meeting_typestring Puede ser nullonline,in_personophone; null si no está guardado.Valores posiblesonlinein_personphone
sourcestring Puede ser nullQuién creó la cita:
ai,customeruoperator; null si no está registrado.Valores posiblesaicustomeroperator
rescheduled_fromstring Puede ser null Prefijo del idbkg_…La cita a la que esta sustituyó al reprogramar, o null. Durante unos segundos la cita sustituida puede seguir en
scheduled; las citas reprogramadas antes de que Totem empezara a registrar este enlace pueden no tenerlo.rescheduled_tostring Puede ser null Prefijo del idbkg_…La cita que sustituyó a esta al reprogramar, o null. Cuando está indicada, esta cita queda en
cancelled.created_atstring Puede ser null Formatodate-timeCuándo se registró la cita en Totem (UTC).
versioninteger Rango ≥ 1Aumenta cada vez que cambia alguno de los campos exportados del registro. Aplica un cambio solo si su versión es mayor que la que guardas.
updated_atstring Formatodate-timeCuándo registró Totem esta versión (UTC). No es la hora en que ocurrió el hecho.
{
"id": "bkg_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMX3ttMKHRR9ADk3N7Cr3NSuY0",
"object": "booking",
"livemode": false,
"team": "team_r9uYrIW4gSFJJ6hZQ9ip1UIpPaAD1CF7NR",
"lead": "lead_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXKSF0QbLS8CiUKJpEP34LFQG",
"kind": "service_booking",
"service": "svc_h42kgwwJGPzsm2Zoy1A1RBv1KIrX5",
"status": "scheduled",
"starts_at": "2026-10-06T15:00:00.000Z",
"ends_at": "2026-10-06T15:30:00.000Z",
"meeting_type": "in_person",
"source": "ai",
"rescheduled_from": null,
"rescheduled_to": null,
"created_at": "2026-10-01T09:01:00.000Z",
"version": 1,
"updated_at": "2026-10-01T09:01:02.000Z"
}Un servicio que los clientes pueden reservar, con su tipo de reunión.
Atributos
idstring Prefijo del idsvc_…Identificador público del registro.
objectstringSiempre
booking_service.livemodebooleantrueen datos reales;falseen los datos de ejemplo.teamstring Prefijo del idteam_…El equipo al que pertenece este registro.
namestring Puede ser null ≥ 1 caracteresEl nombre del servicio, o null si no hay ninguno guardado.
meeting_typestringCómo se presta el servicio:
online(el valor por defecto si no hay ninguno guardado),in_personophone.Valores posiblesonlinein_personphone
{
"id": "svc_h42kgwwJGPzsm2Zoy1A1RBv1KIrX5",
"object": "booking_service",
"livemode": false,
"team": "team_r9uYrIW4gSFJJ6hZQ9ip1UIpPaAD1CF7NR",
"name": "First visit",
"meeting_type": "in_person"
}Un cambio: el estado actual del registro, o su eliminación.
Atributos comunes a todas las variantes
kindstringEl tipo del registro, como
leadocall.Valores posiblesleadlead_attributionlead_responseactivitycallconversationbookingboard
versioninteger Rango ≥ 1La versión del registro. Aplica el elemento solo si es mayor que la versión que guardas.
Variantes
Cada FeedItem es exactamente una de estas 2 variantes.
Con object
idstring Prefijo del idlead_…act_…call_…conv_…bkg_…brd_…Identificador público del registro; las facetas
lead_attributionylead_responseusan el de su lead.objectuno de 8 objetosEl registro tal como está ahora.
Segúnkind:leadusa Leadlead_attributionusa LeadAttributionlead_responseusa LeadResponseactivityusa Activitycallusa Callconversationusa Conversationbookingusa Bookingboardusa Board
Con removed
idstring Prefijo del idlead_…act_…call_…conv_…bkg_…brd_…Identificador público del registro eliminado.
removedobjectPresente solo en una eliminación.
reasonstringerasedtras una supresión, que es también lo que hace borrar un lead, una llamada o una conversación en Totem: suprimir un lead suprime también sus llamadas, sus conversaciones y sus duplicados fusionados, mientras que sus citas se conservan conleadanull.deleteden cualquier otra eliminación. En ambos casos, borra tu copia y conserva esta versión para ignorar una copia anterior que llegue después.Valores posibleseraseddeleted
{
"kind": "lead",
"id": "lead_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXKSF0QbLS8CiUKJpEP34LFQG",
"version": 3,
"object": {
"id": "lead_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXKSF0QbLS8CiUKJpEP34LFQG",
"object": "lead",
"livemode": false,
"team": "team_r9uYrIW4gSFJJ6hZQ9ip1UIpPaAD1CF7NR",
"record_kind": "lead",
"name": "Alex",
"surname": "Rivera",
"email": "alex.rivera@example.com",
"company": "Example Dental",
"phone": "+12025550123",
"phone_status": "valid",
"status": "contacted",
"status_set_by": "ai",
"archive_reason": null,
"archived_from_status": null,
"contact_permissions": {
"do_not_contact": false,
"email_opt_out": false,
"email_opt_out_at": null,
"whatsapp_consent": null,
"provenance": {
"do_not_contact": null,
"email_opt_out": null,
"whatsapp_consent": null
}
},
"merged_into": null,
"transferred_to": null,
"revived_at": null,
"pipeline_cleared": false,
"converted_at": null,
"value_at_conversion": null,
"priority": "high",
"tags": [
"spring-check-up"
],
"board": "brd_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMX3trzsVUZQuHcMSuDh1aRIst",
"stage": "stg_r72EfbRNUzuqORFJR0O8HxAwEXd93jGUTYMaMMXWBYWcKwVTY3CRZlVS3oYvs0",
"assignees": [
"mem_h548E7UiYhutHhucVrQCzkM0eaea0"
],
"estimated_value": 1200,
"estimated_value_currency": null,
"source": "meta_lead_ads",
"source_channel": null,
"source_detail": null,
"source_provenance": "member_editable",
"created_at": "2026-09-28T10:15:00.000Z",
"version": 3,
"updated_at": "2026-09-28T10:20:01.250Z"
}
}