Saltar al contenido principal
Consulta nuestras guías de comparación:

X API: Diccionario de datos de nivel empresarial

Introducción

Enterprise Las Publicaciones son la unidad atómica fundamental de todo en X. Todas las X API que devuelven Publicaciones proporcionan esos datos codificados en formato JavaScript Object Notation (JSON). JSON se basa en pares clave-valor, con atributos con nombre y valores asociados. Los objetos de Publicación recuperados a través de la API incluyen la “actualización de estado” de un Usuario de X, pero los Retweets, las respuestas y los Tweets citados también son objetos de Publicación. Si una Publicación está relacionada con otra Publicación, como un Retweet, una respuesta o un Tweet citado, cada una se identificará o se incluirá en el objeto de Publicación. Incluso la Publicación más sencilla en el formato de datos nativo de X tendrá objetos JSON anidados para representar otros atributos de una Publicación, como el autor, los usuarios mencionados, la ubicación del lugar etiquetado, los hashtags, los símbolos de cashtag, los contenidos multimedia o los enlaces URL. Al trabajar con datos de X, este es un concepto importante que debes entender. El formato de los datos de la Publicación que recibirás desde la X API depende del tipo de Publicación recibida, de la X API que estés utilizando y de la configuración de formato. Los endpoints de Enterprise que devuelven objetos de Publicación se han actualizado para proporcionar los metadatos necesarios para comprender el historial de edición de la Publicación. Obtén más información sobre estos metadatos en la página de fundamentos de “Editar Publicaciones”.
En el formato nativo de X, el payload JSON incluirá atributos de «nivel raíz» y objetos JSON anidados (representados aquí con la notación {}):
{
	"created_at": "Fri Feb 14 19:00:55 +0000 2020",
	"id_str": "1228393702244134912",
	"text": "What did the developer write in their Valentine’s card?\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 utilizar el formato Enriched Native para las APIs de datos empresariales. 
  • El formato Enriched Native incluye todos los metadatos nuevos 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 en 2017.
Las APIs de datos empresariales entregan datos en dos formatos diferentes. El formato empresarial más cercano al formato estándar v1.1 nativo es Native Enriched. El formato empresarial de datos heredado es Activity Streams, implementado originalmente y utilizado por Gnip como un formato normalizado en X y otros proveedores de datos de redes sociales en ese momento. Aunque este formato sigue estando disponible, X solo ha invertido en nuevas funciones y desarrollos 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 los 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

Independientemente de tu caso de uso en X, comprender qué representan estos objetos de Publicación codificados en JSON y sus atributos es fundamental para encontrar correctamente las señales de datos que te interesan. Para ayudarte en ello, hay un conjunto de páginas dedicadas a cada objeto en cada formato de datos_._ Siguiendo la jerarquía JSON anterior, aquí están los enlaces a cada uno de estos objetos:
Native EnrichedActivity Streams
Link Objeto de PublicaciónLink Objeto de actividad
Link Objeto de usuarioLink Objeto de actor
Link Objeto de entidadesLink Objeto de entidades de X
Link Objeto de entidades extendidas[Link]/x-api/enterprise-gnip-2.0/fundamentals/data-dictionary#x-extended-entities Objeto de entidades extendidas de X
Link Objeto geográficoLink Objeto de ubicación
n/aLink Objeto de Gnip

Mejores prácticas de análisis

  • El JSON de X se codifica en UTF-8.
  • Los analizadores deben tolerar sin problemas la variación en el orden de los campos. Debe suponerse que el JSON de la Publicación se sirve como un hash de datos no ordenado.
  • Los analizadores deben tolerar la incorporación de campos “nuevos”. 
  • Los analizadores de JSON deben tolerar la ausencia de campos, ya que no todos los campos aparecen en todos los contextos.
  • En general, es seguro considerar un campo con valor nulo, un conjunto vacío y la ausencia de un campo como equivalentes.

Objetos de datos de Enterprise Native Enriched

Objeto Tweet de Native Enriched

¿Te interesa aprender 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: Native Enriched comparado con X API v2

Objeto Post

Al usar productos de datos empresariales, notará que gran parte del diccionario de datos es similar al formato nativo de datos de Post, con algunos metadatos enriquecidos adicionales. El nivel base del formato nativo enriquecido usa muchos de los mismos nombres de objeto 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 también tendrá un objeto matching_rules.
Diccionario de datos de X
A continuación se muestra el diccionario de datos de estos atributos de nivel raíz, así como enlaces a los diccionarios de datos de los objetos hijo.
AtributoTipoDescripción
created_atStringHora en UTC en la que se creó esta Publicación. Ejemplo:

“created_at”: “Wed Oct 10 20:19:24 +0000 2018”
idInt64La representación en entero del identificador único de esta Publicación. Este número es mayor que 53 bits y algunos lenguajes de programación pueden tener dificultades o producir defectos silenciosos al interpretarlo. Es seguro usar un entero con signo de 64 bits para almacenar este identificador. Usa id_str para obtener el identificador de forma segura. Consulta X IDs para obtener más información. Ejemplo:

“id”:1050118621198921728
id_strStringLa representación en forma de cadena del identificador único de esta Publicación. Las implementaciones deben usar esto en lugar del entero de gran tamaño en id. Ejemplo:

“id_str”:“1050118621198921728”
textStringEl texto real en UTF-8 de la actualización de estado. Consulta X-text para obtener detalles sobre qué caracteres se consideran actualmente válidos. Ejemplo:

“text”:“Para dejar espacio para más expresión, a partir de ahora contaremos todos los emojis por igual, incluidos los que tienen género‍‍‍ ‍‍y tono de piel t… https://t.co/MkGjXf9aXm
sourceStringHerramienta que se utiliza para publicar la Publicación, como una cadena con formato HTML. Las Publicaciones desde el sitio web de X tienen un valor de origen web.

Ejemplo:

“source”:“X Web Client”
truncatedBooleanIndica si el valor del parámetro text fue truncado, por ejemplo, como resultado de un retweet que supera el límite de longitud de texto de 140 caracteres de la Publicación original. El texto truncado terminará en puntos suspensivos, como .... Dado que X ahora rechaza las Publicaciones largas en lugar de truncarlas, la gran mayoría de las Publicaciones tendrá este valor establecido en false. Ten en cuenta que, aunque los retweets nativos pueden tener su propiedad text de nivel superior acortada, el texto original estará disponible en el objeto retweeted_status y el parámetro truncated se establecerá con el valor del estado original (en la mayoría de los casos, false). Ejemplo:

“truncated”:true
in_reply_to_status_idInt64Nullable. Si la Publicación representada es una respuesta, este campo contendrá la representación en entero del identificador de la Publicación original. Ejemplo:

“in_reply_to_status_id”:1051222721923756032
in_reply_to_status_id_strStringNullable. Si la Publicación representada es una respuesta, este campo contendrá la representación en forma de cadena del id de la Publicación original. Ejemplo:

“in_reply_to_status_id_str”:“1051222721923756032”
in_reply_to_user_idInt64Nullable. Si la Publicación representada es una respuesta, este campo contendrá la representación entera del ID del autor de la Publicación original. Esto no necesariamente será siempre el usuario mencionado directamente en la Publicación. Ejemplo:

“in_reply_to_user_id”:6253282
in_reply_to_user_id_strStringNullable. Si la Publicación representada es una respuesta, este campo contendrá la representación en formato de cadena del id del autor de la Publicación original. No tiene por qué ser siempre el usuario mencionado directamente en la Publicación. Ejemplo:

“in_reply_to_user_id_str”:“6253282”
in_reply_to_screen_nameStringNullable. Si la Publicación representada es una respuesta, este campo contendrá el nombre de usuario del autor de la Publicación original. Ejemplo:

“in_reply_to_screen_name”:“xapi”
userObjeto de usuarioEl usuario que publicó esta Publicación. Consulta el diccionario de datos de usuario para obtener la lista completa de atributos.

Ejemplo que destaca algunos atributos seleccionados:

{ “user”: <br/> “id”: 6253282,
“id_str”: “6253282”,
“name”: “X API”,
“screen_name”: “API”,
“location”: “San Francisco, CA”,
“url”: “https://developer.x.com”,
“description”: “The Real X API. Tweets about API changes, service issues and our Developer Platform. Don’t get an answer? It’s on my website.”,
“verified”: true,
“followers_count”: 6129794,
“friends_count”: 12,
“listed_count”: 12899,
“favourites_count”: 31,
“statuses_count”: 3658,
“created_at”: “Wed May 23 06:01:13 +0000 2007”,
“utc_offset”: null,
“time_zone”: null,
“geo_enabled”: false,
“lang”: “en”,
“contributors_enabled”: false,
“is_translator”: false,
“profile_background_color”: “null”,
“profile_background_image_url”: “null”,
“profile_background_image_url_https”: “null”,
“profile_background_tile”: null,
“profile_link_color”: “null”,
“profile_sidebar_border_color”: “null”,
“profile_sidebar_fill_color”: “null”,
“profile_text_color”: “null”,
“profile_use_background_image”: null,
“profile_image_url”: “null”,
“profile_image_url_https”: “https://pbs.twimg.com/profile&#95;images/942858479592554497/BbazLO9L&#95;normal.jpg”,
“profile_banner_url”: “https://pbs.twimg.com/profile&#95;banners/6253282/1497491515”,
“default_profile”: false,
“default_profile_image”: false,
“following”: null,
“follow_request_sent”: null,
“notifications”: null
}
}
coordinatesObjeto de coordenadasNullable. Representa la ubicación geográfica de esta Publicación según lo indicado por el usuario o la aplicación cliente. El arreglo interno de coordenadas se encuentra en formato geoJSON (longitud primero y luego latitud). Ejemplo:

“coordinates”:
<br/> “coordinates”:
[
-75.14310264,
40.05701649
],
“type”:“Point”
}
placeObjeto de lugarNullable Cuando está presente, indica que la Publicación está asociada (pero no necesariamente procedente de) un Place Ejemplo:

“place”:
<br/> “attributes”:,
“bounding_box”:
<br/> “coordinates”:
[[
[-77.119759,38.791645],
[-76.909393,38.791645],
[-76.909393,38.995548],
[-77.119759,38.995548]
]],
“type”:“Polygon”
},
“country”:“United States”,
“country_code”:“US”,
“full_name”:“Washington, DC”,
“id”:“01fbe706f872cb32”,
“name”:“Washington”,
“place_type”:“city”,
“url”:“http://api.x.com/1/geo/id/0172cb32.json
}
quoted_status_idInt64Este campo solo aparece cuando la Publicación es un Tweet citado. Este campo contiene el valor entero del ID de la Publicación del Tweet citado. Ejemplo:

“quoted_status_id”:1050119905717055488
quoted_status_id_strStringEste campo solo aparece cuando la Publicación es un Tweet citado. Esta es la representación en forma de cadena del ID de la Publicación del Tweet citado. Ejemplo:

“quoted_status_id_str”:“1050119905717055488”
is_quote_statusBooleanIndica si se trata de un Tweet citado. Ejemplo:

“is_quote_status”:false
quoted_statusPostEste campo solo aparece cuando la publicación es un Tweet citado. Este atributo contiene el objeto Post de la publicación original que fue citada.
retweeted_statusPublicaciónLos usuarios pueden amplificar la difusión de Publicaciones creadas por otros usuarios mediante retuits. Los retuits se pueden distinguir de las Publicaciones típicas por la existencia del atributo retweeted_status. Este atributo contiene una representación de la Publicación original que fue retuiteada. Ten en cuenta que los retuits de retuits no muestran representaciones del retuit intermedio, sino solo de la Publicación original. (Los usuarios también pueden anular un retuit que hayan creado eliminando su propio retuit.)
quote_countEnteroNullable. Indica el número aproximado de veces que esta Publicación ha sido citada por usuarios de X. Ejemplo:

“quote_count”:33

Nota: Este objeto solo está disponible con los productos de nivel Premium y Enterprise.
reply_countIntNúmero de veces que se ha respondido a esta Publicación. Ejemplo:

“reply_count”:30

Nota: Este objeto solo está disponible con los productos de nivel Premium y Enterprise.
retweet_countIntNúmero de veces que esta Publicación ha sido retuiteada. Ejemplo:

“retweet_count”:160
favorite_countEnteroNullable. Indica aproximadamente cuántas veces esta Publicación ha recibido “Me gusta” de usuarios de X. Ejemplo:

“favorite_count”:295
entitiesEntidadesEntidades que se han extraído del texto de la Publicación. Consulta también Entities in X Objects. Ejemplo:

“entities”:
<br/> “hashtags”:[],
“urls”:[],
“user_mentions”:[],
“media”:[],
“symbols”:[]
“polls”:[]
}
extended_entitiesEntidades extendidasCuando hay entre una y cuatro fotos nativas, o un video o un GIF animado en la Publicación, este campo contiene un array de metadatos ‘media’. Esto también está disponible en Tweets citados. Consulte también Entidades en objetos de X . Ejemplo:

“entities”:
<br/> “media”:[]
}
favoritedBooleanoNullable. Indica si esta Publicación ha sido marcada con “Me gusta” por el usuario autenticado. Ejemplo:

“favorited”:true
retweetedBooleanoIndica si esta publicación ha sido retuiteada por el usuario autenticado. Ejemplo:

“retweeted”:false
possibly_sensitiveBooleanoNullable. Este campo indica que el contenido puede considerarse como sensible. El autor de la Publicación puede ir a las preferencias de su cuenta y elegir “Marcar el contenido multimedia que publiques como material potencialmente sensible” para que cada Publicación creada a partir de ese momento tenga este indicador establecido.

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

”possibly_sensitive”:false
filter_levelCadenaIndica el valor máximo del parámetro filter_level que se puede utilizar y aun así seguir transmitiendo esta Publicación. Por lo tanto, un valor de medium se transmitirá en los streams none, low y medium.

Ejemplo:

“filter_level”: “low”
langCadenaPermite valores nulos. Cuando está presente, indica un identificador de idioma BCP 47 correspondiente al idioma detectado automáticamente en el texto de la Publicación, o und si no se pudo detectar ningún idioma. 

 Ejemplo:

“lang”: “en”
edit_historyObjetoIdentificadores únicos que indican todas las versiones de una Publicación. Para las Publicaciones sin ediciones, habrá un ID. Para las Publicaciones con un historial de ediciones, habrá varios ID, ordenados en forma ascendente que refleja el orden de las ediciones, con la versión más reciente en la última posición del array. 

Los ID de la Publicación se pueden usar para hidratar y consultar versiones anteriores de una Publicación.

Ejemplo:

edit_history”: <br/> “initial_tweet_id”: “1283764123”
“edit_tweet_ids”: [“1283764123”, “1394263866”]
}
edit_controlsObjetoCuando está presente, indica durante cuánto tiempo más una Publicación sigue siendo editable y cuántas ediciones restantes tiene. Las Publicaciones solo son editables durante los primeros 30 minutos después de su creación y se pueden editar hasta cinco veces. 

Los id de la Publicación se pueden usar para hidratar y ver versiones anteriores de una Publicación.

Ejemplo:

“edit_controls”: <br/> “editable_until_ms”: 123
“edits_remaining”: 3
}
editableBooleanoWhen present, indicates if a Publicación era apta para edición cuando se publicó. This field is not dynamic and won’t toggle from True to False when a Publicación reaches its editable time limit, or maximum number of edits. The following Publicación features will cause this field to be false:

* La Publicación está promocionada
* La Publicación tiene una encuesta
* La Publicación es una respuesta en un hilo de otro usuario
* La Publicación es un retweet (ten en cuenta que los Quote Tweets son aptos para edición)
* La Publicación es nullcast
* Publicación de Comunidad
* Publicación de Superfollow
* Publicación colaborativa
matching_rulesMatriz de objetos de reglasPresente en productos filtered como X Search y PowerTrack. Proporciona el id y la tag asociados a la regla que coincidió con la Publicación. Más información sobre las reglas de coincidencia aquí. Con PowerTrack, más de una regla puede coincidir con una misma Publicación. 

Ejemplo:

“matching_rules”: ” [<br/> “tag”: “xapi emojis”,
“id”: 1050118621198921728,
“id_str”: “1050118621198921728”
}]“
Atributos adicionales de la Publicación
Las X APIs que proporcionan Publicaciones (p. ej., el endpoint GET statuses/lookup) pueden incluir estos atributos adicionales de la Publicación:
AttributeTypeDescription
current_user_retweetObjectPerspectival. Solo se muestra en métodos que admiten el parámetro include_my_retweet, cuando se establece en true. Indica el ID de la Publicación correspondiente al propio retweet del usuario (si existe) de esta Publicación. Ejemplo:

“current_user_retweet”: <br/> “id”: 6253282,
“id_str”: “6253282”
}
scopesObjectUn conjunto de pares clave-valor que indican la entrega contextual prevista de la Publicación que lo contiene. Actualmente se utiliza en los Promoted Products de X. Ejemplo:

“scopes”:{“followers”:false}
withheld_copyrightBooleanCuando está presente y establecido en “true”, indica que este contenido se ha retenido debido a una denuncia en virtud de la 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 de los que se retiene este contenido. X admite los siguientes valores que no son países para este campo:

“XX” - El contenido se retiene en todos los países “XY” - El contenido se retiene debido a una solicitud DMCA.

Ejemplo:

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

Ejemplo:

“withheld_scope”: “status”
Atributos obsoletos
CampotypeDescripción
geoObjectObsoleto. Nullable. Utiliza el campo coordinates en su lugar. Este atributo obsoleto formatea sus coordenadas como [lat, long], mientras que el resto de la información geográfica de la Publicación se formatea como [long, lat].

Objetos de Publicación anidados

En varios casos, un objeto de Publicación incluirá otros objetos anidados. Si trabajas con objetos anidados, esa carga útil JSON contendrá varias Publicaciones, y cada objeto de Publicación podrá contener sus propios objetos. El objeto de nivel raíz contendrá información sobre el tipo de acción realizada, es decir, si es un Retweet o un Quote Tweet, y también podrá contener un objeto que describa la Publicación «original» que se está compartiendo. Las Publicaciones extendidas incluirán un objeto extendido anidado que se extiende más allá de 140 caracteres, lo cual se utilizó para evitar cambios incompatibles cuando se hizo la actualización en 2017. Cada diccionario de objetos anidados se describe a continuación. Retweets Los Retweets siempre contienen dos objetos de Publicación. La Publicación «original» a la que se hace Retweet se proporciona en un objeto retweeted_status. El objeto de nivel raíz encapsula el propio Retweet, incluido un objeto de User para la cuenta que realiza la acción de Retweet y la hora del Retweet. Hacer Retweet es una acción para compartir una Publicación con tus seguidores, y no se puede añadir ningún contenido nuevo. Además, no se puede proporcionar una ubicación (nueva) con un Retweet. Aunque la Publicación «original» pueda estar geolocalizada, los objetos geo y place del Retweet siempre serán null. Incluso antes de la introducción de las Publicaciones extendidas, el objeto entities de nivel raíz estaba en algunos casos truncado e incompleto debido a que se agregaba la cadena RT @username al mensaje de la Publicación a la que se hacía Retweet. Ten en cuenta que, si a un Retweet se le vuelve a hacer Retweet, el retweet_status seguirá apuntando a la Publicación 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 copias el id de Publicación único asignado a la «acción» de Retweet, se muestra la Publicación original.  A continuación se muestra una estructura de ejemplo para un Retweet. De nuevo, al analizar Retweets, es clave analizar el objeto retweeted_status para obtener el mensaje completo de la Publicación original 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 citados
Los Tweets citados son muy similares a los Retweets, excepto que incluyen un nuevo mensaje de Publicación. Estos nuevos mensajes pueden contener su propio conjunto de hashtags, enlaces y otros metadatos de “entities”. Los Tweets citados también pueden incluir información de ubicación compartida por el usuario que publica el Tweet citado, junto con contenido multimedia, como GIF, vídeos y fotos. Los Tweets citados contendrán al menos dos objetos de Publicación y, en algunos casos, tres. La Publicación que se cita, que a su vez puede ser un Tweet citado, se proporciona en un objeto “quoted_status”. El objeto de nivel raíz encapsula el propio Tweet citado, e incluye un objeto User para la cuenta que realiza la acción de compartir y la hora del Tweet citado. Ten en cuenta que los Tweets citados ahora pueden tener fotos, GIF o vídeos añadidos mediante la interfaz de usuario “Post”. Cuando se incluyen enlaces a contenido multimedia alojado externamente en el mensaje del Tweet citado, el “entities.urls” de nivel raíz los describirá. El contenido multimedia adjunto a Tweets citados aparecerá en los metadatos “extended_entities” de nivel raíz. Cuando se lanzaron por primera vez los Tweets citados, se añadía un enlace acortado (URL t.co) al mensaje de la Publicación “original” y se proporcionaba en el campo “text” de nivel raíz. Además, los metadatos para esa URL t.co se incluían en el array “entities.urls” de nivel raíz. En mayo de 2018, cambiamos esto de forma que la URL t.co acortada que apunta al Tweet citado no se incluirá en el campo “text” de nivel raíz. En segundo lugar, los metadatos del Tweet citado no se incluirán en los metadatos “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 una estructura de ejemplo para un Tweet citado que usa este formato original.
{
	"created_at": "Tue Feb 14 19:30:06 +0000 2017",
	"id_str": "831586333415976960",
	"text": "Definitely quotable! 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": "This is a test of the tweeting system \ud83d\ude0e to update #supportdocs @twitterboulder here: 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 Publicación se amplió para encapsular estos mensajes más largos, sin afectar a los miles de aplicaciones que analizan estos objetos fundamentales de X. Para proporcionar total compatibilidad con versiones anteriores, se conservaron el campo original de 140 caracteres ‘text’ y los objetos de entidades analizados a partir de este. En el caso de Publicaciones de más de 140 caracteres, este campo ‘text’ de nivel raíz pasaba a estar truncado y, por lo tanto, incompleto. Dado que los objetos ‘entities’ de 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 el mensaje de una Publicación tuviera 200 caracteres, con un hashtag incluido al final, el arreglo heredado ‘entities.hashtags’ de nivel raíz no lo incluiría.  Se introdujo un nuevo campo ‘extended_tweet’ para almacenar los mensajes de Publicaciones más largos y los metadatos completos de las entidades. El objeto “extended_tweet” proporciona el campo “full_text”, que contiene el mensaje completo de la Publicación, sin truncar, 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” de nivel raíz. Cuando es true (“truncated”: true), se deben analizar los campos de “extended_tweet” en lugar de los campos de nivel raíz. Observa en el ejemplo JSON siguiente que el campo “text” de nivel raíz está truncado y el arreglo “entities.hashtags” de nivel raíz está vacío, a pesar de que el mensaje de la Publicación 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 metadatos completos de la Publicación en “full_text” y “entities”.
{
	"created_at": "Thu May 10 17:41:57 +0000 2018",
	"id_str": "994633657141813248",
	"text": "Just another Extended Tweet with more than 140 characters, generated as a documentation example, showing that [\"tru… https://t.co/U7Se4NM7Eu",
	"display_text_range": [0, 140],
	"truncated": true,
	"user": {
		"id_str": "944480690",
		"screen_name": "FloodSocial"
	},
	"extended_tweet": {
		"full_text": "Just another Extended Tweet with more than 140 characters, generated as a documentation example, showing that [\"truncated\": true] and the presence of an \"extended_tweet\" object with complete text and \"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 enriquecido nativo

El objeto User contiene metadatos de la cuenta de usuario de X que describen al usuario de X al que se hace referencia. 

Diccionario de datos de usuario

AtributotypeDescripción
idInt64La representación entera del identificador único de este usuario. Este número es superior a 53 bits y algunos lenguajes de programación pueden tener dificultades o errores silenciosos al interpretarlo. Es seguro utilizar un entero con signo de 64 bits para almacenar este identificador. Usa id_str para obtener el identificador de forma segura. Consulta X IDs para obtener más información. Ejemplo:

“id”: 6253282
id_strStringLa representación en forma de cadena del identificador único de este usuario. Las implementaciones deberían usar esto en lugar del entero grande, posiblemente no manejable, en id. Ejemplo:

“id_str”: “6253282”
nameStringEl nombre del usuario, tal como lo ha definido. No necesariamente el nombre de una persona. Por lo general, tiene un máximo de 50 caracteres, pero está sujeto a cambios. Ejemplo:

“name”: “API”
screen_nameStringEl nombre de pantalla, identificador o alias con el que este usuario se identifica. Los screen_names son únicos, pero pueden cambiar. Usa id_str como identificador de usuario siempre que sea posible. Suele tener un máximo de 15 caracteres, aunque algunas cuentas históricas pueden tener nombres más largos. Ejemplo:

“screen_name”: “api”
locationStringNullable . La ubicación definida por el usuario para el perfil de esta cuenta. No es necesariamente una ubicación ni es legible por máquinas. Ocasionalmente, este campo será interpretado de forma aproximada por el servicio de búsqueda. Ejemplo:

“location”: “San Francisco, CA”
derivedArray de objetos de enriquecimientoSolo para APIs Enterprise. Colección de metadatos de enriquecimiento derivados para el usuario. Proporciona los metadatos de enriquecimiento de Profile Geo. Consulta la documentación de referencia para obtener más información, incluidos los diccionarios de datos JSON. Ejemplo:

“derived”:“locations”: [“country”:“United States”,“country_code”:“US”,“locality”:“Denver”]
urlStringNullable. Una URL proporcionada por el usuario relacionada con su perfil. Ejemplo:

“url”: “https://developer.x.com
descriptionStringNullable . Cadena UTF-8 definida por el usuario que describe su cuenta. Ejemplo:

“description”: “The Real X API.”
protectedBooleanCuando es true, indica que este usuario ha optado por proteger sus Publicaciones. Consulta Acerca de las Publicaciones públicas y protegidas . Ejemplo:

“protected”: true
verifiedBooleanCuando es true, indica que el usuario tiene una cuenta verificada. Consulta Cuentas verificadas. Ejemplo:

“verified”: false
followers_countIntEl número de seguidores que esta cuenta tiene actualmente. En determinadas condiciones adversas, este campo indicará temporalmente “0”. Ejemplo:

“followers_count”: 21
friends_countIntEl número de usuarios a los que esta cuenta sigue (también conocidos como sus «followings»). En determinadas condiciones de carga, este campo indicará temporalmente “0”. Ejemplo:

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

“listed_count”: 9274
favourites_countIntNúmero de Publicaciones que este usuario ha indicado como que le gustan durante toda la vida de la cuenta. Se utiliza la ortografía británica en el nombre del campo por razones históricas. Ejemplo:

“favourites_count”: 13
statuses_countIntEl número de Publicaciones (incluidos los retweets) realizadas por el usuario. Ejemplo:

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

“created_at”: “Mon Nov 29 21:18:15 +0000 2010”
profile_banner_urlStringLa URL basada en HTTPS que apunta a la representación web estándar del banner de perfil cargado por el usuario. Al añadir un elemento adicional al final de la ruta de la URL, es posible obtener diferentes tamaños de imagen optimizados para pantallas específicas. Para las variantes de tamaños, consulta User Profile Images and Banners.

Ejemplo:

“profile_banner_url”: “https://si0.twimg.com/profile&#95;banners/819797/1348102824
profile_image_url_httpsStringUna URL basada en HTTPS que apunta a la imagen de perfil del usuario. Ejemplo:

“profile_image_url_https”:
https://abs.twimg.com/sticky/default&#95;profile&#95;images/default&#95;profile&#95;normal.png
default_profilebooleanoCuando es true, indica que el usuario no ha modificado el tema ni el fondo de su perfil. Ejemplo:

“default_profile”: false
default_profile_imagebooleanoCuando es true, indica que el usuario no ha subido una imagen de perfil propia y se utiliza una imagen predeterminada en su lugar. Ejemplo:

“default_profile_image”: false

Atributos en desuso (ya no admitidos)

FieldTypeDescription
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 cuando use 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_profilenullObsoleto. El valor se establecerá en null.
notificationsnullObsoleto. El valor se establecerá en null.
profile_locationnullObsoleto. El valor se establecerá en null.
contributors_enablednullObsoleto. El valor se establecerá en null.
profile_image_urlnullObsoleto. 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_colornullObsoleto. El valor se establecerá en null.
profile_background_image_urlnullObsoleto. El valor se establecerá en null.
profile_background_image_url_httpsnullObsoleto. El valor se establecerá en null.
profile_background_tilenullObsoleto. El valor se establecerá en null.
profile_link_colornullObsoleto. El valor se establecerá en null.
profile_sidebar_border_colornullObsoleto. El valor se establecerá en null.
profile_sidebar_fill_colornullObsoleto. El valor se establecerá en null.
profile_text_colornullObsoleto. El valor se establecerá en null.
profile_use_background_imagenullObsoleto. El valor se establecerá en null.
is_translatornullObsoleto. El valor se establecerá en null.
is_translation_enablednullObsoleto. El valor se establecerá en null.
translator_typenullObsoleto. 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": "The voice of the #XDevelopers team and your official source for updates, news, and events, related to the #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 Geo Nativos Enriquecidos

Las Publicaciones pueden asociarse a una ubicación, generando una Publicación “etiquetada geográficamente” (geo‑tagged). Las ubicaciones de las Publicaciones pueden asignarse usando la interfaz de usuario de X o al publicar una Publicación usando la API. Las ubicaciones de las Publicaciones pueden ser una ubicación “punto” exacta o un X Place con una “caja delimitadora” (bounding box) que describe un área más grande que puede ir desde un recinto hasta toda una región. Hay tres objetos JSON de “nivel raíz” que se usan para describir la ubicación asociada a una Publicación: place, geo y coordinates Además, el formato nativo enriquecido incluye la ubicación derivada del enriquecimiento de geo de perfil dentro del objeto user. El objeto place siempre está presente cuando una Publicación está etiquetada con ubicación mediante un Place. Los Places son ubicaciones específicas y con nombre, con coordenadas geográficas correspondientes. Cuando los usuarios deciden asignar una ubicación a su Publicación, se les presenta una lista de X Places candidatos. Cuando se usa la API para publicar, se puede adjuntar un X Place especificando un place_id al publicar. Las Publicaciones asociadas con Places no necesariamente se emiten desde esa ubicación, sino que también podrían potencialmente tratarse sobre esa ubicación. Los objetos geo y coordinates solo están presentes (no nulos) cuando a la Publicación se le asigna una ubicación exacta. Si se proporciona una ubicación exacta, el objeto coordinates proporcionará un arreglo [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. Ten en cuenta que se representa como una cadena, no como un entero. Ejemplo:

“id”:“01a9a39529b27f36”
urlStringURL que representa 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 representada por este lugar. Ejemplo:

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

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

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

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

“country”:“United States”
bounding_boxObjetoUn 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”

attributesObjectCuando se utilizan PowerTrack, las API 30-Day y Full-Archive Search y Volume Streams, este hash es null. Ejemplo:

“attributes”:

Bounding box

FieldTypeDescription
coordinatesArray of Array of Array of FloatUna serie de puntos de longitud y latitud que definen un cuadro delimitador (bounding box) que contendrá la entidad Place con la que está asociado este bounding box. Cada punto es un array con la forma [longitude, latitude]. Los puntos se agrupan en un array por cada bounding box. Los arrays de bounding box se envuelven 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 bounding boxes y “Point” para Publicaciones con coordenadas exactas. Ejemplo:

“type”:“Polygon”

Diccionario de datos del objeto Geo

CampoTypeDescripción
coordinatesCollection of FloatLa longitud y la latitud de la ubicación de la Publicación, como una colección con la forma [latitude, longitude]. Ejemplo:

**  “geo”:

“type”:** “Point”,

**    “coordinates”: [

54.27784
,

-0.41068

    ]

  **
typeStringEl tipo de datos que se codifica en la propiedad coordinates. Será “Point” para los campos de coordenadas de la Publicación. Ejemplo:

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

**  “coordinates”:

“type”:** “Point”,

**    “coordinates”: [

-0.41068
,

54.27784

    ]

  **
typeStringEl tipo de datos que se codifica en la propiedad coordinates. Será “Point” para los campos de coordenadas de la Publicación. Ejemplo:

“type”: “Point”

Ubicaciones derivadas

FieldtypeDescripción
derivedobjeto locationsUbicación derivada a partir 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": "United States",
    "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": "United States",
    "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: Enterprise

Entidades de X

Ir a secciones de esta página Introducción Objeto entities   - Objeto de hashtag   - Objeto de medios   - Objeto de tamaño de medios   - Objeto URL   - Objeto de mención de usuario   - Objeto de símbolo   - Objeto de encuesta Detalles de Retweet y Tweet citado Entidades en objetos de usuario Entidades en Mensajes Directos Siguientes pasos

Introducción

Las entidades proporcionan metadatos e información contextual adicional sobre el contenido publicado en X. La sección entities proporciona arrays de elementos comunes incluidos en las Publicaciones: hashtags, menciones de usuarios, enlaces, símbolos bursátiles (tickers), encuestas de X y medios adjuntos. Estos arrays son prácticos para los desarrolladores al procesar Publicaciones, ya que X ha preprocesado, o preanalizado, esencialmente el cuerpo de texto. En lugar de tener que buscar y encontrar explícitamente estas entidades en el cuerpo de la Publicación, tu analizador puede ir directamente a esta sección JSON y allí estarán. Además de proporcionar estas facilidades de análisis, la sección entities también ofrece metadatos útiles que “añaden valor”. Por ejemplo, si estás usando el Enhanced URLs enrichment, los metadatos de URL incluyen las URL totalmente expandidas, así como los títulos y descripciones de los sitios web asociados. Otro ejemplo es cuando hay menciones de usuarios; los metadatos de entidades incluyen el id numérico de usuario, que es útil al realizar solicitudes a muchas X API. Cada carga útil JSON de una Publicación 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 de la Publicación. Por ejemplo, si examinas el JSON de una Publicación con un cuerpo de “Hello World!” y sin medios adjuntos, el JSON de la Publicación incluirá el siguiente contenido con arrays 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 de la Publicación.
  • si trabajas con contenido multimedia nativo (fotos, videos o GIFs), el Extended Entities object es la opción recomendada.

Objeto Entities

Las secciones entities y extended_entities están compuestas por arrays de objetos de entidad. A continuación se incluyen descripciones de cada uno de estos objetos de entidad, incluidos diccionarios de datos 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 las Publicaciones, incluidas las etiquetas (hashtags), los enlaces y las menciones de usuarios. Este objeto entities sí incluye un atributo media, pero su implementación en la sección entiites solo es completamente precisa para Publicaciones con una sola foto. Para todas las Publicaciones 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 Entities

El objeto entities es un contenedor de arrays de otros subobjetos de entidades. Después de ilustrar la estructura de entities, se proporcionarán diccionarios de datos para estos subobjetos y los Operadores que coinciden con ellos.
CampotypeDescripción
hashtagsArray de objetos HashtagRepresenta los hashtags extraídos del texto de la Publicación. Ejemplo:


“hashtags”: [

“indices”: [
32,
38
],
“text”: “nodejs”

]
mediaArray de objetos MediaRepresenta elementos multimedia adjuntos a la Publicación. Ejemplo:


“media”: [

“display_url”: “pic.x.com/5J1WJSRCy9”,
“expanded_url”: “https://x.com/nolan_test/status/930077847535812610/photo/1”,
“id”: 9.300778475358126e17,
“id_str”: “930077847535812610”,
“indices”: [
13,
36
],
“media_url”: “http://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg”,
“media_url_https”: “https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg
“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
         
      ,
“type”: “photo”,
“url”: “https://t.co/5J1WJSRCy9”,

]
urlsArray de Objetos URLRepresenta las URL que se incluyen en el texto de una Publicación.

Ejemplo (sin el enriquecimiento Enhanced URLs habilitado):


“urls”: [

“indices”: [
32,
52
],
“url”: “http://t.co/IOwBrTZR”,
“display_url”: “youtube.com/watch?v=oHg5SJ…”,
“expanded_url”: “http://www.youtube.com/watch?v=oHg5SJYRHA0

]


Ejemplo (con el enriquecimiento Enhanced URLs habilitado):

“urls”: [

“url”: “https://t.co/D0n7a53c2l”,
“expanded_url”: “http://bit.ly/18gECvy”,
“display_url”: “bit.ly/18gECvy”,
“unwound”:
“url”: “https://www.youtube.com/watch?v=oHg5SJYRHA0”,
“status”: 200,
“title”: “RickRoll’D”,
“description”: “http://www.facebook.com/rickroll548 As long as trolls are still trolling, the Rick will never stop rolling.”
,
“indices”: [
62,
85
]

]
user_mentionsArray de objetos de mención de usuarioRepresenta a otros usuarios de X mencionados en el texto de la Publicación. Ejemplo:


“user_mentions”: [

“name”: “X API”,
“indices”: [
4,
15
],
“screen_name”: “xapi”,
“id”: 6253282,
“id_str”: “6253282”

]
symbolsArray de objetos SymbolRepresenta símbolos, es decir, $cashtags, incluidos en el texto de la Publicación. Ejemplo:


“symbols”: [

“indices”: [
12,
17
],
“text”: “twtr”

]
pollsArray de objetos PollRepresenta las encuestas de X incluidas en la Publicación. Ejemplo:

“polls”: [

“options”: [

“position”: 1,
“text”: “Leo la documentación una vez.”
,

“position”: 2,
“text”: “Leo la documentación dos veces.”
},

“position”: 3,
“text”: “Leo la documentación una y otra vez.”
}
],
“end_datetime”: “Thu May 25 22:20:27 +0000 2017”,
“duration_minutes”: 60

]

Objeto de hashtag

La sección entities contendrá un array hashtags con un objeto por cada hashtag incluido en el cuerpo de la Publicación, e incluirá un array vacío si no hay hashtags presentes. El operador PowerTrack # se utiliza para hacer coincidir el atributo text. El operador has:hashtags coincidirá si hay al menos un elemento en el array.
FieldtypeDescription
indicesArray de IntUn array de enteros que indica los desplazamientos dentro del texto de la Publicación donde el hashtag comienza y termina. El primer entero representa la ubicación del carácter # en la cadena de texto de la Publicación. El segundo entero representa la ubicación del primer carácter después del hashtag. Por lo tanto, la diferencia entre los dos 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 multimedia

La sección entities contendrá un array media que incluirá un único objeto multimedia si se ha “adjuntado” algún objeto multimedia a la Publicación. Si no se ha adjuntado contenido multimedia nativo, no habrá ningún array media en entities. Por las siguientes razones, se debe usar la sección extended_entities para procesar el contenido multimedia nativo de la Publicación:
  • El type del contenido multimedia siempre indicará photo incluso en los casos en que se adjunte un video o un GIF a la Publicación.
  • Aunque se pueden adjuntar hasta cuatro fotos, solo la primera se incluirá en la sección entities.
El operador has:media coincidirá si este array contiene elementos.
CampoTipoDescripción
display_urlCadenaURL del contenido multimedia que se muestra a los clientes. Ejemplo:

“display_url”:“pic.x.com/rJC5Pxsu”
expanded_urlCadenaUna versión ampliada de display_url. Enlaza a la página de visualización del contenido multimedia. Ejemplo:

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

“id”:114080493040967680
id_strCadenaID del contenido multimedia expresado como una cadena de texto. Ejemplo:

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

“indices”:[15,35]
media_urlCadenaUna URL http:// que apunta directamente al archivo multimedia cargado. Ejemplo:

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

Para contenido multimedia en mensajes directos, media_url es la misma URL https que media_url_https y solo se puede acceder firmando una solicitud con el token de acceso del usuario usando OAuth 1.0a.

No es posible acceder a las imágenes mediante una sesión autenticada en x.com. Visita esta página para aprender cómo tener en cuenta estos cambios recientes. 

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

Consulta Photo Media URL formatting para saber cómo formatear la URL de una foto, como media_url_https, según los tamaños (sizes) disponibles.
media_url_httpsCadenaUna URL https:// que apunta directamente al archivo multimedia cargado, para su incrustación en páginas HTTPS. Ejemplo:

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

Para el contenido multimedia en mensajes directos, se debe acceder a media_url_https firmando una 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 de x.com. Visita esta página para obtener información sobre cómo tener en cuenta estos cambios recientes. 

No es posible incrustar estas imágenes directamente en una página web.

Consulta Photo Media URL formatting para saber cómo dar formato a la URL de una foto, como media_url_https, en función de los sizes disponibles.
sizesObjeto SizeUn objeto que muestra los tamaños disponibles del archivo multimedia. 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
}
}
}

Consulta formato de la URL de contenido multimedia de foto para ver cómo formatear la URL de una foto, como media_url_https, en función de los sizes disponibles.
source_status_idInt64Anulable. Para las Publicaciones que contienen medios que originalmente estaban asociados con otra Publicación, este ID apunta a la Publicación original. Ejemplo:

“source_status_id”: 205282515685081088
source_status_id_strCadenaNullable. Para Publicaciones que contienen contenido multimedia que originalmente estaba asociado con otra publicación, este id en forma de cadena apunta a la Publicación original. Ejemplo:

“source_status_id_str”: “205282515685081088”
typeCadenaTipo de contenido multimedia cargado. Los tipos posibles incluyen photo, video y animated_gif. Ejemplo:

“type”:“photo”
urlCadenaURL envuelta para el enlace multimedia. Esto corresponde a la URL incrustada directamente en el texto sin procesar de la Publicación y a los valores del parámetro indices. Ejemplo:

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

Objetos de tamaño de contenido multimedia

Todas las Publicaciones con contenido multimedia nativo (fotos, videos y GIFs) incluirán un conjunto de tamaños “thumb”, “small”, “medium” y “large” con valores de alto y ancho en píxeles. Para las fotos y las URL de imágenes de vista previa de contenido multimedia, el apartado Photo Media URL formatting describe cómo construir distintas URL para cargar contenido fotográfico en diferentes tamaños.

Objeto Sizes

FieldtypeDescription
thumbSize ObjectInformación sobre una versión en miniatura del contenido multimedia. Ejemplo:

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

El contenido multimedia de tipo foto en tamaño miniatura se limitará a fill un área de 150x150 y se recortará.
largeSize ObjectInformación sobre una versión grande del contenido multimedia. Ejemplo:

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

El contenido multimedia de tipo foto en tamaño pequeño se limitará a fit dentro de un área de 680x680.
mediumSize ObjectInformación sobre una versión mediana del contenido multimedia. Ejemplo:

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

El contenido multimedia de tipo foto en tamaño mediano se limitará a fit dentro de un área de 1200x1200.
smallSize ObjectInformación sobre una versión pequeña del contenido multimedia. Ejemplo:

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

El contenido multimedia de tipo foto en tamaño grande se limitará a fit 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 utilizado para obtener este tamaño. Un valor de fit significa que el recurso multimedia se redimensionó para ajustarse a una dimensión, manteniendo su relación de aspecto nativa. Un valor de crop significa que el recurso multimedia se recortó para ajustarse a una resolución específica. Ejemplo:

“resize”:“crop”

Formato de URL de medios de fotos

Los medios de fotos en X se pueden cargar en diferentes tamaños. Es mejor cargar la imagen del tamaño más pequeño que siga siendo lo suficientemente grande como para ajustarse a un área de visualización de imagen en particular. Para cargar diferentes tamaños, el Size Object y media_url (o media_url_https) deben combinarse en un formato específico. Usaremos el objeto de ejemplo de la media entity ya proporcionado para nuestro ejemplo al construir una URL de medios de fotos. media_url o media_url_https se pueden cargar por sí solos, lo que dará como resultado que se cargue la variante de tamaño medio de forma predeterminada. Sin embargo, es preferible proporcionar una URL de medios de fotos completamente formateada cuando sea posible. Hay tres partes en una URL de medios de fotos:
URL baseLa URL base es la URL de medios sin la extensión del archivo.

Por ejemplo:

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

La URL base es entonces:

https://pbs.twimg.com/media/DOhM30VVwAEpIHq
FormatoEl formato es el tipo de foto en el que está formateada la imagen. Los formatos posibles son jpg o png, que se proporcionan como la extensión de la URL de medios.

Por ejemplo:

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

El formato es entonces: jpg
NombreEl nombre es el nombre de campo del tamaño que se va a 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 de tamaño grande sería: large
Tomamos estas tres partes (URL base, formato y nombre) y las combinamos en la URL de medios de fotos que se va a cargar. Hay 2 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 usar el formato modern. Usar el formato modern dará como resultado una mejor tasa de aciertos en la CDN para quien realiza la llamada, mejorando así las latencias de carga al ser menos probable que tenga que generar y cargar los medios desde el centro de datos.
Legacy formatEl formato heredado está obsoleto. Todas las cargas de fotos deben migrar al formato moderno.

<base_url>.<format>:<name>

Por ejemplo:

https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg:large
Modern formatEl formato moderno para cargar fotos se estableció en X en 2015 y ha sido el formato de facto desde 2017. Todas las cargas de fotos deben migrar 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 multimedia de foto están en orden alfabético. Si en el futuro la carga de contenido multimedia añadiera algún elemento de consulta adicional, sería necesario seguir manteniendo el orden alfabético. Por ejemplo, si hubiera un nuevo elemento de consulta hipotético llamado preferred_format, iría después de format y name en la cadena de consulta.

Objeto URL

La sección entities contendrá un array urls que incluye un objeto por cada enlace incluido en el cuerpo de la Publicación, y un array vacío si no hay enlaces presentes. El operador has:links coincidirá si hay al menos un elemento en el array. El operador url: se utiliza para hacer coincidir el atributo expanded_url. Si estás utilizando el Expanded URL enrichment, el operador url: se utiliza para hacer coincidir el atributo unwound.url (URL completamente expandida). Si estás utilizando el Exhanced URL enrichment, los operadores url_title: y url_decription: se utilizan para hacer coincidir los atributos unwound.title y unwound.description.
FieldTypeDescription
display_urlStringURL pegada o escrita en la Publicación. Ejemplo:

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

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

“indices”:[30,53]
urlStringURL envuelta, que corresponde al valor incrustado directamente en el texto sin procesar de la Publicación y a los valores para el parámetro indices. Ejemplo:

“url”:“https://t.co/yzocNFvJuL
Si estás utilizando los enriquecimientos Expanded y/o Enhanced URL, los siguientes metadatos están disponibles en el atributo unwound:
FieldTypeDescription
urlStringLa versión completamente expandida del enlace incluido en la Publicación. 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 expansión, donde ‘200’ indica éxito. Ejemplo:

200
titleStringTítulo HTML para el enlace. Ejemplo:

“title”:“Using X as a ‘go-to’ communication channel during severe weather”
descriptionStringDescripción HTML para el 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 que incluye un objeto por cada mención de usuario incluida en el cuerpo de la Publicación, y un arreglo vacío si no hay ninguna mención de usuario. El operador 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 un entero. Ejemplo:

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

“id_str”:“6253282”
indicesArray of IntUn arreglo de enteros que representan los desplazamientos dentro del texto de la Publicación donde comienza y termina la referencia al usuario. El primer entero representa la ubicación del carácter ‘@’ de la mención de usuario. El segundo entero representa 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 para mostrar del usuario mencionado. Ejemplo:

“name”:“API”
screen_nameStringscreen_name del usuario mencionado. Ejemplo:

“screen_name”:“api”

Objeto Symbol

La sección entities contendrá un array symbols que incluye un objeto por cada $cashtag incluido en el cuerpo de la Publicación, y un array vacío si no hay ningún símbolo presente. El operador $ de PowerTrack se utiliza para hacer coincidencias con el atributo text. El operador has:symbols coincidirá si hay al menos un elemento en el array.
FieldTypeDescription
indicesArray of IntUn array de enteros que indica los desplazamientos dentro del texto de la Publicación donde el símbolo/cashtag comienza y termina. El primer entero representa la ubicación del carácter enlacadenadetextodelaPublicacioˊn.Elsegundoenterorepresentalaubicacioˊndelprimercaraˊcterdespueˊsdelcashtag.Porlotanto,ladiferenciaentrelosdosnuˊmerosseraˊlalongituddelnombredelcashtagmaˊsuno(porelcaraˊcter en la cadena de texto de la Publicación. 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 poll

La sección entities contendrá un arreglo polls que incluirá un único objeto poll si la Publicación contiene una encuesta. Si no se incluye ninguna encuesta, no habrá un arreglo polls en la sección entities. Ten en cuenta que estos metadatos de encuestas solo están disponibles con las siguientes APIs Enterprise:
FieldTypeDescription
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 temporal (UTC) de cuándo finaliza 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 Retweets y Tweets citados

Desde la perspectiva de la X API, los Retweets y los Tweets citados son tipos especiales de Publicaciones que contienen la Publicación original como un objeto incrustado. Por lo tanto, los objetos de Retweet y de Tweet citado actúan como padres de una Publicación hija “original” (y, por lo tanto, duplican su tamaño). Los Retweets tienen un objeto de nivel superior “retweeted_status” y los Tweets citados tienen un objeto “quoted_status”. Por coherencia, estos objetos de nivel superior de Retweet y Tweet citado también tienen una propiedad text y las entities asociadas. Sin embargo, las entities en el nivel superior pueden diferir de las entities proporcionadas por las entities “originales” incrustadas. En el caso de los Retweets, se antepone texto nuevo al cuerpo de la Publicación original. En el caso de las Publicaciones citadas, se agrega texto nuevo al final del cuerpo de la Publicación. En general, la mejor práctica es recuperar el texto, las entities, el autor original y la fecha de la Publicación original en retweeted_status siempre que exista. Una excepción es obtener las entities de X que formen parte de la cita adicional. Consulta a continuación más detalles y recomendaciones.

Retweets

Un detalle importante sobre los Retweets es que no se pueden añadir entities adicionales de X a la Publicación. Los usuarios no pueden añadir hashtags, URL u otros detalles cuando realizan un Retweet. Sin embargo, el atributo de texto del Retweet (de nivel superior) se compone del texto de la Publicación original con «RT @username: » antepuesto.   En algunos casos, especialmente con cuentas con nombres de usuario largos, la combinación de estos nuevos caracteres y el cuerpo de la Publicación original puede exceder fácilmente el límite original de 140 caracteres para el texto de la Publicación. Para mantener la compatibilidad con la visualización y el almacenamiento basados en 140 caracteres, el cuerpo de nivel superior trunca el final del cuerpo de la Publicación y añade puntos suspensivos («…»). En consecuencia, algunas entities de nivel superior situadas al final de la Publicación original pueden ser incorrectas o faltar, por ejemplo, en el caso de un hashtag o una entrada de URL truncados. Esta Publicación, https://x.com/FloodSocial/status/907974220298125312, tiene el siguiente texto:                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 entities de nivel superior. También verás la user_mentions adicional de nivel superior que proviene del prefijo «RT @floodsocial: » en el campo text. Sin embargo, el texto de la Publicación y las entities en retweeted_status reflejan perfectamente la Publicación original sin truncamiento ni entities incorrectas; por lo tanto, recomendamos confiar en el objeto anidado retweeted_status para los Retweets.

Tweets citados

Los Tweets citados se introdujeron en 2016 y se diferencian de los Retweets en que, cuando “citas” una Publicación, agregas contenido nuevo “sobre” una Publicación compartida. Este contenido nuevo puede incluir casi cualquier elemento que pueda tener una Publicación original, como texto adicional, hashtags, menciones y URL. Los Tweets citados pueden contener contenido multimedia nativo (fotos, videos y GIF) y aparecerán en el objeto entities. Dado que se pueden agregar entidades de X, es probable que las entidades del Tweet citado sean diferentes de las entidades originales. En este ejemplo, se colocaron una nueva URL y un nuevo hashtag al final del Tweet citado. Esta Publicación, https://x.com/FloodSocial/status/907983973225160704, tiene el siguiente texto de la Publicación:                   strange and equally tragic when islands flood… trans-atlantic testing of quote tweets | @thisuser @thatuserhttp://bit.ly/2vMMDuu #testing En este caso, las entidades de nivel superior no reflejan los detalles del Tweet citado.  Sin embargo, el texto de la Publicación y las entities en extended_tweet reflejan perfectamente el Tweet citado, sin truncaciones ni entidades incorrectas; de ahí nuestra recomendación de confiar en el objeto anidado _extended_tweet _objeto para los Tweets citados.

Entidades para el objeto user

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

Ejemplo de JSON

{
  "id": 6253282,
  "id_str": "6253282",
  "name": "X API",
  "screen_name": "xapi",
  "location": "San Francisco, CA",
  "description": "The Real X API. I tweet about API changes, service issues and happily answer questions about X and our API. Don't get an answer? It's on my website.",
  "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 útiles JSON   - Tweet con cuatro fotos nativas   - Tweet con video nativo   - Tweet con un GIF animado Próximos pasos

Introducción

Si una Publicación contiene contenido multimedia nativo (compartido mediante la interfaz de usuario de la Publicación en lugar de a través de un enlace a otro sitio), también habrá una sección extended_entities. Cuando se trata de cualquier medio nativo (foto, video o GIF), extended_entities es la fuente de metadatos preferida por varias razones. Actualmente, se pueden adjuntar hasta cuatro fotos a una Publicación. Los metadatos de entities solo contendrán la primera foto (hasta 2014 solo se podía incluir una foto), mientras que la sección extended_entities incluirá todas las fotos adjuntas. Con el contenido multimedia nativo, otra limitación de los metadatos de entities.media es que el tipo de medio siempre indicará “photo”, incluso en los casos en que el contenido 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 photovideoanimated_gif. Por estas razones, si trabajas con contenido multimedia nativo, los metadatos de extended_entities son la mejor opción. Todas las Publicaciones con fotos, videos y GIF 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 ver su diccionario de datos). Ningún otro tipo de entidad, como hashtags y enlaces, se incluye en la sección extended_entities. El objeto media en la sección extended_entities es idéntico en estructura al que se incluye en la sección entities. Las Publicaciones solo pueden tener un tipo de contenido multimedia adjunto. Para fotos, se pueden adjuntar hasta cuatro fotos. Para videos y GIF, se puede adjuntar uno. Dado que los metadatos type del medio 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 Publicaciones y cargas útiles en JSON

A continuación se muestran algunas Publicaciones de ejemplo y los metadatos de las entidades asociadas. Publicación con cuatro fotos nativas Publicación con hashtag, mención de usuario, cashtag, URL y cuatro fotos nativas:
Esta es la sección entities de esta Publicación:
{
      "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, Part 1 - Gnip Blog - Social Data and Data Science Blog",
              "description": "If you would have told me a few years ago that one day I’d be comparing precipitation and social media time-series data, I would have assumed you were joking.  For 13 years at OneRain I helped develop software and monitoring … Continue reading →"
            },
            "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 la carga útil “extendida” que aparece a continuación encontrarás las cuatro fotos nativas (como máximo). Observa que la primera foto del array es la misma que la foto única incluida en la sección de entities no extendida de X. La estructura de metadatos de media para fotos es la misma tanto en las secciones entities como extended_entities. Aquí está la sección extented_entities para esta Publicación:
{
    "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 las entidades extendidas de esta Publicación con 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 solo a las plataformas propiedad y operadas por X, el objeto video_info se reemplazará por un objeto additional_media_info. El objeto additional_media_info contendrá información de medios adicional proporcionada por el editor, como title, description y embeddable flag. El contenido de video solo está disponible para los clientes oficiales de X cuando embeddable=false. En este caso, todas las URL de video proporcionadas en el payload estarán basadas en X, de modo que el usuario pueda abrir el video en una propiedad de X haciendo clic en el enlace. Aquí tienes 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: Tomlinson TD from McCown",
              "description": "NFL",
              "embeddable": false,
              "monetizable": true
            }
          }
        ]
      }
    }
Como se indicó anteriormente, aquí está la sección entities que tiene incorrectamente el type asignado a ‘photo’. Nuevamente, se prefiere la sección extended_entities para todos los tipos de medios nativos, 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 extended entities 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 payloads con enriquecimiento nativo

Publicación

{
	"created_at": "Fri Sep 18 18:36:15 +0000 2020",
	"id": 1307025659294675000,
	"id_str": "1307025659294674945",
	"text": "Here’s an article that highlights the updates in the new Tweet payload v2 https://t.co/oeF3ZHeKQQ",
	"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">X Web App</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": "The voice of the #XDevelopers team and your official source for updates, news, and events, related to the #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": 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": "Understanding the new Tweet payload in the X API v2",
				"description": "X recently announced the new X API v2, rebuilt from the ground up to deliver new features..."
			},
			"indices": [
				74,
				97
			]
		}],
		"user_mentions": [],
		"symbols": []
	},
	"favorited": false,
	"retweeted": false,
	"possibly_sensitive": false,
	"filter_level": "low",
	"lang": "en",
	"matching_rules": [{
		"tag": null
	}]
}

Respuesta a una Publicación

{
	"created_at": "Fri Aug 21 19:10:05 +0000 2020",
	"id": 1296887316556980200,
	"id_str": "1296887316556980230",
	"text": "See how @PennMedCDH are using X data to understand the COVID-19 health crisis 📊\n\nhttps://t.co/1tdA8uDWes",
	"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">X Web App</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 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,
	"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": "Penn Medicine Center for Digital Health",
				"description": "Penn Med Center for Digital Health ha creado un mapa de X sobre la COVID-19 que incluye gráficos detallados sobre el sentimiento, los síntomas reportados, datos segmentados por estado y datos de frontera 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 su servicio de mensajería de texto. El servicio usa esta información para difundir recursos pertinentes 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": "The hide replies endpoint is launching today! \n\nDevelopers can hide replies to Tweets - a crucial way developers ca… https://t.co/VyfXs1RTXn",
	"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": 2244994945,
		"id_str": "2244994945",
		"name": "X Dev",
		"screen_name": "XDevelopers",
		"location": "127.0.0.1",
		"url": "https://developer.x.com/en/community",
		"description": "The voice of the #XDevelopers team and your official source for updates, news, and events, related to the #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": "The hide replies endpoint is launching today! \n\nDevelopers can hide replies to Tweets - a crucial way developers can help improve the health of the public conversation using the #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": "Hide replies now available in the new X API",
					"description": "Today, we’re happy to announce the general availability of the hide replies endpoint in the new X API. The hide replies endpoint allows you to build tools that help people hide or unhide replies to their Tweets. People manage their replies for many reasons, including to give less attention to comments that are abusive, distracting, misleading, or to make conversations more engaging. Through this endpoint, you can build tools to help people on X hide or unhide replies faster and more..."
				},
				"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_entitites

{
	"created_at": "Wed Aug 12 17:01:42 +0000 2020",
	"id": 1293593516040269800,
	"id_str": "1293593516040269825",
	"text": "¡Por fin está aquí! 🥁 Saluda a la nueva #XAPI.\n\nEstamos reconstruyendo la X API v2 desde cero para p… https://t.co/UeCndQGMjx",
	"display_text_range": [
		0,
		140
	],
	"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": 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 #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 está aquí! 🥁 Saluda 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 la nueva y mejorada X API",
					"description": "Presentamos la nueva X API, reconstruida desde cero para ofrecer nuevas funciones más rápido, de modo que los desarrolladores puedan ayudar al mundo a conectarse con la conversación pública que tiene lugar 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": "crop"
					},
					"medium": {
						"w": 1200,
						"h": 675,
						"resize": "fit"
					},
					"small": {
						"w": 680,
						"h": 383,
						"resize": "fit"
					},
					"large": {
						"w": 1280,
						"h": 720,
						"resize": "fit"
					}
				}
			}]
		},
		"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 skill de Alexa 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\">X Web App</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 skill de Alexa 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\">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": 857699969263964200,
			"id_str": "857699969263964161",
			"name": "Suhem Parack",
			"screen_name": "suhemparack",
			"location": "Seattle, WA",
			"url": "https://developer.x.com",
			"description": "Developer Relations para investigación académica en @X. Háblame sobre investigación con datos de X. Anteriormente: Amazon Alexa. Las opiniones expresadas son mías",
			"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 skill de Alexa 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
	}]
}

Tweet citado

{
	"created_at": "Mon Nov 16 18:09:36 +0000 2020",
	"id": 1328399838128468000,
	"id_str": "1328399838128467969",
	"text": "Tal como estaba previsto, los endpoints de Labs v2 mencionados a continuación ya se han retirado. Háznoslo saber en los foros si t… https://t.co/ahQvTYaOcZ",
	"display_text_range": [
		0,
		140
	],
	"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": 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 novedades, 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 amistoso de que las funciones de ocultar respuestas y búsqueda reciente de X Developer Labs v2 se retirarán el próximo lunes, noviem… https://t.co/EEWN2Q9aXh",
		"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": 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 novedades, 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 amistoso de que las funciones de 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 que ya están disponibles en la v2 de la #XAPI. Más información: 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": "Retirada de las funciones de búsqueda reciente y ocultar respuestas de Labs v2",
						"description": "Como indicamos en nuestros anuncios de acceso anticipado y de ocultar respuestas, los siguientes endpoints de X Developer Labs v2 se retirarán el 16 de noviembre: Labs v2 recent search y Labs v2 hide replies. Si se invocan, estos endpoints responderán con un estado HTTP 410 y no devolverán datos. A partir de tus comentarios sobre Labs, incorporamos la funcionalidad correspondiente en la X API v2. Puedes encontrar la documentación pertinente en los enlaces que aparecen a continuación. Haz clic aquí para inscribirte y obtener acceso a la v2 si aún no lo has hecho..."
					},
					"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": "Tal como estaba previsto, los endpoints de Labs v2 mencionados a continuación se han retirado. Háznoslo saber en los foros si tienes preguntas o necesitas ayuda con la 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
	}]
}

Retuit de Tweet citado

{
 	"created_at": "Thu Feb 06 17:26:44 +0000 2020",
 	"id": 1225470895902412800,
 	"id_str": "1225470895902412800",
 	"text": "RT @AureliaSpecker: 📣 If you enjoyed the London commute tutorial I wrote in November last year, check out the refactored version that uses…",
 	"source": "<a href=\"http://x.com/download/iphone\" rel=\"nofollow\">X for 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": "The voice of the #XDevelopers team and your official source for updates, news, and events, related to the #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": "📣 If you enjoyed the London commute tutorial I wrote in November last year, check out the refactored version that u… https://t.co/cAepHunkFp",
 		"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": 1102321381,
 			"id_str": "1102321381",
 			"name": "Aurelia Specker",
 			"screen_name": "AureliaSpecker",
 			"location": "London, UK",
 			"url": null,
 			"description": "devrel @TwitterUK • Swiss in London • mother of houseplants • personal hairdresser to @_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": "I wrote a tutorial on how to get bespoke commute information using the X API🚇\n\n#DEVcommunity #Pythontutorial… https://t.co/pL0qJ4vhtE",
 			"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": 1102321381,
 				"id_str": "1102321381",
 				"name": "Aurelia Specker",
 				"screen_name": "AureliaSpecker",
 				"location": "London, UK",
 				"url": null,
 				"description": "devrel @TwitterUK • Swiss in London • mother of houseplants • personal hairdresser to @_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 sobre tu trayecto 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 el trayecto diario en Londres que escribí en noviembre del año pasado, consulta 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 sobre tu trayecto 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": "London, UK",
 			"url": null,
 			"description": "devrel @TwitterUK • Swiss in London • 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 sobre los desplazamientos usando la API de X🚇\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 Enterprise Activity Streams

¿Quieres obtener más información sobre cómo el formato de datos de Activity Streams se corresponde con el formato de X API v2?
Consulta nuestra guía comparativa: Activity Streams comparado con 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 nuevos 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 en 2017.

Objeto de actividad

Activity Streams es un esquema de objetos que traduce el formato de datos original de X, creado por Gnip para “normalizar el formato” de los datos de Publicaciones y otros datos de redes sociales usando el Activity Base Schema de terceros descrito aquí. Las Publicaciones se normalizan en el esquema de Activity Streams, incluyendo los tipos de objeto anidados note, person, place y service. Las Publicaciones pueden tener otros objetos de actividad de Publicación anidados para Retweets u otros, incluyendo twitter_quoted_status, long_object. El tipo de objeto de nivel básico activity es similar al objeto de nivel básico de Post del formato nativo enriquecido. Se pueden encontrar ejemplos de cargas útiles en formato Activity Streams aquí.

Diccionario de datos

A continuación se presenta el diccionario de datos de estos atributos “activity” de nivel raíz, así como enlaces a los diccionarios de datos de los objetos hijo.
AtributoTipoDescripción
idcadena de textoUn IRI único para la publicación. En más detalle, “tag” es el esquema, “search.x.com” representa el dominio de este esquema, y 2005 es el año en que se definió el esquema.
Al almacenar Publicaciones, este valor debe utilizarse como identificador único o clave primaria.
“id”: “tag:search.x.com,2005:1050118621198921728”
objectTypecadena de textoTipo de objeto, siempre con el valor “activity”
“objectType”: “activity”
objectobjetoUn objeto que representa la Publicación que se está creando o compartiendo.
Para Retweets, esto contendrá una “activity” completa, con los campos pertinentes descritos en este esquema.
Para Publicaciones originales, esto contendrá un objeto “note”, con los campos descritos aquí.
“object”:
“object”:
“objectType”: “note”,
“id”: “object:search.x.com,2005:1050118621198921728”,
“summary”: “To make room for more expression, we will now count all emojis as equal—including those with gender‍‍‍ ‍‍and skin t… https://t.co/MkGjXf9aXm”,
“link”: “http://x.com/API/statuses/1050118621198921728”,
“postedTime”: “2018-10-10T20:19:24.000Z”
long_objectobjetoUn objeto que representa el cuerpo de texto completo si el texto de la publicación supera los 140 caracteres.


“long_object”:
“body”: “Para dejar más espacio para expresarse, a partir de ahora contaremos todos los emojis por igual, incluidos aquellos con modificadores de género y tono de piel 👍🏻👍🏽👍🏿. Esto ya se ve reflejado en Twitter-Text, nuestra biblioteca de código abierto. \n\n¿Usas Twitter-Text? Consulta la publicación del foro para obtener más detalles: https://t.co/Nx1XZmRCXA”,
“display_text_range”: [
0,
277
],
“twitter_entities”:
“hashtags”: [],
“urls”: [

“url”: “https://t.co/Nx1XZmRCXA”,
“expanded_url”: “https://devcommunity.x.com/t/new-update-to-the-twitter-text-library-emoji-character-count/114607”,
“display_url”: “devcommunity.com/t/new-update-t…”,
“indices”: [
254,
277
]

],
“user_mentions”: [],
“symbols”: []

display_text_rangearraysi el texto de la publicación supera los 140 caracteres.


“display_text_range”: [
0,
142
]
verbcadena de textoEl tipo de acción realizada por el usuario.
Publicaciones, “post”
Retweets, “share”
Publicaciones eliminadas, “delete”
El verbo es la forma adecuada de distinguir entre un Tweet y un Retweet auténtico. Sin embargo, esto solo se aplica a Retweets auténticos y no a Tweets modificados o citados, que no usan la funcionalidad de Retweet de X. Para una descripción de los verbos de AS
haz clic aquí.
Para las eliminaciones, ten en cuenta que solo se incluirá un número limitado de campos, como se muestra en el payload de ejemplo a continuación.
“verb”: “post”
postedTimefecha (ISO 8601)La hora en que ocurrió la acción, por ejemplo, el momento en que se publicó la Publicación.


“postedTime”: “2018-10-10T20:19:24.000Z”
generatorobjetoUn objeto que representa la herramienta utilizada para publicar la Publicación. Este incluirá el nombre (“displayName”) y un enlace (“link”) de la aplicación de origen que genera la Publicación.
“generator”:
“displayName”: “X Web Client”,
“link”: “http://x.com
providerobjetoUn objeto JSON que representa el proveedor de la actividad. Este incluirá un objectType (“service”), el nombre del proveedor (“displayName”) y un enlace al sitio web del proveedor (“link”).
“provider”:

“objectType”: “service”,
“displayName”: “X”,
“link”: “http://www.x.com
linkcadena de textoUn enlace permanente a la Publicación.
“link”: “http://x.com/API/statuses/1050118621198921728
bodycadena de textoEl texto de la publicación.

En Retweets, ten en cuenta que X modifica el valor del campo body en el nivel raíz añadiendo “RT @username” al principio y truncando el texto original y añadiendo puntos suspensivos al final. Por lo tanto, para los Retweets, tu aplicación debe revisar object.body para asegurarse de que está extrayendo el texto no modificado de la Publicación original (que se está retuiteando).
“body”: “Con Cardiff, Crystal Palace y Hull City uniéndose a la EPL desde la Championship, será una gran batalla por no descender al final.”
display_text_rangearrayDescribe el intervalo de caracteres dentro del texto del body que indica la Publicación mostrada. Las Publicaciones con @menciones iniciales empezarán en un valor mayor que 0 y las Publicaciones con contenido multimedia adjunto o que se extiendan más allá de 140 caracteres indicarán el display_text_range en el long_object.

“display_text_range”: [
14,
42
]
o
“long_object”:
“display_text_range”: [
0,
277
]…
actorobjetoUn objeto que representa al usuario de X que publicó. El objeto Actor hace referencia a un usuario de X y contiene todos los metadatos relevantes sobre ese usuario.
Consulta
los detalles del objeto Actor
inReplyToobjetoUn objeto JSON que hace referencia a la Publicación a la que se responde, si aplica. Contiene un enlace a esa Publicación.
“inReplyTo”:

“link”: “http://x.com/GOP/statuses/349573991561838593
locationobjetoUn objeto JSON que representa el “Place” de X donde se creó la Publicación. Este es un objeto transmitido desde la plataforma de X.

Consulte el
objeto de ubicación
twitter_entitiesobjetoEl objeto entities del formato de datos de X que contiene listas de URL, menciones y hashtags. Consulta aquí la documentación de X sobre Entities. Ten 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, tu aplicación debe consultar object.twitter_entities para asegurarse de que estás usando valores no truncados.

Consulta los detalles del objeto twitter_entities
twitter_extended_entitiesobjetoUn objeto del formato de datos nativo de X que contiene “media”. Estará presente en cualquier Publicación en la que el objeto twitter_entities tenga datos presentes en el campo “media”, e incluirá varias fotos cuando haya varias fotos en la Publicación. Ten en cuenta que esta es la ubicación correcta para recuperar la información de medios en Publicaciones con varias fotos.

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

Consulta los detalles del objeto twitter_extended_entities.
gnipobjetoUn objeto agregado a la carga útil de la actividad para indicar las reglas de coincidencia y los datos enriquecidos agregados según los enriquecimientos activos en el stream o en el producto.

Consulta los detalles del objeto gnip
edit_historyObjetoIdentificadores únicos que indican todas las versiones de una Publicación. Para las Publicaciones sin ediciones, habrá un ID. Para las Publicaciones con historial de ediciones, habrá múltiples ID, organizados en orden ascendente que refleja el orden de las ediciones, con la versión más reciente en la última posición del array. 

Los ID de la Publicación se pueden usar para hidratar y ver versiones anteriores de una Publicación.

Ejemplo:

edit_history”:
“initial_tweet_id”: “1283764123”
“edit_tweet_ids”: [“1283764123”, “1394263866”]
edit_controlsObjetoCuando está presente, indica cuánto tiempo más una Publicación seguirá siendo editable y cuántas ediciones restantes tiene. Las Publicaciones solo son editables durante los primeros 30 minutos después de su creación y se pueden editar hasta cinco veces. 

Los id de la Publicación se pueden usar para hidratar y ver versiones anteriores de una Publicación.

Ejemplo:

“edit_controls”:
“editable_until_ms”: 123
“edits_remaining”: 3
editableBooleanoWhen present, indicates if a Publicación era editable en el momento de su publicación. This field is not dynamic and no cambiará de True a False cuando una Publicación alcance su límite de tiempo de edición o el número máximo de ediciones. Las siguientes características de la Publicación harán que este campo sea false:

* La Publicación está promocionada
* La Publicación incluye una encuesta
* La Publicación es una respuesta en un hilo que no es propio
* La Publicación es un retweet (ten en cuenta que los Tweets citados sí se pueden editar)
* La Publicación es nullcast
* Publicación de Comunidad
* Publicación de Superfollow
* Publicación colaborativa

Atributos adicionales de la Publicación

AtributotypeDescripción
twitter_langstring
favoritesCountintNullable. Indica aproximadamente cuántas veces esta Publicación ha recibido Me gusta por parte de usuarios de X.

“favoritesCount”:298
retweetCountintNúmero de veces que esta Publicación ha sido retuiteada. Ejemplo:

“retweetCount”:153

Atributos obsoletos

CampotypeDescripción
geoobjectUbicación de tipo Point donde se creó la Publicación.
twitter_filter_levelstringCampo obsoleto conservado para evitar un cambio incompatible

Objetos de actividad de Publicaciones anidadas

En varios casos, un objeto de Publicación incluirá otras Publicaciones anidadas. Si trabajas con objetos anidados, la carga útil JSON contendrá múltiples objetos y cada objeto de Publicación puede contener sus propios objetos. El objeto de nivel raíz contendrá información sobre el tipo de acción realizada, es decir, si es un Retweet o un Tweet citado, y también puede contener un objeto que describe la Publicación ‘original’ que se está compartiendo. Las Publicaciones extendidas incluirán un objeto extendido anidado que se extiende más allá de los 140 caracteres, lo cual se utilizó para evitar cambios disruptivos cuando se realizó la actualización en 2017. Cada diccionario de objetos anidados se describe a continuación. Retweets El formato de activity streams de los Retweets incluye un objeto anidado con el type “activity” y el verb “note” para representar la Publicación original que se está Retweeteando.
{
	"id": "tag:search.x.com,2005:222222222222",
	"objectType": "activity",
	"verb": "share",
	"body": "RT @TheOriginalTweeter: Coffee and art ☕️",
	"actor": {
		"displayName": "TheRetweeter"
	},
	"object": {
		"id": "tag:search.x.com,2005:11111111111",
		"objectType": "activity",
		"verb": "post",
		"body": "Coffee and art ☕️",
		"actor": {
			"displayName": "TheOriginalTweeter"
		},
		"object": {
			"objectType": "note",
			"id": "object:search.x.com,2005:11111111111",
			"summary": "Coffee and art ☕️",
			"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 El formato de activity streams incrusta Tweets citados { "id": "tag:search.x.com,2005:222222222222", "objectType": "activity", "verb": "post", "body": "Quoting a 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": {} } } Tweet citado retuiteado:
    {
    	"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: So excited to make this first set of endpoints available - many more to come before we're done. The @XDevelopers #DevRel team…",
    	"actor": {},
    	"object": {},
    	"favoritesCount": 0,
    	"twitter_entities": {},
    	"twitter_lang": "en",
    	"retweetCount": 13,
    	"gnip": {},
    	"twitter_filter_level": "low",
    	"twitter_quoted_status": {}
    }

Objeto long

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": "X Web Client",
    "link": "http://x.com"
  },
  "provider": {
    "objectType": "service",
    "displayName": "X",
    "link": "http://www.x.com"
  },
  "link": "http://x.com/API/statuses/1050118621198921728",
  "body": "To make room for more expression, we will now count all emojis as equal—including those with gender‍‍‍ ‍‍and skin t… https://t.co/MkGjXf9aXm",
  "long_object": {
    "body": "To make room for more expression, we will now count all emojis as equal—including those with gender‍‍‍ ‍‍and skin tone modifiers 👍🏻👍🏽👍🏿. This is now reflected in Twitter-Text, our Open Source library. \n\nUsing Twitter-Text? See the forum post for detail: 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": "To make room for more expression, we will now count all emojis as equal—including those with gender‍‍‍ ‍‍and skin t… 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

AttributeTypeDescription
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 ha definido. No es necesariamente el nombre de una persona. Normalmente está limitado a 50 caracteres, pero esto puede cambiar. Ejemplo:

“displayName”: “XDevelopers”
preferredUsernamestringEl nombre visible, identificador o alias con el que este usuario se identifica. Es único, pero puede cambiar. Usa id como identificador de usuario siempre que sea posible. Normalmente tiene una longitud máxima de 15 caracteres, pero pueden existir algunas cuentas históricas con nombres más largos. Ejemplo:

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

“objectType”:** “place”,

“displayName”: “127.0.0.1”

**        }**
linksarrayPuede ser nulo. Una URL proporcionada por el usuario asociada a su perfil. Ejemplo:

**       “links”: [

          {

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

“rel”: “me”

**          }

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

“summary”: “La voz del equipo de #XDevelopers…“
protectedBooleanCuando es true, indica que este usuario ha decidido proteger sus Publicaciones. Consulta Publicaciones públicas y protegidas. Ejemplo:

“protected”: true
verifiedBooleanCuando es true, indica que el usuario tiene una cuenta verificada. Consulta Cuentas verificadas. Ejemplo:

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

“followers_count”: 21
friendsCountIntEl número de usuarios a los que esta cuenta sigue (también conocidos como sus “seguidos”). En ciertas condiciones excepcionales, 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 Publicaciones a las que este usuario ha dado “me gusta” durante la vida de la cuenta. Se usa la ortografía británica en el nombre del campo por razones históricas. Ejemplo:

“favourites_count”: 13
statusesCountIntEl número de Publicaciones (incluidos los retweets) emitidas 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 que ya no se admiten (obsoletos)

FieldTypeDescription
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": "The voice of the #XDevelopers team and your official source for updates, news, and events, related to the #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 about changes and service issues. Follow @XDevelopers for more.",
    "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 Location

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

Diccionario de datos de Location

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

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

****“displayName”:
“United States”
namestringNombre de la ubicación del formato JSON de place de X.
linkstringUn enlace a la representación JSON completa del place en X.

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

Consulte geo
countryCodeStringCódigo de país abreviado que representa el país que contiene este place. Ejemplo:

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

**“country”: **“United States”

objetos derivados de profileLocations

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

”address”: {

**          “country”: “United States”,

          “countryCode”: “US”,

          “locality”: “Providence”,

          “region”: “Rhode Island”,

          “subRegion”: “Providence County”

        }**
geoobjectDentro del objeto location de profileLocation dentro del objeto gnipt. Coordenadas del centroide de la ubicación derivadas por el enriquecimiento geográfico de perfil.

”geo”: {

**          “coordinates”: [

-98.5
,

39.76

          ],

          “type”: “point”

        }**
Ejemplos
	"location": {
    "objectType": "place",
    "displayName": "Kansas, USA",
    "name": "Kansas",
    "country_code": "United States",
    "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, USA"
    }

Objeto de entidades de X

Para el formato Activity Streams, twitter_entities tiene el mismo formato y diccionario de datos que en el formato enriquecido nativo objeto entities 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 muestra en el formato nativo enriquecido en el 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 que aplican a la actividad.

Diccionario de datos

FieldTypeDescription
matching_rulesarrayContiene un array 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 un array de los enlaces dentro de la actividad y los metadatos de la URL expandida para el enriquecimiento de URL unwinding

    “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 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 publicaciones
{
	"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": "Here’s an article that highlights the updates in the new Tweet payload 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": "The voice of the #XDevelopers team and your official source for updates, news, and events, related to the #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": "Here’s an article that highlights the updates in the new Tweet payload 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": "Understanding the new Tweet payload in the X API v2",
			"expanded_url_description": "X recently announced the new X API v2, rebuilt from the ground up to deliver new features..."
		}]
	},
	"twitter_filter_level": "low"
}
Actividad de respuesta de la Publicación
{
	"id": "tag:search.x.com,2005:1296887316556980230",
	"objectType": "activity",
	"verb": "post",
	"postedTime": "2020-08-21T19:10:05.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/1296887316556980230",
	"body": "Descubre cómo @PennMedCDH está usando datos de X para comprender la crisis sanitaria de la 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 está usando datos de X para comprender la crisis sanitaria de la 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": "Penn Medicine Center for Digital Health",
			"expanded_url_description": "Penn Med Center for Digital Health ha creado un mapa de X sobre la COVID-19 que incluye gráficos que detallan el sentimiento, los síntomas reportados, desgloses de datos por estado y datos fronterizos sobre el brote de la COVID-19. Además, su iniciativa Penn Med With You utiliza información regional agregada de X para informar su sitio web y su servicio de mensajería de texto. Este servicio emplea esta información para difundir recursos pertinentes y oportunos."
		}]
	},
	"twitter_filter_level": "low"
}
Actividad de Publicación 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 Tweets, una forma crucial en que los desarrolladores pue… https://t.co/VyfXs1RTXn",
	"long_object": {
		"body": "The hide replies endpoint is launching today! \n\nDevelopers can hide replies to Tweets - a crucial way developers can help improve the health of the public conversation using the #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": "The voice of the #XDevelopers team and your official source for updates, news, and events, related to the #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": "The hide replies endpoint is launching today! \n\nDevelopers can hide replies to Tweets - a crucial way developers ca… 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": "Hide replies now available in the new X API",
			"expanded_url_description": "Today, we’re happy to announce the general availability of the hide replies endpoint in the new X API. The hide replies endpoint allows you to build tools that help people hide or unhide replies to their Tweets. People manage their replies for many reasons, including to give less attention to comments that are abusive, distracting, misleading, or to make conversations more engaging. Through this endpoint, you can build tools to help people on X hide or unhide replies faster and more..."
		}]
	},
	"twitter_filter_level": "low"
}
Actividad de publicaciones con twitter_extended_entities
{
	"id": "tag:search.x.com,2005:1293593516040269825",
	"objectType": "activity",
	"verb": "post",
	"postedTime": "2020-08-12T17:01:42.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/1293593516040269825",
	"body": "¡Por fin está aquí! 🥁 Dale la bienvenida a la nueva #XAPI.\n\nEstamos reconstruyendo la X API v2 desde cero para b… https://t.co/UeCndQGMjx",
	"long_object": {
		"body": "¡Por fin está aquí! 🥁 Dale la bienvenida a la nueva #XAPI.\n\nEstamos reconstruyendo la X API v2 desde cero para atender 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 ofrecer nuevas funciones más rápido… 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 funciones más rápido y ayudar a los desarrolladores a conectar al mundo con la conversación pública que tiene lugar en X."
		}]
	},
	"twitter_filter_level": "low"
}
Actividad de Retweets
{
	"id": "tag:search.x.com,2005:1229851574555508737",
	"objectType": "activity",
	"verb": "share",
	"postedTime": "2020-02-18T19:33:59.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/1229851574555508737",
	"body": "RT @suhemparack: Creé una skill de Alexa para X usando APL que te permite ver Tweets y tendencias en el Echo Show.\n\nÉchale un vistazo 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 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:1229843515603144704",
		"objectType": "activity",
		"verb": "post",
		"postedTime": "2020-02-18T19:01:58.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/suhemparack/statuses/1229843515603144704",
		"body": "Creé una skill de Alexa para X usando APL que te permite ver Tweets y tendencias en el Echo Show.\n\nÉchale un vistazo… https://t.co/RP9NgltX7i",
		"long_object": {
			"body": "Creé una skill de Alexa 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
			],
			"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. Antes: Amazon Alexa. Las opiniones son mías",
			"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 skill de Alexa para X usando APL que te permite ver Tweets y tendencias en el Echo Show.\n\nÉchale un vistazo… 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 se han retirado. Háznoslo saber en los foros si t… https://t.co/ahQvTYaOcZ",
 	"long_object": {
 		"body": "Según lo previsto, los endpoints de Labs v2 mencionados a continuación ya se han retirado. Háznoslo saber en los foros si tienes preguntas o necesitas ayuda con la 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 información sobre 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 se han retirado. Háznoslo saber en los foros si t… 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": "Retirada de recent search y hide replies de Labs v2",
 			"expanded_url_description": "Tal como indicamos en nuestros anuncios de Early Access y de hide replies, los siguientes endpoints de X Developer Labs v2 se retirarán el 16 de noviembre. Labs v2 recent search Labs v2 hide replies Si se llaman, estos endpoints responderán con un código de estado HTTP 410 y no devolverán datos. Basándonos en tus comentarios sobre Labs, incorporamos la funcionalidad correspondiente en la X API v2. Puedes encontrar la documentación pertinente en los enlaces siguientes. Haz clic aquí para solicitar acceso a 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": "👋 Un recordatorio amistoso de que X Developer Labs v2 hide replies y recent search se retirarán el próximo lunes, novi… https://t.co/EEWN2Q9aXh",
 		"long_object": {
 			"body": "👋 Un recordatorio amistoso de que X Developer Labs v2 hide replies y recent search se retirarán el próximo lunes 16 de noviembre. Te recomendamos migrar a los nuevos endpoints de hide replies y recent search que ya están disponibles en la v2 de #XAPI. Más información: 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 información sobre 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": "👋 Un recordatorio amistoso: las funciones de ocultar respuestas y de búsqueda reciente de X Developer Labs v2 se retirarán el próximo lunes, nov… 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 de Tweet citado
{
	"id": "tag:search.x.com,2005:1225470895902412800",
	"objectType": "activity",
	"verb": "share",
	"postedTime": "2020-02-06T17:26:44.000Z",
	"generator": {
		"displayName": "X for 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: 📣 Si disfrutaste del tutorial sobre el trayecto diario en Londres que escribí en noviembre del año pasado, échale un vistazo a la versión refactorizada que usa…",
	"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": {
		"id": "tag:search.x.com,2005:1224709550214873090",
		"objectType": "activity",
		"verb": "post",
		"postedTime": "2020-02-04T15:01:25.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/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": "📣 Si disfrutaste del tutorial sobre el trayecto diario en Londres que escribí en noviembre del año pasado, échale 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 @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 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:1224709550214873090",
			"summary": "📣 Si disfrutaste del tutorial sobre el trayecto diario en Londres que escribí en noviembre del año pasado, échale un vistazo a la versión refactorizada que 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": "X Web App",
			"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 sobre tus desplazamientos utilizando la X API🚇\n\n#DEVcommunity #Pythontutorial… https://t.co/pL0qJ4vhtE",
		"long_object": {
			"body": "Escribí un tutorial sobre cómo obtener información personalizada sobre tus desplazamientos utilizando la X API🚇\n\n#DEVcommunity #Pythontutorial \n\nÉchale un vistazo 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 sobre tus desplazamientos utilizando 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 Tweet

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

Introduction**

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 usas datos de X para investigación histórica, entender la cronología de esta evolución es importante para poder encontrar Publicaciones de interés en el archivo de datos. X se lanzó como una sencilla App móvil basada en SMS y ha crecido hasta convertirse en una plataforma de comunicación completa. Una plataforma con un conjunto completo de APIs. Las APIs siempre han sido un pilar de la red de X. La primera API se puso en marcha poco después del lanzamiento de X. Cuando el etiquetado geográfico de Publicaciones se introdujo por primera vez en 2009, se ofreció mediante una Geo API (y más tarde la capacidad de “etiquetar geográficamente” una Publicación se integró en la interfaz de usuario de X.com). Hoy en día, las APIs de X impulsan la red de comunicación bidireccional que se ha convertido en la fuente de noticias de última hora y de intercambio de información. Las oportunidades para crear soluciones 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 cada Publicación disponible públicamente: Historical PowerTrack y la Full-Archive Search API. Ambas APIs ofrecen un conjunto de operadores que se utilizan para consultar y recopilar Publicaciones de interés. Estos operadores buscan coincidencias en una variedad de atributos asociados con cada Publicación, cientos de atributos como el contenido de texto de la Publicación, el nombre de cuenta del autor y los enlaces compartidos en la Publicación. Las Publicaciones y sus atributos se codifican en JSON, un formato de intercambio de datos de texto muy común. Por lo tanto, a medida que se introducían nuevas funciones, aparecían nuevos atributos JSON y, normalmente, se introducían nuevos operadores de API para hacer coincidir esos atributos. Si tu caso de uso incluye la necesidad de escuchar lo que el mundo ha dicho en X, cuanto mejor entiendas cuándo los operadores empezaron a disponer de metadatos JSON con los que buscar coincidencias, más eficaces podrán ser tus filtros históricos de PowerTrack. A continuación, presentaremos algunos conceptos clave que sientan las bases para entender cómo las actualizaciones en los metadatos de las Publicaciones afectan a la búsqueda de tu señal de datos de interés.

Conceptos clave**

De convenciones de usuario a objetos de primera clase en X

Los usuarios de X introdujeron de forma orgánica patrones de comunicación nuevos y ahora fundamentales en la red de X. Un ejemplo seminal es el hashtag, hoy casi universalmente utilizado 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 Publicaciones de interés son clave, y los hashtags se han convertido en un método fundamental. Poco después de que el uso de los hashtags creciera, recibieron condición y soporte oficiales por parte de X. Cuando los hashtags se convirtieron en un “objeto de primera clase”, esto implicó muchas cosas. Significó que los hashtags pasaron a ser elementos en los que se podía hacer clic y que se podían buscar en la interfaz de usuario de X.com. También significó que los hashtags pasaron a ser miembros de la familia de entities de X, junto con las @mentions, el contenido multimedia adjunto, los símbolos bursátiles y los enlaces compartidos. Estas entities se codifican de forma conveniente en un array JSON preanalizado, lo que facilita a los desarrolladores procesarlas, examinarlas y almacenarlas. 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 otras personas. Comenzó como un proceso manual de copiar/pegar una Publicación y anteponerle el patrón “RT @”. Este proceso acabó automatizándose mediante un nuevo botón de Retweet, completo con nuevos metadatos JSON. Así nació el Retweet “oficial”. Otros ejemplos incluyen las “mentions”, el intercambio de contenido multimedia y enlaces web, y compartir una ubicación con tu Publicación. Cada uno de estos patrones de uso dio lugar a nuevas funciones en la interfaz de usuario de x.com, nuevo JSON de soporte y, por tanto, nuevas formas de encontrar Publicaciones coincidentes. Todos estos atributos fundamentales de las Publicaciones han dado lugar a operadores de PowerTrack utilizados para hacer coincidir Publicaciones en función de ellos.

Metadatos de la Publicación, mutabilidad, actualizaciones y vigencia

Aunque una Publicación puede tener hasta un número fijo de caracteres, la descripción JSON de una Publicación consta de más de 100 atributos. Estos incluyen atributos como quién publicó, en qué momento, si es una Publicación original o un Retweet, y una matriz (array) de objetos de primera clase 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 de sitio web opcional. Algunos metadatos de la cuenta nunca cambian (por ejemplo, el id numérico de usuario y la fecha de creación), otros 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 recopilas Publicaciones históricas, es importante entender que algunos metadatos son tal como eran cuando se Publicó y otros metadatos son tal como son 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 perfil ‘home’ se actualizan a los valores del momento de la consulta.

Contenido multimedia “nativo”

X.com y las aplicaciones móviles de X permiten agregar fotos y videos a una Publicación haciendo clic en un botón y navegando por tus galerías de fotos. Ahora que están integrados como acciones de primer nivel, los videos y las fotos compartidos de esta manera se denominan contenido multimedia “nativo”. Muchos Operadores de consulta funcionan con estos recursos “nativos”, incluidos has:videos, has:images y has:media. Estos solo coincidirán con contenido multimedia que se haya compartido a través de funciones de X. Para hacer coincidir otro contenido multimedia alojado fuera de la plataforma de X, deberás usar Operadores que coincidan con metadatos de la URL. Entonces, antes de profundizar en los detalles del producto 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 alguna manera, de forma fundamental, el comportamiento de los usuarios, el contenido JSON de las Publicaciones, los Operadores de consulta o los tres. Si consideramos X como una plataforma de API, los siguientes eventos afectaron de alguna manera las cargas (payloads) JSON que se utilizan para codificar Publicaciones. A su vez, esos detalles JSON afectan cómo las API históricas de X coinciden con ellas. Ten en cuenta que esta lista cronológica es en general precisa, pero no exhaustiva.

2006

  • Octubre
    • @replies pasa a ser una convención.
    • cashtagsaparecenporprimeravez,perosuusoparamencionarsıˊmbolosbursaˊtilesnosegeneralizahastaprincipiosde2009.Loscashtags aparecen por primera vez, pero su uso para mencionar símbolos bursátiles no se generaliza hasta principios de 2009. Los Cashtags pasaron a ser un enlace sobre el que se podía hacer clic y que se podía buscar 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 de usuario 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 Publicaciones.

2009

  • Febrero - los $cashtags se convierten en una convención común para hablar de símbolos bursátiles.
  • Mayo - se introduce la versión ‘beta’ del Retweet con “Via @” añadido al cuerpo de la Publicación.
  • Junio - se introducen las cuentas verificadas.
  • Agosto - los Retweets se convierten en un objeto de primera clase con el patrón “RT @” y nuevos metadatos retweet_status.
  • Octubre - se lanza la función de Listas.
  • Noviembre - se lanza la API de geotagging de Publicaciones, que proporciona el primer método para que los usuarios compartan su ubicación a través de apps de terceros.

2010

  • Junio: se introduce X Places para geoetiquetar Publicaciones.
  • Agosto: se lanza el botón de Publicación para sitios web, lo que facilitó compartir enlaces.

2011

  • Mayo: se introduce el botón Seguir (Follow), que facilita seguir cuentas asociadas a sitios web.
  • Agosto: se introducen las fotos nativas.

2012

  • junio: los $Cashtags se convierten en un enlace en el que se puede hacer clic y que se puede buscar.

2014

  • Marzo - se admite el etiquetado de fotos y hasta cuatro fotos. Se introdujeron los metadatos de X Entities extendidos.
  • Abril - los emoji se admiten de forma nativa en la interfaz de usuario de X. Los emoji se utilizaban habitualmente en Publicaciones al menos desde 2008.

2015

  • abril: un cambio en el diseño de la interfaz de usuario de las Publicaciones de X provoca que se etiqueten geográficamente menos Publicaciones.
  • octubre: se introdujeron las encuestas de X. Inicialmente, las encuestas admitían dos opciones con un período de votación de 24 horas. En noviembre, las encuestas empezaron a admitir cuatro opciones con períodos de votación de 5 minutos a siete días. Los metadatos de las encuestas se pusieron a disposición (solo en formato nativo enriquecido) en febrero de 2017.

2016

2017

  • Febrero: los metadatos de encuestas de X se incluyen en los metadatos de la Publicación (solo formato nativo enriquecido).
  • Abril: se introducen las “Simplified Replies”, con las cuentas a las que se responde sin contarse dentro de los 140 caracteres (“dmw140, part 2”).
2018 2022
  • 29 de septiembre: se habilita la capacidad de editar Publicaciones para un pequeño grupo de prueba. Los metadatos de Publicaciones editadas se añaden al objeto de la Publicación cuando corresponde. Esto incluye los objetos edit_history y edit_controls. Estos metadatos no se devolverán para Publicaciones que se crearon antes de que se añadiera la funcionalidad de edición. No hay Operators asociados para estos metadatos. Para obtener más información sobre cómo funcionan las ediciones de Publicaciones, consulta los Fundamentos de edición de Publicaciones
Consejos de filtrado Familiarizarte 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 APIs históricas de X al archivo de Publicaciones, utilizando PowerTrack Operators para hacer coincidir el JSON de la Publicación. Un ejemplo es el operador lang:, que se usa para hacer coincidir Publicaciones en un idioma específico. X proporciona un servicio de clasificación de idioma (que admite más de 50 idiomas), y las APIs de X proporcionan estos metadatos en el JSON que se genera para cada Publicación. Así, si una Publicación está escrita 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 Publicaciones clasificadas como español. La información de la cronología también puede ayudar a interpretar mejor los datos de las Publicaciones recibidas. Supongamos que investigas el intercambio de contenido sobre los Juegos Olímpicos de Verano de 2008 y 2012. Si aplicas únicamente el operador is:retweet para hacer coincidir Retweets, no habría datos que coincidan en 2008. 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 uso, 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, debes añadir una cláusula de regla "RT @" para ayudarte a identificarlos en 2008. Tanto los Retweets como la clasificación por idioma de las Publicaciones son ejemplos de atributos de Publicación con una larga historia y muchos detalles de producto. A continuación, hablaremos con más detalle sobre estas y otras clases de atributos importantes para hacer coincidencias y para comprender los datos de X.

Reconocer falsos negativos

Cuando se trata de escribir filtros, una conclusión importante es que todos los Operadores de metadatos sobre los que se hace coincidencia tienen fechas de “nacimiento”. Si creas un filtro con un Operador que actúa sobre metadatos introducidos después de que se publicó la Publicación, obtendrás un falso negativo. Por ejemplo, supongamos que te interesan todas las Publicaciones que mencionan ‘snow’ y comparten un video. Si creas una regla con el Operador has:videos, que hace coincidir Publicaciones con videos nativos, esa cláusula no coincidirá con ninguna Publicación anterior a 2015. Sin embargo, compartir videos ha sido común en X mucho antes de 2015. Antes de esa fecha, 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 estas Publicaciones anteriores de interés, deberías incluir una cláusula de regla como url:"youtube.com". Ten en cuenta que, con las APIs de Search, hay algunos ejemplos de metadatos que se han “rellenado retrospectivamente” a medida que se reconstruía su índice. Un buen ejemplo son los cashtags,quepasaronautilizarseampliamenteparahablardesıˊmbolosbursaˊtilesen2009.Despueˊsdequeseintrodujoeloperadorcashtags, que pasaron a utilizarse 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 ese proceso, la entidad del símbolo se extrajo de todos los cuerpos de las Publicaciones, incluidos los de principios de 2006, cuando $ se usaba principalmente como jerga: “I hope it nownow $oon!”.

Identificar y filtrar atributos de Publicaciones importantes para tu caso de uso

Algunos metadatos, como los id numéricos de cuentas de X, han existido 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 de que X comenzara en 2006. Ejemplos de nuevos metadatos que se introdujeron posteriormente incluyen metadatos de Retweets, ubicaciones de Publicaciones, títulos y descripciones de URL y contenido multimedia nativo. A continuación se muestran algunos de los tipos más comunes de atributos de Publicaciones que se han visto afectados de forma fundamental por estas actualizaciones de la plataforma de X. El comportamiento de filtrado y coincidencia de estos depende, en la mayoría de los casos, de qué API histórica de Publicaciones se use. Para ayudarte a determinar qué producto se ajusta mejor a tu investigación y caso de uso, los detalles de los atributos que se proporcionan a continuación incluyen información general de alto nivel sobre el producto.

Perfiles de X

Dado que, en esencia, X es un canal de comunicación global en tiempo real, la investigación con datos de Publicaciones suele poner el énfasis en quién se está comunicando. A menudo es útil saber cuál es el lugar de residencia de un usuario de X. Con frecuencia, saber que la biografía de una cuenta incluye menciones de intereses y pasatiempos puede llevarte a Publicaciones relevantes. Es muy común querer monitorizar Publicaciones 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 de residencia (texto libre ingresado por un usuario), el número de seguidores y muchos otros. Algunos atributos nunca cambian, como el id numérico de usuario y la fecha en que se creó la cuenta. Otros suelen cambiar día a día, semana a semana o mes a mes, como el número de Publicaciones realizadas y el número 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 de residencia y biografía. La carga útil JSON de cada Publicación incluye metadatos de perfil de cuenta para el autor de la Publicación. Si es un Retweet, también incluye metadatos de perfil para la cuenta que publicó la Publicación original. La mutabilidad de los metadatos de perfil de una Publicación depende totalmente del producto histórico utilizado. Las API de búsqueda devuelven Publicaciones históricas 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ó la Publicación, excepto para los datos anteriores a 2011. Para Publicaciones anteriores a 2011, los metadatos de perfil reflejan el perfil tal como era en septiembre de 2011.

Publicación 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 otras personas. Comenzó como un proceso manual de copiar y pegar una Publicación 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 hacer retweet se convirtió en un evento de Publicación de primera clase. Junto con el nuevo botón de Retweet, se introdujeron nuevos metadatos, como el payload completo de la Publicación original. Que una Publicación sea original o compartida es un criterio de filtrado habitual. En algunos casos, solo se necesita contenido original. En otros casos, la interacción con la Publicación es de máxima importancia, por lo que los Retweets son clave. El operador de PowerTrack is:retweet permite a los usuarios incluir o excluir Retweets. Si se extraen datos de antes de agosto de 2009, los usuarios necesitan dos estrategias para hacer coincidir (o no) los Retweets. Antes de agosto de 2009, es necesario comprobar el propio texto de la Publicación, utilizando coincidencia de frase exacta, para buscar coincidencias con el patrón “@RT ”. Para periodos posteriores a agosto de 2009, el operador is:retweet está disponible.

Clasificaciones de idioma de las Publicaciones

El idioma en que está escrita una Publicación suele ser de interés. El idioma de la Publicación puede ayudar a inferir la ubicación de una Publicació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 según la clasificación de idioma de una Publicación, los productos históricos de X (Search API y Historical PowerTrack) son bastante diferentes. Cuando se creó el archivo de búsqueda, todas las Publicaciones se completaron de forma retroactiva con la clasificación de idioma de X. Por lo tanto, el operador lang: está disponible para todo el archivo de Publicaciones. 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. 

Georreferenciar Publicaciones

Poder indicar desde dónde se publicó una Publicación (es decir, georreferenciarla) es importante para muchos casos de uso. Hay tres métodos principales para georreferenciar Publicaciones:
  • Referencias geográficas en el mensaje de una Publicación
  • Publicaciones etiquetadas con ubicación por el usuario
  • Ubicación «principal» del perfil de la cuenta configurada por un usuario
Referencias geográficas en el mensaje de una Publicación
La coincidencia basada en referencias geográficas en el mensaje de la Publicación, aunque a menudo es el método más complejo porque depende del conocimiento local, es una opción disponible para todo el archivo de Publicaciones. Aquí hay un ejemplo de coincidencia georreferenciada de 2006 para el área de San Francisco basado en un filtro de “golden gate”: https://x.com/biz/statuses/28311
Publicaciones geolocalizadas por el usuario
En noviembre de 2009, X introdujo su Post Geotagging API, que permitió que las Publicaciones se geolocalizaran con una ubicación exacta. En junio de 2010, X introdujo X Places, que representan un área geográfica a escala de local, vecindario o ciudad. Aproximadamente entre el 1 % y el 2 % de las Publicaciones están geolocalizadas mediante cualquiera de estos métodos. El historial de geolocalización disponible depende de la Historical API que estés utilizando. Con las Search APIs, la posibilidad de empezar a hacer coincidencias de Publicaciones con algunos Geo Operators comenzó en marzo de 2010, y con otros en febrero de 2015. Si estás 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 geolocalización anterior a esa fecha.
Ubicación de “inicio” del perfil de la cuenta establecida por un usuario
Todos los usuarios de X tienen la posibilidad de configurar su ubicación de perfil, indicando su ubicación de inicio. Millones de usuarios de X proporcionan esta información, y esto incrementa significativamente la cantidad de geodatos en X Firehose. Estos metadatos de ubicación son una cadena de texto de formato libre, generada por el usuario y no normalizada. Aproximadamente el 30% de las cuentas tienen metadatos de Profile Geo que pueden resolverse a nivel de país. Al igual que con la geolocalización de las Publicaciones, los métodos de coincidencia y los períodos de tiempo disponibles dependen de la API histórica que utilices. Historical PowerTrack permite a los usuarios intentar sus propias coincidencias personalizadas sobre estas cadenas de texto de formato libre. Para facilitar ese proceso, X también ofrece un Profile Geo Enrichment que realiza la geocodificación cuando es posible, proporcionando metadatos normalizados y operadores correspondientes. Los operadores de Profile Geo están disponibles tanto en Historical PowerTrack como en las APIs de búsqueda. Con Historical PowerTrack, estos metadatos de Profile Geo están disponibles a partir de junio de 2014. Con las APIs de búsqueda, estos metadatos están disponibles a partir de febrero de 2015. Compartir enlaces a páginas web, fotos y videos siempre ha sido un caso de uso fundamental de X. Al principio de su historia, todas estas acciones implicaban incluir un enlace URL en el mensaje de la Publicación. En 2011 X integró el uso compartido de fotos directamente en su interfaz de usuario. En 2016 se añadieron los videos nativos. Dada esta historia, existe una variedad de operadores de filtrado usados para hacer coincidencias con este contenido. Hay un conjunto de operadores que determinan si las Publicaciones tienen enlaces compartidos, fotos y videos. Además, dado que la mayoría de las URL compartidas en X se acortan para usar menos caracteres de una Publicación (por ejemplo, generadas por un servicio como bitly o tinyurl), X proporciona enriquecimientos de datos que generan una URL completa y expandida que se puede usar para hacer coincidencias. Por ejemplo, si quisieras hacer coincidencias con Publicaciones que incluyan enlaces que traten sobre X y sistemas de alerta temprana, un filtro que haga referencia a “severe weather communication” coincidiría con una Publicación que contenga esta URL http://bit.ly/1XV1tG4. En marzo de 2012 se introdujo el enriquecimiento de URL expandida. Antes de ese momento, los payloads de las Publicaciones incluían solo la URL proporcionada por el usuario. Por lo tanto, si el usuario incluía una URL acortada, puede ser difícil hacer coincidencias con las URL (expandidas) de interés. Con Historical PowerTrack y las API de búsqueda, 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 HTML y la descripción de un sitio web en el payload de la Publicación, junto con operadores para hacer coincidencias con esos elementos. Con Historical PowerTrack, estos metadatos pasan a estar disponibles en julio de 2016. Con las API de búsqueda, estos metadatos comienzan a aparecer en diciembre de 2014. En septiembre de 2016 X introdujo los “adjuntos nativos”, en los que un enlace compartido al final no se cuenta dentro del límite de 140 caracteres de la Publicación. Ambos enriquecimientos de URL siguen aplicándose a estos enlaces compartidos. Para obtener otros detalles específicos del producto sobre el filtrado de URL, consulta los artículos correspondientes para obtener más información.