Saltar al contenido principal
Consulta nuestras guías comparativas:

X API: Diccionario de datos empresarial

Introducción

Empresarial Los Posts son el componente atómico básico de todo en X. Todas las X API que devuelven Posts proporcionan esos datos codificados en JavaScript Object Notation (JSON). JSON se basa en pares clave-valor, con atributos con nombre y valores asociados. Los objetos Post recuperados desde la API incluyen la “actualización de estado” de un X User, pero los Retweets, las respuestas y los quote Tweets también son objetos Post. Si un Post está relacionado con otro Post, como un Retweet, una respuesta o un quote Tweet, cada uno se identificará o se incrustará dentro del objeto Post. Incluso el Post más simple, en el formato de datos nativo de X, tendrá objetos JSON anidados para representar otros atributos de un Post, como el autor, los usuarios mencionados, la ubicación del lugar etiquetado, los hashtags, los símbolos de cashtag, el contenido multimedia o los enlaces URL. Al trabajar con datos de X, este es un concepto importante que comprender. El formato de los datos del Post que recibirás de la X API depende del tipo de Post recibido, de la X API que estés usando y de la configuración de formato. Los endpoints empresariales que devuelven objetos Post se han actualizado para proporcionar los metadatos necesarios para comprender el historial de edición del Post. Obtén más información sobre estos metadatos en la página de “Editar Posts”.
En el formato nativo de X, la respuesta JSON incluirá atributos de nivel raíz y objetos JSON anidados (que se representan aquí con la notación {}):
{
	"created_at": "Fri Feb 14 19:00:55 +0000 2020",
	"id_str": "1228393702244134912",
	"text": "¿Qué escribió el desarrollador en su tarjeta de San Valentín?\n  \nwhile(true) {\n    I = Love(You);  \n}",
	"entities": {
		"hashtags": [],
		"symbols": [],
		"user_mentions": [],
		"urls": []
	},
	"user": {
		"entities": {
			"url": {}
		}
	},
	"place": {}
}

Formatos de datos disponibles

Tenga en cuenta: Se recomienda encarecidamente usar el formato Native Enriched para las API de datos empresariales.
  • El formato Native Enriched incluye todos los metadatos incorporados desde 2017, como los metadatos de encuestas, y métricas adicionales como reply_count y quote_count.
  • El formato Activity Streams no se ha actualizado con nuevos metadatos ni enriquecimientos desde la actualización de caracteres de 2017.
Las API de datos empresariales entregan información en dos formatos. El formato empresarial más cercano al formato nativo estándar v1.1 es Native Enriched. El formato empresarial heredado es Activity Streams, implementado originalmente por Gnip y utilizado como un formato normalizado en X y otros proveedores de datos de redes sociales en ese momento. Aunque este formato sigue disponible, X solo ha invertido en nuevas funciones y mejoras en el formato Native Enriched desde 2017. El formato Native Enriched es exactamente lo que su nombre indica: incluye objetos nativos de X, así como enriquecimientos adicionales disponibles para productos de datos empresariales, como metadatos de expansión de URL, geolocalización de perfil, metadatos de encuestas y métricas de interacción adicionales.

Comparación de objetos por formato de datos

Sea cual sea su caso de uso de X, comprender qué representan estos objetos y atributos de Post codificados en JSON es fundamental para identificar correctamente las señales de datos de su interés. Para ayudar en esa tarea, hay un conjunto de páginas dedicadas a cada objeto en cada formato de datos. En consonancia con la jerarquía JSON anterior, a continuación encontrará enlaces a cada uno de estos objetos:
Enriquecido nativoActivity Streams
Link Objeto de PostLink Objeto de actividad
Link Objeto de usuarioLink Objeto de actor
Link Objeto de entidadesLink Objeto de entidades de X
Link Objeto de entidades extendidasLink Objeto de entidades extendidas de X
Link Objeto geográficoLink Objeto de ubicación
n/dLink Objeto de Gnip

Mejores prácticas de análisis

  • El JSON de X se codifica con UTF-8.
  • Los analizadores deben tolerar con facilidad variaciones en el orden de los fields. Se debe asumir que el JSON de Post se sirve como un hash de data sin orden definido.
  • Los analizadores deben tolerar la incorporación de fields “nuevos”.
  • Los analizadores de JSON deben tolerar fields “ausentes”, ya que no todos los fields aparecen en todos los contextos.
  • Por lo general, es seguro considerar un field con valor null, un conjunto vacío y la ausencia de un field como equivalentes.

Objetos de data enriquecida nativos Empresarial

Objeto Tweet de Native Enriched

¿Quieres saber más sobre cómo el formato de datos Native Enriched se corresponde con el formato de X API v2? Consulta nuestra guía comparativa: Comparativa de Native Enriched y X API v2

Objeto Post

Al usar productos de datos empresariales, observará que gran parte del diccionario de datos es similar al formato nativo de datos de Post, con metadatos enriquecidos adicionales. El nivel base del formato nativo enriquecido utiliza muchos de los mismos nombres de objetos que el formato de datos de X API v1.1. El objeto Post tiene una larga lista de atributos de “nivel raíz”, incluidos atributos fundamentales como id, created_at y text. Los objetos Post también tendrán objetos anidados que incluyen user, entities y extended_entities. Los objetos Post también tendrán otros objetos Post anidados, como retweeted_status, quoted_status y extended_tweet. El formato nativo enriquecido además incluirá un objeto matching_rules.
Diccionario de datos de X
A continuación encontrará el diccionario de datos de estos atributos de “nivel raíz”, así como enlaces a los diccionarios de datos de los objetos secundarios.
AtributoTipoDescripción
Creado_enStringHora en UTC en que se creó este Post. Ejemplo:

“creado_en”:“mié 10 oct 20:19:24 +0000 2018”
idInt64La representación en entero del identificador único de este Post. Este número supera los 53 bits y algunos lenguajes de programación pueden tener dificultades o presentar fallos silenciosos al interpretarlo. Es seguro usar un entero con signo de 64 bits para almacenar este identificador. Use**id_str**para obtener el identificador de manera segura. ConsulteIDs de Xpara más información. Ejemplo:

“id”:1050118621198921728
id_strCadena de caracteresLa representación en cadena del identificador único de este Post. Las implementaciones deberían usar esta en lugar del entero de gran tamaño en**id**. Ejemplo:

“id_str”:“1050118621198921728”
textoStringEl texto real en UTF-8 de la actualización de estado. VerX-textpara obtener detalles sobre qué caracteres se consideran válidos actualmente. Ejemplo:

“texto”:“Para dar cabida a una mayor expresión, ahora contaremos todos los emojis por igual, incluidos los que tienen género y tono de piel t…https://t.co/MkGjXf9aXm
origenCadena de textoUtilidad utilizada para publicar el Post, como una cadena con formato HTML. Los Posts del sitio web de X tienen un valor de fuente de**web**.

Ejemplo:

“origen”:“Cliente web de X”
truncadoBooleanoIndica si el valor de**textoel parámetro se truncó, por ejemplo, como resultado de un retuit que supera el límite de 140 caracteres del texto original del Post. El texto truncado terminará en puntos suspensivos, así:...Dado que X ahora rechaza las Publicaciones largas en lugar de truncarlas, la gran mayoría de las Publicaciones tendrá este valor establecido enfalse. Tenga en cuenta que, aunque los retuits nativos pueden tener su propiedad de nivel superiortextpropiedad abreviada, el texto original estará disponible en laretweeted_statusobjeto y eltruncatedel parámetro se establecerá en el valor del estado original (en la mayoría de los casos,false**). Ejemplo:

“truncado”:true
en_responder_a_estado_idInt64Puede ser nulo.Si el Post representado es una respuesta, este campo contendrá la representación en entero del Post original.‘ID de la publicación original. Ejemplo:

“en_responder_a_estado_id
Puede ser nulo.
Si la publicación representada es una respuesta, este campo contendrá la representación entera del ID de la publicación original. Ejemplo:

“in_reply_to_status_id”:1051222721923756032:1051222721923756032
en_responder_a_estado_id_strCadena de texto*Nullable.*Si el Post representado es una respuesta, este campo contendrá la representación en cadena del Post original’ID de S. Ejemplo:

“en_respuesta_a_estado_id_cadena”:“1051222721923756032”
en_respuesta_a_usuario_idInt64*Admite valores nulos.*Si el Post representado es una respuesta, este campo contendrá la representación en entero del Post original’id del autor. Esto no necesariamente será siempre el usuario mencionado directamente en el Post. Ejemplo:

“en_responder_a_usuario_id”:6253282
en_respuesta_a_usuario_id_strString*Admite valores nulos.*Si el Post representado es una respuesta, este campo contendrá la representación en cadena del Post original’ID del autor. No siempre será el usuario mencionado directamente en el Post. Ejemplo:

“en_responder_a_usuario_id_str”:“6253282”
en_responder_a_pantalla_nombreString*Admite valores nulos.*Si el Post representado es una respuesta, este campo contendrá el nombre de usuario del Post original’autor del s. Ejemplo:

“en_responder_a_pantalla_nombre”:“xapi”
usuarioObjeto de usuarioEl usuario que publicó este Post. Consulte el diccionario de datos de User para ver la lista completa de atributos.

Ejemplo que destaca atributos específicos:

{ “usuario”:<br/> “id”: 6253282,
“id_str”:“6253282”,
“nombre”:“X API”,
“pantalla_nombre”:“API”,
“ubicación”:“San Francisco, CA”,
“URL”:“https://developer.x.com”,
“descripción”:“La X API real. Publicaciones sobre cambios en la API, problemas del servicio y nuestra Plataforma para Desarrolladores. Don’t obtienes una respuesta? Es’s en mi sitio web.”,
“verificado”: true,
“seguidores_conteo”: 6129794,
“amigos_conteo”: 12,
“en la lista_recuento”: 12899,
“favoritos_conteo”: 31,
“estados_recuento”: 3658,
“creado_en”:“mié may 23 06:01:13 +0000 2007”,
“UTC_desfase”: null,
“tiempo_zona”: null,
“geo_activado”: false,
“idioma”:“es”,
“personas colaboradoras_activado”: false,
“es_traductor”: false,
“perfil_fondo_color”:“null”,
“perfil_antecedentes_imagen_url”:“null”,
“perfil_antecedentes_imagen_url_https”:“null”,
“perfil_antecedentes_mosaico”: null,
“perfil_vínculo_color”:“null”,
“perfil_barra lateral_borde_color”:“null”,
“perfil_barra lateral_rellenar_color”:“null”,
“perfil_texto_color”:“null”,
“perfil_uso_antecedentes_imagen”: null,
“perfil_imagen_url”:“null”,
“perfil_imagen_url_https”:“https://pbs.twimg.com/profile_images/942858479592554497/BbazLO9L_normal.jpg”,
“perfil_banner_url”:“https://pbs.twimg.com/profile_banners/6253282/1497491515”,
“predeterminado_perfil”: false,
“predeterminado_perfil_imagen”: false,
“siguiendo a”: null,
“seguir_solicitud_enviado”: null,
“Notificaciones”: null
}
}
coordenadasCoordenadas*Admite valores nulos.*Representa la ubicación geográfica de este Post según lo informado por el usuario o la App cliente. La matriz interna de coordenadas tiene el formatoGeoJSON(longitud primero, luego latitud). Ejemplo:

“coordenadas”:
<br/> “coordenadas”:
[
-75.14310264,
40,05701649
],
“tipo”:“Punto”
}
lugarLugaresAdmite nulosCuando está presente, indica que el Post está asociado (aunque no necesariamente se origina en él) a un Place Ejemplo:

“ubicación”:
<br/> “atributos”:,
“límite_cuadro”:
<br/> “coordenadas”:
[[
[-77.119759,38.791645],
[-76.909393,38.791645],
[-76.909393,38.995548],
[-77.119759,38.995548]
]],
“tipo”:“Polygon”
},
“país”:“Estados Unidos”,
“país_código”:“EE. UU.”,
“completo_nombre”:“Washington D. C.”,
“id”:“01fbe706f872cb32”,
“nombre”:“Washington”,
“lugar_tipo”:“ciudad”,
“url”:“http://api.x.com/1/geo/id/0172cb32.json
}
citado_estado_idInt64Este campo solo aparece cuando el Post es un Tweet citado. Este campo contiene el valor entero del id del Post del Tweet citado. Ejemplo:

“citado_estado_id”:1050119905717055488
citado_estado_id_strCadena de textoEste campo solo aparece cuando el Post es un Tweet con cita. Es la representación en cadena del id del Post del Tweet citado. Ejemplo:

“citado_estado_id_str”:“1050119905717055488”
es_cita_estadoBooleanoIndica si se trata de un Tweet citado. Ejemplo:

“es_cita textual_estado”:false
citado_estadoPostEste campo solo aparece cuando el Post es un Tweet con cita. Este atributo contiene el objeto Post del Post original que fue citado.
retuiteado_estadoPostLos usuarios pueden amplificar la difusión de los Posts creados por otros usuarios mediante un Retweet. Los Retweets pueden distinguirse de los Posts típicos por la existencia de un**retweeted_status**atributo. Este atributo contiene una representación de laoriginalPublicación que fue retuiteada. Ten en cuenta que los retuits de retuits no muestran representaciones del retuit intermedio, sino solo la Publicación original. (Los usuarios también pueden deshacer un retuit que hayan creado eliminando su propio retuit.)
cita textual_recuentoEntero*Admite valores nulos.*Indica aproximadamente cuántas veces este Post ha sido citado por usuarios de X. Ejemplo:

“cita textual_recuento”:33

Nota: Este objeto solo está disponible con los planes Premium y Empresarial.
responder_recuentoIntNúmero de veces que se ha respondido a este Post. Ejemplo:

“respuesta_recuento”:30

Nota: Este objeto solo está disponible con los planes Premium y Empresarial.
retuit_recuentoIntNúmero de veces que este Post se ha retuiteado. Ejemplo:

“retuit_recuento”:160
favorito_recuentoNúmero entero*Admite valores nulos.*Indica aproximadamente cuántas veces este Post ha recibido un Me gusta por parte de usuarios de X. Ejemplo:

“favorito/a_recuento”:295
entidadesEntidadesEntidades extraídas del texto del Post. Consulte tambiénEntidades en objetos de X. Ejemplo:

“entidades”:
<br/> “hashtags”:[],
“URL”:[],
“usuario_menciones”:[],
“contenido multimedia”:[],
“símbolos”:[]
“encuestas”:[]
}
ampliado_entidadesEntidades extendidasCuando hay entre una y cuatro fotos nativas, o un video, o un GIF animado en el Post, contiene un arreglo’contenido multimedia’metadatos. Esto también está disponible en los Quote Tweets. Además, consulteEntidades en objetos de X. Ejemplo:

“entidades”:
<br/> “contenido multimedia”:[]
}
marcado como favoritoBoolean*Admite valores nulos.*Indica si este Post ha sido marcado como “Me gusta” por el usuario autenticado. Ejemplo:

“marcado como favorito”:true
retuiteadoBooleanoIndica si esta publicación ha sido retuiteada por el usuario autenticado. Ejemplo:

“retuiteado”:false
posiblemente_sensibleBooleano*Nullable.*Este campo indica que el contenido puede considerarse sensible. El autor del Post puede activar en las preferencias de su cuenta la opción “Marcar los medios que publicas como material que puede ser sensible” para que cada Post creado a partir de entonces tenga este indicador.

Esto también puede ser evaluado y etiquetado por un agente de soporte interno de X.

”posiblemente_sensible”:false
filtro_nivelCadena de textoIndica el valor máximo del filtro_parámetro level que puede utilizarse y aun así transmitir este Post. Por lo tanto, un valor de**mediose transmitirá enninguno,bajo, ymedium**flujos.

Ejemplo:

“filtro_nivel”:“baja”
idiomaCadenaNulo aceptado.Cuando está presente, indica unaBCP 47identificador de idioma correspondiente al idioma detectado automáticamente del texto del Post, oand**si no se pudo detectar un idioma.

Ejemplo:

“idioma”:“es”
Editar_historialObjetoIdentificadores únicos que indican todas las versiones de un Post. Para los Posts sin ediciones, habrá un id. Para los Posts con historial de ediciones, habrá varios id, dispuestos en orden ascendente que refleja el orden de las ediciones, con la versión más reciente en la última posición de la matriz.

Los id de Post se pueden usar para rehidratar y ver versiones anteriores de un Post.

Ejemplo:

editar_historial”:<br/> “inicial_Tweet_id”:“1283764123”
“editar_Tweet_ids”: [“1283764123”,“1394263866”]
}
Editar_controlesObjetoCuando está presente, indica durante cuánto tiempo un Post sigue siendo editable y cuántas ediciones quedan. Los Posts solo se pueden editar durante los primeros 30 minutos tras su creación y hasta un máximo de cinco veces.

Los id de Post se pueden usar para hidratar y ver versiones anteriores de un Post.

Ejemplo:

“Editar_controles”:<br/> “editable_hasta_ms”: 123
“ediciones_pendientes”: 3
}
editableBooleanCuando está presente, indica si un Post era elegible para edición al publicarse. Este campo no es dinámico y no’t cambia de True a False cuando un Post alcanza su límite de tiempo de edición o el número máximo de ediciones. Las siguientes funciones del Post harán que este campo sea False:

- El Post está promocionado
- La Post tiene una encuesta
- El Post es una respuesta en hilo que no pertenece al propio autor
- El Post es un retuit (ten en cuenta que los Quote Tweets pueden editarse)
- El Post es de difusión nula
- Post de la comunidad
- Post de Superfollow
- Post colaborativo
coincidencia_normasArreglo de objetos de reglasPresente enfiltradoproductos como X Search y PowerTrack. Ofrece elidyetiquetaasociados con la regla que coincidió con el Post. Más información sobre las reglas de coincidenciaaquí. Con PowerTrack, más de una regla puede coincidir con un Post.

Ejemplo:

“emparejamiento_normas”:”[<br/> “tag”:“emojis de X API”,
“id”: 1050118621198921728,
“id_str”:“1050118621198921728”
}]“
Atributos adicionales de Post
Las X API que proporcionan Posts (por ejemplo, el endpoint GET statuses/lookup) pueden incluir estos atributos adicionales de Post:
AtributoTipoDescripción
current_user_retweetObjectPerspectival Solo aparece en métodos que admiten el parámetro include_my_retweet, cuando se establece en true. Detalla el ID del Post del propio retweet del usuario (si existe) de este Post. Ejemplo:

“current_user_retweet”: <br/> “id”: 6253282,
“id_str”: “6253282”
}
scopesObjectUn conjunto de pares clave-valor que indican la entrega contextual prevista del Post contenedor. Actualmente utilizado por los Productos Promocionados de X. Ejemplo:

“scopes”:{“followers”:false}
withheld_copyrightBooleanCuando está presente y establecido en “true”, indica que este contenido ha sido retenido debido a una reclamación DMCA. Ejemplo:

“withheld_copyright”: true
withheld_in_countriesArray of StringCuando está presente, indica una lista de códigos de país de dos letras en mayúsculas en los que este contenido está retenido. X admite los siguientes valores no relacionados con países para este campo:

“XX” - El contenido está retenido en todos los países “XY” - El contenido está retenido debido a una solicitud DMCA.

Ejemplo:

“withheld_in_countries”: [“GR”, “HK”, “MY”]
withheld_scopeStringCuando está presente, indica si el contenido retenido es el “status” o un “user”.

Ejemplo:

“withheld_scope”: “status”
Atributos en desuso
CampoTipoDescripción
geoObjetoEn desuso. Admite valores nulos. Use el campo coordinates en su lugar. Este atributo en desuso presenta sus coordenadas con el formato [lat, long], mientras que el resto de la información geográfica de los Post se formatea como [long, lat].

Objetos de Post anidados

En varios casos, un objeto Post incluirá otros objetos anidados. Si trabaja con objetos anidados, esa carga útil JSON contendrá múltiples objetos Post, y cada Post puede contener sus propios objetos. El objeto de nivel raíz incluirá información sobre el tipo de acción realizada, es decir, si se trata de un Retweet o de un Quote Tweet, y también puede incluir un objeto que describa el Post “original” que se comparte. Los Posts extendidos incluirán un objeto extendido anidado que excede los 140 caracteres, lo cual se utilizó para evitar cambios incompatibles cuando se realizó la actualización en 2017. A continuación se describe cada diccionario de objeto anidado. Retweets Los Retweets siempre contienen dos objetos Post. El Post “original” que se está haciendo Retweet se proporciona en un objeto “retweeted_status”. El objeto de nivel raíz encapsula el Retweet en sí, incluyendo un objeto User para la cuenta que realiza la acción de Retweet y la hora del Retweet. Hacer Retweet es una acción para compartir un Post con sus seguidores y no se puede agregar ningún contenido adicional. Además, no se puede proporcionar una ubicación (nueva) con un Retweet. Aunque el Post “original” pueda estar geolocalizado, los objetos “geo” y “place” del Retweet siempre serán null. Incluso antes de la introducción de los Posts extendidos, el objeto “entities” de nivel raíz en algunos casos se truncaba y quedaba incompleto debido a que la cadena “RT @username ” se añadía al mensaje del Post que se hacía Retweet. Tenga en cuenta que, si un Retweet recibe un Retweet, el “retweet_status” seguirá apuntando al Post original, lo que significa que el Retweet intermedio no se incluye. Se observa un comportamiento similar al usar x.com para “mostrar” un Retweet. Si copia el Post ID único asignado a la “acción” de Retweet, se mostrará el Post original. A continuación se muestra un ejemplo de estructura para un Retweet. De nuevo, al analizar Retweets, es clave procesar el objeto “retweeted_status” para obtener el mensaje completo (original) del Post y los metadatos de entidades.
{
	"tweet": {
		"text": "RT @author original message",
		"user": {
			"screen_name": "Retweeter"
		},
		"retweeted_status": {
			"text": "original message",
			"user": {
				"screen_name": "OriginalTweeter"
			},
			"place": {},
			"entities": {},
			"extended_entities": {}
		}
	},
	"entities": {},
	"extended_entities": {}
}
Tweets con cita
Los Tweets con cita son muy similares a los Retweets, excepto que incluyen un nuevo mensaje de Post. Estos nuevos mensajes pueden contener su propio conjunto de hashtags, enlaces y otros metadatos de “entities”. Los Tweets con cita también pueden incluir información de ubicación compartida por el usuario que publica el Tweet con cita, junto con medios como GIF, videos y fotos. Los Tweets con cita contienen al menos dos objetos de Post y, en algunos casos, tres. El Post que se cita, que a su vez puede ser un Tweet con cita, se proporciona en un objeto “quoted_status”. El objeto de nivel raíz encapsula el propio Tweet con cita e incluye un objeto de User para la cuenta que realiza la acción de compartir y la hora del Tweet con cita. Tenga en cuenta que ahora los Tweets con cita pueden tener fotos, GIF o videos añadidos a través de la interfaz de usuario de ‘Post’. Cuando se incluyen enlaces a medios alojados externamente en el mensaje del Tweet con cita, el “entities.urls” de nivel raíz los describirá. Los medios adjuntos a los Tweets con cita aparecerán en los metadatos “extended_entities” de nivel raíz. Cuando se lanzaron por primera vez los Tweets con cita, se añadía un enlace acortado (URL de t.co) al mensaje del Post “original” y se proporcionaba en el campo “text” de nivel raíz. Además, los metadatos para esa URL de t.co se incluían en el arreglo “entities.urls” de nivel raíz. En mayo de 2018, cambiamos esto para que la URL acortada de t.co del Tweet citado no se incluya en el campo “text” de nivel raíz. En segundo lugar, los metadatos del Tweet citado no se incluirán en los metadatos de “entities.urls”. En su lugar, los metadatos de la URL del Tweet citado estarán en un nuevo objeto “quoted_status_permalink” en el nivel raíz (o nivel superior), es decir, al mismo nivel que el objeto “quoted_status”. A continuación, se muestra un ejemplo de estructura para un Tweet con cita con este formato original.
{
	"created_at": "Tue Feb 14 19:30:06 +0000 2017",
	"id_str": "831586333415976960",
	"text": "¡Sin duda digno de citar! https:\/\/t.co\/J1LKrbHpWR",
	"user": {
		"screen_name": "happycamper"
	},
	"quoted_status_id_str": "831569219296882688",
	"quoted_status": {
		"created_at": "Tue Feb 14 18:22:06 +0000 2017",
		"id_str": "831569219296882688",
		"text": "Esta es una prueba del sistema de tweets \ud83d\ude0e para actualizar #supportdocs @twitterboulder aquí: https:\/\/t.co\/NRq9UrSzm0",
		"user": {
			"screen_name": "furiouscamper",
		},
		"place": {
			"id": "9a974dfc8efb32a0",
		},
		"entities": {
			"hashtags": [{
				"text": "supportdocs",
			}],
			"urls": [{
			}],
			"user_mentions": [{	}],
			"symbols": []
		},
	},
	"is_quote_status": true,
	"entities": {},
	"matching_rules": [{}]
}
{
	"created_at": "Fri Jan 04 18:47:16 +0000 2019",
	"id_str": "1081260794069671936",
	"text": "Quote test https://t.co/CE4m1qs3NJ",
	"user": {
		"screen_name": "furiouscamper"
	},
	"place": null,
	"quoted_status_id_str": "1079578364904648705",
	"quoted_status": {
		"created_at": "Mon Dec 31 03:21:54 +0000 2018",
		"id_str": "1079578364904648705",
		"text": "AHHHHH",
		"user": {
			"screen_name": "infinite_scream"
		},
		"place": null,
		"is_quote_status": false,
		"quote_count": 1,
		"reply_count": 0,
		"retweet_count": 3,
		"favorite_count": 6,
		"entities": {
			"hashtags": [],
			"urls": [],
			"user_mentions": [],
			"symbols": []
		}
	},
	"quoted_status_permalink": {
		"url": "https://t.co/CE4m1qs3NJ",
		"expanded": "https://x.com/infinite_scream/status/1079578364904648705",
		"display": "x.com/infinite_screa…"
	},
	"is_quote_status": true,
	"quote_count": 0,
	"reply_count": 0,
	"retweet_count": 0,
	"favorite_count": 1,
	"entities": {}
}
Publicaciones extendidas
El JSON que describe las Publicaciones extendidas se introdujo cuando se lanzaron las Publicaciones de 280 caracteres en noviembre de 2017. El JSON de la Post se amplió para encapsular estos mensajes más largos, sin afectar a las miles de apps que procesan estos objetos fundamentales de X. Para ofrecer compatibilidad total con versiones anteriores, se conservaron el campo original de 140 caracteres ‘text’ y los objetos de entidades extraídos de este. En el caso de Publicaciones de más de 140 caracteres, este campo ‘text’ a nivel raíz se truncaría y, por lo tanto, estaría incompleto. Dado que los objetos ‘entities’ a nivel raíz contienen arreglos de metadatos clave extraídos del mensaje ‘text’, como hashtags y enlaces incluidos, estas colecciones quedarían incompletas. Por ejemplo, si un mensaje de una Post tuviera 200 caracteres, con un hashtag incluido al final, el arreglo heredado ‘entities.hashtags’ a nivel raíz no lo incluiría. Se introdujo un nuevo campo ‘extended_tweet’ para contener los mensajes más largos de la Post y los metadatos completos de entidades. El objeto “extended_tweet” proporciona el campo “full_text” que contiene el mensaje completo y no truncado de la Post cuando supera los 140 caracteres. El objeto “extended_tweet” también contiene un objeto “entities” con arreglos completos de hashtags, enlaces, menciones, etc. Las Publicaciones extendidas se identifican con un booleano “truncated” a nivel raíz. Cuando es true (“truncated”: true), se deben analizar los campos de “extended_tweet” en lugar de los campos a nivel raíz. Observa en el ejemplo JSON a continuación que el campo “text” a nivel raíz está truncado y el arreglo “entities.hashtags” a nivel raíz está vacío aunque el mensaje de la Post incluye tres hashtags. Dado que se trata de una Publicación extendida, el campo “truncated” se establece en true, y el objeto “extended_tweet” proporciona los metadatos completos de la Post en “full_text” y “entities”.
{
	"created_at": "Thu May 10 17:41:57 +0000 2018",
	"id_str": "994633657141813248",
	"text": "Otro Tweet extendido con más de 140 caracteres, generado como ejemplo de documentación, que muestra que [\"tru… https://t.co/U7Se4NM7Eu",
	"display_text_range": [0, 140],
	"truncated": true,
	"user": {
		"id_str": "944480690",
		"screen_name": "FloodSocial"
	},
	"extended_tweet": {
		"full_text": "Otro Tweet extendido con más de 140 caracteres, generado como ejemplo de documentación, que muestra que [\"truncated\": true] y la presencia de un objeto \"extended_tweet\" con texto completo y \"entities\" #documentation #parsingJSON #GeoTagged https://t.co/e9yhQTJSIA",
		"display_text_range": [0, 249],
		"entities": {
			"hashtags": [{
				"text": "documentation",
				"indices": [211, 225]
			}, {
				"text": "parsingJSON",
				"indices": [226, 238]
			}, {
				"text": "GeoTagged",
				"indices": [239, 249]
			}]
		}

	},
	"entities": {
		"hashtags": []
	}
}

Objeto de usuario nativo enriquecido

El objeto de usuario contiene metadatos de la cuenta de usuario de X que describen al usuario de X referenciado. 

Diccionario de datos de usuario

AtributoTipoDescripción
idInt64La representación en entero del identificador único de este usuario. Este número supera los 53 bits y algunos lenguajes de programación pueden presentar dificultades o errores silenciosos al interpretarlo. Es seguro usar un entero con signo de 64 bits para almacenar este identificador. Useid_strpara obtener el identificador de manera segura. ConsulteIDs de Xpara más información. Ejemplo:

“id”: 6253282
id_strCadena de caracteresLa representación en cadena del identificador único de este Usuario. Las implementaciones deben usar esta en lugar del entero grande, posiblemente inmanejable, enid. Ejemplo:

“id_str”:“6253282”
nombreStringEl nombre del usuario, tal como lo haya definido. No necesariamente corresponde al nombre de una persona. Por lo general, está limitado a 50 caracteres, pero puede cambiar. Ejemplo:

“nombre”:“API”
pantalla_nombreStringEl nombre de pantalla, handle o alias con el que este usuario se identifica. screen_Los nombres son únicos, pero pueden cambiar. Useid_strcomo identificador de usuario siempre que sea posible. Por lo general, tiene un máximo de 15 caracteres, aunque pueden existir cuentas históricas con nombres más largos. Ejemplo:

“pantalla_nombre”:“API”
ubicaciónCadena de textoNullable (permite valores nulos). La ubicación definida por el usuario para el perfil de esta cuenta. No es necesariamente una ubicación ni es apta para el análisis automático. Ocasionalmente, este campo será interpretado de manera aproximada por el servicio de búsqueda. Ejemplo:

“ubicación”:“San Francisco, CA”
derivadaMatrices de objetos de enriquecimientoSolo para APIs Empresariales Colección de metadatos de enriquecimiento derivados para el usuario. Proporciona losGeolocalización del perfilMetadatos de enriquecimiento. Consulte la documentación de referencia para obtener más información, incluidos los diccionarios de datos JSON. Ejemplo:

“derivada”:“ubicaciones”: [“país”:“Estados Unidos”,“país_código”:“EE. UU.”,“localidad”:“Denver”]
URLCadena de textoAdmite valores nulos. Una URL que el usuario proporciona asociada a su perfil. Ejemplo:

“url”:“https://developer.x.com
DescripciónCadena de caracteresNullable. La cadena UTF-8 definida por el usuario que describe su cuenta. Ejemplo:

“Descripción”:“La verdadera X API.”
protegidoBooleanoCuando es true, indica que este usuario ha optado por proteger sus Posts. ConsulteAcerca de las publicaciones públicas y protegidas. Ejemplo:

“protegido”: true
verificadoBooleanoCuando es true, indica que el usuario tiene una cuenta verificada. ConsulteCuentas verificadas. Ejemplo:

“verificado”: false
seguidores_recuentoIntLa cantidad de seguidores que tiene actualmente esta cuenta. En determinadas condiciones de estrés, este campo mostrará temporalmente “0”. Ejemplo:

“seguidores_conteo”: 21
amigos_recuentoIntLa cantidad de usuarios a los que esta cuenta sigue (también llamados sus «seguidos»). Bajo ciertas condiciones de sobrecarga, este campo indicará temporalmente «0». Ejemplo:

“amigos_recuento”: 32
incluido en la lista_conteoIntEl número de listas públicas de las que este usuario es miembro. Ejemplo:

“en la lista_conteo”: 9274
favoritos_conteoIntEl número de Posts que este usuario ha marcado con “Me gusta” durante la vida de la cuenta. Se utiliza la ortografía británica en el nombre del campo por razones históricas. Ejemplo:

“favoritos_conteo”: 13
estados_recuentoIntEl número de Posts (incluidos los retuits) publicados por el usuario. Ejemplo:

“estados_conteo”: 42
creado_enCadena de textoLa fecha y hora en UTC en que se creó la cuenta de usuario en X. Ejemplo:

“creado_en”:“lun 29 nov 2010 21:18:15 +0000”
perfil_banner_urlCadena de caracteresLa URL basada en HTTPS que apunta a la representación web estándar del banner de perfil que subió el usuario. Al agregar un último segmento de ruta a la URL, es posible obtener distintos tamaños de imagen optimizados para pantallas específicas. Para las variantes de tamaño, consulteImágenes y banners del perfil de usuario.

Ejemplo:

“perfil_banner_url”:“https://si0.twimg.com/profile_banners/819797/1348102824
perfil_imagen_URL_httpsCadena de textoUna URL basada en HTTPS que señala a la imagen de perfil del usuario. Ejemplo:

“perfil_imagen_url_https”:
https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png
predeterminado_perfilBooleanoCuando es true, indica que el usuario no ha modificado el tema ni el fondo de su perfil. Ejemplo:

“predeterminado_perfil”: false
predeterminado_perfil_imagenBooleanCuando es true, indica que el usuario no ha cargado su propia imagen de perfil y, en su lugar, se usa una imagen predeterminada. Ejemplo:

“predeterminado_perfil_imagen”: false

Atributos descontinuados (deprecated)

CampoTipoDescripción
utc_offsetnullEl valor se establecerá en null. Sigue disponible mediante GET account/settings
time_zonenullEl valor se establecerá en null. Sigue disponible mediante GET account/settings como tzinfo_name
langnullEl valor se establecerá en null. Sigue disponible mediante GET account/settings como language
geo_enablednullEl valor se establecerá en null. Sigue disponible mediante GET account/settings. Este campo debe ser true para que el usuario actual pueda adjuntar datos geográficos al usar POST statuses / update
followingnullEl valor se establecerá en null. Sigue disponible mediante GET friendships/lookup
follow_request_sentnullEl valor se establecerá en null. Sigue disponible mediante GET friendships/lookup
has_extended_profilenullDeprecated. El valor se establecerá en null.
notificationsnullDeprecated. El valor se establecerá en null.
profile_locationnullDeprecated. El valor se establecerá en null.
contributors_enablednullDeprecated. El valor se establecerá en null.
profile_image_urlnullDeprecated. El valor se establecerá en null. NOTA: Las imágenes de perfil solo están disponibles mediante el campo profile_image_url_https.
profile_background_colornullDeprecated. El valor se establecerá en null.
profile_background_image_urlnullDeprecated. El valor se establecerá en null.
profile_background_image_url_httpsnullDeprecated. El valor se establecerá en null.
profile_background_tilenullDeprecated. El valor se establecerá en null.
profile_link_colornullDeprecated. El valor se establecerá en null.
profile_sidebar_border_colornullDeprecated. El valor se establecerá en null.
profile_sidebar_fill_colornullDeprecated. El valor se establecerá en null.
profile_text_colornullDeprecated. El valor se establecerá en null.
profile_use_background_imagenullDeprecated. El valor se establecerá en null.
is_translatornullDeprecated. El valor se establecerá en null.
is_translation_enablednullDeprecated. El valor se establecerá en null.
translator_typenullDeprecated. El valor se establecerá en null.

Ejemplo de objeto de usuario:

"user": {
		"id": 2244994945,
		"id_str": "2244994945",
		"name": "X Dev",
		"screen_name": "XDevelopers",
		"location": "127.0.0.1",
		"url": "https://developer.x.com/en/community",
		"description": "La voz del equipo de #XDevelopers y tu fuente oficial para actualizaciones, noticias y eventos relacionados con la #XAPI.",
		"translator_type": "regular",
		"protected": false,
		"verified": true,
		"followers_count": 512292,
		"friends_count": 2038,
		"listed_count": 1666,
		"favourites_count": 2147,
		"statuses_count": 3634,
		"created_at": "Sat Dec 14 04:35:55 +0000 2013",
		"utc_offset": null,
		"time_zone": null,
		"geo_enabled": true,
		"lang": null,
		"contributors_enabled": false,
		"is_translator": false,
		"profile_background_color": "FFFFFF",
		"profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_tile": false,
		"profile_link_color": "0084B4",
		"profile_sidebar_border_color": "FFFFFF",
		"profile_sidebar_fill_color": "DDEEF6",
		"profile_text_color": "333333",
		"profile_use_background_image": false,
		"profile_image_url": "http://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_image_url_https": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_banner_url": "https://pbs.twimg.com/profile_banners/2244994945/1594913664",
		"default_profile": false,
		"default_profile_image": false,
		"following": null,
		"follow_request_sent": null,
		"notifications": null
	}

Objetos geográficos enriquecidos nativos

Los Posts pueden asociarse a una ubicación, generando un Post “etiquetado geográficamente”. Las ubicaciones de los Posts pueden asignarse mediante la interfaz de usuario de X o al publicar un Post con la API. Las ubicaciones de los Posts pueden ser un “punto” exacto o un X Place con una “caja delimitadora” que describe un área mayor, desde un recinto hasta una región completa. Hay tres objetos JSON de “nivel raíz” que se usan para describir la ubicación asociada a un Post: place, geo y coordinates. Además, el formato enriquecido nativo incluye la ubicación derivada del enriquecimiento de perfil geográfico dentro del objeto de usuario. El objeto place siempre está presente cuando un Post está etiquetado geográficamente con un lugar. Los Places son ubicaciones específicas y nominales, con coordenadas geográficas correspondientes. Cuando los usuarios deciden asignar una ubicación a su Post, se les presenta una lista de X Places candidatos. Al usar la API para publicar, se puede adjuntar un X Place especificando un place_id al publicar. Los Posts asociados con Places no necesariamente se originan en esa ubicación, sino que también pueden ser sobre esa ubicación. Los objetos geo y coordinates solo están presentes (no nulos) cuando al Post se le asigna una ubicación exacta. Si se proporciona una ubicación exacta, el objeto coordinates devolverá una matriz [long, lat] con las coordenadas geográficas, y se asignará un X Place que corresponda a esa ubicación.

Diccionario de datos de Place

FieldTypeDescription
idStringID que representa este lugar. Tenga en cuenta que se proporciona como una cadena, no como un entero. Ejemplo:

“id”:“01a9a39529b27f36”
urlStringURL que señala la ubicación de metadatos adicionales de este lugar. Ejemplo:

“url”:“https://api.x.com/1.1/geo/id/01a9a39529b27f36.json
place_typeStringEl tipo de ubicación representado por este lugar. Ejemplo:

“place_type”:“city”
nameStringRepresentación breve y legible para personas del nombre del lugar. Ejemplo:

“name”:“Manhattan”
full_nameStringRepresentación completa y legible para personas del nombre del lugar. Ejemplo:

“full_name”:“Manhattan, NY”
country_codeStringCódigo de país abreviado del país que contiene este lugar. Ejemplo:

“country_code”:“US”
countryStringNombre del país que contiene este lugar. Ejemplo:

“country”:“United States”
bounding_boxObjectUn cuadro delimitador de coordenadas que encierra este lugar. Ejemplo:


“bounding_box”:
“coordinates”: [
[
[
-74.026675,
40.683935
],
[
-74.026675,
40.877483
],
[
-73.910408,
40.877483
],
[
-73.910408,
40.3935
]
]
],
“type”: “Polygon”

attributesObjectAl usar PowerTrack, las APIs de búsqueda de 30 días y de archivo completo, y Volume Streams, este hash es null. Ejemplo:

“attributes”:

Cuadro delimitador

CampoTipoDescripción
coordinatesArray of Array of Array of FloatUna serie de puntos de longitud y latitud que definen un cuadro que contendrá la entidad Place a la que está asociado este cuadro delimitador. Cada punto es un array con el formato [longitude, latitude]. Los puntos se agrupan en un array por cada cuadro delimitador. Los arrays de cuadros delimitadores se encapsulan en un array adicional para ser compatibles con la notación de polígono. Ejemplo:


“coordinates”: [
[
[
-74.026675,
40.683935
],
[
-74.026675,
40.877483
],
[
-73.910408,
40.877483
],
[
-73.910408,
40.3935
]
]
]
typeStringEl tipo de datos codificados en la propiedad coordinates. Será “Polygon” para cuadros delimitadores y “Point” para Posts con coordenadas exactas. Ejemplo:

“type”:“Polygon”

Diccionario de datos del objeto Geo

CampoTipoDescripción
coordinatesCollection of FloatLa longitud y la latitud de la ubicación del Post, como una colección con el formato [latitude, longitude]. Ejemplo:

**  “geo”:

“type”:** “Point”,

**    “coordinates”: [

54.27784
,

-0.41068

    ]

  **
typeStringEl tipo de datos codificados en la propiedad coordinates. Será “Point” para los campos de coordenadas de Post. Ejemplo:

“type”: “Point”
Diccionario de datos del objeto Coordinates
CampoTipoDescripción
coordinatesCollection of FloatLa longitud y la latitud de la ubicación del Post, como una colección con el formato [longitude, latitude]. Ejemplo:

**  “coordinates”:

“type”:** “Point”,

**    “coordinates”: [

-0.41068
,

54.27784

    ]

  **
typeStringEl tipo de datos codificados en la propiedad coordinates. Será “Point” para los campos de coordenadas de Post. Ejemplo:

“type”: “Point”

Ubicaciones derivadas

CampoTipoDescripción
derivedobjeto locationsUbicación derivada del enriquecimiento geográfico del perfil

“derived”:

      “locations”: [


**       

“country”:** “United Kingdom”,

“country_code”: “GB”,

“locality”: “Yorkshire”,

“region”: “England”,

“full_name”: “Yorkshire, England, United Kingdom”,

**          “geo”:

            “coordinates”: [

-1.5
,

54

            ],

“type”:** “point”

**         

       

      ]

    **

Ejemplos:

{
  "geo": null,
  "coordinates": null,
  "place": {
    "id": "07d9db48bc083000",
    "url": "https://api.x.com/1.1/geo/id/07d9db48bc083000.json",
    "place_type": "poi",
    "name": "McIntosh Lake",
    "full_name": "McIntosh Lake",
    "country_code": "US",
    "country": "Estados Unidos",
    "bounding_box": {
      "type": "Polygon",
      "coordinates": [
        [
          [
            -105.14544,
            40.192138
          ],
          [
            -105.14544,
            40.192138
          ],
          [
            -105.14544,
            40.192138
          ],
          [
            -105.14544,
            40.192138
          ]
        ]
      ]
    },
    "attributes": {

    }
  }
}
{
  "geo": {
    "type": "Point",
    "coordinates": [
      40.74118764,
      -73.9998279
    ]
  },
  "coordinates": {
    "type": "Point",
    "coordinates": [
      -73.9998279,
      40.74118764
    ]
  },
  "place": {
    "id": "01a9a39529b27f36",
    "url": "https://api.x.com/1.1/geo/id/01a9a39529b27f36.json",
    "place_type": "city",
    "name": "Manhattan",
    "full_name": "Manhattan, NY",
    "country_code": "US",
    "country": "Estados Unidos",
    "bounding_box": {
      "type": "Polygon",
      "coordinates": [
        [
          [
            -74.026675,
            40.683935
          ],
          [
            -74.026675,
            40.877483
          ],
          [
            -73.910408,
            40.877483
          ],
          [
            -73.910408,
            40.683935
          ]
        ]
      ]
    },
    "attributes": {

    }
  }
}
Diccionario de datos: Empresarial

Entidades de X  

Ir a en esta página Introducción Objeto entities   - Objeto hashtag   - Objeto media   - Objeto tamaño de media   - Objeto URL   - Objeto mención de usuario   - Objeto símbolo   - Objeto encuesta Detalles de Retweet y Quote Tweet Entities en objetos de usuario Entities en Mensajes Directos Próximos pasos

Introducción

Las entidades proporcionan metadatos e información contextual adicional sobre el contenido publicado en X. La sección entities proporciona arreglos de elementos comunes incluidos en los Posts: hashtags, menciones de usuarios, enlaces, tickers bursátiles (símbolos), encuestas de X y medios adjuntos. Estos arreglos son prácticos para los desarrolladores al ingerir Posts, ya que X esencialmente ha preprocesado o preanalizado el cuerpo del texto. En lugar de tener que buscar explícitamente estas entidades en el cuerpo del Post, tu analizador puede ir directamente a esta sección JSON y encontrarlas allí. Además de facilitar el análisis, la sección entities también ofrece metadatos útiles de valor agregado. Por ejemplo, si estás utilizando el enriquecimiento Enhanced URLs, los metadatos de URL incluyen direcciones completamente expandidas, así como los títulos y descripciones del sitio web asociados. Otro ejemplo: cuando hay menciones de usuarios, los metadatos de entidades incluyen el id numérico del usuario, lo cual es útil al realizar solicitudes a muchas X API. Cada carga útil JSON de un Post incluye una sección entities, con el conjunto mínimo de atributos hashtags, urls, user_mentions y symbols, incluso si ninguna de esas entidades forma parte del mensaje del Post. Por ejemplo, si examinas el JSON de un Post con un cuerpo de “Hello World!” y sin medios adjuntos, el JSON del Post incluirá el siguiente contenido con arreglos de entidades que contienen cero elementos:
"entities": {
        "hashtags": [
        ],
        "urls": [
        ],
        "user_mentions": [
        ],
        "symbols": [
        ]
      }
Notas:
  • Las entidades media y polls solo aparecerán cuando ese tipo de contenido forme parte del Post.
  • Si trabajas con medios nativos (fotos, videos o GIF), el objeto Extended Entities es la opción recomendada.

Objeto entities

Las secciones entities y extended_entities están compuestas por arreglos de objetos de entidad. A continuación encontrarás descripciones de cada uno de estos objetos de entidad, incluidos diccionarios de data que describen los nombres de los atributos del objeto, sus tipos y una breve descripción. También indicaremos qué operadores de PowerTrack coinciden con estos atributos e incluiremos algunos ejemplos de payloads JSON. Una colección de entidades comunes que se encuentran en los Posts, incluidas las hashtags, los enlaces y las menciones de usuarios. Este objeto entities sí incluye un atributo media, pero su implementación en la sección entities solo es completamente precisa para Posts con una sola foto. Para todos los Posts con más de una foto, un video o un GIF animado, se remite al lector a la sección extended_entities.

Diccionario de datos de entidades

El objeto entities es un contenedor de matrices de otros subobjetos de entidad. Tras ilustrar la estructura de entities, se proporcionarán diccionarios de datos para estos subobjetos y los operadores que coinciden con ellos.
CampoTipoDescripción
hashtagsMatriz deObjetos de hashtagsRepresenta los hashtags extraídos del texto del Post. Ejemplo:


“hashtags”: [

“índices”: [
32,
38
],
“texto”:“Node.js”

]
contenido multimediaMatriz deObjetos multimediaRepresenta los elementos multimedia subidos con el Post. Ejemplo:


“contenido multimedia”: [

“mostrar_url”:“pic.x.com/5J1WJSRCy9”,
“expandido_url”:“https://x.com/nolan_test/status/930077847535812610/photo/1”,
“id”: 9.300778475358126e17,
“id_str”:“930077847535812610”,
“índices”: [
13,
36
],
“contenido multimedia_url”:“http://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg”,
“multimedia_url_https”:“https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg
“tamaños”:
       “miniatura”:
“h”: 150,
               “redimensionar”:“recortar”,
               “w”: 150
,
          “grande”:
          “h”: 1366,
          “redimensionar”:“encajar”,
          “w”: 2048
,
          “medio”:
          “h”: 800,
          “cambiar tamaño”:“adaptar”,
          “w”: 1200
,
          “pequeño”:
          “h”: 454,
          “cambiar el tamaño”:“encajar”,
          “w”: 680
         
,
“tipo”:“foto”,
“url”:“https://t.co/5J1WJSRCy9”,

]
URLsArreglo deObjetos de URLRepresenta las URL incluidas en el texto de un Post.

Ejemplo (sin la mejora de Enhanced URLs activada):


“URLs”: [

“índices”: [
32,
52
],
“url”:“http://t.co/IOwBrTZR”,
“visualización_URL”:“youtube.com/watch?v=oHg5SJ…”,
“ampliado_url”:“http://www.youtube.com/watch?v=oHg5SJYRHA0

]


Ejemplo (con la mejora de Enhanced URLs activada):

“URL”: [

“URL”:“https://t.co/D0n7a53c2l”,
“ampliada_URL”:“http://bit.ly/18gECvy”,
“visualización_url”:“bit.ly/18gECvy”,
“desenrollado”:
“URL”:“https://www.youtube.com/watch?v=oHg5SJYRHA0”,
“estado”: 200,
“título”:“Rickroll’D”,
“Descripción”:“http://www.facebook.com/rickroll548Mientras haya trolls trolleando, Rick nunca dejará de rodar.”
,
“índices”: [
62,
85
]

]
usuario_mencionesMatriz deObjetos de menciones de usuarioRepresenta a otros usuarios de X mencionados en el texto del Post. Ejemplo:


“usuario_menciones”: [

“nombre”:“X API”,
“índices”: [
4,
15
],
“pantalla_nombre”:“xapi”,
“id”: 6253282,
“id_str”:“6253282”

]
símbolosMatriz deObjetos SymbolRepresenta los símbolos, p. ej., $cashtags, incluidos en el texto del Post. Ejemplo:


“símbolos”: [

“índices”: [
12,
17
],
“texto”:“twtr”

]
encuestasMatriz deObjetos de encuestasRepresenta las encuestas de X incluidas en el Post. Ejemplo:

“encuestas”: [

“opciones”: [

“posición”: 1,
“texto”:“Leí la documentación una vez.”
,

“posición”: 2,
“texto”:“Leí la documentación dos veces.”
},

“posición”: 3,
“texto”:“Releo la documentación una y otra vez.”
}
],
“fin_fecha y hora”:“Jue May 25 22:20:27 +0000 2017”,
“duración_minutos”: 60

]

Objeto de hashtag  

La sección entities contendrá un arreglo hashtags que incluye un objeto por cada hashtag presente en el cuerpo del Post, y un arreglo vacío si no hay hashtags. El operador # de PowerTrack se utiliza para hacer coincidencia con el atributo text. El operador has:hashtags hará coincidencia si hay al menos un elemento en el arreglo.
CampoTipoDescripción
indicesArray of IntUn arreglo de números enteros que indica los desplazamientos dentro del texto del Post donde comienza y termina el hashtag. El primer entero representa la ubicación del carácter # en la cadena de texto del Post. El segundo entero representa la ubicación del primer carácter después del hashtag. Por lo tanto, la diferencia entre ambos números será la longitud del nombre del hashtag más uno (por el carácter “#”). Ejemplo:

“indices”:[32,38]
textStringNombre del hashtag, sin el carácter inicial “#”. Ejemplo:

“text”:“nodejs”

Objeto de multimedia  

La sección entities contendrá un arreglo media con un único objeto de multimedia si se ha “adjuntado” algún objeto de multimedia al Post. Si no se ha adjuntado multimedia nativa, no habrá un arreglo media en entities. Por las siguientes razones, se debe usar la sección extended_entities para procesar la multimedia nativa del Post:
  • El type de la multimedia siempre indicará “photo”, incluso cuando se adjunte un video o un GIF al Post.
  • Aunque se pueden adjuntar hasta cuatro fotos, solo la primera aparecerá en la sección entities.
El operador has:media coincidirá si este arreglo contiene elementos.
CampoTipoDescripción
visualización_urlStringURL del contenido multimedia que se mostrará a los clientes. Ejemplo:

“visualización_url”:“pic.x.com/rJC5Pxsu”
ampliado_urlCadena de textoUna versión ampliada de la pantalla_url. Enlace a la página de visualización de medios. Ejemplo:

“expandido_URL”:“http://x.com/yunorno/status/114080493036773378/photo/1
idInt64ID del contenido multimedia expresado como entero de 64 bits. Ejemplo:

“id”:114080493040967680
id_strCadena de textoid del contenido multimedia expresado como cadena. Ejemplo:

“id_cadena”:“114080493040967680”
índicesMatriz de IntUna matriz de enteros que indica los desplazamientos dentro del texto del Post donde comienza y termina la URL. El primer entero representa la posición del primer carácter de la URL en el texto del Post. El segundo entero representa la posición del primer carácter que no forma parte de la URL y que aparece después de esta (o el final de la cadena si la URL es la última parte del texto del Post). Ejemplo:

“índices”:[15,35]
contenido multimedia_urlStringUna URL http:// que apunta directamente al archivo de medios cargado. Ejemplo:

“medios_url”:“http://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg

Para medios en los Mensajes Directos,media_urles la misma URL HTTPS quemedia_url_httpsy se debe acceder firmando una solicitud con el token de acceso del usuario mediante OAuth 1.0A.

No es posible acceder a imágenes mediante una sesión autenticada de x.com. Visitaesta páginapara aprender a tener en cuenta estos cambios recientes.

No puedes insertar estas imágenes directamente en una página web.

ConsultarFormato de URL de medios de fotosobre cómo dar formato a una foto’la URL de s, comomedia_url_https, según la información disponibletamaños.
multimedia_URL_httpsStringUna URL https:// que apunta directamente al archivo multimedia subido, para insertarla en páginas https. Ejemplo:

“contenido multimedia_url_https”:“https://p.twimg.com/AZVLmp-CIAAbkyy.jpg

Para archivos multimedia en Mensajes Directos,media_url_httpsdebe accederse firmando la solicitud con el token de acceso del usuario mediante OAuth 1.0a.

No es posible acceder a las imágenes mediante una sesión autenticada en x.com. Visiteesta páginapara saber cómo tener en cuenta estos cambios recientes.

No puedes insertar estas imágenes directamente en una página web.

VerFormato de URL de medios de fotossobre cómo formatear una foto’la URL de s, comomedia_url_https, según lo disponibletamaños.
tamañosObjeto SizeObjeto que muestra los tamaños disponibles del archivo multimedia. Ejemplo:


“tamaños”:
“miniatura”:
“h”: 150,
“cambiar tamaño”:“recortar”,
“w”: 150
},
“grande”:
“h”: 1366,
“cambiar tamaño”:“encajar”,
“w”: 2048
},
“medio”:
“h”: 800,
“cambiar tamaño”:“encajar”,
“w”: 1200
},
“pequeña”:
“h”: 454,
“cambiar el tamaño”:“encajar”,
“w”: 680
}
}
}

ConsultarFormato de URL de medios de fotossobre cómo formatear una foto’la URL de s, comomedia_url_https, según la información disponibletamaños.
origen_estado_idInt64Admite null. Para los Posts que contienen contenido multimedia originalmente asociado a otro Post, este id apunta al Post original. Ejemplo:

“fuente_estado_id”: 205282515685081088
origen_estado_id_strInt64Admite nulos. Para Posts que contienen contenido multimedia originalmente asociado a otro Post, este id basado en cadena apunta al Post original. Ejemplo:

“origen_estado_id_str”:“205282515685081088”
tipoCadena de textoTipo de medio subido. Los tipos posibles incluyen foto, video y animado_GIF. Ejemplo:

“tipo”:“foto”
urlCadena de textoURL encapsulada para el enlace de medios. Esto corresponde a la URL incrustada directamente en el texto sin procesar del Post, y a los valores del parámetro indices.índicesparámetro. Ejemplo:

“url”:“http://t.co/rJC5Pxsu

Objetos de tamaño de medios

Todos los Posts con contenido multimedia nativo (fotos, videos y GIF) incluirán un conjunto de tamaños ‘thumb’, ‘small’, ‘medium’ y ‘large’, con altura y anchura en píxeles. Para las fotos y las URL de imágenes de vista previa, Formato de URL de medios de foto especifica cómo construir distintas URL para cargar contenido fotográfico en diferentes tamaños.

Objeto de tamaños 

CampoTipoDescripción
thumbObjeto de tamañoInformación para una versión del medio en tamaño miniatura. Ejemplo:

“thumb”:“h”:150, “resize”:“crop”, “w”:150}

Las fotos en tamaño miniatura se limitarán a rellenar un área de 150x150 y se recortarán.
largeObjeto de tamañoInformación para una versión del medio en tamaño grande. Ejemplo:

“large”:“h”:454, “resize”:“fit”, “w”:680}

Las fotos en tamaño pequeño se limitarán a ajustarse dentro de un área de 680x680.
mediumObjeto de tamañoInformación para una versión del medio en tamaño mediano. Ejemplo:

“medium”:“h”:800, “resize”:“fit”, “w”:1200}

Las fotos en tamaño mediano se limitarán a ajustarse dentro de un área de 1200x1200.
smallObjeto de tamañoInformación para una versión del medio en tamaño pequeño. Ejemplo:

“small”:“h”:1366, “resize”:“fit”, “w”:2048}

Las fotos en tamaño grande se limitarán a ajustarse dentro de un área de 2048x2048.

Objeto de tamaño 

CampoTipoDescripción
wIntAncho en píxeles de este tamaño. Ejemplo:

“w”:150
hIntAlto en píxeles de este tamaño. Ejemplo:

“h”:150
resizeStringMétodo de redimensionamiento usado para obtener este tamaño. Un valor de fit indica que el contenido multimedia se redimensionó para ajustarse a una dimensión, manteniendo su relación de aspecto original. Un valor de crop indica que el contenido multimedia se recortó para ajustarse a una resolución específica. Ejemplo:

“resize”:“crop”

Formato de URL de medios de fotos

Los medios de foto en X pueden cargarse en diferentes tamaños. Es preferible cargar la imagen más pequeña que aún sea lo suficientemente grande para adaptarse a una ventana de visualización determinada. Para cargar distintos tamaños, deben combinarse el Objeto Size y media_url (o media_url_https) en un formato específico. Usaremos el objeto de ejemplo de la entidad de medios ya proporcionado para nuestro ejemplo al construir una URL de medio de foto. media_url o media_url_https pueden cargarse por sí solos, lo que hará que se cargue la variante mediana de forma predeterminada. Sin embargo, cuando sea posible, es preferible proporcionar una URL de medio de foto completamente formateada. Hay tres partes de una URL de medio de foto:
Base URLLa URL base es la URL del medio sin la extensión de archivo.

Por ejemplo:

“media_url_https”: “https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg”,

La URL base es entonces:

https://pbs.twimg.com/media/DOhM30VVwAEpIHq
FormatEl formato es el tipo de archivo de la imagen. Los formatos posibles son jpg o png, que se indican como la extensión de la URL del medio.

Por ejemplo:

“media_url_https”: “https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg”,

El formato es entonces: jpg
NameEl nombre es el nombre del campo del tamaño que se cargará.

Por ejemplo:


 “sizes”:
   “thumb”:
     “h”: 150,
     “resize”: “crop”,
     “w”: 150
   ,
   “large”:
     “h”: 1366,
     “resize”: “fit”,
     “w”: 2048
   },
   “medium”:
     “h”: 800,
     “resize”: “fit”,
     “w”: 1200
   },
   “small”:
     “h”: 454,
     “resize”: “fit”,
     “w”: 680
   }
 }
}

El nombre al cargar la foto en tamaño grande sería: large
Tomamos estas tres partes (URL base, formato y nombre) y las combinamos para formar la URL del medio de foto que se va a cargar. Hay dos formatos para cargar imágenes de esta manera: legacy y modern. Todas las cargas de imágenes deben dejar de usar el formato legacy y utilizar el formato modern. Usar el formato modern dará como resultado una mejor tasa de aciertos en la CDN para el solicitante, mejorando así las latencias de carga al ser menos probable tener que generar y cargar el medio desde el centro de datos.
Formato heredadoEl formato heredado está obsoleto. Todas las cargas de contenido fotográfico deben migrarse al formato moderno.

<base_url>.<format>:<name>

Por ejemplo:

https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg:large
Formato modernoEl formato moderno para cargar fotos se estableció en X en 2015 y es el estándar de facto desde 2017. Todas las cargas de contenido fotográfico deben pasar a este formato.

<base_url>?format=<format>&name=<name>

Por ejemplo:

https://pbs.twimg.com/media/DOhM30VVwAEpIHq?format=jpg&amp;name=large


Nota: los elementos de la cadena de consulta de la URL de contenido fotográfico están en orden alfabético. Si en el futuro se añadieran elementos de consulta adicionales, deberá mantenerse ese orden alfabético. Por ejemplo, si existiera un hipotético elemento de consulta llamado preferred_format, iría después de format y name en la cadena de consulta.

Objeto URL 

La sección entities contendrá un arreglo urls con un objeto por cada enlace incluido en el cuerpo del Post, e incluirá un arreglo vacío si no hay enlaces. El operador has:links coincide si hay al menos un elemento en el arreglo. El operador url: se usa para hacer coincidencia con el atributo expanded_url. Si utiliza el Expanded URL enrichment, el operador url: se usa para hacer coincidencia con el atributo unwound.url (URL completamente desenrollada). Si utiliza el Enhanced URL enrichment, los operadores url_title: y url_description: se usan para hacer coincidencia con los atributos unwound.title y unwound.description.
CampoTipoDescripción
display_urlStringURL pegada/escrita en el Post. Ejemplo:

“display_url”:“bit.ly/2so49n2”
expanded_urlStringVersión expandida de display_url. Ejemplo:

“expanded_url”:“http://bit.ly/2so49n2
indicesArray of IntArreglo de enteros que representa los desplazamientos dentro del texto del Post donde la URL comienza y termina. El primer entero representa la ubicación del primer carácter de la URL en el texto del Post. El segundo entero representa la ubicación del primer carácter que no es parte de la URL después del final de esta. Ejemplo:

“indices”:[30,53]
urlStringURL envuelta, correspondiente al valor incrustado directamente en el texto sin formato del Post, y a los valores del parámetro indices. Ejemplo:

“url”:“https://t.co/yzocNFvJuL
Si utiliza los enriquecimientos Expanded y/o Enhanced URL, los siguientes metadatos están disponibles bajo el atributo unwound:
CampoTipoDescripción
urlStringVersión completamente desenrollada del enlace incluido en el Post. Ejemplo:

“url”:“https://blog.x.com/en&#95;us/topics/insights/2016/using-twitter-as-a-go-to-communication-channel-during-severe-weather-events.html
statusIntEstado HTTP final del proceso de desenrollado; un 200 indica éxito. Ejemplo:

200
titleStringTítulo HTML del enlace. Ejemplo:

“title”:“Using X as a ‘go-to’ communication channel during severe weather”
descriptionStringDescripción HTML del enlace. Ejemplo:

“description”:“Using X as a ‘go-to’ communication channel during severe weather”

Objeto de mención de usuario  

La sección entities contendrá un arreglo user_mentions con un objeto por cada mención de usuario incluida en el cuerpo del Post, y un arreglo vacío si no hay ninguna mención de usuario. El operador @ de PowerTrack se utiliza para hacer coincidir el atributo screen_name. El operador has:mentions coincidirá si hay al menos un elemento en el arreglo.
FieldTypeDescription
idInt64ID del usuario mencionado, como entero. Ejemplo:

“id”:6253282
id_strStringid del usuario mencionado, como cadena. Ejemplo:

“id_str”:“6253282”
indicesArray of IntUn arreglo de enteros que representa los desplazamientos dentro del texto del Post donde comienza y termina la referencia al usuario. El primer entero indica la ubicación del carácter ‘@’ de la mención de usuario. El segundo entero indica la ubicación del primer carácter que no forma parte del screen name después de la mención de usuario. Ejemplo:

“indices”:[4,15]
nameStringNombre visible del usuario referenciado. Ejemplo:

“name”:“API”
screen_nameStringScreen name del usuario referenciado. Ejemplo:

“screen_name”:“api”

Objeto de símbolo  

La sección entities contendrá un arreglo symbols con un objeto por cada $cashtag incluido en el cuerpo del Post, y un arreglo vacío si no hay ningún símbolo. El operador $ de PowerTrack se utiliza para hacer coincidencia en el atributo text. El operador has:symbols coincide si hay al menos un elemento en el arreglo.
CampoTipoDescripción
indicesArray of IntUn arreglo de enteros que indica los desplazamientos dentro del texto del Post donde comienza y termina el símbolo/cashtag. El primer entero representa la ubicación del carácter enlacadenadetextodelPost.Elsegundoenterorepresentalaubicacioˊndelprimercaraˊcterdespueˊsdelcashtag.Porlotanto,ladiferenciaentrelosdosnuˊmerosseraˊlalongituddelnombredelcashtagmaˊsuno(porelcaraˊcter en la cadena de texto del Post. El segundo entero representa la ubicación del primer carácter después del cashtag. Por lo tanto, la diferencia entre los dos números será la longitud del nombre del cashtag más uno (por el carácter ‘’). Ejemplo:

“indices”:[12,17]
textStringNombre del cashtag, sin el carácter inicial ‘$’. Ejemplo:

“text”:“twtr”

Objeto de encuesta

La sección entities contendrá un arreglo polls con un único objeto poll si el Post incluye una encuesta. Si no se incluye ninguna encuesta, no habrá un arreglo polls en la sección entities. Tenga en cuenta que estos metadatos de encuestas solo están disponibles con las siguientes API Empresarial:
CampoTipoDescripción
optionsArray of Option ObjectUn arreglo de opciones, cada una con una posición en la encuesta y el texto para esa posición. Ejemplo:

“options”: [

“position”: 1,
“text”: “I read documentation once.”
}
]
}
end_datetimeStringMarca de tiempo (UTC) de cuándo termina la encuesta. Ejemplo:

“end_datetime”: “Thu May 25 22:20:27 +0000 2017”
duration_minutesStringDuración de la encuesta en minutos. Ejemplo:

“duration_minutes”: 60

Detalles de Retweet y Quote Tweet

Desde la perspectiva de la X API, los Retweets y los Quote Tweets son tipos especiales de Posts que contienen el Post original como un objeto incrustado. Así, los objetos de Retweet y de Quote Tweet son padres de un Post “original” hijo (y, por lo tanto, duplican el tamaño). Los Retweets tienen un objeto de nivel superior “retweeted_status”, y los Quote Tweets tienen un objeto “quoted_status”. Por coherencia, estos objetos de nivel superior de Retweet y Quote Tweet también tienen una propiedad text y entidades asociadas. Sin embargo, las entidades a nivel superior pueden diferir de las entidades proporcionadas por el Post “original” incrustado. En el caso de los Retweets, se antepone texto nuevo al cuerpo del Post original. En los Quote Tweets, se añade texto nuevo al cuerpo del Post. En general, la mejor práctica es recuperar el texto, las entidades, el autor original y la fecha del Post original en retweeted_status siempre que exista. Una excepción es obtener entidades de X que formen parte del contenido añadido en la cita. Consulte a continuación para más detalles y consejos.

Retweets

Un detalle importante sobre los Retweets es que no se pueden agregar entidades adicionales de X al Post. Los usuarios no pueden añadir hashtags, URL u otros detalles cuando hacen Retweet. Sin embargo, el atributo de texto (de nivel superior) del Retweet se compone del texto del Post original con “RT @username: ” antepuesto.   En algunos casos, especialmente con cuentas con nombres de usuario largos, la combinación de estos caracteres nuevos y el cuerpo del Post original puede superar fácilmente el límite original de 140 caracteres para el texto del Post. Para conservar la compatibilidad con la visualización y el almacenamiento basados en 140 caracteres, el cuerpo de nivel superior trunca el final del cuerpo del Post y agrega puntos suspensivos (“…”). En consecuencia, algunas entidades de nivel superior situadas al final del Post original podrían ser incorrectas o faltar, por ejemplo, en el caso de un hashtag o una URL truncados. Este Post, https://x.com/FloodSocial/status/907974220298125312, tiene el siguiente texto del Post: Just another test Post that needs to be exactly 140 characters with trailing URL and hashtag http://wapo.st/2w8iwPQ #Testing En el ejemplo anterior, tanto la URL como el hashtag se vieron afectados. Dado que el hashtag se truncó por completo y la URL se truncó parcialmente, estos faltan en las entidades de nivel superior. También notarás la entidad adicional de nivel superior user_mentions que proviene del prefijo “RT @floodsocial: ” en el campo text. Sin embargo, el texto del Post y las entidades en retweeted_status reflejan perfectamente el Post original sin truncamiento ni entidades incorrectas; de ahí nuestra recomendación de basarse en el objeto anidado retweeted_status para los Retweets.

Tweets con cita

Los Tweets con cita se introdujeron en 2016 y se diferencian de los Retweets en que cuando “citas” un Post estás agregando contenido nuevo “encima” de un Post compartido. Este contenido nuevo puede incluir casi todo lo que puede tener un Post original, incluidos texto nuevo, hashtags, menciones y URL. Los Tweets con cita pueden contener contenido multimedia nativo (fotos, videos y GIF) y aparecerán bajo el objeto entities. Dado que se pueden agregar entidades de X, es probable que las entidades de la cita sean diferentes de las entidades originales. En este ejemplo, se colocaron una nueva URL y un hashtag al final del Tweet con cita. Este Post, https://x.com/FloodSocial/status/907983973225160704, tiene el siguiente texto del Post: extraño e igualmente trágico cuando las islas se inundan… pruebas transatlánticas de tweets con cita | @thisuser @thatuserhttp://bit.ly/2vMMDuu #testing En este caso, las entidades de nivel superior no reflejan los detalles de la cita. Sin embargo, el texto del Post y las entities en extended_tweet reflejan perfectamente el Tweet con cita sin truncamiento ni entidades incorrectas; por lo tanto, recomendamos confiar en el objeto anidado extended_tweet para los Tweets con cita.

Entidades para el objeto de usuario

Las entidades para objetos de usuario describen las URL que aparecen en los campos de URL de perfil y de descripción definidos por el usuario. No describen hashtags ni user_mentions. A diferencia de las entidades de Post, las entidades de usuario pueden aplicarse a varios campos dentro de su objeto padre; para desambiguar, encontrarás nodos padre llamados url y description que indican qué campo contiene la URL con entidades. En este ejemplo, el campo url del usuario contiene un enlace t.co que se expande por completo dentro del nodo entities/url/urls[0] de la respuesta. El usuario no tiene una URL abreviada/enlazada en su descripción.

Ejemplo de JSON

{
  "id": 6253282,
  "id_str": "6253282",
  "name": "X API",
  "screen_name": "xapi",
  "location": "San Francisco, California",
  "description": "La X API real. Publico sobre cambios en la API, incidencias del servicio y con gusto respondo preguntas sobre X y nuestra API. ¿No obtuviste respuesta? Está en mi sitio web.",
  "url": "http:\/\/t.co\/78pYTvWfJd",
  "entities": {
    "url": {
      "urls": [
        {
          "url": "http:\/\/t.co\/78pYTvWfJd",
          "expanded_url": "http:\/\/dev.x.com",
          "display_url": "dev.x.com",
          "indices": [
            0,
            22
          ]
        }
      ]
    },
    "description": {
      "urls": [

      ]
    }
  }
}

Entidades extendidas de X 

Ir a en esta página Introducción Objeto Extended Entities Ejemplos de Tweets y cargas JSON   - Tweet con cuatro fotos nativas   - Tweet con video nativo   - Tweet con un GIF animado Próximos pasos

Introducción

Si un Post contiene contenido multimedia nativo (compartido mediante la interfaz de usuario del Post en lugar de a través de un enlace externo), también habrá una sección extended_entities. Cuando se trata de contenido multimedia nativo (foto, video o GIF), extended_entities es la fuente de metadatos preferida por varias razones. Actualmente, se pueden adjuntar hasta cuatro fotos a un Post. Los metadatos de entities solo contendrán la primera foto (hasta 2014 solo se podía incluir una), mientras que la sección extended_entities incluirá todas las fotos adjuntas. Con contenido multimedia nativo, otra limitación de los metadatos entities.media es que el tipo de medio siempre indicará ‘photo’, incluso cuando el medio adjunto sea un video o un GIF animado. El tipo real de medio se especifica en el atributo extended_entities.media[].type y se establece en photo, video o animated_gif. Por estas razones, si trabajas con contenido multimedia nativo, los metadatos de extended_entities son la mejor opción. Todos los Posts con fotos, videos y GIFs animados adjuntos incluirán un objeto JSON extended_entities. El objeto extended_entities contiene un único arreglo media de objetos media (consulta la sección entities para su diccionario de datos). No se incluyen otros tipos de entidad, como hashtags y enlaces, en la sección extended_entities. El objeto media en la sección extended_entities es idéntico en estructura al incluido en la sección entities. Los Posts solo pueden tener un tipo de contenido multimedia adjunto. Para las fotos, se pueden adjuntar hasta cuatro. Para los videos y los GIFs, se puede adjuntar uno. Dado que los metadatos type del contenido multimedia en la sección extended_entities indican correctamente el tipo de medio (‘photo’, ‘video’ o ‘animated_gif’) y admiten hasta 4 fotos, es la fuente de metadatos preferida para contenido multimedia nativo.
{
      "extended_entities": {
        "media": [

        ]
      }
    }

Ejemplos de Posts y cargas útiles JSON

A continuación se muestran algunos ejemplos de Posts y los metadatos de sus entidades asociadas. Post con cuatro fotos nativas Post con hashtag, mención de usuario, cashtag, URL y cuatro fotos nativas:
A continuación se muestra la sección entities para este Post:
{
      "entities": {
        "hashtags": [
          {
            "text": "hashtag",
            "indices": [
              59,
              67
            ]
          }
        ],
        "urls": [
          {
            "url": "https://t.co/RzmrQ6wAzD",
            "expanded_url": "http://bit.ly/2pUk4be",
            "display_url": "bit.ly/2pUk4be",
            "unwound": {
              "url": "https://blog.gnip.com/tweeting-in-the-rain/",
              "status": 200,
              "title": "Tweeting in the Rain, Parte 1 - Blog de Gnip - Blog de datos sociales y ciencia de datos",
              "description": "Si me hubieran dicho hace unos años que algún día estaría comparando datos de series temporales de precipitación y redes sociales, habría pensado que era una broma. Durante 13 años en OneRain ayudé a desarrollar software y sistemas de monitoreo… Continuar leyendo →"
            },
            "indices": [
              35,
              58
            ]
          }
        ],
        "user_mentions": [
          {
            "screen_name": "MentionThis",
            "name": "Just Me",
            "id": 50247739,
            "id_str": "50247739",
            "indices": [
              16,
              28
            ]
          }
        ],
        "symbols": [
          {
            "text": "twtr",
            "indices": [
              29,
              34
            ]
          }
        ],
        "media": [
          {
            "id": 861627472244162561,
            "id_str": "861627472244162561",
            "indices": [
              68,
              91
            ],
            "media_url": "http://pbs.twimg.com/media/C_UdnvPUwAE3Dnn.jpg",
            "media_url_https": "https://pbs.twimg.com/media/C_UdnvPUwAE3Dnn.jpg",
            "url": "https://t.co/9r69akA484",
            "display_url": "pic.x.com/9r69akA484",
            "expanded_url": "https://x.com/FloodSocial/status/861627479294746624/photo/1",
            "type": "photo",
            "sizes": {
              "medium": {
                "w": 1200,
                "h": 900,
                "resize": "fit"
              },
              "small": {
                "w": 680,
                "h": 510,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "large": {
                "w": 2048,
                "h": 1536,
                "resize": "fit"
              }
            }
          }
        ]
      }
    }
Solo en el siguiente payload “extendido” encontrarás como máximo cuatro fotos nativas. Observa que la primera foto del array es la misma que la foto única incluida en la sección no extendida de X de entities. La estructura de metadatos de media para fotos es la misma tanto en entities como en extended_entities. Aquí está la sección extented_entities para este Post:
{
    "extended_entities": {
        "media": [
          {
            "id": 861627472244162561,
            "id_str": "861627472244162561",
            "indices": [
              68,
              91
            ],
            "media_url": "http://pbs.twimg.com/media/C_UdnvPUwAE3Dnn.jpg",
            "media_url_https": "https://pbs.twimg.com/media/C_UdnvPUwAE3Dnn.jpg",
            "url": "https://t.co/9r69akA484",
            "display_url": "pic.x.com/9r69akA484",
            "expanded_url": "https://x.com/FloodSocial/status/861627479294746624/photo/1",
            "type": "photo",
            "sizes": {
              "medium": {
                "w": 1200,
                "h": 900,
                "resize": "fit"
              },
              "small": {
                "w": 680,
                "h": 510,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "large": {
                "w": 2048,
                "h": 1536,
                "resize": "fit"
              }
            }
          },
          {
            "id": 861627472244203520,
            "id_str": "861627472244203520",
            "indices": [
              68,
              91
            ],
            "media_url": "http://pbs.twimg.com/media/C_UdnvPVYAAZbEs.jpg",
            "media_url_https": "https://pbs.twimg.com/media/C_UdnvPVYAAZbEs.jpg",
            "url": "https://t.co/9r69akA484",
            "display_url": "pic.x.com/9r69akA484",
            "expanded_url": "https://x.com/FloodSocial/status/861627479294746624/photo/1",
            "type": "photo",
            "sizes": {
              "small": {
                "w": 680,
                "h": 680,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "medium": {
                "w": 1200,
                "h": 1200,
                "resize": "fit"
              },
              "large": {
                "w": 2048,
                "h": 2048,
                "resize": "fit"
              }
            }
          },
          {
            "id": 861627474144149504,
            "id_str": "861627474144149504",
            "indices": [
              68,
              91
            ],
            "media_url": "http://pbs.twimg.com/media/C_Udn2UUQAADZIS.jpg",
            "media_url_https": "https://pbs.twimg.com/media/C_Udn2UUQAADZIS.jpg",
            "url": "https://t.co/9r69akA484",
            "display_url": "pic.x.com/9r69akA484",
            "expanded_url": "https://x.com/FloodSocial/status/861627479294746624/photo/1",
            "type": "photo",
            "sizes": {
              "medium": {
                "w": 1200,
                "h": 900,
                "resize": "fit"
              },
              "small": {
                "w": 680,
                "h": 510,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "large": {
                "w": 2048,
                "h": 1536,
                "resize": "fit"
              }
            }
          },
          {
            "id": 861627474760708096,
            "id_str": "861627474760708096",
            "indices": [
              68,
              91
            ],
            "media_url": "http://pbs.twimg.com/media/C_Udn4nUMAAgcIa.jpg",
            "media_url_https": "https://pbs.twimg.com/media/C_Udn4nUMAAgcIa.jpg",
            "url": "https://t.co/9r69akA484",
            "display_url": "pic.x.com/9r69akA484",
            "expanded_url": "https://x.com/FloodSocial/status/861627479294746624/photo/1",
            "type": "photo",
            "sizes": {
              "small": {
                "w": 680,
                "h": 680,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "medium": {
                "w": 1200,
                "h": 1200,
                "resize": "fit"
              },
              "large": {
                "w": 2048,
                "h": 2048,
                "resize": "fit"
              }
            }
          }
        ]
      }
    }

Publicación con video nativo

A continuación se muestran los metadatos de extended entities de esta Publicación con un video:
{
      "extended_entities": {
        "media": [
          {
            "id": 869317980307415040,
            "id_str": "869317980307415040",
            "indices": [
              31,
              54
            ],
            "media_url": "http://pbs.twimg.com/ext_tw_video_thumb/869317980307415040/pu/img/t_E6wyADk_PvxuzF.jpg",
            "media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/869317980307415040/pu/img/t_E6wyADk_PvxuzF.jpg",
            "url": "https://t.co/TLSTTOvvmP",
            "display_url": "pic.x.com/TLSTTOvvmP",
            "expanded_url": "https://x.com/FloodSocial/status/869318041078820864/video/1",
            "type": "video",
            "sizes": {
              "small": {
                "w": 340,
                "h": 604,
                "resize": "fit"
              },
              "large": {
                "w": 720,
                "h": 1280,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "medium": {
                "w": 600,
                "h": 1067,
                "resize": "fit"
              }
            },
            "video_info": {
              "aspect_ratio": [
                9,
                16
              ],
              "duration_millis": 10704,
              "variants": [
                {
                  "bitrate": 320000,
                  "content_type": "video/mp4",
                  "url": "https://video.twimg.com/ext_tw_video/869317980307415040/pu/vid/180x320/FMei8yCw7yc_Z7e-.mp4"
                },
                {
                  "bitrate": 2176000,
                  "content_type": "video/mp4",
                  "url": "https://video.twimg.com/ext_tw_video/869317980307415040/pu/vid/720x1280/octt5pFbISkef8RB.mp4"
                },
                {
                  "bitrate": 832000,
                  "content_type": "video/mp4",
                  "url": "https://video.twimg.com/ext_tw_video/869317980307415040/pu/vid/360x640/2OmqK74SQ9jNX8mZ.mp4"
                },
                {
                  "content_type": "application/x-mpegURL",
                  "url": "https://video.twimg.com/ext_tw_video/869317980307415040/pu/pl/wcJQJ2nxiFU4ZZng.m3u8"
                }
              ]
            }
          }
        ]
      }
    }
Cuando un anunciante decide limitar la reproducción de video únicamente a plataformas de X (propiedad y operación de X), el objeto video_info se reemplazará por un objeto additional_media_info. El objeto additional_media_info incluirá información adicional de medios proporcionada por el editor, como title, description y embeddable flag. El contenido de video está disponible únicamente para los clientes oficiales de X cuando embeddable=false. En este caso, todas las URL de video incluidas en el payload serán de X, de modo que el usuario pueda abrir el video en una propiedad de X haciendo clic en el enlace. Este es un ejemplo de cómo se verá el objeto extended entities en esta situación:
{
      "extended_entities": {
        "media": [
          {
            "id": 924685332347469824,
            "id_str": "924685332347469824",
            "indices": [
              49,
              72
            ],
            "media_url": "http://pbs.twimg.com/media/DNUkdLMVwAEzj8K.jpg",
            "media_url_https": "https://pbs.twimg.com/media/DNUkdLMVwAEzj8K.jpg",
            "url": "https://t.co/90xOJqKMox",
            "display_url": "pic.x.com/90xOJqKMox",
            "expanded_url": "https://x.com/nyjets/status/924685391524798464/video/1",
            "type": "photo",
            "sizes": {
              "small": {
                "w": 680,
                "h": 383,
                "resize": "fit"
              },
              "medium": {
                "w": 1200,
                "h": 675,
                "resize": "fit"
              },
              "large": {
                "w": 1280,
                "h": 720,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              }
            },
            "additional_media_info": {
              "title": "#ATLvsNYJ: TD de Tomlinson desde McCown",
              "description": "NFL",
              "embeddable": false,
              "monetizable": true
            }
          }
        ]
      }
    }
Como se indicó arriba, aquí está la sección entities que tiene, incorrectamente, el type configurado en ‘photo’. Nuevamente, se recomienda usar la sección extended_entities para todos los tipos de contenido multimedia nativo, incluidos ‘video’ y ‘animated_gif’.
    {
    "entities": {
        "hashtags": [

        ],
        "urls": [

        ],
        "user_mentions": [

        ],
        "symbols": [

        ],
        "media": [
          {
            "id": 869317980307415040,
            "id_str": "869317980307415040",
            "indices": [
              31,
              54
            ],
            "media_url": "http://pbs.twimg.com/ext_tw_video_thumb/869317980307415040/pu/img/t_E6wyADk_PvxuzF.jpg",
            "media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/869317980307415040/pu/img/t_E6wyADk_PvxuzF.jpg",
            "url": "https://t.co/TLSTTOvvmP",
            "display_url": "pic.x.com/TLSTTOvvmP",
            "expanded_url": "https://x.com/FloodSocial/status/869318041078820864/video/1",
            "type": "photo",
            "sizes": {
              "small": {
                "w": 340,
                "h": 604,
                "resize": "fit"
              },
              "large": {
                "w": 720,
                "h": 1280,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "medium": {
                "w": 600,
                "h": 1067,
                "resize": "fit"
              }
            }
          }
        ]
      }

    }

Publicación con un GIF animado

A continuación se muestran los metadatos de entidades extendidas para esta Publicación con un GIF animado:
{
      "extended_entities": {
        "media": [
          {
            "id": 870042654213459968,
            "id_str": "870042654213459968",
            "indices": [
              29,
              52
            ],
            "media_url": "http://pbs.twimg.com/tweet_video_thumb/DBMDLy_U0AAqUWP.jpg",
            "media_url_https": "https://pbs.twimg.com/tweet_video_thumb/DBMDLy_U0AAqUWP.jpg",
            "url": "https://t.co/nD6G4bWSKb",
            "display_url": "pic.x.com/nD6G4bWSKb",
            "expanded_url": "https://x.com/FloodSocial/status/870042717589340160/photo/1",
            "type": "animated_gif",
            "sizes": {
              "medium": {
                "w": 350,
                "h": 262,
                "resize": "fit"
              },
              "small": {
                "w": 340,
                "h": 255,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "large": {
                "w": 350,
                "h": 262,
                "resize": "fit"
              }
            },
            "video_info": {
              "aspect_ratio": [
                175,
                131
              ],
              "variants": [
                {
                  "bitrate": 0,
                  "content_type": "video/mp4",
                  "url": "https://video.twimg.com/tweet_video/DBMDLy_U0AAqUWP.mp4"
                }
              ]
            }
          }
        ]
      }
    }

Ejemplos de cargas enriquecidas nativas

Publicación

{
	"created_at": "Fri Sep 18 18:36:15 +0000 2020",
	"id": 1307025659294675000,
	"id_str": "1307025659294674945",
	"text": "Aquí tienes un artículo que destaca las actualizaciones en el nuevo payload de Tweet v2 https://t.co/oeF3ZHeKQQ",
	"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">Aplicación web de X</a>",
	"truncated": false,
	"in_reply_to_status_id": 1304102743196356600,
	"in_reply_to_status_id_str": "1304102743196356610",
	"in_reply_to_user_id": 2244994945,
	"in_reply_to_user_id_str": "2244994945",
	"in_reply_to_screen_name": "XDevelopers",
	"user": {
		"id": 2244994945,
		"id_str": "2244994945",
		"name": "X Dev",
		"screen_name": "XDevelopers",
		"location": "127.0.0.1",
		"url": "https://developer.x.com/en/community",
		"description": "La voz del equipo de #XDevelopers y tu fuente oficial para actualizaciones, noticias y eventos relacionados con la #XAPI.",
		"translator_type": "normal",
		"protected": false,
		"verified": true,
		"followers_count": 512292,
		"friends_count": 2038,
		"listed_count": 1666,
		"favourites_count": 2147,
		"statuses_count": 3634,
		"created_at": "Sat Dec 14 04:35:55 +0000 2013",
		"utc_offset": null,
		"time_zone": null,
		"geo_enabled": true,
		"lang": null,
		"contributors_enabled": false,
		"is_translator": false,
		"profile_background_color": "FFFFFF",
		"profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_tile": false,
		"profile_link_color": "0084B4",
		"profile_sidebar_border_color": "FFFFFF",
		"profile_sidebar_fill_color": "DDEEF6",
		"profile_text_color": "333333",
		"profile_use_background_image": false,
		"profile_image_url": "http://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_image_url_https": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_banner_url": "https://pbs.twimg.com/profile_banners/2244994945/1594913664",
		"default_profile": false,
		"default_profile_image": false,
		"following": null,
		"follow_request_sent": null,
		"notifications": null
	},
	"geo": null,
	"coordinates": null,
	"place": null,
	"contributors": null,
	"is_quote_status": false,
	"quote_count": 1,
	"reply_count": 2,
	"retweet_count": 11,
	"favorite_count": 70,
	"entities": {
		"hashtags": [],
		"urls": [{
			"url": "https://t.co/oeF3ZHeKQQ",
			"expanded_url": "https://dev.to/twitterdev/understanding-the-new-tweet-payload-in-the-twitter-api-v2-1fg5",
			"display_url": "dev.to/twitterdev/und…",
			"unwound": {
				"url": "https://dev.to/twitterdev/understanding-the-new-tweet-payload-in-the-twitter-api-v2-1fg5",
				"status": 200,
				"title": "Entender el nuevo payload de Tweet en X API v2",
				"description": "X anunció recientemente la nueva X API v2, reconstruida desde cero para ofrecer nuevas funciones..."
			},
			"indices": [
				74,
				97
			]
		}],
		"user_mentions": [],
		"symbols": []
	},
	"favorited": false,
	"retweeted": false,
	"possibly_sensitive": false,
	"filter_level": "low",
	"lang": "en",
	"matching_rules": [{
		"tag": null
	}]
}

Responder a un Post

{
	"created_at": "Fri Aug 21 19:10:05 +0000 2020",
	"id": 1296887316556980200,
	"id_str": "1296887316556980230",
	"text": "Descubre cómo @PennMedCDH utiliza datos de X para comprender la crisis sanitaria de COVID-19 📊\n\nhttps://t.co/1tdA8uDWes",
	"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">App web de X</a>",
	"truncated": false,
	"in_reply_to_status_id": 1296887091901718500,
	"in_reply_to_status_id_str": "1296887091901718529",
	"in_reply_to_user_id": 2244994945,
	"in_reply_to_user_id_str": "2244994945",
	"in_reply_to_screen_name": "XDevelopers",
	"user": {
		"id": 2244994945,
		"id_str": "2244994945",
		"name": "X Dev",
		"screen_name": "XDevelopers",
		"location": "127.0.0.1",
		"url": "https://developer.x.com/en/community",
		"description": "La voz del equipo #XDevelopers y tu fuente oficial de actualizaciones, noticias y eventos relacionados con #XAPI.",
		"translator_type": "regular",
		"protected": false,
		"verified": true,
		"followers_count": 512292,
		"friends_count": 2038,
		"listed_count": 1666,
		"favourites_count": 2147,
		"statuses_count": 3634,
		"created_at": "Sat Dec 14 04:35:55 +0000 2013",
		"utc_offset": null,
		"time_zone": null,
		"geo_enabled": true,
		"lang": null,
		"contributors_enabled": false,
		"is_translator": false,
		"profile_background_color": "FFFFFF",
		"profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_tile": false,
		"profile_link_color": "0084B4",
		"profile_sidebar_border_color": "FFFFFF",
		"profile_sidebar_fill_color": "DDEEF6",
		"profile_text_color": "333333",
		"profile_use_background_image": false,
		"profile_image_url": "http://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_image_url_https": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_banner_url": "https://pbs.twimg.com/profile_banners/2244994945/1594913664",
		"default_profile": false,
		"default_profile_image": false,
		"following": null,
		"follow_request_sent": null,
		"notifications": null
	},
	"geo": null,
	"coordinates": null,
	"place": null,
	"contributors": null,
	"is_quote_status": false,
	"quote_count": 2,
	"reply_count": 3,
	"retweet_count": 9,
	"favorite_count": 26,
	"entities": {
		"hashtags": [],
		"urls": [{
			"url": "https://t.co/1tdA8uDWes",
			"expanded_url": "https://developer.x.com/en/use-cases/success-stories/penn",
			"display_url": "developer.x.com/en/use-cases/s…",
			"unwound": {
				"url": "https://developer.x.com/en/use-cases/success-stories/penn",
				"status": 200,
				"title": "Centro de Salud Digital de Penn Medicine",
				"description": "El Centro de Salud Digital de Penn Med ha creado un mapa de X sobre COVID-19 que incluye gráficos con detalles sobre el sentimiento, los síntomas reportados, datos desglosados por estado y datos fronterizos sobre el brote de COVID-19. Además, su iniciativa Penn Med With You utiliza información regional agregada de X para alimentar su sitio web y servicio de mensajería de texto. El servicio utiliza esta información para difundir recursos relevantes y oportunos."
			},
			"indices": [
				87,
				110
			]
		}],
		"user_mentions": [{
			"screen_name": "PennMedCDH",
			"name": "Penn Med CDH",
			"id": 1615654896,
			"id_str": "1615654896",
			"indices": [
				8,
				19
			]
		}],
		"symbols": []
	},
	"favorited": false,
	"retweeted": false,
	"possibly_sensitive": false,
	"filter_level": "low",
	"lang": "en",
	"matching_rules": [{
		"tag": null
	}]
}

Publicación extendida

{
	"created_at": "Wed Aug 19 16:26:16 +0000 2020",
	"id": 1296121314218897400,
	"id_str": "1296121314218897408",
	"text": "¡El endpoint para ocultar respuestas se lanza hoy! \n\nLos desarrolladores pueden ocultar respuestas a Tweets, una forma crucial en que los desarrolladores pu… https://t.co/VyfXs1RTXn",
	"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">App web de X</a>",
	"truncated": true,
	"in_reply_to_status_id": null,
	"in_reply_to_status_id_str": null,
	"in_reply_to_user_id": null,
	"in_reply_to_user_id_str": null,
	"in_reply_to_screen_name": null,
	"user": {
		"id": 2244994945,
		"id_str": "2244994945",
		"name": "X Dev",
		"screen_name": "XDevelopers",
		"location": "127.0.0.1",
		"url": "https://developer.x.com/en/community",
		"description": "La voz del equipo #XDevelopers y tu fuente oficial de actualizaciones, noticias y eventos relacionados con la #XAPI.",
		"translator_type": "regular",
		"protected": false,
		"verified": true,
		"followers_count": 512292,
		"friends_count": 2038,
		"listed_count": 1666,
		"favourites_count": 2147,
		"statuses_count": 3634,
		"created_at": "Sat Dec 14 04:35:55 +0000 2013",
		"utc_offset": null,
		"time_zone": null,
		"geo_enabled": true,
		"lang": null,
		"contributors_enabled": false,
		"is_translator": false,
		"profile_background_color": "FFFFFF",
		"profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_tile": false,
		"profile_link_color": "0084B4",
		"profile_sidebar_border_color": "FFFFFF",
		"profile_sidebar_fill_color": "DDEEF6",
		"profile_text_color": "333333",
		"profile_use_background_image": false,
		"profile_image_url": "http://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_image_url_https": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_banner_url": "https://pbs.twimg.com/profile_banners/2244994945/1594913664",
		"default_profile": false,
		"default_profile_image": false,
		"following": null,
		"follow_request_sent": null,
		"notifications": null
	},
	"geo": null,
	"coordinates": null,
	"place": null,
	"contributors": null,
	"is_quote_status": false,
	"extended_tweet": {
		"full_text": "¡El endpoint para ocultar respuestas se lanza hoy! \n\nLos desarrolladores pueden ocultar respuestas a Tweets, una forma crucial en que los desarrolladores pueden ayudar a mejorar la salud de la conversación pública usando la #XAPI.\n\nhttps://t.co/khXhTurm9x",
		"display_text_range": [
			0,
			215
		],
		"entities": {
			"hashtags": [{
				"text": "XAPI",
				"indices": [
					178,
					189
				]
			}],
			"urls": [{
				"url": "https://t.co/khXhTurm9x",
				"expanded_url": "https://devcommunity.x.com/t/hide-replies-now-available-in-the-new-twitter-api/140996",
				"display_url": "devcommunity.com/t/hide-replies…",
				"unwound": {
					"url": "https://devcommunity.x.com/t/hide-replies-now-available-in-the-new-twitter-api/140996",
					"status": 200,
					"title": "Ocultar respuestas ya disponible en la nueva X API",
					"description": "Hoy nos complace anunciar la disponibilidad general del endpoint para ocultar respuestas en la nueva X API. El endpoint para ocultar respuestas te permite crear herramientas que ayuden a las personas a ocultar o mostrar respuestas a sus Tweets. Las personas gestionan sus respuestas por muchas razones, incluyendo dar menos atención a comentarios abusivos, que distraen, engañosos o para hacer las conversaciones más interesantes. A través de este endpoint, puedes crear herramientas para ayudar a las personas en X a ocultar o mostrar respuestas de forma más rápida y..."
				},
				"indices": [
					192,
					215
				]
			}],
			"user_mentions": [],
			"symbols": []
		}
	},
	"quote_count": 23,
	"reply_count": 9,
	"retweet_count": 54,
	"favorite_count": 172,
	"entities": {
		"hashtags": [],
		"urls": [{
			"url": "https://t.co/VyfXs1RTXn",
			"expanded_url": "https://x.com/i/web/status/1296121314218897408",
			"display_url": "x.com/i/web/status/1…",
			"indices": [
				117,
				140
			]
		}],
		"user_mentions": [],
		"symbols": []
	},
	"favorited": false,
	"retweeted": false,
	"possibly_sensitive": false,
	"filter_level": "low",
	"lang": "en",
	"matching_rules": [{
		"tag": null
	}]
}

Publicación con extended_entities

{
	"created_at": "Wed Aug 12 17:01:42 +0000 2020",
	"id": 1293593516040269800,
	"id_str": "1293593516040269825",
	"text": "¡Por fin llegó! 🥁 Dale la bienvenida a la nueva #XAPI.\n\nEstamos reconstruyendo la X API v2 desde cero para b… https://t.co/UeCndQGMjx",
	"display_text_range": [
		0,
		140
	],
	"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">App Web de X</a>",
	"truncated": true,
	"in_reply_to_status_id": null,
	"in_reply_to_status_id_str": null,
	"in_reply_to_user_id": null,
	"in_reply_to_user_id_str": null,
	"in_reply_to_screen_name": null,
	"user": {
		"id": 2244994945,
		"id_str": "2244994945",
		"name": "X Dev",
		"screen_name": "XDevelopers",
		"location": "127.0.0.1",
		"url": "https://developer.x.com/en/community",
		"description": "La voz del equipo de #XDevelopers y tu fuente oficial de actualizaciones, noticias y eventos relacionados con la #XAPI.",
		"translator_type": "regular",
		"protected": false,
		"verified": true,
		"followers_count": 512292,
		"friends_count": 2038,
		"listed_count": 1666,
		"favourites_count": 2147,
		"statuses_count": 3634,
		"created_at": "Sat Dec 14 04:35:55 +0000 2013",
		"utc_offset": null,
		"time_zone": null,
		"geo_enabled": true,
		"lang": null,
		"contributors_enabled": false,
		"is_translator": false,
		"profile_background_color": "FFFFFF",
		"profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_tile": false,
		"profile_link_color": "0084B4",
		"profile_sidebar_border_color": "FFFFFF",
		"profile_sidebar_fill_color": "DDEEF6",
		"profile_text_color": "333333",
		"profile_use_background_image": false,
		"profile_image_url": "http://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_image_url_https": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_banner_url": "https://pbs.twimg.com/profile_banners/2244994945/1594913664",
		"default_profile": false,
		"default_profile_image": false,
		"following": null,
		"follow_request_sent": null,
		"notifications": null
	},
	"geo": null,
	"coordinates": null,
	"place": null,
	"contributors": null,
	"is_quote_status": false,
	"extended_tweet": {
		"full_text": "¡Por fin llegó! 🥁 Dale la bienvenida a la nueva #XAPI.\n\nEstamos reconstruyendo la X API v2 desde cero para servir mejor a nuestra comunidad de desarrolladores. Y el lanzamiento de hoy es solo el comienzo.\n\nhttps://t.co/32VrwpGaJw https://t.co/KaFSbjWUA8",
		"display_text_range": [
			0,
			218
		],
		"entities": {
			"hashtags": [{
				"text": "XAPI",
				"indices": [
					42,
					53
				]
			}],
			"urls": [{
				"url": "https://t.co/32VrwpGaJw",
				"expanded_url": "https://blog.x.com/developer/en_us/topics/tools/2020/introducing_new_twitter_api.html",
				"display_url": "blog.x.com/developer/en_u…",
				"unwound": {
					"url": "https://blog.x.com/developer/en_us/topics/tools/2020/introducing_new_twitter_api.html",
					"status": 200,
					"title": "Presentamos una X API nueva y mejorada",
					"description": "Presentamos la nueva X API: reconstruida desde cero para ofrecer nuevas funcionalidades más rápido, de modo que los desarrolladores puedan ayudar al mundo a conectarse con la conversación pública que ocurre en X.",
				},
				"indices": [
					195,
					218
				]
			}],
			"user_mentions": [],
			"symbols": [],
			"media": [{
				"id": 1293565706408038400,
				"id_str": "1293565706408038401",
				"indices": [
					219,
					242
				],
				"additional_media_info": {
					"monetizable": false
				},
				"media_url": "http://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
				"media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
				"url": "https://t.co/KaFSbjWUA8",
				"display_url": "pic.x.com/KaFSbjWUA8",
				"expanded_url": "https://x.com/XDevelopers/status/1293593516040269825/video/1",
				"type": "video",
				"video_info": {
					"aspect_ratio": [
						16,
						9
					],
					"duration_millis": 34875,
					"variants": [{
							"bitrate": 256000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/480x270/Fg9lnGGsITO0uq2K.mp4?tag=10"
						},
						{
							"bitrate": 832000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/640x360/-crbtZE4y8vKN_uF.mp4?tag=10"
						},
						{
							"content_type": "application/x-mpegURL",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/pl/OvIqQojosF6sMIHR.m3u8?tag=10"
						},
						{
							"bitrate": 2176000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/1280x720/xkxyb-VPVY4OI0j9.mp4?tag=10"
						}
					]
				},
				"sizes": {
					"thumb": {
						"w": 150,
						"h": 150,
						"resize": "recortar"
					},
					"medium": {
						"w": 1200,
						"h": 675,
						"resize": "ajustar"
					},
					"small": {
						"w": 680,
						"h": 383,
						"resize": "ajustar"
					},
					"large": {
						"w": 1280,
						"h": 720,
						"resize": "ajustar"
					}
				}
			}]
		},
		"extended_entities": {
			"media": [{
				"id": 1293565706408038400,
				"id_str": "1293565706408038401",
				"indices": [
					219,
					242
				],
				"additional_media_info": {
					"monetizable": false
				},
				"media_url": "http://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
				"media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
				"url": "https://t.co/KaFSbjWUA8",
				"display_url": "pic.x.com/KaFSbjWUA8",
				"expanded_url": "https://x.com/XDevelopers/status/1293593516040269825/video/1",
				"type": "video",
				"video_info": {
					"aspect_ratio": [
						16,
						9
					],
					"duration_millis": 34875,
					"variants": [{
							"bitrate": 256000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/480x270/Fg9lnGGsITO0uq2K.mp4?tag=10"
						},
						{
							"bitrate": 832000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/640x360/-crbtZE4y8vKN_uF.mp4?tag=10"
						},
						{
							"content_type": "application/x-mpegURL",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/pl/OvIqQojosF6sMIHR.m3u8?tag=10"
						},
						{
							"bitrate": 2176000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/1280x720/xkxyb-VPVY4OI0j9.mp4?tag=10"
						}
					]
				},
				"sizes": {
					"thumb": {
						"w": 150,
						"h": 150,
						"resize": "crop"
					},
					"medium": {
						"w": 1200,
						"h": 675,
						"resize": "fit"
					},
					"small": {
						"w": 680,
						"h": 383,
						"resize": "fit"
					},
					"large": {
						"w": 1280,
						"h": 720,
						"resize": "fit"
					}
				}
			}]
		}
	},
	"quote_count": 332,
	"reply_count": 172,
	"retweet_count": 958,
	"favorite_count": 2844,
	"entities": {
		"hashtags": [{
			"text": "XAPI",
			"indices": [
				42,
				53
			]
		}],
		"urls": [{
			"url": "https://t.co/UeCndQGMjx",
			"expanded_url": "https://x.com/i/web/status/1293593516040269825",
			"display_url": "x.com/i/web/status/1…",
			"indices": [
				117,
				140
			]
		}],
		"user_mentions": [],
		"symbols": []
	},
	"favorited": false,
	"retweeted": false,
	"possibly_sensitive": false,
	"filter_level": "low",
	"lang": "en",
	"matching_rules": [{
		"tag": null
	}]
}

Retweet

{
	"created_at": "Tue Feb 18 19:33:59 +0000 2020",
	"id": 1229851574555508700,
	"id_str": "1229851574555508737",
	"text": "RT @suhemparack: Creé una Alexa Skill para X usando APL que te permite ver Tweets y Tendencias en el echo show.\n\nÉchale un vistazo aquí…",
	"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">App web de X</a>",
	"truncated": false,
	"in_reply_to_status_id": null,
	"in_reply_to_status_id_str": null,
	"in_reply_to_user_id": null,
	"in_reply_to_user_id_str": null,
	"in_reply_to_screen_name": null,
	"user": {
		"id": 2244994945,
		"id_str": "2244994945",
		"name": "X Dev",
		"screen_name": "X Developers",
		"location": "127.0.0.1",
		"url": "https://developer.x.com/en/community",
		"description": "La voz del equipo de #XDevelopers y tu fuente oficial de actualizaciones, noticias y eventos relacionados con la #XAPI.",
		"translator_type": "regular",
		"protected": false,
		"verified": true,
		"followers_count": 512292,
		"friends_count": 2038,
		"listed_count": 1666,
		"favourites_count": 2147,
		"statuses_count": 3634,
		"created_at": "Sat Dec 14 04:35:55 +0000 2013",
		"utc_offset": null,
		"time_zone": null,
		"geo_enabled": true,
		"lang": null,
		"contributors_enabled": false,
		"is_translator": false,
		"profile_background_color": "FFFFFF",
		"profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_tile": false,
		"profile_link_color": "0084B4",
		"profile_sidebar_border_color": "FFFFFF",
		"profile_sidebar_fill_color": "DDEEF6",
		"profile_text_color": "333333",
		"profile_use_background_image": false,
		"profile_image_url": "http://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_image_url_https": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_banner_url": "https://pbs.twimg.com/profile_banners/2244994945/1594913664",
		"default_profile": false,
		"default_profile_image": false,
		"following": null,
		"follow_request_sent": null,
		"notifications": null
	},
	"geo": null,
	"coordinates": null,
	"place": null,
	"contributors": null,
	"retweeted_status": {
		"created_at": "Tue Feb 18 19:01:58 +0000 2020",
		"id": 1229843515603144700,
		"id_str": "1229843515603144704",
		"text": "Creé una Alexa Skill para X usando APL que te permite ver Tweets y Tendencias en el echo show.\n\nÉchale un vistazo… https://t.co/RP9NgltX7i",
		"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">App web de X</a>",
		"truncated": true,
		"in_reply_to_status_id": null,
		"in_reply_to_status_id_str": null,
		"in_reply_to_user_id": null,
		"in_reply_to_user_id_str": null,
		"in_reply_to_screen_name": null,
		"user": {
			"id": 857699969263964200,
			"id_str": "857699969263964161",
			"name": "Suhem Parack",
			"screen_name": "suhemparack",
			"location": "Seattle, WA",
			"url": "https://developer.x.com",
			"description": "Relaciones con desarrolladores para investigación académica @X. Háblame sobre investigación con datos de X. Anteriormente: Amazon Alexa. Las opiniones son propias",
			"translator_type": "none",
			"protected": false,
			"verified": false,
			"followers_count": 732,
			"friends_count": 501,
			"listed_count": 12,
			"favourites_count": 358,
			"statuses_count": 458,
			"created_at": "Thu Apr 27 20:56:22 +0000 2017",
			"utc_offset": null,
			"time_zone": null,
			"geo_enabled": false,
			"lang": null,
			"contributors_enabled": false,
			"is_translator": false,
			"profile_background_color": "F5F8FA",
			"profile_background_image_url": "",
			"profile_background_image_url_https": "",
			"profile_background_tile": false,
			"profile_link_color": "1DA1F2",
			"profile_sidebar_border_color": "C0DEED",
			"profile_sidebar_fill_color": "DDEEF6",
			"profile_text_color": "333333",
			"profile_use_background_image": true,
			"profile_image_url": "http://pbs.twimg.com/profile_images/1230703695051935747/TbQKe91L_normal.jpg",
			"profile_image_url_https": "https://pbs.twimg.com/profile_images/1230703695051935747/TbQKe91L_normal.jpg",
			"profile_banner_url": "https://pbs.twimg.com/profile_banners/857699969263964161/1593055939",
			"default_profile": true,
			"default_profile_image": false,
			"following": null,
			"follow_request_sent": null,
			"notifications": null
		},
		"geo": null,
		"coordinates": null,
		"place": null,
		"contributors": null,
		"is_quote_status": false,
		"extended_tweet": {
			"full_text": "Creé una Alexa Skill para X usando APL que te permite ver Tweets y Tendencias en el echo show.\n\nÉchale un vistazo aquí 👇\n\nhttps://t.co/l5J8wq748G",
			"display_text_range": [
				0,
				150
			],
			"entities": {
				"hashtags": [],
				"urls": [{
					"url": "https://t.co/l5J8wq748G",
					"expanded_url": "https://dev.to/twitterdev/building-an-alexa-skill-for-twitter-using-alexa-presentation-language-1aj0",
					"display_url": "dev.to/twitterdev/bui…",
					"unwound": {
						"url": "https://dev.to/twitterdev/building-an-alexa-skill-for-twitter-using-alexa-presentation-language-1aj0",
						"status": 200,
						"title": null,
						"description": null
					},
					"indices": [
						127,
						150
					]
				}],
				"user_mentions": [],
				"symbols": []
			}
		},
		"quote_count": 6,
		"reply_count": 1,
		"retweet_count": 19,
		"favorite_count": 71,
		"entities": {
			"hashtags": [],
			"urls": [{
				"url": "https://t.co/RP9NgltX7i",
				"expanded_url": "https://x.com/i/web/status/1229843515603144704",
				"display_url": "x.com/i/web/status/1…",
				"indices": [
					116,
					139
				]
			}],
			"user_mentions": [],
			"symbols": []
		},
		"favorited": false,
		"retweeted": false,
		"possibly_sensitive": false,
		"filter_level": "low",
		"lang": "en"
	},
	"is_quote_status": false,
	"quote_count": 0,
	"reply_count": 0,
	"retweet_count": 0,
	"favorite_count": 0,
	"entities": {
		"hashtags": [],
		"urls": [],
		"user_mentions": [{
			"screen_name": "suhemparack",
			"name": "Suhem Parack",
			"id": 857699969263964200,
			"id_str": "857699969263964161",
			"indices": [
				3,
				15
			]
		}],
		"symbols": []
	},
	"favorited": false,
	"retweeted": false,
	"filter_level": "low",
	"lang": "en",
	"matching_rules": [{
		"tag": null
	}]
}

Citar Tweet

{
	"created_at": "Mon Nov 16 18:09:36 +0000 2020",
	"id": 1328399838128468000,
	"id_str": "1328399838128467969",
	"text": "Según lo previsto, los endpoints de Labs v2 mencionados a continuación ya se retiraron. Cuéntanos en los foros si t… https://t.co/ahQvTYaOcZ",
	"display_text_range": [
		0,
		140
	],
	"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">App web de X</a>",
	"truncated": true,
	"in_reply_to_status_id": null,
	"in_reply_to_status_id_str": null,
	"in_reply_to_user_id": null,
	"in_reply_to_user_id_str": null,
	"in_reply_to_screen_name": null,
	"user": {
		"id": 2244994945,
		"id_str": "2244994945",
		"name": "X Dev",
		"screen_name": "XDevelopers",
		"location": "127.0.0.1",
		"url": "https://developer.x.com/en/community",
		"description": "La voz del equipo #XDevelopers y tu fuente oficial de actualizaciones, noticias y eventos relacionados con la #XAPI.",
		"translator_type": "regular",
		"protected": false,
		"verified": true,
		"followers_count": 512292,
		"friends_count": 2038,
		"listed_count": 1666,
		"favourites_count": 2147,
		"statuses_count": 3634,
		"created_at": "Sat Dec 14 04:35:55 +0000 2013",
		"utc_offset": null,
		"time_zone": null,
		"geo_enabled": true,
		"lang": null,
		"contributors_enabled": false,
		"is_translator": false,
		"profile_background_color": "FFFFFF",
		"profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png",
		"profile_background_tile": false,
		"profile_link_color": "0084B4",
		"profile_sidebar_border_color": "FFFFFF",
		"profile_sidebar_fill_color": "DDEEF6",
		"profile_text_color": "333333",
		"profile_use_background_image": false,
		"profile_image_url": "http://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_image_url_https": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"profile_banner_url": "https://pbs.twimg.com/profile_banners/2244994945/1594913664",
		"default_profile": false,
		"default_profile_image": false,
		"following": null,
		"follow_request_sent": null,
		"notifications": null
	},
	"geo": null,
	"coordinates": null,
	"place": null,
	"contributors": null,
	"quoted_status_id": 1327011423252144000,
	"quoted_status_id_str": "1327011423252144128",
	"quoted_status": {
		"created_at": "Thu Nov 12 22:12:32 +0000 2020",
		"id": 1327011423252144000,
		"id_str": "1327011423252144128",
		"text": "👋 Recordatorio: las funciones ocultar respuestas y búsqueda reciente de X Developer Labs v2 se retirarán el próximo lunes, nove… https://t.co/EEWN2Q9aXh",
		"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">App web de X</a>",
		"truncated": true,
		"in_reply_to_status_id": null,
		"in_reply_to_status_id_str": null,
		"in_reply_to_user_id": null,
		"in_reply_to_user_id_str": null,
		"in_reply_to_screen_name": null,
		"user": {
			"id": 2244994945,
			"id_str": "2244994945",
			"name": "X Dev",
			"screen_name": "XDevelopers",
			"location": "127.0.0.1",
			"url": "https://developer.x.com/en/community",
			"description": "La voz del equipo #XDevelopers y tu fuente oficial de actualizaciones, noticias y eventos relacionados con la #XAPI.",
			"translator_type": "regular",
			"protected": false,
			"verified": true,
			"followers_count": 512292,
			"friends_count": 2038,
			"listed_count": 1666,
			"favourites_count": 2147,
			"statuses_count": 3634,
			"created_at": "Sat Dec 14 04:35:55 +0000 2013",
			"utc_offset": null,
			"time_zone": null,
			"geo_enabled": true,
			"lang": null,
			"contributors_enabled": false,
			"is_translator": false,
			"profile_background_color": "FFFFFF",
			"profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png",
			"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png",
			"profile_background_tile": false,
			"profile_link_color": "0084B4",
			"profile_sidebar_border_color": "FFFFFF",
			"profile_sidebar_fill_color": "DDEEF6",
			"profile_text_color": "333333",
			"profile_use_background_image": false,
			"profile_image_url": "http://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
			"profile_image_url_https": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
			"profile_banner_url": "https://pbs.twimg.com/profile_banners/2244994945/1594913664",
			"default_profile": false,
			"default_profile_image": false,
			"following": null,
			"follow_request_sent": null,
			"notifications": null
		},
		"geo": null,
		"coordinates": null,
		"place": null,
		"contributors": null,
		"is_quote_status": false,
		"extended_tweet": {
			"full_text": "👋 Recordatorio: las funciones ocultar respuestas y búsqueda reciente de X Developer Labs v2 se retirarán el próximo lunes 16 de noviembre. Te recomendamos migrar a los nuevos endpoints de ocultar respuestas y búsqueda reciente ya disponibles en la #XAPI v2. Detalles: https://t.co/r6z6CI7kEy",
			"display_text_range": [
				0,
				273
			],
			"entities": {
				"hashtags": [{
					"text": "XAPI",
					"indices": [
						228,
						239
					]
				}],
				"urls": [{
					"url": "https://t.co/r6z6CI7kEy",
					"expanded_url": "https://devcommunity.x.com/t/retiring-labs-v2-recent-search-and-hide-replies/145795",
					"display_url": "devcommunity.com/t/retiring-lab…",
					"unwound": {
						"url": "https://devcommunity.x.com/t/retiring-labs-v2-recent-search-and-hide-replies/145795",
						"status": 200,
						"title": "Retiro de búsqueda reciente y ocultar respuestas de Labs v2",
						"description": "As we said in our Early Access and hide replies announcements, the following X Developer Labs v2 endpoints will be retired on November 16th. Labs v2 recent search Labs v2 hide replies If called, these endpoints will respond with an HTTP 410 status and return no data. Based on your feedback from Labs, we incorporated corresponding functionality into the X API v2. The relevant documentation can be found using the links below. Click here to enroll in v2 access if you haven’t already..."
					},
					"indices": [
						250,
						273
					]
				}],
				"user_mentions": [],
				"symbols": []
			}
		},
		"quote_count": 4,
		"reply_count": 2,
		"retweet_count": 8,
		"favorite_count": 33,
		"entities": {
			"hashtags": [],
			"urls": [{
				"url": "https://t.co/EEWN2Q9aXh",
				"expanded_url": "https://x.com/i/web/status/1327011423252144128",
				"display_url": "x.com/i/web/status/1…",
				"indices": [
					117,
					140
				]
			}],
			"user_mentions": [],
			"symbols": []
		},
		"favorited": false,
		"retweeted": false,
		"possibly_sensitive": false,
		"filter_level": "low",
		"lang": "en"
	},
	"quoted_status_permalink": {
		"url": "https://t.co/JaxttUMmjX",
		"expanded": "https://x.com/XDevelopers/status/1327011423252144128",
		"display": "x.com/XDevelopers/sta…"
	},
	"is_quote_status": true,
	"extended_tweet": {
		"full_text": "Según lo planeado, los endpoints de Labs v2 mencionados a continuación han sido retirados. Infórmanos en los foros si tienes preguntas o necesitas ayuda con X API v2. https://t.co/JaxttUMmjX",
		"display_text_range": [
			0,
			166
		],
		"entities": {
			"hashtags": [],
			"urls": [{
				"url": "https://t.co/JaxttUMmjX",
				"expanded_url": "https://x.com/XDevelopers/status/1327011423252144128",
				"display_url": "x.com/XDevelopers/sta…",
				"indices": [
					167,
					190
				]
			}],
			"user_mentions": [],
			"symbols": []
		}
	},
	"quote_count": 1,
	"reply_count": 4,
	"retweet_count": 7,
	"favorite_count": 29,
	"entities": {
		"hashtags": [],
		"urls": [{
			"url": "https://t.co/ahQvTYaOcZ",
			"expanded_url": "https://x.com/i/web/status/1328399838128467969",
			"display_url": "x.com/i/web/status/1…",
			"indices": [
				117,
				140
			]
		}],
		"user_mentions": [],
		"symbols": []
	},
	"favorited": false,
	"retweeted": false,
	"possibly_sensitive": false,
	"filter_level": "low",
	"lang": "en",
	"matching_rules": [{
		"tag": null
	}]
}

Cita de Tweet retuiteada

{
 	"created_at": "Thu Feb 06 17:26:44 +0000 2020",
 	"id": 1225470895902412800,
 	"id_str": "1225470895902412800",
 	"text": "RT @AureliaSpecker: 📣 Si te gustó el tutorial sobre el trayecto en Londres que escribí en noviembre del año pasado, revisa la versión refactorizada que usa…",
 	"source": "<a href=\"http://x.com/download/iphone\" rel=\"nofollow\">X para iPhone</a>",
 	"truncated": false,
 	"in_reply_to_status_id": null,
 	"in_reply_to_status_id_str": null,
 	"in_reply_to_user_id": null,
 	"in_reply_to_user_id_str": null,
 	"in_reply_to_screen_name": null,
 	"user": {
 		"id": 2244994945,
 		"id_str": "2244994945",
 		"name": "X Dev",
 		"screen_name": "XDevelopers",
 		"location": "127.0.0.1",
 		"url": "https://developer.x.com/en/community",
 		"description": "La voz del equipo de #XDevelopers y tu fuente oficial de actualizaciones, noticias y eventos relacionados con la #XAPI.",
 		"translator_type": "regular",
 		"protected": false,
 		"verified": true,
 		"followers_count": 512292,
 		"friends_count": 2038,
 		"listed_count": 1666,
 		"favourites_count": 2147,
 		"statuses_count": 3634,
 		"created_at": "Sat Dec 14 04:35:55 +0000 2013",
 		"utc_offset": null,
 		"time_zone": null,
 		"geo_enabled": true,
 		"lang": null,
 		"contributors_enabled": false,
 		"is_translator": false,
 		"profile_background_color": "FFFFFF",
 		"profile_background_image_url": "http://abs.twimg.com/images/themes/theme1/bg.png",
 		"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme1/bg.png",
 		"profile_background_tile": false,
 		"profile_link_color": "0084B4",
 		"profile_sidebar_border_color": "FFFFFF",
 		"profile_sidebar_fill_color": "DDEEF6",
 		"profile_text_color": "333333",
 		"profile_use_background_image": false,
 		"profile_image_url": "http://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
 		"profile_image_url_https": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
 		"profile_banner_url": "https://pbs.twimg.com/profile_banners/2244994945/1594913664",
 		"default_profile": false,
 		"default_profile_image": false,
 		"following": null,
 		"follow_request_sent": null,
 		"notifications": null
 	},
 	"geo": null,
 	"coordinates": null,
 	"place": null,
 	"contributors": null,
 	"retweeted_status": {
 		"created_at": "Tue Feb 04 15:01:25 +0000 2020",
 		"id": 1224709550214873000,
 		"id_str": "1224709550214873090",
 		"text": "📣 Si te gustó el tutorial sobre el trayecto en Londres que escribí en noviembre del año pasado, revisa la versión refactorizada que u… https://t.co/cAepHunkFp",
 		"display_text_range": [
 			0,
 			140
 		],
 		"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">Aplicación web de X</a>",
 		"truncated": true,
 		"in_reply_to_status_id": null,
 		"in_reply_to_status_id_str": null,
 		"in_reply_to_user_id": null,
 		"in_reply_to_user_id_str": null,
 		"in_reply_to_screen_name": null,
 		"user": {
 			"id": 1102321381,
 			"id_str": "1102321381",
 			"name": "Aurelia Specker",
 			"screen_name": "AureliaSpecker",
 			"location": "London, UK",
 			"url": null,
 			"description": "devrel @TwitterUK • Suiza en Londres • madre de plantas de interior • peluquera personal de @_dormrod",
 			"translator_type": "none",
 			"protected": false,
 			"verified": false,
 			"followers_count": 1032,
 			"friends_count": 1331,
 			"listed_count": 26,
 			"favourites_count": 4979,
 			"statuses_count": 854,
 			"created_at": "Fri Jan 18 23:45:43 +0000 2013",
 			"utc_offset": null,
 			"time_zone": null,
 			"geo_enabled": true,
 			"lang": null,
 			"contributors_enabled": false,
 			"is_translator": false,
 			"profile_background_color": "8B542B",
 			"profile_background_image_url": "http://abs.twimg.com/images/themes/theme8/bg.gif",
 			"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme8/bg.gif",
 			"profile_background_tile": false,
 			"profile_link_color": "5E341C",
 			"profile_sidebar_border_color": "D9B17E",
 			"profile_sidebar_fill_color": "EADEAA",
 			"profile_text_color": "333333",
 			"profile_use_background_image": true,
 			"profile_image_url": "http://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
 			"profile_image_url_https": "https://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
 			"profile_banner_url": "https://pbs.twimg.com/profile_banners/1102321381/1587552672",
 			"default_profile": false,
 			"default_profile_image": false,
 			"following": null,
 			"follow_request_sent": null,
 			"notifications": null
 		},
 		"geo": null,
 		"coordinates": null,
 		"place": null,
 		"contributors": null,
 		"quoted_status_id": 1195000047089389600,
 		"quoted_status_id_str": "1195000047089389573",
 		"quoted_status": {
 			"created_at": "Thu Nov 14 15:26:27 +0000 2019",
 			"id": 1195000047089389600,
 			"id_str": "1195000047089389573",
 			"text": "Escribí un tutorial sobre cómo obtener información personalizada de trayectos usando la X API🚇\n\n#DEVcommunity #Pythontutorial… https://t.co/pL0qJ4vhtE",
 			"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">Aplicación web de X</a>",
 			"truncated": true,
 			"in_reply_to_status_id": null,
 			"in_reply_to_status_id_str": null,
 			"in_reply_to_user_id": null,
 			"in_reply_to_user_id_str": null,
 			"in_reply_to_screen_name": null,
 			"user": {
 				"id": 1102321381,
 				"id_str": "1102321381",
 				"name": "Aurelia Specker",
 				"screen_name": "AureliaSpecker",
 				"location": "London, UK",
 				"url": null,
 				"description": "devrel @TwitterUK • Suiza en Londres • madre de plantas de interior • peluquera personal de @_dormrod",
 				"translator_type": "none",
 				"protected": false,
 				"verified": false,
 				"followers_count": 1032,
 				"friends_count": 1331,
 				"listed_count": 26,
 				"favourites_count": 4979,
 				"statuses_count": 854,
 				"created_at": "Fri Jan 18 23:45:43 +0000 2013",
 				"utc_offset": null,
 				"time_zone": null,
 				"geo_enabled": true,
 				"lang": null,
 				"contributors_enabled": false,
 				"is_translator": false,
 				"profile_background_color": "8B542B",
 				"profile_background_image_url": "http://abs.twimg.com/images/themes/theme8/bg.gif",
 				"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme8/bg.gif",
 				"profile_background_tile": false,
 				"profile_link_color": "5E341C",
 				"profile_sidebar_border_color": "D9B17E",
 				"profile_sidebar_fill_color": "EADEAA",
 				"profile_text_color": "333333",
 				"profile_use_background_image": true,
 				"profile_image_url": "http://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
 				"profile_image_url_https": "https://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
 				"profile_banner_url": "https://pbs.twimg.com/profile_banners/1102321381/1587552672",
 				"default_profile": false,
 				"default_profile_image": false,
 				"following": null,
 				"follow_request_sent": null,
 				"notifications": null
 			},
 			"geo": null,
 			"coordinates": null,
 			"place": null,
 			"contributors": null,
 			"is_quote_status": false,
 			"extended_tweet": {
 				"full_text": "Escribí un tutorial sobre cómo obtener información personalizada de tus desplazamientos usando la X API🚇\n\n#DEVcommunity #Pythontutorial \n\nÉchale un vistazo aquí 👇\nhttps://t.co/sOjXW4YhbN",
 				"display_text_range": [
 					0,
 					160
 				],
 				"entities": {
 					"hashtags": [{
 							"text": "DEVcommunity",
 							"indices": [
 								85,
 								98
 							]
 						},
 						{
 							"text": "Pythontutorial",
 							"indices": [
 								99,
 								114
 							]
 						}
 					],
 					"urls": [{
 						"url": "https://t.co/sOjXW4YhbN",
 						"expanded_url": "https://dev.to/twitterdev/using-the-twitter-api-to-make-your-commute-easier-3od0",
 						"display_url": "dev.to/twitterdev/usi…",
 						"unwound": {
 							"url": "https://dev.to/twitterdev/using-the-twitter-api-to-make-your-commute-easier-3od0",
 							"status": 200,
 							"title": null,
 							"description": null
 						},
 						"indices": [
 							137,
 							160
 						]
 					}],
 					"user_mentions": [],
 					"symbols": []
 				}
 			},
 			"quote_count": 4,
 			"reply_count": 5,
 			"retweet_count": 31,
 			"favorite_count": 123,
 			"entities": {
 				"hashtags": [{
 						"text": "DEVcommunity",
 						"indices": [
 							85,
 							98
 						]
 					},
 					{
 						"text": "Pythontutorial",
 						"indices": [
 							99,
 							114
 						]
 					}
 				],
 				"urls": [{
 					"url": "https://t.co/pL0qJ4vhtE",
 					"expanded_url": "https://x.com/i/web/status/1195000047089389573",
 					"display_url": "x.com/i/web/status/1…",
 					"indices": [
 						116,
 						139
 					]
 				}],
 				"user_mentions": [],
 				"symbols": []
 			},
 			"favorited": false,
 			"retweeted": false,
 			"possibly_sensitive": false,
 			"filter_level": "low",
 			"lang": "en"
 		},
 		"quoted_status_permalink": {
 			"url": "https://t.co/dXrJYvn3hY",
 			"expanded": "https://x.com/AureliaSpecker/status/1195000047089389573",
 			"display": "x.com/AureliaSpecker…"
 		},
 		"is_quote_status": true,
 		"extended_tweet": {
 			"full_text": "📣 Si te gustó el tutorial sobre desplazamientos en Londres que escribí en noviembre del año pasado, echa un vistazo a la versión refactorizada que usa el nuevo endpoint de búsqueda de X 🚇 https://t.co/87XIPZmZBJ\n\n#DEVcommunity #Pythontutorial @XDev @XAPI https://t.co/dXrJYvn3hY",
 			"display_text_range": [
 				0,
 				229
 			],
 			"entities": {
 				"hashtags": [{
 						"text": "DEVcommunity",
 						"indices": [
 							176,
 							189
 						]
 					},
 					{
 						"text": "Pythontutorial",
 						"indices": [
 							190,
 							205
 						]
 					}
 				],
 				"urls": [{
 						"url": "https://t.co/87XIPZmZBJ",
 						"expanded_url": "https://bit.ly/2OrnrCC",
 						"display_url": "bit.ly/2OrnrCC",
 						"unwound": {
 							"url": "https://dev.to/twitterdev/migrate-to-twitter-s-newly-released-labs-recent-search-endpoint-3npe",
 							"status": 200,
 							"title": null,
 							"description": null
 						},
 						"indices": [
 							151,
 							174
 						]
 					},
 					{
 						"url": "https://t.co/dXrJYvn3hY",
 						"expanded_url": "https://x.com/AureliaSpecker/status/1195000047089389573",
 						"display_url": "x.com/AureliaSpecker…",
 						"indices": [
 							230,
 							253
 						]
 					}
 				],
 				"user_mentions": [{
 						"screen_name": "XDev",
 						"name": "X Dev",
 						"id": 2244994945,
 						"id_str": "2244994945",
 						"indices": [
 							206,
 							217
 						]
 					},
 					{
 						"screen_name": "XAPI",
 						"name": "X API",
 						"id": 6253282,
 						"id_str": "6253282",
 						"indices": [
 							218,
 							229
 						]
 					}
 				],
 				"symbols": []
 			}
 		},
 		"quote_count": 2,
 		"reply_count": 0,
 		"retweet_count": 12,
 		"favorite_count": 43,
 		"entities": {
 			"hashtags": [],
 			"urls": [{
 				"url": "https://t.co/cAepHunkFp",
 				"expanded_url": "https://x.com/i/web/status/1224709550214873090",
 				"display_url": "x.com/i/web/status/1…",
 				"indices": [
 					117,
 					140
 				]
 			}],
 			"user_mentions": [],
 			"symbols": []
 		},
 		"favorited": false,
 		"retweeted": false,
 		"possibly_sensitive": false,
 		"filter_level": "low",
 		"lang": "en"
 	},
 	"quoted_status_id": 1195000047089389600,
 	"quoted_status_id_str": "1195000047089389573",
 	"quoted_status": {
 		"created_at": "Thu Nov 14 15:26:27 +0000 2019",
 		"id": 1195000047089389600,
 		"id_str": "1195000047089389573",
 		"text": "Escribí un tutorial sobre cómo obtener información personalizada de tus desplazamientos usando la X API🚇\n\n#DEVcommunity #Pythontutorial… https://t.co/pL0qJ4vhtE",
 		"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">X Web App</a>",
 		"truncated": true,
 		"in_reply_to_status_id": null,
 		"in_reply_to_status_id_str": null,
 		"in_reply_to_user_id": null,
 		"in_reply_to_user_id_str": null,
 		"in_reply_to_screen_name": null,
 		"user": {
 			"id": 1102321381,
 			"id_str": "1102321381",
 			"name": "Aurelia Specker",
 			"screen_name": "AureliaSpecker",
 			"location": "Londres, Reino Unido",
 			"url": null,
 			"description": "devrel @TwitterUK • Suiza en Londres • madre de plantas de interior • peluquera personal de @_dormrod",
 			"translator_type": "none",
 			"protected": false,
 			"verified": false,
 			"followers_count": 1032,
 			"friends_count": 1331,
 			"listed_count": 26,
 			"favourites_count": 4979,
 			"statuses_count": 854,
 			"created_at": "Fri Jan 18 23:45:43 +0000 2013",
 			"utc_offset": null,
 			"time_zone": null,
 			"geo_enabled": true,
 			"lang": null,
 			"contributors_enabled": false,
 			"is_translator": false,
 			"profile_background_color": "8B542B",
 			"profile_background_image_url": "http://abs.twimg.com/images/themes/theme8/bg.gif",
 			"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme8/bg.gif",
 			"profile_background_tile": false,
 			"profile_link_color": "5E341C",
 			"profile_sidebar_border_color": "D9B17E",
 			"profile_sidebar_fill_color": "EADEAA",
 			"profile_text_color": "333333",
 			"profile_use_background_image": true,
 			"profile_image_url": "http://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
 			"profile_image_url_https": "https://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
 			"profile_banner_url": "https://pbs.twimg.com/profile_banners/1102321381/1587552672",
 			"default_profile": false,
 			"default_profile_image": false,
 			"following": null,
 			"follow_request_sent": null,
 			"notifications": null
 		},
 		"geo": null,
 		"coordinates": null,
 		"place": null,
 		"contributors": null,
 		"is_quote_status": false,
 		"extended_tweet": {
 			"full_text": "Escribí un tutorial sobre cómo obtener información personalizada de tus trayectos usando la X API🚇\n\n#DEVcommunity #Pythontutorial \n\nÉchale un vistazo aquí 👇\nhttps://t.co/sOjXW4YhbN",
 			"display_text_range": [
 				0,
 				160
 			],
 			"entities": {
 				"hashtags": [{
 						"text": "DEVcommunity",
 						"indices": [
 							85,
 							98
 						]
 					},
 					{
 						"text": "Pythontutorial",
 						"indices": [
 							99,
 							114
 						]
 					}
 				],
 				"urls": [{
 					"url": "https://t.co/sOjXW4YhbN",
 					"expanded_url": "https://dev.to/twitterdev/using-the-twitter-api-to-make-your-commute-easier-3od0",
 					"display_url": "dev.to/twitterdev/usi…",
 					"unwound": {
 						"url": "https://dev.to/twitterdev/using-the-twitter-api-to-make-your-commute-easier-3od0",
 						"status": 200,
 						"title": null,
 						"description": null
 					},
 					"indices": [
 						137,
 						160
 					]
 				}],
 				"user_mentions": [],
 				"symbols": []
 			}
 		},
 		"quote_count": 4,
 		"reply_count": 5,
 		"retweet_count": 31,
 		"favorite_count": 123,
 		"entities": {
 			"hashtags": [{
 					"text": "DEVcommunity",
 					"indices": [
 						85,
 						98
 					]
 				},
 				{
 					"text": "Pythontutorial",
 					"indices": [
 						99,
 						114
 					]
 				}
 			],
 			"urls": [{
 				"url": "https://t.co/pL0qJ4vhtE",
 				"expanded_url": "https://x.com/i/web/status/1195000047089389573",
 				"display_url": "x.com/i/web/status/1…",
 				"indices": [
 					116,
 					139
 				]
 			}],
 			"user_mentions": [],
 			"symbols": []
 		},
 		"favorited": false,
 		"retweeted": false,
 		"possibly_sensitive": false,
 		"filter_level": "low",
 		"lang": "en"
 	},
 	"quoted_status_permalink": {
 		"url": "https://t.co/dXrJYvn3hY",
 		"expanded": "https://x.com/AureliaSpecker/status/1195000047089389573",
 		"display": "x.com/AureliaSpecker…"
 	},
 	"is_quote_status": true,
 	"quote_count": 0,
 	"reply_count": 0,
 	"retweet_count": 0,
 	"favorite_count": 0,
 	"entities": {
 		"hashtags": [],
 		"urls": [],
 		"user_mentions": [{
 			"screen_name": "AureliaSpecker",
 			"name": "Aurelia Specker",
 			"id": 1102321381,
 			"id_str": "1102321381",
 			"indices": [
 				3,
 				18
 			]
 		}],
 		"symbols": []
 	},
 	"favorited": false,
 	"retweeted": false,
 	"filter_level": "low",
 	"lang": "en",
 	"matching_rules": [{
 		"tag": null
 	}]
 }

Objetos de datos de Activity Streams Empresarial

¿Te interesa saber más sobre cómo el formato de datos de Activity Streams se mapea al formato de X API v2?
Consulta nuestra guía comparativa: Activity Streams frente a X API v2
Ten en cuenta: se recomienda encarecidamente usar el formato Enriched Native para las API de datos empresariales. 
  • El formato Enriched Native incluye todos los metadatos incorporados desde 2017, como los metadatos de encuestas, y métricas adicionales como reply_count y quote_count.
  • El formato Activity Streams no se ha actualizado con nuevos metadatos ni enriquecimientos desde la actualización de caracteres de 2017.

Objeto de actividad

Activity Streams es una traducción de esquema de objetos del formato de datos original de X creada por Gnip para “normalizar el formato” de los datos de Post y otros datos de redes sociales utilizando el Activity Base Schema de terceros descrito aquí. Los Posts se normalizan al esquema de Activity Streams, incluidos los tipos de objeto note, person, place y service como objetos anidados. Los Posts pueden contener otros objetos de actividad de Post anidados para Retweets u otros, incluidos twitter_quoted_status y long_object. El tipo de objeto de nivel base “activity” es similar al objeto de nivel base de Post del formato enriquecido nativo. Puedes encontrar ejemplos de cargas en formato Activity Streams aquí.

Diccionario de datos

A continuación encontrarás el diccionario de datos de estos atributos de actividad a nivel raíz, así como enlaces a los diccionarios de datos de los objetos secundarios.
AtributoTipoDescripción
idstringUn IRI único para el Post. En más detalle,“tag”es el esquema,“search.x.com”representa el dominio del esquema, y 2005 es el año en que se derivó el esquema.
Al almacenar Posts, debe usarse como identificador único o clave primaria.
”id”:“tag:search.x.com,2005:1050118621198921728”
tipoDeObjetocadenaTipo de objeto, siempre configurado en”actividad”
“tipoDeObjeto”:“actividad”
objetoobjetoObjeto que representa el Post que se está publicando o compartiendo.
Para los Retweets, esto contendrá un completo”actividad”, con los campos pertinentes descritos en este esquema.
Para las publicaciones originales, esto contendrá un”nota”objeto, con los fields descritos aquí.
”objeto”:
“objeto”:
“tipoObjeto”:“nota”,
“id”:“object:search.x.com,2005:1050118621198921728”,
“resumen”:“Para dar espacio a más formas de expresión, ahora contaremos todos los emojis por igual, incluidos los que tienen género y tono de piel t…https://t.co/MkGjXf9aXm”,
“enlace”:“http://x.com/API/statuses/1050118621198921728”,
“horaDe publicación”:“2018-10-10T20:19:24.000Z”
largo_objetoobjetoObjeto que representa el cuerpo de texto completo cuando el texto del Post supera los 140 caracteres.


“largo_objeto”:
“cuerpo del mensaje”:“Para dar cabida a más formas de expresión, a partir de ahora contaremos todos los emojis por igual —incluidos los que tienen modificadores de género y de tono de piel 👍🏻👍🏽👍🏿—. Esto ya se refleja en Twitter-Text, nuestra biblioteca de código abierto. \n\n¿Usas Twitter-Text? Consulta la publicación del foro para más detalles:https://t.co/Nx1XZmRCXA”,
“pantalla_texto_intervalo”: [
0,
277
],
“Twitter_entidades”:
“hashtags”: [],
“URLs”: [

“url”:“https://t.co/Nx1XZmRCXA”,
“expandido_URL”:“https://devcommunity.x.com/t/nueva-actualizacion-de-la-biblioteca-twitter-text-recuento-de-caracteres-de-emoji/114607
https://devcommunity.x.com/t/new-update-to-the-twitter-text-library-emoji-character-count/114607”,
“mostrar_url”:“devcommunity.com/t/new-update-t…”,
“índices”: [
254,
277
]

],
“usuario_menciones”: [],
“símbolos”: []

mostrar_texto_intervalomatrizsi el texto del Post supera los 140 caracteres.


“pantalla_texto_intervalo”: [
0,
142
]
verbostringEl tipo de acción que realiza el usuario.
Posts, “post”
Retweets, “share”
Posts eliminados, “delete”
El verbo es la forma adecuada de distinguir entre un Tweet y un Retweet auténtico. Sin embargo, esto solo aplica a retweets auténticos, y no a Tweets modificados o con cita, que no usan la funcionalidad de Retweet de X. Para una descripción de los verbos de AS
haz clic aquí.
En el caso de las eliminaciones, tenga en cuenta que solo se incluirá un número limitado de fields, como se muestra en el siguiente ejemplo de carga útil.
”verbo”:“Post”
postedTimefecha (ISO 8601)La hora en que ocurrió la acción; p. ej., la hora en que se publicó el Post.


“postedTime”:“2018-10-10T20:19:24.000Z”
generadorobjetoObjeto que representa la utilidad empleada para publicar el Post. Contendrá el nombre (“displayName”) y un vínculo (“vínculo”) para la App de origen que genera el Post.
”generador”:
“displayName”:“Cliente web de X”,
“vínculo”:“http://x.com
proveedorobjetoUn objeto JSON que representa al proveedor de la actividad. Este incluirá un objectType (“servicio”), el nombre del proveedor (“nombreVisible”), y un enlace al proveedor’sitio web del proveedor (“vínculo”).
“proveedor”:

“tipoDeObjeto”:“servicio”,
“displayName”:“X”,
“vínculo”:“http://www.x.com
vínculostringUn enlace permanente para la Post.
”vínculo”:“http://x.com/API/statuses/1050118621198921728
cuerpo del mensajestringEl texto del Post.

En los Retweets, tenga en cuenta que X modifica el valor de body en el nivel raíz al agregar”RT @username”al principio, y truncando el texto original y añadiendo puntos suspensivos al final. Por lo tanto, para los Retweets, tu App debe consultar object.body para asegurarse de que está extrayendo el texto sin modificar de la Post original (que se está retuiteando).
“cuerpo del mensaje”:“Con Cardiff, Crystal Palace y Hull City ascendiendo desde el Championship a la Premier League, el final promete una gran lucha por el descenso.”
visualización_texto_intervalomatrizDescribe el rango de caracteres dentro del cuerpo del texto que señala el Post mostrado. Los Posts con @menciones al inicio comenzarán en un valor mayor que 0 y los Posts con medios adjuntos o que se extiendan más allá de 140 caracteres indicarán el área de visualización_texto_intervalo en long_objeto.

“pantalla_texto_intervalo”: [
14,
42
]
o
”largo_objeto”:
“visualización_texto_intervalo”: [
0,
277
]…
actorobjetoUn objeto que representa al usuario de X que realizó la publicación. El objeto Actor se refiere a un usuario de X y contiene todos los metadatos relevantes de ese usuario.
Consulta
detalles del objeto actor
enRespuestaAobjetoObjeto JSON que hace referencia al Post al que se está respondiendo, si corresponde. Contiene un enlace al Post.
”inReplyTo”:

“vínculo”:“http://x.com/GOP/statuses/349573991561838593
ubicaciónobjetoUn objeto JSON que representa el “Place” de X donde se creó el Post. Este es un objeto que se transmite desde la plataforma de X.

Consulta
objeto de ubicación
X (antes Twitter)_entidadesobjetoEl objeto entities de X’formato de datos de X que contiene listas de URL, menciones y hashtags. Consulte la documentación de X sobre Entities aquí. Tenga en cuenta que, en los Retweets, X puede truncar los valores de las entidades que extrae en el nivel raíz. Por lo tanto, para los Retweets, su App debería consultar object.twitter_entidades para asegurarte de que usas valores sin truncar.

Ver X_detalles del objeto de entidades
Twitter_ampliado_entidadesobjetoUn objeto de X’formato de datos nativo de s que contiene”contenido multimedia”. Esto estará presente en cualquier Post donde el_el objeto entities contiene data presente en el”contenido multimedia”campo, e incluirá varias fotos cuando estén presentes en la publicación. Ten en cuenta que esta es la ubicación correcta para obtener la información de medios en publicaciones con varias fotos.

Varias fotos se representan mediante objetos JSON separados por comas dentro de la”contenido multimedia”matriz.

Verdetalles del objeto twitter_extended_entities
gnipobjetoObjeto agregado al payload de la actividad para indicar las reglas de coincidencia y añadir datos enriquecidos según los enriquecimientos activos en el stream o en el producto.

Consultedetalles del objeto Gnip
editar_historialObjetoIdentificadores únicos que indican todas las versiones de un Post. Para los Posts sin ediciones, habrá un id. Para los Posts con historial de ediciones, habrá varios id, ordenados de forma ascendente para reflejar el orden de las ediciones, con la versión más reciente en la última posición del array.

Los id de Post pueden usarse para rehidratar y ver versiones anteriores de un Post.

Ejemplo:

Editar_historia”:
“inicial_Tweet_id”:“1283764123”
“editar_Tweet_ids”: [“1283764123”,“1394263866”]
editar_controlesObjetoCuando está presente, indica durante cuánto tiempo un Post sigue siendo editable y cuántas ediciones quedan. Los Posts solo se pueden editar durante los primeros 30 minutos tras su creación y hasta cinco veces en total.

Los id de Post pueden usarse para reconstruir y ver versiones anteriores de un Post.

Ejemplo:

“editar_controles”:
“editable_hasta_ms”: 123
“ediciones_pendientes”: 3
editableBooleanoCuando está presente, indica si un Post era elegible para edición al publicarse. Este campo no es dinámico y no’t cambiará de True a False cuando un Post alcance su límite de tiempo de edición o el número máximo de ediciones. Las siguientes funciones del Post harán que este campo sea false:

- El Post está promocionado
- La publicación tiene una encuesta
- La Post es una respuesta que no forma parte de su propio hilo
- El Post es un retuit (ten en cuenta que los Quote Tweets son elegibles para edición)
- El Post es de difusión limitada (nullcast)
- Publicación de la comunidad
- Post de Superfollow
- Post colaborativo

Atributos adicionales de Post

AtributoTipoDescripción
twitter_langstring
favoritesCountintNullable. Indica aproximadamente cuántas veces este Post ha recibido Me gusta por parte de usuarios de X.

“favoritesCount”:298
retweetCountintNúmero de veces que este Post ha sido retuiteado. Ejemplo:

“retweetCount”:153

Atributos obsoletos

CampoTipoDescripción
geoobjectUbicación de punto donde se creó el Post.
twitter_filter_levelstringCampo obsoleto conservado para evitar cambios incompatibles

Objetos de actividad de Post anidados

En varios casos, un objeto Post incluirá otros Posts anidados. Si trabaja con objetos anidados, ese payload JSON contendrá múltiples objetos y cada objeto Post puede contener sus propios objetos. El objeto de nivel raíz tendrá información sobre el tipo de acción realizada, es decir, si es un Retweet o un Quote Tweet, y también puede incluir un objeto que describa el Post «original» que se comparte. Los Extended Posts incluirán un objeto extendido anidado que excede los 140 caracteres, lo cual se utilizó para evitar cambios incompatibles cuando se realizó la actualización en 2017. Cada diccionario de objeto anidado se describe a continuación. Retweets El formato de flujos de actividad de los Retweets incluye un objeto anidado con el tipo “activity” y el verbo “note” para representar el Post original que se está retuiteando.
{
	"id": "tag:search.x.com,2005:222222222222",
	"objectType": "activity",
	"verb": "share",
	"body": "RT @TheOriginalTweeter: Café y arte ☕️",
	"actor": {
		"displayName": "TheRetweeter"
	},
	"object": {
		"id": "tag:search.x.com,2005:11111111111",
		"objectType": "activity",
		"verb": "post",
		"body": "Café y arte ☕️",
		"actor": {
			"displayName": "TheOriginalTweeter"
		},
		"object": {
			"objectType": "note",
			"id": "object:search.x.com,2005:11111111111",
			"summary": "Café y arte ☕️",
			"link": "http://x.com/originaltweeter/statuses/11111111111",
			"postedTime": "2020-12-04T11:00:01.000Z"
		},
		"twitter_entities": {},
		"twitter_extended_entities": {}
	},
	"twitter_entities": {},
	"twitter_extended_entities": {},
	"gnip": {}
}
Estado citado en X Formato Activity Streams con Tweets citados incrustados { "id": "tag:search.x.com,2005:222222222222", "objectType": "activity", "verb": "post", "body": "Citando un Tweet: https://t.co/mxiFJ59FlB", "actor": { "displayName": "TheQuoter2" }, "object": { "objectType": "note", "id": "object:search.x.com,2005:111111111", "summary": "https://t.co/mxiFJ59FlB" }, "twitter_entities": {}, "twitter_extended_entities": {}, "gnip": {}, "twitter_quoted_status": { "id": "tag:search.x.com,2005:111111111", "objectType": "activity", "verb": "post", "body": "console.log('Happy birthday, JavaScript!');", "actor": { "displayName": "TheOriginalTweeter" }, "object": { "objectType": "note", "id": "object:search.x.com,2005:111111111" }, "twitter_entities": {} } } Retuit de un Tweet citado:
    {
    	"id": "tag:search.x.com,2005:1293612267087384577",
    	"objectType": "activity",
    	"verb": "share",
    	"postedTime": "2020-08-12T18:16:13.000Z",
    	"generator": {},
    	"provider": {},
    	"link": "http://x.com/XDevelopers/statuses/1293612267087384577",
    	"body": "RT @compston: Muy emocionado de hacer disponible este primer conjunto de endpoints - muchos más por venir antes de que terminemos. El equipo @XDevelopers #DevRel…",
    	"actor": {},
    	"object": {},
    	"favoritesCount": 0,
    	"twitter_entities": {},
    	"twitter_lang": "en",
    	"retweetCount": 13,
    	"gnip": {},
    	"twitter_filter_level": "low",
    	"twitter_quoted_status": {}
    }

Objeto extendido

Formato Activity Streams de extended_tweet
{
  "id": "tag:search.x.com,2005:1050118621198921728",
  "objectType": "activity",
  "verb": "post",
  "postedTime": "2018-10-10T20:19:24.000Z",
  "generator": {
    "displayName": "Cliente web de X",
    "link": "http://x.com"
  },
  "provider": {
    "objectType": "service",
    "displayName": "X",
    "link": "http://www.x.com"
  },
  "link": "http://x.com/API/statuses/1050118621198921728",
  "body": "Para dar más espacio a la expresión, ahora contaremos todos los emojis de la misma manera, incluidos aquellos con género‍‍‍ ‍‍y tono de piel… https://t.co/MkGjXf9aXm",
  "long_object": {
    "body": "Para dar más espacio a la expresión, ahora contaremos todos los emojis de la misma manera, incluidos aquellos con modificadores de género‍‍‍ ‍‍y tono de piel 👍🏻👍🏽👍🏿. Esto ahora se refleja en Twitter-Text, nuestra biblioteca de código abierto. \n\n¿Usas Twitter-Text? Consulta la publicación del foro para más detalles: https://t.co/Nx1XZmRCXA",
    "display_text_range": [
      0,
      277
    ],
    "twitter_entities": {see twitter_entities object},
  "actor": {see actor object},
  "object": {
    "objectType": "note",
    "id": "object:search.x.com,2005:1050118621198921728",
    "summary": "Para dar más espacio a la expresión, ahora contaremos todos los emojis de la misma manera, incluidos aquellos con género‍‍‍ ‍‍y tono de piel… https://t.co/MkGjXf9aXm",
    "link": "http://x.com/API/statuses/1050118621198921728",
    "postedTime": "2018-10-10T20:19:24.000Z"
  },
  "favoritesCount": 298,
  "twitter_entities": {see twitter_entities object},
  "twitter_lang": "en",
  "retweetCount": 153,
  "gnip": {see gnip object},
  "twitter_filter_level": "low"
}

Objeto actor

El objeto actor contiene metadatos de la cuenta de usuario de X que describen al usuario de X que creó la actividad.

Diccionario de datos

AtributoTipoDescripción
objectTypestring”objectType”: “person”
idstringLa representación en cadena del identificador único de este autor. Ejemplo:

“id:x.com:2244994945”
linkhttp://www.x.com/XDeveloeprs
displayNameStringEl nombre del usuario, tal como lo definió. No necesariamente el nombre de una persona. Normalmente limitado a 50 caracteres, pero sujeto a cambios. Ejemplo:

“displayName”: “XDevelopers”
preferredUsernamestringEl nombre visible, handle o alias con el que este usuario se identifica. Único, pero sujeto a cambios. Use id como identificador de usuario siempre que sea posible. Normalmente con un máximo de 15 caracteres, pero pueden existir cuentas históricas con nombres más largos. Ejemplo:

“preferredUsername”: “XDevelopers”
locationobject**        “location”:

“objectType”:** “place”,

“displayName”: “127.0.0.1”

**        }**
linksarrayNullable. Una URL proporcionada por el usuario asociada con su perfil. Ejemplo:

**       “links”: [

          {

“href”:** “https://developer.x.com/en/community,

“rel”: “me”

**          }

        ]**
summarystringNullable. La cadena UTF-8 definida por el usuario que describe su cuenta. Ejemplo:

“summary”: “The voice of the #XDevelopers team…“
protectedBooleanCuando es true, indica que este usuario ha decidido proteger sus Posts. Consulte About Public and Protected Posts. Ejemplo:

“protected”: true
verifiedBooleanCuando es true, indica que el usuario tiene una cuenta verificada. Consulte Verified Accounts. Ejemplo:

“verified”: false
followersCountIntEl número de seguidores que esta cuenta tiene actualmente. Bajo ciertas condiciones de estrés, este campo indicará temporalmente “0”. Ejemplo:

“followers_count”: 21
friendsCountIntEl número de usuarios a los que esta cuenta sigue (también llamados “followings”). Bajo ciertas condiciones de estrés, este campo indicará temporalmente “0”. Ejemplo:

“friends_count”: 32
listedCountIntEl número de listas públicas de las que este usuario es miembro. Ejemplo:

“listed_count”: 9274
favoritesCountIntEl número de Posts que a este usuario le han gustado durante la vida de la cuenta. Se usa la ortografía británica en el nombre del campo por motivos históricos. Ejemplo:

“favourites_count”: 13
statusesCountIntEl número de Posts (incluidos los retweets) emitidos por el usuario. Ejemplo:

“statuses_count”: 42
postedTimedateLa fecha y hora UTC en que se creó la cuenta de usuario en X. Ejemplo:

“postedTime”: “2013-12-14T04:35:55.036Z”
imagestringUna URL basada en HTTPS que apunta a la imagen de perfil del usuario. Ejemplo:

“image”:https://pbs.twimg.com/profile&#95;images/1283786620521652229/lEODkLTh&#95;normal.jpg

Atributos en desuso (obsoletos)

CampoTipoDescripción
utcOffsetnullEl valor se establecerá en null. Sigue disponible mediante GET account/settings
twitterTimeZonenullEl valor se establecerá en null. Sigue disponible mediante GET account/settings como tzinfo_name
languagesnullEl valor se establecerá en null. Sigue disponible mediante GET account/settings como language

Ejemplos:

			"actor": {
        "objectType": "person",
        "id": "id:twitter.com:2244994945",
        "link": "http://www.x.com/XDevelopers",
        "displayName": "X Dev",
        "postedTime": "2013-12-14T04:35:55.036Z",
        "image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
        "summary": "La voz del equipo de #XDevelopers y tu fuente oficial para actualizaciones, noticias y eventos relacionados con la #XAPI.",
        "friendsCount": 2039,
        "followersCount": 512197,
        "listedCount": 1662,
        "statusesCount": 3632,
        "twitterTimeZone": null,
        "verified": true,
        "utcOffset": null,
        "preferredUsername": "XDevelopers",
        "languages": [],
        "links": [
          {
            "href": "https://developer.x.com/en/community",
            "rel": "me"
          }
        ],
        "location": {
          "objectType": "place",
          "displayName": "127.0.0.1"
        },
        "favoritesCount": 2147
      }
"actor": {
    "objectType": "person",
    "id": "id:twitter.com:6253282",
    "link": "http://www.x.com/API",
    "displayName": "X API",
    "postedTime": "2007-05-23T06:01:13.000Z",
    "image": "https://pbs.twimg.com/profile_images/942858479592554497/BbazLO9L_normal.jpg",
    "summary": "Tweets sobre cambios y problemas del servicio. Sigue a @XDevelopers para obtener más información.",
    "friendsCount": 39,
    "followersCount": 6054164,
    "listedCount": 12285,
    "statusesCount": 3689,
    "twitterTimeZone": null,
    "verified": true,
    "utcOffset": null,
    "preferredUsername": "API",
    "languages": [

    ],
    "links": [
      {
        "href": "https://developer.x.com",
        "rel": "me"
      }
    ],
    "favoritesCount": 4
  }

Objeto de ubicación

Los objetos de ubicación pueden existir dentro del objeto actor definido a nivel de la cuenta de X o dentro del objeto profileLocations del objeto gnip. Los objetos de ubicación tienen un tipo de objeto place y pueden incluir un nombre, una dirección o coordenadas geográficas. Los objetos de ubicación son similares a Geo en el formato nativo enriquecido.

Diccionario de datos de ubicación

CampoTipoDescripción
objectTypestringConsulte aquí para obtener información más detallada. Ejemplo:

“objectType”: “place”
displayNamestringNombre completo de la ubicación.

“displayName”: “United States”
namestringNombre de la ubicación según el formato JSON de lugares de X.
linkstringEnlace a la representación JSON completa del lugar en X.

“link”:https://api.x.com/1.1/geo/id/27c45d804c777999.json
geoobjectObjeto de coordenadas geográficas de X. Puede ser un polígono o un punto.

Consulte geo
countryCodeStringCódigo abreviado del país que contiene este lugar. Ejemplo:

“countryCode”: “US”
countryStringNombre del país que contiene este lugar. Ejemplo:

“country”: “United States”

objetos derivados de profileLocations

CampoTipoDescripción
addressobjectDentro del objeto de ubicación profileLocation del objeto gnip. Dirección de la ubicación derivada mediante el enriquecimiento geográfico del perfil. El nivel de granularidad variará.

“address”: {

**          “country”: “United States”,

          “countryCode”: “US”,

          “locality”: “Providence”,

          “region”: “Rhode Island”,

          “subRegion”: “Providence County”

        }**
geoobjectDentro del objeto de ubicación profileLocation del objeto gnip. Coordenadas del centroide de la ubicación derivadas mediante el enriquecimiento geográfico del perfil.

”geo”: {

**          “coordinates”: [

-98.5
,

39.76

          ],

          “type”: “point”

        }**
Ejemplos
	"location": {
    "objectType": "place",
    "displayName": "Kansas, EE. UU.",
    "name": "Kansas",
    "country_code": "Estados Unidos",
    "twitter_country_code": "US",
    "twitter_place_type": "admin",
    "link": "https://api.x.com/1.1/geo/id/27c45d804c777999.json",
    "geo": {
      "type": "Polygon",
      "coordinates": [
        [
          [
            -102.051769,
            36.99311
          ],
          [
            -102.051769,
            40.003282
          ],
          [
            -94.588081,
            40.003282
          ],
          [
            -94.588081,
            36.99311
          ]
        ]
      ]
    }
    "location": {
      "objectType": "place",
      "displayName": "California, EE. UU."
    }

Objeto de entidades de X

Para el formato Activity Streams, twitter_entities utiliza el mismo formato y diccionario de datos que el del formato enriquecido nativo, tal como se muestra en el objeto de entidades aquí.

Ejemplo:

"twitter_entities": {
	"hashtags": [{
		"text": "API",
		"indices": [
			228,
			239
		]
	}],
	"urls": [{
		"url": "https://t.co/r6z6CI7kEy",
		"expanded_url": "https://devcommunity.x.com/t/retiring-labs-v2-recent-search-and-hide-replies/145795",
		"display_url": "devcommunity.com/t/retiring-lab…",
		"indices": [
			250,
			273
		]
	}],
	"user_mentions": [],
	"symbols": []
}

Objeto de entidades extendidas de X

Para el formato Activity Streams, twitter_extended_entities utiliza el mismo formato y diccionario de datos que se muestran en el formato enriquecido nativo objeto extended_entities aquí.

Ejemplo:

"twitter_extended_entities":{
	"media": [{
		"id": 1293565706408038400,
		"id_str": "1293565706408038401",
		"indices": [
			219,
			242
		],
		"additional_media_info": {
			"monetizable": false
		},
		"media_url": "http://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
		"media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
		"url": "https://t.co/KaFSbjWUA8",
		"display_url": "pic.x.com/KaFSbjWUA8",
		"expanded_url": "https://x.com/XDevelopers/status/1293593516040269825/video/1",
		"type": "video",
		"video_info": {
			"aspect_ratio": [
				16,
				9
			],
			"duration_millis": 34875,
			"variants": [{
					"bitrate": 256000,
					"content_type": "video/mp4",
					"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/480x270/Fg9lnGGsITO0uq2K.mp4?tag=10"
				},
				{
					"bitrate": 832000,
					"content_type": "video/mp4",
					"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/640x360/-crbtZE4y8vKN_uF.mp4?tag=10"
				},
				{
					"content_type": "application/x-mpegURL",
					"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/pl/OvIqQojosF6sMIHR.m3u8?tag=10"
				},
				{
					"bitrate": 2176000,
					"content_type": "video/mp4",
					"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/1280x720/xkxyb-VPVY4OI0j9.mp4?tag=10"
				}
			]
		},
		"sizes": {
			"thumb": {
				"w": 150,
				"h": 150,
				"resize": "crop"
			},
			"medium": {
				"w": 1200,
				"h": 675,
				"resize": "fit"
			},
			"small": {
				"w": 680,
				"h": 383,
				"resize": "fit"
			},
			"large": {
				"w": 1280,
				"h": 720,
				"resize": "fit"
			}
		}
	}]
}

Objeto Gnip

El objeto gnip, dentro del formato Activity Streams, contiene los metadatos añadidos por los enriquecimientos activos, así como la indicación de las reglas de coincidencia para la actividad.

Diccionario de datos

CampoTipoDescripción
matching_rulesarrayContiene una matriz de objetos de reglas de coincidencia que indican la regla con la que coincide la actividad.
“matching_rules”: [

**      {

        “tag”: null,

“id”:** 1026514022567358500**,

“id_str”:** “1026514022567358464”

**      }

    ]**
urlsarrayContiene una matriz de enlaces presentes en la actividad y los metadatos de la URL expandida para el enriquecimiento de desenrollado de URL.

**    “urls”: [

      {

“url”:** “https://t.co/tGQqNxxyhU,

“expanded_url”:https://www.youtube.com/channel/UCwUxW2CV2p5mzjMBqvqLzJA,

“expanded_status”: 200**,

“expanded_url_title”:** “Birdys Daughter”,

“expanded_url_description”: “Premium, single-origin, handpicked Jamaica Blue Mountain Coffee”

**      }

    ]**
profileLocationsarray of location objectsContiene el objeto de ubicación derivado del enriquecimiento de Profile Geo.

**    “profileLocations”: [

      {

        “address”: {

“country”:** “Canada”,

“countryCode”: “CA”,

“locality”: “Toronto”,

“region”: “Ontario”

**        },

“displayName”:** “Toronto, Ontario, Canada”,

**        “geo”: {

          “coordinates”: [

-79.4163
,

43.70011

          ],

“type”:** “point”

**        },

“objectType”:** “place”

**      }

    ]

  }**

Ejemplo:

	"gnip": {
    "matching_rules": [
      {
        "tag": null
      }
    ],
    "urls": [
      {
        "url": "https://t.co/Nx1XZmRCXA",
        "expanded_url": "https://devcommunity.x.com/t/new-update-to-the-twitter-text-library-emoji-character-count/114607",
        "expanded_status": 200,
        "expanded_url_title": null,
        "expanded_url_description": null
      }
    ]
  }

Ejemplos de cargas útiles de Activity Streams

Actividad de Post
{
	"id": "tag:search.x.com,2005:1307025659294674945",
	"objectType": "activity",
	"verb": "post",
	"postedTime": "2020-09-18T18:36:15.000Z",
	"generator": {
		"displayName": "X Web App",
		"link": "https://mobile.x.com"
	},
	"provider": {
		"objectType": "service",
		"displayName": "X",
		"link": "http://www.x.com"
	},
	"link": "http://x.com/XDevelopers/statuses/1307025659294674945",
	"body": "Aquí tienes un artículo que destaca las actualizaciones en la nueva carga útil de Tweet v2 https://t.co/oeF3ZHeKQQ",
	"actor": {
		"objectType": "person",
		"id": "id:twitter.com:2244994945",
		"link": "http://www.x.com/XDevelopers",
		"displayName": "X Dev",
		"postedTime": "2013-12-14T04:35:55.036Z",
		"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"summary": "La voz del equipo de #XDevelopers y tu fuente oficial para actualizaciones, noticias y eventos relacionados con la #XAPI.",
		"friendsCount": 2038,
		"followersCount": 512292,
		"listedCount": 1666,
		"statusesCount": 3634,
		"twitterTimeZone": null,
		"verified": true,
		"utcOffset": null,
		"preferredUsername": "XDevelopers",
		"languages": [],
		"links": [{
			"href": "https://developer.x.com/en/community",
			"rel": "me"
		}],
		"location": {
			"objectType": "place",
			"displayName": "127.0.0.1"
		},
		"favoritesCount": 2147
	},
	"object": {
		"objectType": "note",
		"id": "object:search.x.com,2005:1307025659294674945",
		"summary": "Aquí tienes un artículo que destaca las actualizaciones en la nueva carga útil de Tweet v2 https://t.co/oeF3ZHeKQQ",
		"link": "http://x.com/XDevelopers/statuses/1307025659294674945",
		"postedTime": "2020-09-18T18:36:15.000Z"
	},
	"inReplyTo": {
		"link": "http://x.com/XDevelopers/statuses/1304102743196356610"
	},
	"favoritesCount": 70,
	"twitter_entities": {
		"hashtags": [],
		"urls": [{
			"url": "https://t.co/oeF3ZHeKQQ",
			"expanded_url": "https://dev.to/twitterdev/understanding-the-new-tweet-payload-in-the-twitter-api-v2-1fg5",
			"display_url": "dev.to/twitterdev/und…",
			"indices": [
				74,
				97
			]
		}],
		"user_mentions": [],
		"symbols": []
	},
	"twitter_lang": "en",
	"retweetCount": 11,
	"gnip": {
		"matching_rules": [{
			"tag": null
		}],
		"urls": [{
			"url": "https://t.co/oeF3ZHeKQQ",
			"expanded_url": "https://dev.to/twitterdev/understanding-the-new-tweet-payload-in-the-twitter-api-v2-1fg5",
			"expanded_status": 200,
			"expanded_url_title": "Entendiendo la nueva carga útil de Tweet en la X API v2",
			"expanded_url_description": "X anunció recientemente la nueva X API v2, reconstruida desde cero para ofrecer nuevas funcionalidades...",
		}]
	},
	"twitter_filter_level": "low"
}
Actividad de Post de respuesta
{
	"id": "tag:search.x.com,2005:1296887316556980230",
	"objectType": "activity",
	"verb": "post",
	"postedTime": "2020-08-21T19:10:05.000Z",
	"generator": {
		"displayName": "App web de X",
		"link": "https://mobile.x.com"
	},
	"provider": {
		"objectType": "service",
		"displayName": "X",
		"link": "http://www.x.com"
	},
	"link": "http://x.com/XDevelopers/statuses/1296887316556980230",
	"body": "Descubre cómo @PennMedCDH utiliza datos de X para comprender la crisis sanitaria del COVID-19 📊\n\nhttps://t.co/1tdA8uDWes",
	"actor": {
		"objectType": "person",
		"id": "id:twitter.com:2244994945",
		"link": "http://www.x.com/XDevelopers",
		"displayName": "X Dev",
		"postedTime": "2013-12-14T04:35:55.036Z",
		"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"summary": "La voz del equipo de #XDevelopers y tu fuente oficial de actualizaciones, noticias y eventos relacionados con la #API.",
		"friendsCount": 2038,
		"followersCount": 512292,
		"listedCount": 1666,
		"statusesCount": 3634,
		"twitterTimeZone": null,
		"verified": true,
		"utcOffset": null,
		"preferredUsername": "XDevelopers",
		"languages": [],
		"links": [{
			"href": "https://developer.x.com/en/community",
			"rel": "me"
		}],
		"location": {
			"objectType": "place",
			"displayName": "127.0.0.1"
		},
		"favoritesCount": 2147
	},
	"object": {
		"objectType": "note",
		"id": "object:search.x.com,2005:1296887316556980230",
		"summary": "Descubre cómo @PennMedCDH utiliza datos de X para comprender la crisis sanitaria del COVID-19 📊\n\nhttps://t.co/1tdA8uDWes",
		"link": "http://x.com/XDevelopers/statuses/1296887316556980230",
		"postedTime": "2020-08-21T19:10:05.000Z"
	},
	"inReplyTo": {
		"link": "http://x.com/XDevelopers/statuses/1296887091901718529"
	},
	"favoritesCount": 26,
	"twitter_entities": {
		"hashtags": [],
		"urls": [{
			"url": "https://t.co/1tdA8uDWes",
			"expanded_url": "https://developer.x.com/en/use-cases/success-stories/penn",
			"display_url": "developer.x.com/en/use-cases/s…",
			"indices": [
				87,
				110
			]
		}],
		"user_mentions": [{
			"screen_name": "PennMedCDH",
			"name": "Penn Med CDH",
			"id": 1615654896,
			"id_str": "1615654896",
			"indices": [
				8,
				19
			]
		}],
		"symbols": []
	},
	"twitter_lang": "en",
	"retweetCount": 9,
	"gnip": {
		"matching_rules": [{
			"tag": null
		}],
		"urls": [{
			"url": "https://t.co/1tdA8uDWes",
			"expanded_url": "https://developer.x.com/en/use-cases/success-stories/penn",
			"expanded_status": 200,
			"expanded_url_title": "Centro de Salud Digital de Penn Medicine",
			"expanded_url_description": "El Centro de Salud Digital de Penn Med ha creado un mapa de X sobre COVID-19 que incluye gráficos con detalles sobre el sentimiento, los síntomas reportados, datos desglosados por estado y datos fronterizos sobre el brote de COVID-19. Además, su iniciativa Penn Med With You utiliza información regional agregada de X para alimentar su sitio web y servicio de mensajería de texto. El servicio utiliza esta información para difundir recursos relevantes y oportunos."
		}]
	},
	"twitter_filter_level": "low"
}
Actividad de Post con long_object
{
	"id": "tag:search.x.com,2005:1296121314218897408",
	"objectType": "activity",
	"verb": "post",
	"postedTime": "2020-08-19T16:26:16.000Z",
	"generator": {
		"displayName": "X Web App",
		"link": "https://mobile.x.com"
	},
	"provider": {
		"objectType": "service",
		"displayName": "X",
		"link": "http://www.x.com"
	},
	"link": "http://x.com/XDevelopers/statuses/1296121314218897408",
	"body": "¡El endpoint para ocultar respuestas se lanza hoy! \n\nLos desarrolladores pueden ocultar respuestas a Posts: una forma crucial en que los desarrolladores pu… https://t.co/VyfXs1RTXn",
	"long_object": {
		"body": "¡El endpoint para ocultar respuestas se lanza hoy! \n\nLos desarrolladores pueden ocultar respuestas a Posts: una forma crucial en que los desarrolladores pueden ayudar a mejorar la salud de la conversación pública usando la #XAPI.\n\nhttps://t.co/khXhTurm9x",
		"display_text_range": [
			0,
			215
		],
		"twitter_entities": {
			"hashtags": [{
				"text": "API",
				"indices": [
					178,
					189
				]
			}],
			"urls": [{
				"url": "https://t.co/khXhTurm9x",
				"expanded_url": "https://devcommunity.x.com/t/hide-replies-now-available-in-the-new-twitter-api/140996",
				"display_url": "devcommunity.com/t/hide-replies…",
				"indices": [
					192,
					215
				]
			}],
			"user_mentions": [],
			"symbols": []
		}
	},
	"actor": {
		"objectType": "person",
		"id": "id:twitter.com:2244994945",
		"link": "http://www.x.com/XDevelopers",
		"displayName": "X Dev",
		"postedTime": "2013-12-14T04:35:55.036Z",
		"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"summary": "La voz del equipo de #XDevelopers y tu fuente oficial para actualizaciones, noticias y eventos relacionados con la #XAPI.",
		"friendsCount": 2038,
		"followersCount": 512292,
		"listedCount": 1666,
		"statusesCount": 3634,
		"twitterTimeZone": null,
		"verified": true,
		"utcOffset": null,
		"preferredUsername": "XDevelopers",
		"languages": [],
		"links": [{
			"href": "https://developer.x.com/en/community",
			"rel": "me"
		}],
		"location": {
			"objectType": "place",
			"displayName": "127.0.0.1"
		},
		"favoritesCount": 2147
	},
	"object": {
		"objectType": "note",
		"id": "object:search.x.com,2005:1296121314218897408",
		"summary": "¡El endpoint para ocultar respuestas se lanza hoy! \n\nLos desarrolladores pueden ocultar respuestas a Posts: una forma crucial en que los desarrolladores pu… https://t.co/VyfXs1RTXn",
		"link": "http://x.com/XDevelopers/statuses/1296121314218897408",
		"postedTime": "2020-08-19T16:26:16.000Z"
	},
	"favoritesCount": 172,
	"twitter_entities": {
		"hashtags": [],
		"urls": [{
			"url": "https://t.co/VyfXs1RTXn",
			"expanded_url": "https://x.com/i/web/status/1296121314218897408",
			"display_url": "x.com/i/web/status/1…",
			"indices": [
				117,
				140
			]
		}],
		"user_mentions": [],
		"symbols": []
	},
	"twitter_lang": "en",
	"retweetCount": 54,
	"gnip": {
		"matching_rules": [{
			"tag": null
		}],
		"urls": [{
			"url": "https://t.co/khXhTurm9x",
			"expanded_url": "https://devcommunity.x.com/t/hide-replies-now-available-in-the-new-twitter-api/140996",
			"expanded_status": 200,
			"expanded_url_title": "Ocultar respuestas ya disponible en la nueva X API",
			"expanded_url_description": "Hoy nos complace anunciar la disponibilidad general del endpoint para ocultar respuestas en la nueva X API. El endpoint para ocultar respuestas te permite crear herramientas que ayuden a las personas a ocultar o mostrar respuestas a sus Posts. Las personas gestionan sus respuestas por diversas razones, como dar menos atención a comentarios abusivos, que distraen, engañosos, o para hacer las conversaciones más interesantes. A través de este endpoint, puedes crear herramientas para ayudar a las personas en X a ocultar o mostrar respuestas de forma más rápida y..."
		}]
	},
	"twitter_filter_level": "low"
}
Actividad de Post con twitter_extended_entities
{
	"id": "tag:search.x.com,2005:1293593516040269825",
	"objectType": "activity",
	"verb": "post",
	"postedTime": "2020-08-12T17:01:42.000Z",
	"generator": {
		"displayName": "App Web de X",
		"link": "https://mobile.x.com"
	},
	"provider": {
		"objectType": "service",
		"displayName": "X",
		"link": "http://www.x.com"
	},
	"link": "http://x.com/XDevelopers/statuses/1293593516040269825",
	"body": "¡Por fin llegó! 🥁 Di hola a la nueva #XAPI.\n\nEstamos reconstruyendo la X API v2 desde cero para m… https://t.co/UeCndQGMjx",
	"long_object": {
		"body": "¡Por fin llegó! 🥁 Di hola a la nueva #XAPI.\n\nEstamos reconstruyendo la X API v2 desde cero para servir mejor a nuestra comunidad de desarrolladores. Y el lanzamiento de hoy es solo el comienzo.\n\nhttps://t.co/32VrwpGaJw https://t.co/KaFSbjWUA8",
		"display_text_range": [
			0,
			218
		],
		"twitter_entities": {
			"hashtags": [{
				"text": "API",
				"indices": [
					42,
					53
				]
			}],
			"urls": [{
				"url": "https://t.co/32VrwpGaJw",
				"expanded_url": "https://blog.x.com/developer/en_us/topics/tools/2020/introducing_new_twitter_api.html",
				"display_url": "blog.x.com/developer/en_u…",
				"indices": [
					195,
					218
				]
			}],
			"user_mentions": [],
			"symbols": [],
			"media": [{
				"id": 1293565706408038400,
				"id_str": "1293565706408038401",
				"indices": [
					219,
					242
				],
				"additional_media_info": {
					"monetizable": false
				},
				"media_url": "http://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
				"media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
				"url": "https://t.co/KaFSbjWUA8",
				"display_url": "pic.x.com/KaFSbjWUA8",
				"expanded_url": "https://x.com/XDevelopers/status/1293593516040269825/video/1",
				"type": "video",
				"video_info": {
					"aspect_ratio": [
						16,
						9
					],
					"duration_millis": 34875,
					"variants": [{
							"bitrate": 256000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/480x270/Fg9lnGGsITO0uq2K.mp4?tag=10"
						},
						{
							"bitrate": 832000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/640x360/-crbtZE4y8vKN_uF.mp4?tag=10"
						},
						{
							"content_type": "application/x-mpegURL",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/pl/OvIqQojosF6sMIHR.m3u8?tag=10"
						},
						{
							"bitrate": 2176000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/1280x720/xkxyb-VPVY4OI0j9.mp4?tag=10"
						}
					]
				},
				"sizes": {
					"thumb": {
						"w": 150,
						"h": 150,
						"resize": "crop"
					},
					"medium": {
						"w": 1200,
						"h": 675,
						"resize": "fit"
					},
					"small": {
						"w": 680,
						"h": 383,
						"resize": "fit"
					},
					"large": {
						"w": 1280,
						"h": 720,
						"resize": "fit"
					}
				}
			}]
		},
		"twitter_extended_entities": {
			"media": [{
				"id": 1293565706408038400,
				"id_str": "1293565706408038401",
				"indices": [
					219,
					242
				],
				"additional_media_info": {
					"monetizable": false
				},
				"media_url": "http://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
				"media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/1293565706408038401/pu/img/66P2dvbU4a02jYbV.jpg",
				"url": "https://t.co/KaFSbjWUA8",
				"display_url": "pic.x.com/KaFSbjWUA8",
				"expanded_url": "https://x.com/XDevelopers/status/1293593516040269825/video/1",
				"type": "video",
				"video_info": {
					"aspect_ratio": [
						16,
						9
					],
					"duration_millis": 34875,
					"variants": [{
							"bitrate": 256000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/480x270/Fg9lnGGsITO0uq2K.mp4?tag=10"
						},
						{
							"bitrate": 832000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/640x360/-crbtZE4y8vKN_uF.mp4?tag=10"
						},
						{
							"content_type": "application/x-mpegURL",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/pl/OvIqQojosF6sMIHR.m3u8?tag=10"
						},
						{
							"bitrate": 2176000,
							"content_type": "video/mp4",
							"url": "https://video.twimg.com/ext_tw_video/1293565706408038401/pu/vid/1280x720/xkxyb-VPVY4OI0j9.mp4?tag=10"
						}
					]
				},
				"sizes": {
					"thumb": {
						"w": 150,
						"h": 150,
						"resize": "crop"
					},
					"medium": {
						"w": 1200,
						"h": 675,
						"resize": "fit"
					},
					"small": {
						"w": 680,
						"h": 383,
						"resize": "fit"
					},
					"large": {
						"w": 1280,
						"h": 720,
						"resize": "fit"
					}
				}
			}]
		}
	},
	"display_text_range": [
		0,
		140
	],
	"actor": {
		"objectType": "person",
		"id": "id:twitter.com:2244994945",
		"link": "http://www.x.com/XDevelopers",
		"displayName": "X Dev",
		"postedTime": "2013-12-14T04:35:55.036Z",
		"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"summary": "La voz del equipo de #XDevelopers y tu fuente oficial de actualizaciones, noticias y eventos relacionados con la #TwitterAPI.",
		"friendsCount": 2038,
		"followersCount": 512292,
		"listedCount": 1666,
		"statusesCount": 3634,
		"twitterTimeZone": null,
		"verified": true,
		"utcOffset": null,
		"preferredUsername": "XDevelopers",
		"languages": [],
		"links": [{
			"href": "https://developer.x.com/en/community",
			"rel": "me"
		}],
		"location": {
			"objectType": "place",
			"displayName": "127.0.0.1"
		},
		"favoritesCount": 2147
	},
	"object": {
		"objectType": "note",
		"id": "object:search.x.com,2005:1293593516040269825",
		"summary": "¡Por fin está aquí! 🥁 Saluda a la nueva #API.\n\nEstamos reconstruyendo la X API v2 desde cero para… https://t.co/UeCndQGMjx",
		"link": "http://x.com/XDevelopers/statuses/1293593516040269825",
		"postedTime": "2020-08-12T17:01:42.000Z"
	},
	"favoritesCount": 2844,
	"twitter_entities": {
		"hashtags": [{
			"text": "API",
			"indices": [
				42,
				53
			]
		}],
		"urls": [{
			"url": "https://t.co/UeCndQGMjx",
			"expanded_url": "https://x.com/i/web/status/1293593516040269825",
			"display_url": "x.com/i/web/status/1…",
			"indices": [
				117,
				140
			]
		}],
		"user_mentions": [],
		"symbols": []
	},
	"twitter_lang": "en",
	"retweetCount": 958,
	"gnip": {
		"matching_rules": [{
			"tag": null
		}],
		"urls": [{
			"url": "https://t.co/32VrwpGaJw",
			"expanded_url": "https://blog.x.com/developer/en_us/topics/tools/2020/introducing_new_twitter_api.html",
			"expanded_status": 200,
			"expanded_url_title": "Presentamos una X API nueva y mejorada",
			"expanded_url_description": "Presentamos la nueva X API: reconstruida desde cero para ofrecer nuevas funcionalidades más rápido y que los desarrolladores puedan ayudar al mundo a conectarse con la conversación pública en X."
		}]
	},
	"twitter_filter_level": "low"
}
Actividad de retuits
{
	"id": "tag:search.x.com,2005:1229851574555508737",
	"objectType": "activity",
	"verb": "share",
	"postedTime": "2020-02-18T19:33:59.000Z",
	"generator": {
		"displayName": "App web de X",
		"link": "https://mobile.x.com"
	},
	"provider": {
		"objectType": "service",
		"displayName": "X",
		"link": "http://www.x.com"
	},
	"link": "http://x.com/XDevelopers/statuses/1229851574555508737",
	"body": "RT @suhemparack: Creé una Alexa Skill para X usando APL que te permite ver Posts y Tendencias en el echo show!\n\nMíralo aquí…",
	"actor": {
		"objectType": "person",
		"id": "id:twitter.com:2244994945",
		"link": "http://www.x.com/XDevelopers",
		"displayName": "X Dev",
		"postedTime": "2013-12-14T04:35:55.036Z",
		"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"summary": "La voz del equipo #XDevelopers y tu fuente oficial de actualizaciones, noticias y eventos relacionados con la #XAPI.",
		"friendsCount": 2038,
		"followersCount": 512292,
		"listedCount": 1666,
		"statusesCount": 3634,
		"twitterTimeZone": null,
		"verified": true,
		"utcOffset": null,
		"preferredUsername": "XDevelopers",
		"languages": [],
		"links": [{
			"href": "https://developer.x.com/en/community",
			"rel": "me"
		}],
		"location": {
			"objectType": "place",
			"displayName": "127.0.0.1"
		},
		"favoritesCount": 2147
	},
	"object": {
		"id": "tag:search.x.com,2005:1229843515603144704",
		"objectType": "activity",
		"verb": "post",
		"postedTime": "2020-02-18T19:01:58.000Z",
		"generator": {
			"displayName": "App web de X",
			"link": "https://mobile.x.com"
		},
		"provider": {
			"objectType": "service",
			"displayName": "X",
			"link": "http://www.x.com"
		},
		"link": "http://x.com/suhemparack/statuses/1229843515603144704",
		"body": "Creé una Alexa Skill para X usando APL que te permite ver Posts y Tendencias en el echo show!\n\nMíralo… https://t.co/RP9NgltX7i",
		"long_object": {
			"body": "Creé una Alexa Skill para X usando APL que te permite ver Posts y Tendencias en el echo show!\n\nMíralo aquí 👇\n\nhttps://t.co/l5J8wq748G",
			"display_text_range": [
				0,
				150
			],
			"twitter_entities": {
				"hashtags": [],
				"urls": [{
					"url": "https://t.co/l5J8wq748G",
					"expanded_url": "https://dev.to/XDevelopers/building-an-alexa-skill-for-twitter-using-alexa-presentation-language-1aj0",
					"display_url": "dev.to/twitterdev/bui…",
					"indices": [
						127,
						150
					]
				}],
				"user_mentions": [],
				"symbols": []
			}
		},
		"actor": {
			"objectType": "person",
			"id": "id:twitter.com:857699969263964161",
			"link": "http://www.x.com/suhemparack",
			"displayName": "Suhem Parack",
			"postedTime": "2017-04-27T20:56:22.883Z",
			"image": "https://pbs.twimg.com/profile_images/1230703695051935747/TbQKe91L_normal.jpg",
			"summary": "Relaciones con Desarrolladores para Investigación Académica en @X. Háblame sobre investigación con datos de X. Anteriormente: Amazon Alexa. Las opiniones son propias",
			"friendsCount": 501,
			"followersCount": 732,
			"listedCount": 12,
			"statusesCount": 458,
			"twitterTimeZone": null,
			"verified": false,
			"utcOffset": null,
			"preferredUsername": "suhemparack",
			"languages": [],
			"links": [{
				"href": "https://developer.x.com",
				"rel": "me"
			}],
			"location": {
				"objectType": "place",
				"displayName": "Seattle, WA"
			},
			"favoritesCount": 358
		},
		"object": {
			"objectType": "note",
			"id": "object:search.x.com,2005:1229843515603144704",
			"summary": "Creé una Alexa Skill para X usando APL que te permite ver Posts y Tendencias en el echo show!\n\nMíralo… https://t.co/RP9NgltX7i",
			"link": "http://x.com/suhemparack/statuses/1229843515603144704",
			"postedTime": "2020-02-18T19:01:58.000Z"
		},
		"favoritesCount": 71,
		"twitter_entities": {
			"hashtags": [],
			"urls": [{
				"url": "https://t.co/RP9NgltX7i",
				"expanded_url": "https://x.com/i/web/status/1229843515603144704",
				"display_url": "x.com/i/web/status/1…",
				"indices": [
					116,
					139
				]
			}],
			"user_mentions": [],
			"symbols": []
		},
		"twitter_lang": "en",
		"twitter_filter_level": "low"
	},
	"favoritesCount": 0,
	"twitter_entities": {
		"hashtags": [],
		"urls": [],
		"user_mentions": [{
			"screen_name": "suhemparack",
			"name": "Suhem Parack",
			"id": 857699969263964200,
			"id_str": "857699969263964161",
			"indices": [
				3,
				15
			]
		}],
		"symbols": []
	},
	"twitter_lang": "en",
	"retweetCount": 19,
	"gnip": {
		"matching_rules": [{
			"tag": null
		}],
		"urls": [{
			"url": "https://t.co/l5J8wq748G",
			"expanded_url": "https://dev.to/twitterdev/building-an-alexa-skill-for-twitter-using-alexa-presentation-language-1aj0",
			"expanded_status": 200,
			"expanded_url_title": null,
			"expanded_url_description": null
		}]
	},
	"twitter_filter_level": "low"
}
Actividad de Tweet con cita
{
 	"id": "tag:search.x.com,2005:1328399838128467969",
 	"objectType": "activity",
 	"verb": "post",
 	"postedTime": "2020-11-16T18:09:36.000Z",
 	"generator": {
 		"displayName": "X Web App",
 		"link": "https://mobile.x.com"
 	},
 	"provider": {
 		"objectType": "service",
 		"displayName": "X",
 		"link": "http://www.x.com"
 	},
 	"link": "http://x.com/XDevelopers/statuses/1328399838128467969",
 	"body": "Según lo previsto, los endpoints de Labs v2 mencionados a continuación ya han sido retirados. Háznoslo saber en los foros si tienes… https://t.co/ahQvTYaOcZ",
 	"long_object": {
 		"body": "Según lo previsto, los endpoints de Labs v2 mencionados a continuación ya han sido retirados. Háznoslo saber en los foros si tienes preguntas o necesitas ayuda con X API v2. https://t.co/JaxttUMmjX",
 		"display_text_range": [
 			0,
 			166
 		],
 		"twitter_entities": {
 			"hashtags": [],
 			"urls": [{
 				"url": "https://t.co/JaxttUMmjX",
 				"expanded_url": "https://x.com/XDevelopers/status/1327011423252144128",
 				"display_url": "x.com/XDevelopers/sta…",
 				"indices": [
 					167,
 					190
 				]
 			}],
 			"user_mentions": [],
 			"symbols": []
 		}
 	},
 	"display_text_range": [
 		0,
 		140
 	],
 	"actor": {
 		"objectType": "person",
 		"id": "id:twitter.com:2244994945",
 		"link": "http://www.x.com/XDevelopers",
 		"displayName": "X Dev",
 		"postedTime": "2013-12-14T04:35:55.036Z",
 		"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
 		"summary": "La voz del equipo de #XDevelopers y tu fuente oficial de actualizaciones, noticias y eventos relacionados con #XAPI.",
 		"friendsCount": 2038,
 		"followersCount": 512292,
 		"listedCount": 1666,
 		"statusesCount": 3634,
 		"twitterTimeZone": null,
 		"verified": true,
 		"utcOffset": null,
 		"preferredUsername": "XDevelopers",
 		"languages": [],
 		"links": [{
 			"href": "https://developer.x.com/en/community",
 			"rel": "me"
 		}],
 		"location": {
 			"objectType": "place",
 			"displayName": "127.0.0.1"
 		},
 		"favoritesCount": 2147
 	},
 	"object": {
 		"objectType": "note",
 		"id": "object:search.x.com,2005:1328399838128467969",
 		"summary": "Según lo previsto, los endpoints de Labs v2 mencionados a continuación ya han sido retirados. Háznoslo saber en los foros si tienes… https://t.co/ahQvTYaOcZ",
 		"link": "http://x.com/XDevelopers/statuses/1328399838128467969",
 		"postedTime": "2020-11-16T18:09:36.000Z"
 	},
 	"favoritesCount": 29,
 	"twitter_entities": {
 		"hashtags": [],
 		"urls": [{
 			"url": "https://t.co/ahQvTYaOcZ",
 			"expanded_url": "https://x.com/i/web/status/1328399838128467969",
 			"display_url": "x.com/i/web/status/1…",
 			"indices": [
 				117,
 				140
 			]
 		}],
 		"user_mentions": [],
 		"symbols": []
 	},
 	"twitter_lang": "en",
 	"retweetCount": 7,
 	"gnip": {
 		"matching_rules": [{
 			"tag": null
 		}],
 		"urls": [{
 			"url": "https://t.co/r6z6CI7kEy",
 			"expanded_url": "https://devcommunity.x.com/t/retiring-labs-v2-recent-search-and-hide-replies/145795",
 			"expanded_status": 200,
 			"expanded_url_title": "Retiro de búsqueda reciente y ocultar respuestas de Labs v2",
 			"expanded_url_description": "Como mencionamos en nuestros anuncios de Acceso Anticipado y ocultar respuestas, los siguientes endpoints de X Developer Labs v2 serán retirados el 16 de noviembre. Búsqueda reciente de Labs v2 Ocultar respuestas de Labs v2 Si se invocan, estos endpoints responderán con un estado HTTP 410 y no devolverán datos. Con base en tus comentarios de Labs, incorporamos la funcionalidad correspondiente en X API v2. La documentación relevante se puede encontrar usando los enlaces a continuación. Haz clic aquí para inscribirte en el acceso v2 si aún no lo has hecho..."
 		}]
 	},
 	"twitter_filter_level": "low",
 	"twitter_quoted_status": {
 		"id": "tag:search.x.com,2005:1327011423252144128",
 		"objectType": "activity",
 		"verb": "post",
 		"postedTime": "2020-11-12T22:12:32.000Z",
 		"generator": {
 			"displayName": "X Web App",
 			"link": "https://mobile.x.com"
 		},
 		"provider": {
 			"objectType": "service",
 			"displayName": "X",
 			"link": "http://www.x.com"
 		},
 		"link": "http://x.com/XDevelopers/statuses/1327011423252144128",
 		"body": "👋 Recordatorio: ocultar respuestas y búsqueda reciente de X Developer Labs v2 serán retirados el próximo lunes, novi… https://t.co/EEWN2Q9aXh",
 		"long_object": {
 			"body": "👋 Recordatorio: ocultar respuestas y búsqueda reciente de X Developer Labs v2 serán retirados el próximo lunes, 16 de noviembre. Te recomendamos migrar a los nuevos endpoints de ocultar respuestas y búsqueda reciente ahora disponibles en #XAPI v2. Detalles: https://t.co/r6z6CI7kEy",
 			"display_text_range": [
 				0,
 				273
 			],
 			"twitter_entities": {
 				"hashtags": [{
 					"text": "API",
 					"indices": [
 						228,
 						239
 					]
 				}],
 				"urls": [{
 					"url": "https://t.co/r6z6CI7kEy",
 					"expanded_url": "https://devcommunity.x.com/t/retiring-labs-v2-recent-search-and-hide-replies/145795",
 					"display_url": "devcommunity.com/t/retiring-lab…",
 					"indices": [
 						250,
 						273
 					]
 				}],
 				"user_mentions": [],
 				"symbols": []
 			}
 		},
 		"actor": {
 			"objectType": "person",
 			"id": "id:twitter.com:2244994945",
 			"link": "http://www.x.com/XDevelopers",
 			"displayName": "X Dev",
 			"postedTime": "2013-12-14T04:35:55.036Z",
 			"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
 			"summary": "La voz del equipo de #XDevelopers y tu fuente oficial de actualizaciones, noticias y eventos relacionados con #XAPI.",
 			"friendsCount": 2038,
 			"followersCount": 512292,
 			"listedCount": 1666,
 			"statusesCount": 3634,
 			"twitterTimeZone": null,
 			"verified": true,
 			"utcOffset": null,
 			"preferredUsername": "XDevelopers",
 			"languages": [],
 			"links": [{
 				"href": "https://developer.x.com/en/community",
 				"rel": "me"
 			}],
 			"location": {
 				"objectType": "place",
 				"displayName": "127.0.0.1"
 			},
 			"favoritesCount": 2147
 		},
 		"object": {
 			"objectType": "note",
 			"id": "object:search.x.com,2005:1327011423252144128",
 			"summary": "👋 Recordatorio: ocultar respuestas y búsqueda reciente de X Developer Labs v2 serán retirados el próximo lunes, novi… https://t.co/EEWN2Q9aXh",
 			"link": "http://x.com/XDevelopers/statuses/1327011423252144128",
 			"postedTime": "2020-11-12T22:12:32.000Z"
 		},
 		"favoritesCount": 33,
 		"twitter_entities": {
 			"hashtags": [],
 			"urls": [{
 				"url": "https://t.co/EEWN2Q9aXh",
 				"expanded_url": "https://x.com/i/web/status/1327011423252144128",
 				"display_url": "x.com/i/web/status/1…",
 				"indices": [
 					117,
 					140
 				]
 			}],
 			"user_mentions": [],
 			"symbols": []
 		},
 		"twitter_lang": "en",
 		"twitter_filter_level": "low"
 	}
 }
Actividad de Retweet y Quote Tweet
{
	"id": "tag:search.x.com,2005:1225470895902412800",
	"objectType": "activity",
	"verb": "share",
	"postedTime": "2020-02-06T17:26:44.000Z",
	"generator": {
		"displayName": "X para iPhone",
		"link": "http://x.com/download/iphone"
	},
	"provider": {
		"objectType": "service",
		"displayName": "X",
		"link": "http://www.x.com"
	},
	"link": "http://x.com/XDevelopers/statuses/1225470895902412800",
	"body": "RT @AureliaSpecker: 📣 If you enjoyed the London commute tutorial I wrote in November last year, check out the refactored version that uses…",
	"actor": {
		"objectType": "person",
		"id": "id:twitter.com:2244994945",
		"link": "http://www.x.com/XDevelopers",
		"displayName": "X Dev",
		"postedTime": "2013-12-14T04:35:55.036Z",
		"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"summary": "La voz del equipo de #XDevelopers y tu fuente oficial de actualizaciones, noticias y eventos relacionados con la #XAPI.",
		"friendsCount": 2038,
		"followersCount": 512292,
		"listedCount": 1666,
		"statusesCount": 3634,
		"twitterTimeZone": null,
		"verified": true,
		"utcOffset": null,
		"preferredUsername": "XDevelopers",
		"languages": [],
		"links": [{
			"href": "https://developer.x.com/en/community",
			"rel": "me"
		}],
		"location": {
			"objectType": "place",
			"displayName": "127.0.0.1"
		},
		"favoritesCount": 2147
	},
	"object": {
		"id": "tag:search.x.com,2005:1224709550214873090",
		"objectType": "activity",
		"verb": "post",
		"postedTime": "2020-02-04T15:01:25.000Z",
		"generator": {
			"displayName": "Aplicación web de X",
			"link": "https://mobile.x.com"
		},
		"provider": {
			"objectType": "service",
			"displayName": "X",
			"link": "http://www.x.com"
		},
		"link": "http://x.com/AureliaSpecker/statuses/1224709550214873090",
		"body": "📣 If you enjoyed the London commute tutorial I wrote in November last year, check out the refactored version that u… https://t.co/cAepHunkFp",
		"long_object": {
			"body": "📣 If you enjoyed the London commute tutorial I wrote in November last year, check out the refactored version that uses X's new search endpoint 🚇 https://t.co/87XIPZmZBJ\n\n#DEVcommunity #Pythontutorial @XDevelopers @API https://t.co/dXrJYvn3hY",
			"display_text_range": [
				0,
				229
			],
			"twitter_entities": {
				"hashtags": [{
						"text": "DEVcommunity",
						"indices": [
							176,
							189
						]
					},
					{
						"text": "Pythontutorial",
						"indices": [
							190,
							205
						]
					}
				],
				"urls": [{
						"url": "https://t.co/87XIPZmZBJ",
						"expanded_url": "https://bit.ly/2OrnrCC",
						"display_url": "bit.ly/2OrnrCC",
						"indices": [
							151,
							174
						]
					},
					{
						"url": "https://t.co/dXrJYvn3hY",
						"expanded_url": "https://x.com/AureliaSpecker/status/1195000047089389573",
						"display_url": "x.com/AureliaSpecker…",
						"indices": [
							230,
							253
						]
					}
				],
				"user_mentions": [{
						"screen_name": "XDevelopers",
						"name": "X Dev",
						"id": 2244994945,
						"id_str": "2244994945",
						"indices": [
							206,
							217
						]
					},
					{
						"screen_name": "API",
						"name": "X API",
						"id": 6253282,
						"id_str": "6253282",
						"indices": [
							218,
							229
						]
					}
				],
				"symbols": []
			}
		},
		"display_text_range": [
			0,
			140
		],
		"actor": {
			"objectType": "person",
			"id": "id:twitter.com:1102321381",
			"link": "http://www.x.com/AureliaSpecker",
			"displayName": "Aurelia Specker",
			"postedTime": "2013-01-18T23:45:43.000Z",
			"image": "https://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
			"summary": "devrel @TwitterUK • Suiza en Londres • madre de plantas • peluquera personal de @_dormrod",
			"friendsCount": 1331,
			"followersCount": 1032,
			"listedCount": 26,
			"statusesCount": 854,
			"twitterTimeZone": null,
			"verified": false,
			"utcOffset": null,
			"preferredUsername": "AureliaSpecker",
			"languages": [],
			"links": [{
				"href": null,
				"rel": "me"
			}],
			"location": {
				"objectType": "place",
				"displayName": "Londres, Reino Unido"
			},
			"favoritesCount": 4979
		},
		"object": {
			"objectType": "note",
			"id": "object:search.x.com,2005:1224709550214873090",
			"summary": "📣 If you enjoyed the London commute tutorial I wrote in November last year, check out the refactored version that u… https://t.co/cAepHunkFp",
			"link": "http://x.com/AureliaSpecker/statuses/1224709550214873090",
			"postedTime": "2020-02-04T15:01:25.000Z"
		},
		"favoritesCount": 43,
		"twitter_entities": {
			"hashtags": [],
			"urls": [{
				"url": "https://t.co/cAepHunkFp",
				"expanded_url": "https://x.com/i/web/status/1224709550214873090",
				"display_url": "x.com/i/web/status/1…",
				"indices": [
					117,
					140
				]
			}],
			"user_mentions": [],
			"symbols": []
		},
		"twitter_lang": "en",
		"twitter_filter_level": "low"
	},
	"favoritesCount": 0,
	"twitter_entities": {
		"hashtags": [],
		"urls": [],
		"user_mentions": [{
			"screen_name": "AureliaSpecker",
			"name": "Aurelia Specker",
			"id": 1102321381,
			"id_str": "1102321381",
			"indices": [
				3,
				18
			]
		}],
		"symbols": []
	},
	"twitter_lang": "en",
	"retweetCount": 12,
	"gnip": {
		"matching_rules": [{
			"tag": null
		}],
		"urls": [{
				"url": "https://t.co/87XIPZmZBJ",
				"expanded_url": "https://dev.to/XDevelopers/migrate-to-twitter-s-newly-released-labs-recent-search-endpoint-3npe",
				"expanded_status": 200,
				"expanded_url_title": null,
				"expanded_url_description": null
			},
			{
				"url": "https://t.co/sOjXW4YhbN",
				"expanded_url": "https://dev.to/XDevelopers/using-the-twitter-api-to-make-your-commute-easier-3od0",
				"expanded_status": 200,
				"expanded_url_title": null,
				"expanded_url_description": null
			}
		]
	},
	"twitter_filter_level": "low",
	"twitter_quoted_status": {
		"id": "tag:search.x.com,2005:1195000047089389573",
		"objectType": "activity",
		"verb": "post",
		"postedTime": "2019-11-14T15:26:27.000Z",
		"generator": {
			"displayName": "App web de X",
			"link": "https://mobile.x.com"
		},
		"provider": {
			"objectType": "service",
			"displayName": "X",
			"link": "http://www.x.com"
		},
		"link": "http://x.com/AureliaSpecker/statuses/1195000047089389573",
		"body": "Escribí un tutorial sobre cómo obtener información personalizada de trayectos usando la X API🚇\n\n#DEVcommunity #Pythontutorial… https://t.co/pL0qJ4vhtE",
		"long_object": {
			"body": "Escribí un tutorial sobre cómo obtener información personalizada de trayectos usando la X API🚇\n\n#DEVcommunity #Pythontutorial \n\nConsúltalo aquí 👇\nhttps://t.co/sOjXW4YhbN",
			"display_text_range": [
				0,
				160
			],
			"twitter_entities": {
				"hashtags": [{
						"text": "DEVcommunity",
						"indices": [
							85,
							98
						]
					},
					{
						"text": "Pythontutorial",
						"indices": [
							99,
							114
						]
					}
				],
				"urls": [{
					"url": "https://t.co/sOjXW4YhbN",
					"expanded_url": "https://dev.to/XDevelopers/using-the-twitter-api-to-make-your-commute-easier-3od0",
					"display_url": "dev.to/twitterdev/usi…",
					"indices": [
						137,
						160
					]
				}],
				"user_mentions": [],
				"symbols": []
			}
		},
		"actor": {
			"objectType": "person",
			"id": "id:twitter.com:1102321381",
			"link": "http://www.x.com/AureliaSpecker",
			"displayName": "Aurelia Specker",
			"postedTime": "2013-01-18T23:45:43.000Z",
			"image": "https://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
			"summary": "devrel @TwitterUK • Suiza en Londres • madre de plantas de interior • peluquera personal de @_dormrod",
			"friendsCount": 1331,
			"followersCount": 1032,
			"listedCount": 26,
			"statusesCount": 854,
			"twitterTimeZone": null,
			"verified": false,
			"utcOffset": null,
			"preferredUsername": "AureliaSpecker",
			"languages": [],
			"links": [{
				"href": null,
				"rel": "me"
			}],
			"location": {
				"objectType": "place",
				"displayName": "Londres, Reino Unido"
			},
			"favoritesCount": 4979
		},
		"object": {
			"objectType": "note",
			"id": "object:search.x.com,2005:1195000047089389573",
			"summary": "Escribí un tutorial sobre cómo obtener información personalizada de trayectos usando la X API🚇\n\n#DEVcommunity #Pythontutorial… https://t.co/pL0qJ4vhtE",
			"link": "http://x.com/AureliaSpecker/statuses/1195000047089389573",
			"postedTime": "2019-11-14T15:26:27.000Z"
		},
		"favoritesCount": 123,
		"twitter_entities": {
			"hashtags": [{
					"text": "DEVcommunity",
					"indices": [
						85,
						98
					]
				},
				{
					"text": "Pythontutorial",
					"indices": [
						99,
						114
					]
				}
			],
			"urls": [{
				"url": "https://t.co/pL0qJ4vhtE",
				"expanded_url": "https://x.com/i/web/status/1195000047089389573",
				"display_url": "x.com/i/web/status/1…",
				"indices": [
					116,
					139
				]
			}],
			"user_mentions": [],
			"symbols": []
		},
		"twitter_lang": "en",
		"twitter_filter_level": "low"
	}
}

Cronología de metadatos de Tweets

Ir a esta página Introducción Conceptos clave Cronología de X Consejos para filtrar Próximos pasos

Introducción**

En esencia, X es una red de comunicación pública, en tiempo real y global. Desde 2006, la evolución de X ha estado impulsada tanto por los patrones de uso y las convenciones de los usuarios como por nuevas funciones y mejoras de producto. Si utiliza datos de X para investigación histórica, comprender la cronología de esta evolución es importante para identificar Posts de interés en el archivo de datos. X se lanzó como una sencilla App móvil por SMS y ha crecido hasta convertirse en una plataforma de comunicación integral, con un conjunto completo de APIs. Las APIs siempre han sido un pilar de la red de X. La primera API apareció poco después del lanzamiento de X. Cuando se introdujo por primera vez el etiquetado geográfico de Posts en 2009, se habilitó a través de una Geo API (y más tarde la posibilidad de “etiquetar geográficamente” un Post se integró en la interfaz de usuario de X.com). Hoy, las APIs de X impulsan la red de comunicación bidireccional que se ha convertido en fuente de noticias de última hora y de intercambio de información. Las oportunidades para crear sobre este canal de comunicación global y en tiempo real son infinitas. X pone a disposición dos APIs históricas que proporcionan acceso a todos los Posts disponibles públicamente: Historical PowerTrack y la Full-Archive Search API. Ambas APIs ofrecen un conjunto de operadores para consultar y recopilar Posts de interés. Estos operadores coinciden con una variedad de atributos asociados a cada Post: cientos de atributos como el contenido de texto del Post, el nombre de la cuenta del autor y los enlaces compartidos en el Post. Los Posts y sus atributos se codifican en JSON, un formato común de intercambio de datos basado en texto. Así, a medida que se introducían nuevas funciones, aparecían nuevos atributos JSON y, por lo general, se incorporaban nuevos operadores de API para hacer coincidir esos atributos. Si su caso de uso incluye la necesidad de escuchar lo que el mundo ha dicho en X, cuanto mejor entienda cuándo los operadores empezaron a contar con metadatos JSON con los que hacer coincidencia, más eficaces podrán ser sus filtros históricos de PowerTrack. A continuación, presentaremos algunos conceptos clave que preparan el terreno para entender cómo las actualizaciones en los metadatos de los Posts afectan a la detección de su señal de datos de interés.

Conceptos clave**

De convenciones de usuarios a objetos de primera clase en X

Los usuarios de X introdujeron de forma orgánica nuevos patrones de comunicación, ahora fundamentales, en la red de X. Un ejemplo clave es el hashtag, hoy casi universal en todas las redes sociales. Los hashtags se introdujeron como una forma de organizar conversaciones y temas. En una red con cientos de millones de mensajes al día, las herramientas para encontrar Posts de interés son clave, y los hashtags se han convertido en un método fundamental. Poco después de que creciera el uso de los hashtags, recibieron estatus y soporte oficial de X. Cuando los hashtags se convirtieron en un objeto de “primera clase”, esto implicó muchas cosas. Significó que los hashtags pasaron a ser clicables y buscables en la interfaz de usuario de X.com. También significó que los hashtags pasaron a formar parte de la familia de entities de X, junto con las @mentions, los medios adjuntos, los símbolos bursátiles y los enlaces compartidos. Estas entidades están codificadas de forma práctica en un array JSON preprocesado, lo que facilita a los desarrolladores procesarlas, escanearlas y almacenarlas. Los Retweets son otro ejemplo de convenciones impulsadas por los usuarios que se convierten en objetos oficiales. Retuitear surgió como una forma de “reenviar” contenido a otros. Empezó como un proceso manual de copiar y pegar un Post y anteponerle el patrón “RT @”. Este proceso finalmente se automatizó mediante un nuevo botón de Retweet, con nuevos metadatos JSON. Nació el Retweet “oficial”. Otros ejemplos incluyen las “mentions”, compartir contenidos multimedia y enlaces web, y compartir una ubicación con tu Post. Cada uno de estos patrones de uso dio lugar a nuevas funciones de la interfaz de usuario en x.com, nuevo JSON de soporte y, por lo tanto, nuevas formas de hacer matching en Posts. Todos estos atributos fundamentales de los Posts han dado lugar a PowerTrack Operators utilizados para hacer matching con ellos.

Metadatos de Post, mutabilidad, actualizaciones y vigencia

Si bien los mensajes de Post pueden tener hasta un número fijo de caracteres, la descripción JSON de un Post consta de más de 100 atributos. Entre ellos se incluyen quién publicó, a qué hora, si es un Post original o un Retweet, y un arreglo de objetos de primer nivel como hashtags, menciones y enlaces compartidos. Para la cuenta que publicó, hay un objeto User (o Actor) con una variedad de atributos que proporcionan el perfil del usuario y otros metadatos de la cuenta. Los perfiles incluyen una breve descripción biográfica, una ubicación principal (texto libre), el idioma preferido y un enlace opcional a un sitio web. Algunos metadatos de la cuenta nunca cambian (p. ej., el id numérico del usuario y la fecha de creación), algunos cambian lentamente con el tiempo, mientras que otros atributos cambian con mayor frecuencia. Las personas cambian de trabajo y se mudan. Las empresas actualizan su información. Cuando recopiles Posts históricos, es importante entender que algunos metadatos están tal como estaban cuando se publicó, y otros metadatos están tal como están cuando se envía la consulta. Con todas las API históricas, la descripción del perfil del usuario, el nombre para mostrar y los atributos de “home” del perfil se actualizan a los valores del momento de la consulta.

Contenido multimedia “nativo”

X.com y las apps móviles de X permiten agregar fotos y videos a un Post al hacer clic en un botón y explorar tus galerías. Ahora que están integrados como acciones de primera clase, los videos y las fotos compartidos de este modo se consideran contenido multimedia “nativo”. Muchos operadores de consulta funcionan con estos recursos “nativos”, incluidos has:videos, has:images y has:media. Estos solo coinciden con contenido multimedia compartido mediante funciones de X. Para coincidir con otro contenido multimedia alojado fuera de la plataforma de X, deberás usar operadores que coincidan con metadatos de URL. Entonces, antes de profundizar en los detalles de producto de Historical PowerTrack y Full-Archive Search, hagamos un recorrido por cómo X, como producto y plataforma, ha evolucionado con el tiempo. Cronología de X A continuación encontrarás una cronología seleccionada de X. La mayoría de estas actualizaciones de X afectaron de manera fundamental el comportamiento de los usuarios, el contenido JSON de los Posts, los operadores de consulta o los tres. Si vemos a X como una plataforma de API, los siguientes eventos en cierta medida afectaron los payloads JSON usados para codificar los Posts. A su vez, esos detalles JSON influyen en cómo las API históricas de X hacen coincidir los elementos. Ten en cuenta que esta cronología es generalmente precisa, aunque no exhaustiva.

2006

  • Octubre
    • @replies se convierte en una convención.
    • Los cashtagsaparecenporprimeravez,perosuusoparamencionarsıˊmbolosbursaˊtilesnosevuelvecomuˊnhastaprincipiosde2009.Loscashtags aparecen por primera vez, pero su uso para mencionar símbolos bursátiles no se vuelve común hasta principios de 2009. Los cashtags pasaron a ser enlaces clicables y buscables en junio de 2012.
  • Noviembre - Se introducen los Favoritos.

2007

  • Enero: las @replies se convierten en un objeto de primera clase con un botón de respuesta en la interfaz y metadatos in_reply_to.
  • Abril: los Retweets se convierten en una convención.
  • Agosto: los #hashtags surgen como una herramienta principal para buscar y organizar Posts.

2009

  • Febrero: los $cashtags se convierten en una convención común para hablar de símbolos bursátiles.
  • Mayo: se introduce la beta de Retweet con “Via @” antepuesto al cuerpo del Post.
  • Junio: se introducen las cuentas verificadas.
  • Agosto: los Retweets pasan a ser un objeto de primera clase con el patrón “RT @” y el nuevo metadato retweet_status.
  • Octubre: se lanza la función de Listas.
  • Noviembre: se lanza la Post Geotagging API, proporcionando el primer método para que los usuarios compartan su ubicación mediante apps de terceros.

2010

  • Junio: se presentó X Places para geoetiquetar Posts.
  • Agosto: se lanzó el botón de Post para sitios web, lo que facilitó compartir enlaces.

2011

  • Mayo: se introdujo el botón Follow, lo que facilitó seguir cuentas asociadas a sitios web.
  • Agosto: se introdujeron las fotos nativas.

2012

  • Junio: los $Cashtags pasan a ser enlaces en los que se puede hacer clic y buscar.

2014

2015

  • Abril: Un cambio en el diseño de la interfaz de usuario de los Posts de X dio como resultado menos Posts con geolocalización.
  • Octubre: Se introdujeron las encuestas de X. Originalmente, las encuestas admitían dos opciones con un período de votación de 24 horas. En noviembre, pasaron a admitir cuatro opciones con períodos de votación de 5 minutos a siete días. Los metadatos de las encuestas estuvieron disponibles (solo en formato nativo enriquecido) en febrero de 2017.

2016

2017

  • Febrero: los metadatos de X Poll se incluyen en los metadatos de Post (solo en formato nativo enriquecido).
  • Abril: se presentan las “Respuestas simplificadas”, con las cuentas a las que se responde sin contar para el límite de 140 caracteres (“dmw140, parte 2”).
2018 2022
  • 29 de septiembre: la capacidad de editar Posts se despliega para un pequeño grupo de prueba. Los metadatos de Post editado se agregan al objeto Post cuando corresponda. Esto incluye los objetos edit_history y edit_controls. Estos metadatos no se devolverán para Posts creados antes de que se añadiera la funcionalidad de edición. No hay operadores asociados para estos metadatos. Para obtener más información sobre cómo funcionan las ediciones de Post, consulta los fundamentos de Edit Posts
Consejos de filtrado Familiarizarse con la cronología de X sobre cuándo y cómo se añadieron nuevas funciones puede ayudarte a crear consultas más efectivas. Aquí, una consulta significa un filtro o regla que aplican las API históricas de X al archivo de Posts, usando PowerTrack Operators para hacer coincidencias con el JSON del Post. Un ejemplo es el operador lang:, que se utiliza para hacer coincidir Posts en un idioma específico. X ofrece un servicio de clasificación de idioma (con compatibilidad para más de 50 idiomas), y las X API proporcionan estos metadatos en el JSON que se genera para cada Post. Así, si un Post está escrito en español, el atributo JSON “lang” se establece en “es”. Por lo tanto, si creas un filtro con la cláusula lang:es, solo coincidirá con mensajes de Post clasificados como español. La información de la cronología también puede ayudar a interpretar mejor los Post data recibidos. Supongamos que investigas el intercambio de contenido sobre los Juegos Olímpicos de Verano de 2008 y 2012. Si aplicas solo el operador is:retweet para coincidir con Retweets, en 2008 no habría datos que coincidan. Sin embargo, para 2012 probablemente habría millones de Retweets. A partir de esto, podrías concluir erróneamente que en 2008 los Retweets no eran una convención de los usuarios o que simplemente nadie hizo Retweet sobre esos Juegos Olímpicos. Dado que los Retweets se convirtieron en un objeto de primera clase en 2009, necesitas agregar una cláusula de regla ”RT @” para ayudar a identificarlos en 2008. Tanto los Retweets como la clasificación del idioma de los Posts son ejemplos de atributos de Post con una larga historia y muchos detalles de producto. A continuación, hablaremos con más detalle de estas y otras clases de atributos importantes para la coincidencia y la comprensión de X Data.

Reconocer falsos negativos

Al crear filtros, es importante recordar que los Operadores que actúan sobre metadatos tienen una “fecha de nacimiento”. Si creas un filtro con un Operador que se basa en metadatos introducidos después de que se publicó el Post, obtendrás un falso negativo. Por ejemplo, supongamos que te interesan todos los Posts que mencionan ‘snow’ y comparten un video. Si creas una regla con el Operador has:videos, que coincide con Posts con videos nativos, esa cláusula no coincidirá con ningún Post anterior a 2015. Sin embargo, compartir videos era común en X mucho antes de 2015. Antes de ese año, los usuarios compartían enlaces a videos alojados en otros sitios, pero en 2015, X incorporó nuevas funciones de “compartir video” directamente en la plataforma. Para encontrar esos Posts anteriores de interés, deberías incluir una cláusula de regla como url:"youtube.com". Ten en cuenta que, con las Search APIs, hubo casos en los que se “rellenaron” metadatos de forma retroactiva cuando se reconstruyó el índice. Un buen ejemplo son los cashtags,queempezaronausarseampliamenteparahablardesıˊmbolosbursaˊtilesen2009.Despueˊsdequeseintrodujoeloperadorcashtags, que empezaron a usarse ampliamente para hablar de símbolos bursátiles en 2009. Después de que se introdujo el operador cashtag en 2015, se reconstruyó el índice de Search y, en el proceso, la entidad del símbolo se extrajo de todos los cuerpos de los Posts, incluso a principios de 2006, cuando $ se usaba principalmente como jerga: “I hope it nownow $oon!”.

Identificar y filtrar atributos de Post importantes para su caso de uso

Algunos metadatos, como los id numéricos de cuentas de X, existen desde el primer día (y son un ejemplo de metadatos de cuenta que nunca cambian). Otros metadatos no se introdujeron hasta mucho después del inicio de X en 2006. Entre los nuevos metadatos incorporados se incluyen los metadatos de Retweets, ubicaciones de Posts, títulos y descripciones de URLs y contenido multimedia “nativo”. A continuación se muestran algunos de los tipos más comunes de atributos de Post que se han visto afectados de forma fundamental por estas actualizaciones de la plataforma de X. El comportamiento de filtrado/coincidencia de estos atributos depende, en la mayoría de los casos, de la API histórica de Post que se utilice. Para ayudarle a determinar qué producto se adapta mejor a su investigación y caso de uso, los detalles de los atributos que se proporcionan a continuación incluyen información de producto de alto nivel.

Perfiles de X

Dado que, en esencia, X es un canal de comunicación global en tiempo real, la investigación con datos de Post suele centrarse en quién se comunica. A menudo es útil saber de dónde dice ser un usuario de X. Con frecuencia, saber que la biografía de una cuenta incluye menciones de intereses y aficiones puede llevarte a Posts de interés. Es muy común querer monitorizar Posts de cuentas de interés. Los atributos del perfil son clave para todos estos casos de uso. Cada cuenta en X tiene un perfil que incluye metadatos como el @handle de X, el nombre para mostrar, una breve biografía, la ubicación (texto libre ingresado por el usuario), el número de seguidores y muchos otros. Algunos atributos nunca cambian, como el id de usuario numérico y la fecha de creación de la cuenta. Otros suelen cambiar día a día, semana a semana o mes a mes, como la cantidad de Posts publicados y la cantidad de cuentas seguidas y de seguidores. Otros atributos de la cuenta también pueden cambiar en cualquier momento, pero tienden a cambiar con menos frecuencia: nombre para mostrar, ubicación y biografía. La carga JSON de cada Post incluye metadatos de perfil de la cuenta del autor del Post. Si es un Retweet, también incluye metadatos de perfil de la cuenta que publicó el Post original. La mutabilidad de los metadatos de perfil de un Post depende por completo del producto histórico utilizado. Las APIs de búsqueda ofrecen Posts históricos con la configuración de perfil tal como está en el momento de la recuperación. Para Historical PowerTrack, el perfil es tal como era en el momento en que se publicó el Post, excepto para datos anteriores a 2011. Para Posts anteriores a 2011, los metadatos del perfil reflejan el perfil tal como era en septiembre de 2011.

Post original y Retweets

Los Retweets son otro ejemplo de convenciones impulsadas por los usuarios que se convierten en objetos oficiales. El Retweet surgió como una forma de “reenviar” contenido a otros. Empezó como un proceso manual de copiar y pegar un Post y anteponerle el patrón “RT @”. Este proceso acabó automatizándose mediante un nuevo botón de Retweet, con nuevos metadatos JSON. Nació el Retweet “oficial” y la acción de retuitear pasó a ser un evento de Post de primera clase. Junto con el nuevo botón de Retweet, se introdujeron nuevos metadatos, como la carga útil completa del Post original. Que un Post sea original o compartido es un criterio de filtrado común. En algunos casos, solo se necesita contenido original. En otros, la interacción del Post es prioritaria, por lo que los Retweets son clave. El operador de PowerTrack is:retweet permite incluir o excluir Retweets. Si se extraen datos anteriores a agosto de 2009, es necesario contar con dos estrategias para detectar (o no detectar) Retweets. Antes de agosto de 2009, se debe revisar el propio mensaje del Post y buscar coincidencias exactas con el patrón “RT @”. Para los periodos posteriores a agosto de 2009, está disponible el operador is:retweet.

Clasificaciones de idioma de Post

El idioma en el que está escrito un Post suele ser de interés. El idioma del Post puede ayudar a inferir su ubicación y, a menudo, solo se necesita un idioma específico para el análisis o la visualización. (Los perfiles de X también tienen una configuración de idioma preferido). Para filtrar por la clasificación de idioma de un Post, los productos históricos de X (Search API y Historical PowerTrack) difieren bastante. Cuando se creó el archivo de Search, todos los posts se completaron retrospectivamente con la clasificación de idioma de X. Por lo tanto, el operador lang: está disponible para todo el archivo de posts. Con Historical PowerTrack, los metadatos de clasificación de idioma de X están disponibles en el archivo a partir del 26 de marzo de 2013. 

Georreferenciación de Posts

Poder identificar el lugar desde el que se publicó un Post (es decir, georreferenciarlo) es importante para muchos casos de uso. Hay tres métodos principales para georreferenciar Posts:
  • Referencias geográficas en el contenido de un Post
  • Posts geotagueados por el usuario
  • Ubicación «principal» del perfil de la cuenta establecida por el usuario
Referencias geográficas en un mensaje de Post
La coincidencia basada en referencias geográficas en el mensaje de Post, aunque a menudo es el método más complejo porque depende del conocimiento local, es una opción para todo el archivo de Posts. A continuación, un ejemplo de coincidencia georreferenciada de 2006 para el área de San Francisco basada en un filtro de “golden gate”: https://x.com/biz/statuses/28311
Posts con geotag agregado por el usuario
En noviembre de 2009, X introdujo su Post Geotagging API, que permitía etiquetar los Posts con una ubicación exacta. En junio de 2010, X introdujo X Places, que representan un área geográfica a escala de recinto, vecindario o ciudad. Aproximadamente entre el 1% y el 2% de los Posts están geotagueados mediante alguno de estos métodos. El historial de geotag disponible depende del Historical API que esté utilizando. Con las Search APIs, la posibilidad de comenzar a hacer coincidencias en Posts con algunos Geo Operators empezó en marzo de 2010, y con otros en febrero de 2015. Si está utilizando Historical PowerTrack, la georreferenciación comienza el 1 de septiembre de 2011. Cuando se creó el archivo de Historical PowerTrack, no se incluyó ninguna geotag anterior a esa fecha.
Ubicación «principal» del perfil de la cuenta establecida por el usuario
Todos los usuarios de X pueden configurar la Ubicación del perfil para indicar su ubicación principal. Millones de usuarios de X proporcionan esta información, lo que incrementa significativamente la cantidad de geodatos en X Firehose. Estos metadatos de ubicación son una cadena no normalizada, generada por el usuario y de formato libre. Aproximadamente el 30% de las cuentas tienen metadatos de Perfil Geo que pueden resolverse a nivel de país. Al igual que con la geolocalización de un Post, los métodos de correspondencia y los periodos de tiempo disponibles dependen de la Historical API que utilice. Historical PowerTrack permite a los usuarios realizar sus propias correspondencias personalizadas en estas cadenas de formato libre. Para facilitar ese proceso, X también proporciona un Profile Geo Enrichment que realiza la geocodificación cuando es posible, ofreciendo metadatos normalizados y los Operadores correspondientes. Los Operadores de Perfil Geo están disponibles tanto en Historical PowerTrack como en las Search APIs. Con Historical PowerTrack, estos metadatos de Perfil Geo están disponibles desde junio de 2014. Con las Search APIs, estos metadatos están disponibles desde febrero de 2015. Compartir enlaces a páginas web, fotos y videos siempre ha sido un caso de uso fundamental en X. En sus inicios, todas estas acciones implicaban incluir una URL directamente en el mensaje del Post. En 2011, X integró la función de compartir fotos directamente en su interfaz de usuario. En 2016 se añadieron los videos nativos. Dado este historial, existe una variedad de Operadores de filtrado para hacer coincidencias con este contenido. Hay un conjunto de Operadores que determinan si los Posts tienen enlaces, fotos o videos compartidos. Además, dado que la mayoría de las URL compartidas en X se acortan para consumir menos caracteres de un Post (p. ej., generadas por servicios como bitly o tinyurl), X proporciona enriquecimientos de data que generan una URL completa y expandida con la que se puede hacer coincidencia. Por ejemplo, si desea hacer coincidencia con Posts que incluyan enlaces sobre X y sistemas de alerta temprana, un filtro que haga referencia a ‘severe weather communication’ coincidiría con un Post que contenga esta URL http://bit.ly/1XV1tG4. En marzo de 2012 se introdujo el enriquecimiento de URL expandida. Antes de esa fecha, los payloads de los Posts incluían solo la URL proporcionada por el usuario. Por lo tanto, si el usuario incluía una URL acortada, podía resultar difícil hacer coincidencia con las URL (expandidas) de interés. Con Historical PowerTrack y las Search APIs, estos metadatos están disponibles a partir de marzo de 2012. En julio de 2016 se introdujo el enriquecimiento de URL mejorada. Esta versión mejorada proporciona el título y la descripción HTML de un sitio web en el payload del Post, junto con Operadores para hacer coincidencia con esos campos. Con Historical PowerTrack, estos metadatos están disponibles en julio de 2016. Con las Search APIs, estos metadatos comienzan a aparecer en diciembre de 2014. En septiembre de 2016, X introdujo los ‘adjuntos nativos’, donde un enlace compartido al final no se cuenta contra el límite de 140 caracteres del Post. Ambos enriquecimientos de URL siguen aplicándose a estos enlaces compartidos. Para otros detalles específicos del producto sobre el filtrado de URL, consulte los artículos correspondientes para obtener más información.