Passer au contenu principal
Consultez nos guides de comparaison :

X API : Dictionnaire de données Enterprise

Introduction

Enterprise Les Publications sont les éléments de base de tout ce qui se passe sur X. Toutes les X API qui renvoient des Publications fournissent ces données encodées en JavaScript Object Notation (JSON). JSON est fondé sur des paires clé-valeur, avec des attributs nommés et des valeurs associées. Les objets Publication récupérés via l’API incluent la « mise à jour de statut » d’un utilisateur X, mais les Retweets, les réponses et les Tweets cités sont également tous des objets Publication. Si une Publication est liée à une autre Publication, en tant que Retweet, réponse ou Tweet cité, chacune sera identifiée ou intégrée dans l’objet Publication. Même la Publication la plus simple, dans le format de données natif de X, contiendra des objets JSON imbriqués pour représenter les autres attributs d’une Publication, tels que l’auteur, les utilisateurs mentionnés, le lieu balisé, les hashtags, les symboles de cashtag, les médias ou les liens URL. Lorsque vous travaillez avec les données de X, il s’agit d’un concept important à comprendre. Le format des données de Publication que vous recevrez à partir de la X API dépend du type de Publication reçu, de la X API que vous utilisez et des paramètres de format. Les endpoints Enterprise qui renvoient des objets Publication ont été mis à jour pour fournir les métadonnées nécessaires à la compréhension de l’historique des modifications de la Publication. Pour en savoir plus sur ces métadonnées, consultez la page Principes de base sur la modification des Publications.
Dans le format natif de X, le payload JSON comprend des attributs au niveau racine et des objets JSON imbriqués (représentés ici par la notation {}) :
{
	"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": {}
}

Formats de données disponibles

Veuillez noter : il est fortement recommandé d’utiliser le format Enriched Native pour les API de données Enterprise. 
  • Le format Enriched Native inclut toutes les nouvelles métadonnées depuis 2017, comme les métadonnées de sondage, ainsi que des métriques supplémentaires comme reply_count et quote_count.
  • Le format Activity Streams n’a pas été mis à jour avec de nouvelles métadonnées ou de nouveaux enrichissements depuis la mise à jour du nombre de caractères en 2017.
Les API de données Enterprise fournissent des données dans deux formats différents. Le format Enterprise le plus proche du format natif standard v1.1 est Native Enriched. Le format de données Enterprise historique est Activity Streams, initialement mis en œuvre et utilisé par Gnip comme format normalisé pour X et d’autres fournisseurs de données de médias sociaux à l’époque. Bien que ce format soit toujours disponible, X n’a investi dans de nouvelles fonctionnalités et évolutions que pour le format Native Enriched depuis 2017. Le format Enriched Native est exactement ce que son nom suggère : il inclut les objets natifs X ainsi que des enrichissements supplémentaires disponibles pour les produits de données Enterprise, comme les métadonnées de déroulement d’URL, la géolocalisation de profil, les métadonnées de sondage et des métriques d’engagement supplémentaires.  

Comparaison d’objets par format de données

Quel que soit votre cas d’usage de X, comprendre ce que ces objets et attributs de Publication encodés en JSON représentent est essentiel pour réussir à trouver les signaux de données qui vous intéressent. Pour vous aider dans cette tâche, un ensemble de pages est dédié à chaque objet, dans chaque format de données. En reflétant la hiérarchie JSON ci-dessus, voici des liens vers chacun de ces objets :
Native EnrichedActivity Streams
Link Objet PublicationLink Objet activité
Link Objet utilisateurLink Objet acteur
Link Objet entitésLink Objet entités X
Link Objet entités étendues[Link]/x-api/enterprise-gnip-2.0/fundamentals/data-dictionary#x-extended-entities Objet entités X étendues
Link Objet géographiqueLink Objet lieu
n/aLink Objet Gnip

Bonnes pratiques d’analyse

  • Le JSON de X est encodé en UTF-8.
  • Les analyseurs doivent pouvoir gérer sans difficulté la variation de l’ordre des champs. Il faut partir du principe que le JSON de Publication est renvoyé sous forme de table de hachage de données non ordonnée.
  • Les analyseurs doivent tolérer l’ajout de « nouveaux » champs. 
  • Les parseurs JSON doivent tolérer les champs « manquants », car tous les champs n’apparaissent pas dans tous les contextes.
  • Il est généralement acceptable de considérer qu’un champ nul, un ensemble vide et l’absence d’un champ sont équivalents.

Objets de données Enterprise Native Enriched

Objet Tweet Native Enriched

Vous souhaitez en savoir plus sur la façon dont le format de données Native Enriched correspond au format X API v2 ? Consultez notre guide de comparaison : Native Enriched comparé à X API v2

Objet Publication

Lorsque vous utilisez des produits de données Enterprise, vous constaterez que la majeure partie du dictionnaire de données est similaire au format natif des données de Publication, avec quelques métadonnées enrichies supplémentaires. Le niveau de base du format natif enrichi reprend en grande partie les mêmes noms d’objets que le format des données X API v1.1. L’objet Publication possède une longue liste d’attributs au niveau racine (« root-level »), y compris des attributs fondamentaux tels que id, created_at et text. Les objets Publication contiennent également des objets imbriqués tels que user, entities et extended_entities. Les objets Publication comportent aussi d’autres objets Publication imbriqués tels que retweeted_status, quoted_status et extended_tweet. Le format natif enrichi inclut en outre un objet matching_rules.
Dictionnaire de données X
Vous trouverez ci-dessous le dictionnaire de données pour ces attributs racine, ainsi que des liens vers les dictionnaires de données des objets enfants.
AttributTypeDescription
created_atStringHeure UTC de création de cette Publication. Exemple :

“created_at”: “Wed Oct 10 20:19:24 +0000 2018”
idInt64La représentation sous forme d’entier de l’identifiant unique de cette Publication. Ce nombre est supérieur à 53 bits et certains langages de programmation peuvent rencontrer des difficultés ou produire des défauts silencieux lors de son interprétation. L’utilisation d’un entier signé 64 bits pour stocker cet identifiant est sûre. Utilisez id_str pour récupérer l’identifiant en toute sécurité. Voir X IDs pour plus d’informations. Exemple :

“id”:1050118621198921728
id_strStringLa représentation sous forme de chaîne de caractères de l’identifiant unique de cette Publication. Les implémentations doivent utiliser celle-ci plutôt que le grand entier dans id. Exemple:

“id_str”:“1050118621198921728”
textStringLe texte UTF-8 brut de la mise à jour du statut. Voir X-text pour plus de détails sur les caractères actuellement considérés comme valides. Exemple :

“text”:“Afin de laisser plus de place à l’expression, nous compterons désormais tous les emojis de la même façon — y compris ceux indiquant un genre et une couleur de peau t… https://t.co/MkGjXf9aXm
sourceStringUtilitaire utilisé pour publier la Publication, sous la forme d’une chaîne de caractères au format HTML. Les Publications provenant du site web de X ont une valeur de source web.

Exemple :

“source”:“X Web Client”
truncatedBooleanIndique si la valeur du paramètre text a été tronquée, par exemple lorsqu’un retweet dépasse la limite de longueur de texte de la Publication originale de 140 caractères. Le texte tronqué se terminera par des points de suspension, comme ceci .... Étant donné que X rejette désormais les Publications trop longues au lieu de les tronquer, la grande majorité des Publications aura ce paramètre défini sur false. Notez que, même si les retweets natifs peuvent avoir leur propriété text de premier niveau raccourcie, le texte original reste disponible dans l’objet retweeted_status et le paramètre truncated sera défini à la valeur du statut original (dans la plupart des cas, false). Exemple:

“truncated”:true
in_reply_to_status_idInt64Nullable. Si la Publication représentée est une réponse, ce champ contiendra la représentation sous forme d’entier de l’ID de la Publication d’origine. Exemple :

“in_reply_to_status_id”:1051222721923756032
in_reply_to_status_id_strStringNullable. Si la Publication représentée est une réponse, ce champ contiendra la représentation sous forme de chaîne de caractères de l’ID de la Publication originale. Exemple:

“in_reply_to_status_id_str”:“1051222721923756032”
in_reply_to_user_idInt64Nullable. Si la Publication représentée est une réponse, ce champ contiendra la représentation sous forme d’entier de l’identifiant de l’auteur de la Publication originale. Ce ne sera pas nécessairement toujours l’utilisateur directement mentionné dans la Publication. Exemple:

“in_reply_to_user_id”:6253282
in_reply_to_user_id_strStringNullable. Si la Publication représentée est une réponse, ce champ contiendra la représentation sous forme de chaîne de l’ID de l’auteur de la Publication originale. Il ne s’agira pas nécessairement de l’utilisateur directement mentionné dans la Publication. Exemple :

“in_reply_to_user_id_str”:“6253282”
in_reply_to_screen_nameStringNullable. Si la Publication représentée est une réponse, ce champ contiendra le screen name de l’auteur de la Publication originale. Exemple :

“in_reply_to_screen_name”:“xapi”
userObjet utilisateurL’utilisateur qui a publié cette Publication. Voir le dictionnaire de données User pour obtenir la liste complète des attributs.

Exemple mettant en évidence certains attributs :

{ “user”: <br/> “id”: 6253282,
“id_str”: “6253282”,
“name”: “X API”,
“screen_name”: “API”,
“location”: “San Francisco, CA”,
“url”: “https://developer.x.com”,
“description”: “La véritable X API. Tweets à propos des changements d’API, des problèmes de service et de notre plateforme développeurs. Vous ne trouvez pas la réponse ? Elle est sur mon site web.”,
“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
}
}
coordinatesCoordonnéesNullable. Représente l’emplacement géographique de cette Publication tel qu’indiqué par l’utilisateur ou l’application cliente. Le tableau interne de coordonnées est au format geoJSON (longitude en premier, puis latitude). Exemple :

“coordinates”:
<br/> “coordinates”:
[
-75.14310264,
40.05701649
],
“type”:“Point”
}
placeLieuNullable. Lorsqu’il est présent, indique que la Publication est associée (mais n’en est pas nécessairement l’origine) à un objet Place. Exemple :

“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_idInt64Ce champ n’apparaît que lorsque la Publication est un Tweet cité. Ce champ contient la valeur entière de l’id de Publication du Tweet cité. Exemple :

“quoted_status_id”:1050119905717055488
quoted_status_id_strStringCe champ n’apparaît que lorsque la Publication est un Tweet cité. Il s’agit de la représentation sous forme de chaîne de caractères de l’identifiant de Publication du Tweet cité. Exemple:

“quoted_status_id_str”:“1050119905717055488”
is_quote_statusBooleanIndique s’il s’agit d’un Tweet cité. Exemple :

“is_quote_status”:false
quoted_statusPublicationCe champ n’apparaît que lorsque la Publication est un Tweet cité. Il contient l’objet Publication correspondant à la Publication d’origine citée.
retweeted_statusPublicationLes utilisateurs peuvent amplifier la diffusion de Publications rédigées par d’autres utilisateurs en les retweetant. Les Retweets peuvent être distingués des Publications classiques par l’existence de l’attribut retweeted_status. Cet attribut contient une représentation de la Publication originale qui a été retweetée. À noter que les retweets de retweets n’affichent pas de représentation du retweet intermédiaire, mais uniquement celle de la Publication originale. (Les utilisateurs peuvent également annuler un retweet qu’ils ont créé en supprimant leur retweet.)
quote_countentierNullable. Indique le nombre approximatif de fois que cette Publication a été citée par des utilisateurs de X. Exemple :

“quote_count”:33

Remarque : cet objet est uniquement disponible dans les offres Premium et Enterprise.
reply_countentierNombre de fois où cette Publication a reçu une réponse. Exemple :

“reply_count”:30

Remarque : Cet objet n’est disponible qu’avec les produits Premium et Enterprise.
retweet_countentierNombre de fois où cette Publication a été retweetée. Exemple :

“retweet_count”:160
favorite_countentierNullable. Indique approximativement combien de mentions « J’aime » cette Publication a reçues de la part des utilisateurs de X. Exemple :

“favorite_count”:295
entitiesentitésEntités issues du texte de la Publication. Voir également Entities in X Objects. Exemple :

“entities”:
<br/> “hashtags”:[],
“urls”:[],
“user_mentions”:[],
“media”:[],
“symbols”:[]
“polls”:[]
}
extended_entitiesentités étenduesLorsqu’une Publication contient entre une et quatre photos natives, ou une vidéo ou un GIF animé, ce champ contient un tableau de métadonnées ‘media’. Cette propriété est également disponible pour les Tweets cités. Voir aussi Entities in X Objects. Exemple:

“entities”:
<br/> “media”:[]
}
favoritedbooléenNullable. Indique si cette Publication a été ajoutée aux favoris par l’utilisateur authentifié. Exemple :

“favorited”:true
retweetedbooléenIndique si cette Publication a été retweetée par l’utilisateur authentifié. Exemple :

“retweeted”:false
possibly_sensitivebooléenNullable. Ce champ indique que le contenu peut être considéré comme sensible. L’auteur de la Publication peut, dans les préférences de son compte, sélectionner l’option « Marquer les médias que vous publiez comme pouvant contenir du contenu sensible » afin que chaque Publication créée par la suite ait cet indicateur activé.

Ce champ peut également être évalué et marqué par un agent du support interne de X.

”possibly_sensitive”:false
filter_levelchaîne de caractèresIndique la valeur maximale du paramètre filter_level qui peut être utilisée tout en continuant à diffuser cette Publication. Ainsi, une valeur medium sera incluse dans les flux none, low et medium.

Exemple :

“filter_level”: “low”
langchaîne de caractèresNullable. Lorsqu’il est présent, indique un identifiant de langue BCP 47 correspondant à la langue du texte de la Publication détectée automatiquement, ou und si aucune langue n’a pu être détectée. 

 Exemple :

“lang”: “en”
edit_historyobjetIdentifiants uniques indiquant toutes les versions d’une Publication. Pour les Publications sans modification, il y aura un seul identifiant. Pour les Publications avec un historique de modifications, il y aura plusieurs identifiants, classés par ordre croissant reflétant l’ordre des modifications, la version la plus récente se trouvant à la dernière position du tableau. 

Les identifiants de Publication peuvent être utilisés pour hydrater et afficher les versions précédentes d’une Publication.

Exemple :

edit_history”: <br/> “initial_tweet_id”: “1283764123”
“edit_tweet_ids”: [“1283764123”, “1394263866”]
}
edit_controlsobjetLorsqu’il est présent, indique pendant combien de temps une Publication reste modifiable ainsi que le nombre de modifications restantes. Les Publications ne sont modifiables que pendant les 30 premières minutes suivant leur création et peuvent être modifiées jusqu’à cinq fois. 

Les identifiants de Publication peuvent être utilisés pour hydrater et afficher les versions précédentes d’une Publication.

Example:

“edit_controls”: <br/> “editable_until_ms”: 123
“edits_remaining”: 3
}
editablebooléenWhen present, indicates if a Publication était éligible à la modification au moment de sa publication. Ce champ n’est pas dynamique et ne passera pas de True à False lorsque la Publication atteint sa limite de temps de modification ou son nombre maximal de modifications. Les caractéristiques de Publication suivantes entraîneront une valeur False pour ce champ :

* La Publication est promue
* La Publication contient un sondage
* La Publication est une réponse à un fil qui n’est pas le sien
* La Publication est un retweet (notez que les Quote Tweets sont éligibles à la modification)
* La Publication est en nullcast
* Publication de communauté
* Publication Superfollow
* Publication collaborative
matching_rulestableau d’objets RulePrésent dans les produits filtered tels que X Search et PowerTrack. Fournit l’id et le tag associés à la règle qui correspond à la Publication. Plus d’informations sur les règles de correspondance ici. Avec PowerTrack, plusieurs règles peuvent correspondre à une même Publication. 

Exemple :

“matching_rules”: ” [<br/> “tag”: “xapi emojis”,
“id”: 1050118621198921728,
“id_str”: “1050118621198921728”
}]“
Attributs supplémentaires de Publication
Les X API qui fournissent des Publications (par exemple l’endpoint GET statuses/lookup) peuvent inclure ces attributs de Publication supplémentaires :
AttributeTypeDescription
current_user_retweetObjectPerspectival N’apparaît que sur les méthodes prenant en charge le paramètre include_my_retweet, lorsqu’il est défini sur true. Indique l’ID de la Publication correspondant au propre retweet de l’utilisateur (s’il existe) de cette Publication. Exemple :

“current_user_retweet”: <br/> “id”: 6253282,
“id_str”: “6253282”
}
scopesObjectUn ensemble de paires clé-valeur indiquant la diffusion contextuelle prévue de la Publication concernée. Actuellement utilisé par les produits sponsorisés de X. Exemple :

“scopes”:{“followers”:false}
withheld_copyrightBooleanLorsqu’il est présent et défini sur “true”, cela indique que ce contenu a été retiré à la suite d’une plainte DMCA. Exemple :

“withheld_copyright”: true
withheld_in_countriesArray of StringLorsqu’il est présent, indique une liste de codes pays à deux lettres en majuscules à partir desquels ce contenu est retiré. X prend en charge les valeurs non liées à un pays suivantes pour ce champ :

“XX” - Le contenu est retiré dans tous les pays “XY” - Le contenu est retiré en raison d’une demande DMCA.

Exemple :

“withheld_in_countries”: [“GR”, “HK”, “MY”]
withheld_scopeStringLorsqu’il est présent, indique si le contenu retiré est le “status” ou un “user”.

Exemple :

“withheld_scope”: “status”
Attributs obsolètes
ChampTypeDescription
geoObjectObsolète. Peut être nul. Utilisez plutôt le champ coordinates. Cet attribut obsolète a ses coordonnées au format [lat, long], tandis que toutes les autres données geo de Publication sont au format [long, lat].

Objets Publication imbriqués

Dans plusieurs cas, un objet Publication inclura d’autres objets imbriqués. Si vous travaillez avec des objets imbriqués, alors cette charge utile JSON contiendra plusieurs objets Publication, et chaque objet Publication pourra contenir ses propres objets. L’objet de niveau racine contient des informations sur le type d’action effectuée, c’est‑à‑dire s’il s’agit d’un Retweet ou d’un Quote Tweet, et peut également contenir un objet décrivant la Publication « originale » qui est partagée. Les Publications étendues incluront un objet étendu imbriqué qui dépasse les 140 caractères, utilisé pour éviter les changements disruptifs lors de la mise à jour effectuée en 2017. Chaque dictionnaire d’objet imbriqué est décrit ci‑dessous. Retweets Les Retweets contiennent toujours deux objets Publication. La Publication « originale » faisant l’objet du Retweet est fournie dans un objet « retweeted_status ». L’objet de niveau racine encapsule le Retweet lui‑même, y compris un objet User pour le compte qui effectue l’action de Retweet et l’heure du Retweet. Le Retweet est une action permettant de partager une Publication avec vos abonnés, sans possibilité d’ajouter de nouveau contenu. De plus, une (nouvelle) localisation ne peut pas être fournie avec un Retweet. Même si la Publication « originale » a été géolocalisée, les objets « geo » et « place » du Retweet seront toujours null. Même avant l’introduction des Publications étendues, l’objet « entities » de niveau racine était dans certains cas tronqué et incomplet en raison de la chaîne « RT @username » ajoutée au message de la Publication faisant l’objet du Retweet. Notez que si un Retweet est à son tour retweeté, le champ « retweet_status » pointera toujours vers la Publication originale, ce qui signifie que le Retweet intermédiaire n’est pas inclus. Un comportement similaire est observé lors de l’utilisation de x.com pour « afficher » un Retweet. Si vous copiez l’ID unique de Publication attribué à l’« action » de Retweet, la Publication originale est affichée.  Vous trouverez ci‑dessous un exemple de structure pour un Retweet. Là encore, lors de l’analyse des Retweets, il est essentiel d’analyser l’objet « retweeted_status » pour obtenir le message complet de la Publication (originale) et les métadonnées d’entités.
{
	"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 cités
Les Tweets cités sont très similaires aux Retweets, à ceci près qu’ils incluent une nouvelle Publication. Ces nouvelles Publications peuvent contenir leur propre ensemble de hashtags, de liens et d’autres métadonnées d’“entities”. Les Tweets cités peuvent également inclure des informations de localisation partagées par l’utilisateur qui publie le Tweet cité, ainsi que des médias tels que des GIF, des vidéos et des photos. Les Tweets cités contiennent au minimum deux objets Publication et, dans certains cas, trois. La Publication citée, qui peut elle‑même être un Tweet cité, est fournie dans un objet “quoted_status”. L’objet au niveau racine encapsule le Tweet cité lui‑même, y compris un objet User pour le compte effectuant l’action de partage et l’heure du Tweet cité. Notez que les Tweets cités peuvent désormais avoir des photos, des GIF ou des vidéos, ajoutés via l’interface utilisateur ‘Post’. Lorsque des liens vers des médias hébergés en externe sont inclus dans le message du Tweet cité, le “entities.urls” au niveau racine les décrit. Les médias associés aux Tweets cités apparaissent dans les métadonnées “extended_entities” au niveau racine. Lorsque les Tweets cités ont été lancés pour la première fois, un lien raccourci (URL t.co) était ajouté au message de la Publication “originale” et fourni dans le champ “text” au niveau racine. De plus, les métadonnées de cette URL t.co étaient incluses dans le tableau ‘entities.urls’ au niveau racine. En mai 2018, nous avons modifié ce comportement afin que l’URL t.co raccourcie vers le Tweet cité ne soit plus incluse dans le champ “text” au niveau racine. Deuxièmement, les métadonnées du Tweet cité ne seront plus incluses dans les métadonnées “entities.urls”. À la place, les métadonnées d’URL pour le Tweet cité se trouvent dans un nouvel objet “quoted_status_permalink” au niveau racine (ou niveau supérieur), donc au même niveau que l’objet “quoted_status”. Voici ci‑dessous un exemple de structure pour un Tweet cité utilisant cette mise en forme d’origine.
{
	"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": {}
}
Publications étendues
Le JSON qui décrit les Extended Posts a été introduit lorsque les Publications de 280 caractères ont été lancées en novembre 2017. Le JSON des Publications a été étendu pour encapsuler ces messages plus longs, sans rompre la compatibilité avec les milliers d’applications qui analysent ces objets X fondamentaux. Pour assurer une rétrocompatibilité totale, le champ ‘text’ d’origine, limité à 140 caractères, ainsi que les objets d’entités extraits à partir de celui‑ci, ont été conservés. Dans le cas de Publications dépassant 140 caractères, ce champ ‘text’ au niveau racine est tronqué et donc incomplet. Étant donné que les objets ‘entities’ de niveau racine contiennent des tableaux de métadonnées clés extraites du message ‘text’, comme les hashtags et les liens inclus, ces collections seraient incomplètes. Par exemple, si le message d’une Publication faisait 200 caractères, avec un hashtag à la fin, le tableau hérité ‘entities.hashtags’ au niveau racine ne le contiendrait pas.  Un nouveau champ ‘extended_tweet’ a été introduit pour contenir les messages de Publications plus longs ainsi que les métadonnées d’entités complètes. L’objet “extended_tweet” fournit le champ “full_text” qui contient le message de Publication complet, non tronqué, lorsqu’il dépasse 140 caractères. L’objet “extended_tweet” contient également un objet “entities” avec des tableaux complets de hashtags, liens, mentions, etc. Les Publications étendues sont identifiées par un booléen “truncated” au niveau racine. Lorsque sa valeur est true (“truncated”: true), les champs “extended_tweet” doivent être analysés à la place des champs de niveau racine. Dans l’exemple JSON ci‑dessous, notez que le champ “text” de niveau racine est tronqué et que le tableau “entities.hashtags” de niveau racine est vide, même si le message de la Publication contient trois hashtags. Étant donné qu’il s’agit d’une Publication étendue, le champ “truncated” est défini sur true, et l’objet “extended_tweet” fournit des métadonnées complètes de Publication “full_text” et “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": []
	}
}

Objet User natif enrichi

L’objet User contient les métadonnées du compte utilisateur X décrivant l’utilisateur X référencé. 

Dictionnaire des données utilisateur

AttributTypeDescription
idInt64La représentation sous forme d’entier de l’identifiant unique de cet utilisateur. Ce nombre est supérieur à 53 bits et certains langages de programmation peuvent rencontrer des difficultés ou des erreurs silencieuses lors de son interprétation. L’utilisation d’un entier signé sur 64 bits pour stocker cet identifiant est sûre. Utilisez id_str pour obtenir l’identifiant en toute sécurité. Consultez X IDs pour plus d’informations. Exemple :

“id”: 6253282
id_strStringLa représentation sous forme de chaîne de caractères de l’identifiant unique de cet utilisateur. Les implémentations doivent utiliser ce champ plutôt que le grand entier, potentiellement difficile à exploiter, dans id. Exemple:

“id_str”: “6253282”
nameStringLe nom de l’utilisateur, tel qu’il l’a défini. Il ne s’agit pas nécessairement du nom d’une personne. Généralement limité à 50 caractères, mais susceptible d’évoluer. Exemple:

“name”: “API”
screen_nameStringLe nom d’écran, pseudo (@handle) ou alias avec lequel cet utilisateur s’identifie. Les screen_names sont uniques mais peuvent changer. Utilisez id_str comme identifiant d’utilisateur dans la mesure du possible. Généralement limité à 15 caractères maximum, mais certains comptes historiques peuvent avoir des noms plus longs. Exemple :

“screen_name”: “api”
locationStringNullable . Lieu défini par l’utilisateur pour le profil de ce compte. Il ne s’agit pas nécessairement d’un lieu et il peut ne pas être analysable automatiquement. Ce champ peut parfois être interprété de manière approximative par le service de recherche. Exemple :

“location”: “San Francisco, CA”
derivedTableau d’objets d’enrichissementRéservé aux Enterprise APIs. Collection de métadonnées d’enrichissement dérivées pour l’utilisateur. Fournit les métadonnées d’enrichissement Profile Geo. Consultez la documentation associée pour plus d’informations, y compris les dictionnaires de données JSON. Exemple:

“derived”:“locations”: [“country”:“United States”,“country_code”:“US”,“locality”:“Denver”]
urlStringNullable . Une URL fournie par l’utilisateur, associée à son profil. Exemple :

“url”: “https://developer.x.com
descriptionStringNullable . La chaîne UTF-8 définie par l’utilisateur décrivant son compte. Exemple :

“description”: “The Real X API.”
protectedBooleanLorsque la valeur est true, indique que cet utilisateur a choisi de protéger ses Publications. Voir À propos des Publications publiques et protégées. Exemple:

“protected”: true
verifiedBooleanLorsque true, indique que l’utilisateur possède un compte vérifié. Voir Comptes vérifiés. Exemple :

“verified”: false
followers_countIntLe nombre d’abonnés que ce compte a actuellement. Dans certaines conditions de forte contrainte, ce champ indiquera temporairement « 0 ». Exemple:

“followers_count”: 21
friends_countIntLe nombre d’utilisateurs que ce compte suit (également appelés ses « comptes suivis »). Dans certaines conditions exceptionnelles, ce champ indiquera temporairement « 0 ». Exemple:

“friends_count”: 32
listed_countIntLe nombre de listes publiques dont cet utilisateur est membre. Exemple :

“listed_count”: 9274
favourites_countIntLe nombre de Publications que cet utilisateur a aimées sur toute la durée de vie du compte. Orthographe britannique utilisée dans le nom du champ pour des raisons historiques. Exemple:

“favourites_count”: 13
statuses_countIntLe nombre de Publications (y compris les retweets) publiées par l’utilisateur. Exemple :

“statuses_count”: 42
created_atStringLa date et l’heure UTC de création du compte utilisateur sur X. Exemple :

“created_at”: “Mon Nov 29 21:18:15 +0000 2010”
profile_banner_urlStringL’URL HTTPS pointant vers la représentation web standard de la bannière de profil mise en ligne par l’utilisateur. En ajoutant un élément final de chemin à l’URL, il est possible d’obtenir différentes tailles d’image optimisées pour des affichages spécifiques. Pour les différentes tailles, veuillez consulter User Profile Images and Banners.

Exemple :

“profile_banner_url”: “https://si0.twimg.com/profile&#95;banners/819797/1348102824
profile_image_url_httpsStringUne URL HTTPS pointant vers l’image de profil de l’utilisateur. Exemple :

“profile_image_url_https”:
https://abs.twimg.com/sticky/default&#95;profile&#95;images/default&#95;profile&#95;normal.png
default_profileBooléenLorsque la valeur est true, indique que l’utilisateur n’a pas modifié le thème ou l’arrière-plan de son profil. Exemple :

“default_profile”: false
default_profile_imageBooléenLorsque true, indique que l’utilisateur n’a pas mis en ligne sa propre image de profil et qu’une image par défaut est utilisée à la place. Exemple :

“default_profile_image”: false

Attributs obsolètes (non pris en charge)

FieldTypeDescription
utc_offsetnullLa valeur sera définie sur null. Toujours disponible via GET account/settings
time_zonenullLa valeur sera définie sur null. Toujours disponible via GET account/settings sous le nom tzinfo_name
langnullLa valeur sera définie sur null. Toujours disponible via GET account/settings sous le nom language
geo_enablednullLa valeur sera définie sur null. Toujours disponible via GET account/settings. Ce champ doit avoir la valeur true pour que l’utilisateur actuel puisse joindre des données géographiques lors de l’utilisation de POST statuses / update
followingnullLa valeur sera définie sur null. Toujours disponible via GET friendships/lookup
follow_request_sentnullLa valeur sera définie sur null. Toujours disponible via GET friendships/lookup
has_extended_profilenullObsolète. La valeur sera définie sur null.
notificationsnullObsolète. La valeur sera définie sur null.
profile_locationnullObsolète. La valeur sera définie sur null.
contributors_enablednullObsolète. La valeur sera définie sur null.
profile_image_urlnullObsolète. La valeur sera définie sur null. REMARQUE : les images de profil ne sont disponibles qu’en utilisant le champ profile_image_url_https.
profile_background_colornullObsolète. La valeur sera définie sur null.
profile_background_image_urlnullObsolète. La valeur sera définie sur null.
profile_background_image_url_httpsnullObsolète. La valeur sera définie sur null.
profile_background_tilenullObsolète. La valeur sera définie sur null.
profile_link_colornullObsolète. La valeur sera définie sur null.
profile_sidebar_border_colornullObsolète. La valeur sera définie sur null.
profile_sidebar_fill_colornullObsolète. La valeur sera définie sur null.
profile_text_colornullObsolète. La valeur sera définie sur null.
profile_use_background_imagenullObsolète. La valeur sera définie sur null.
is_translatornullObsolète. La valeur sera définie sur null.
is_translation_enablednullObsolète. La valeur sera définie sur null.
translator_typenullObsolète. La valeur sera définie sur null.

Exemple d’objet utilisateur :

"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
	}

Objets de géolocalisation natifs enrichis

Les Publications peuvent être associées à un lieu, générant une Publication « géolocalisée ». Les lieux d’une Publication peuvent être associés à l’aide de l’interface utilisateur X ou lors de la publication d’une Publication à l’aide de l’API. Les lieux d’une Publication peuvent correspondre à un « point » géographique exact ou à un X Place avec une « boîte englobante » décrivant une zone plus vaste, allant d’un lieu donné à une région entière. Il existe trois objets JSON de « premier niveau » utilisés pour décrire le lieu associé à une Publication : place, geo et coordinates De plus, le format natif enrichi inclut, dans l’objet utilisateur, la localisation dérivée de l’enrichissement de géolocalisation de profil. L’objet place est toujours présent lorsqu’une Publication est géolocalisée avec un lieu. Les lieux sont des emplacements spécifiques et nommés, avec des coordonnées géographiques associées. Lorsque les utilisateurs décident d’attribuer un lieu à leur Publication, une liste de X Places candidates leur est présentée. Lors de l’utilisation de l’API pour publier, un X Place peut être associé en spécifiant un place_id au moment de la publication. Les Publications associées à des Places ne proviennent pas nécessairement de ce lieu, mais peuvent aussi potentiellement porter sur ce lieu. Les objets geo et coordinates ne sont présents (non nuls) que lorsque la Publication se voit attribuer un lieu exact. Si un lieu exact est fourni, l’objet coordinates fournira un tableau [long, lat] avec les coordonnées géographiques, et un X Place correspondant à ce lieu sera attribué.

Dictionnaire de données Place

ChampTypeDescription
idStringID représentant ce lieu. Notez qu’il est représenté sous forme de chaîne, et non d’entier. Exemple :

“id”:“01a9a39529b27f36”
urlStringURL pointant vers des métadonnées supplémentaires pour ce lieu. Exemple :

“url”:“https://api.x.com/1.1/geo/id/01a9a39529b27f36.json
place_typeStringType de lieu représenté par cet objet Place. Exemple :

“place_type”:“city”
nameStringReprésentation courte et lisible par un humain du nom du lieu. Exemple :

“name”:“Manhattan”
full_nameStringReprésentation complète et lisible par un humain du nom du lieu. Exemple :

“full_name”:“Manhattan, NY”
country_codeStringCode pays abrégé représentant le pays où se trouve ce lieu. Exemple :

“country_code”:“US”
countryStringNom du pays où se trouve ce lieu. Exemple :

“country”:“United States”
bounding_boxObjectBoîte englobante de coordonnées qui délimite ce lieu. Exemple :


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

attributesObjectLors de l’utilisation de PowerTrack, des API 30-Day et Full-Archive Search, et de Volume Streams, ce hachage a la valeur null. Exemple :

“attributes”:

Bounding box

FieldTypeDescription
coordinatesArray of Array of Array of FloatUne série de points de longitude et de latitude qui définissent une boîte englobante (bounding box) contenant l’entité Place à laquelle cette bounding box est associée. Chaque point est un tableau de la forme [longitude, latitude]. Les points sont regroupés dans un tableau par bounding box. Les tableaux de bounding box sont encapsulés dans un tableau supplémentaire pour être compatibles avec la notation de polygone. Exemple :


“coordinates”: [
[
[
-74.026675,
40.683935
],
[
-74.026675,
40.877483
],
[
-73.910408,
40.877483
],
[
-73.910408,
40.3935
]
]
]
typeStringLe type de données codées dans la propriété coordinates. Cette valeur sera “Polygon” pour les bounding boxes et “Point” pour les Publications avec des coordonnées exactes. Exemple :

“type”:“Polygon”

Dictionnaire de données de l’objet Geo

ChampTypeDescription
coordinatesCollection de FloatLa longitude et la latitude de l’emplacement de la Publication, sous forme de collection au format [latitude, longitude]. Exemple :

**  “geo”:

“type”:** “Point”,

**    “coordinates”: [

54.27784
,

-0.41068

    ]

  **
typeStringLe type de données représenté dans la propriété coordinates. Cette valeur sera “Point” pour les champs de coordonnées d’une Publication. Exemple :

“type”: “Point”
Dictionnaire de données de l’objet Coordinates
ChampTypeDescription
coordinatesCollection de FloatLa longitude et la latitude de l’emplacement de la Publication, sous forme de collection au format [longitude, latitude]. Exemple :

**  “coordinates”:

“type”:** “Point”,

**    “coordinates”: [

-0.41068
,

54.27784

    ]

  **
typeStringLe type de données représenté dans la propriété coordinates. Cette valeur sera “Point” pour les champs de coordonnées d’une Publication. Exemple :

“type”: “Point”

Emplacements dérivés

ChampTypeDescription
derivedlocations objectEmplacement dérivé à partir de l’enrichissement géographique du profil

“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”

**         

       

      ]

    **

Exemples :

{
  "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": {

    }
  }
}
Dictionnaire de données : Enterprise

Entités X

Aller à une section de cette page Introduction Objet entities   - Objet hashtag   - Objet media   - Objet media size   - Objet URL   - Objet user mention   - Objet symbol   - Objet poll Détails sur les Retweets et les Quote Tweets Entities dans les objets user Entities dans les Direct Messages Étapes suivantes

Introduction

Les entités fournissent des métadonnées et des informations contextuelles supplémentaires sur le contenu publié sur X. La section entities fournit des tableaux d’éléments courants inclus dans les Publications : hashtags, mentions d’utilisateurs, liens, codes mnémoniques boursiers (symboles), sondages X et médias associés. Ces tableaux sont pratiques pour les développeurs lors de l’ingestion de Publications, puisque X a en pratique prétraité, ou pré-analysé, le corps du texte. Au lieu d’avoir à rechercher et trouver explicitement ces entités dans le corps de la Publication, votre parseur peut aller directement à cette section JSON, où elles se trouvent déjà. Au-delà de ces facilités d’analyse, la section entities fournit également des métadonnées utiles à forte valeur ajoutée. Par exemple, si vous utilisez l’Enhanced URLs enrichment, les métadonnées d’URL incluent des URL entièrement développées, ainsi que les titres et descriptions des sites Web associés. Autre exemple : lorsqu’il y a des mentions d’utilisateurs, les métadonnées des entités incluent l’identifiant utilisateur numérique, ce qui est utile lorsque vous effectuez des requêtes vers de nombreuses X API. Chaque charge utile JSON de Publication inclut une section entities, avec l’ensemble minimal d’attributs hashtags, urls, user_mentions et symbols, même si aucune de ces entités ne fait partie du message de la Publication. Par exemple, si vous examinez le JSON d’une Publication dont le corps est « Hello World! » et sans média associé, le JSON de la Publication inclura le contenu suivant, avec des tableaux d’entités contenant zéro élément :
"entities": {
        "hashtags": [
        ],
        "urls": [
        ],
        "user_mentions": [
        ],
        "symbols": [
        ]
      }
Remarques :
  • les entités media et polls n’apparaîtront que lorsque ce type de contenu fera partie de la Publication.
  • si vous travaillez avec des médias natifs (photos, vidéos ou GIFs), l’Extended Entities object est la solution recommandée.

Objet entities

Les sections entities et extended_entities sont toutes deux constituées de tableaux d’objets d’entité. Vous trouverez ci-dessous des descriptions pour chacun de ces objets d’entité, ainsi que des dictionnaires de données qui décrivent les noms d’attributs de l’objet, leurs types et une brève description. Nous indiquerons également quels opérateurs PowerTrack s’appliquent à ces attributs et fournirons quelques exemples de charges utiles JSON. Une collection d’entités courantes présentes dans les Publications, notamment les hashtags, les liens et les mentions d’utilisateurs. Cet objet entities inclut bien un attribut media, mais son implémentation dans la section entiites n’est entièrement exacte que pour les Publications contenant une seule photo. Pour toutes les Publications comportant plus d’une photo, une vidéo ou un GIF animé, le lecteur est renvoyé à la section extended_entities.

Dictionnaire de données des entités

L’objet entities est un conteneur de tableaux d’autres sous‑objets d’entité. Après avoir présenté la structure de entities, des dictionnaires de données pour ces sous‑objets, ainsi que les opérateurs qui permettent de les faire correspondre, seront fournis.
ChampTypeDescription
hashtagsTableau d’objets HashtagReprésente les hashtags extraits du texte de la Publication. Exemple :


“hashtags”: [

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

]
mediaTableau d’objets médiaReprésente les éléments multimédias envoyés avec la Publication. Exemple :


“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”,

]
urlsTableau d’objets URLReprésente les URL présentes dans le texte d’une Publication.

Exemple (sans l’enrichissement Enhanced URLs activé) :


“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

]


Exemple (avec l’enrichissement Enhanced URLs activé) :

“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_mentionsTableau d’objets de mentions d’utilisateursReprésente les autres utilisateurs de X mentionnés dans le texte de la Publication. Exemple :


“user_mentions”: [

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

]
symbolsTableau d’objets SymbolReprésente des symboles, c’est-à-dire des $cashtags, inclus dans le texte de la Publication. Exemple :


“symbols”: [

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

]
pollsTableau d’objets PollReprésente les sondages X inclus dans la Publication. Exemple :

“polls”: [

“options”: [

“position”: 1,
“text”: “Je lis la documentation une fois.”
,

“position”: 2,
“text”: “Je lis la documentation deux fois.”
},

“position”: 3,
“text”: “Je lis la documentation encore et encore.”
}
],
“end_datetime”: “Thu May 25 22:20:27 +0000 2017”,
“duration_minutes”: 60

]

Objet Hashtag

La section entities contiendra un tableau hashtags contenant un objet pour chaque hashtag inclus dans le corps de la Publication, et un tableau vide si aucun hashtag n’est présent. L’opérateur PowerTrack # est utilisé pour faire correspondre l’attribut text. L’opérateur has:hashtags correspondra s’il y a au moins un élément dans le tableau.
ChampTypeDescription
indicesArray of IntUn tableau d’entiers indiquant les décalages dans le texte de la Publication où le hashtag commence et se termine. Le premier entier représente l’emplacement du caractère # dans la chaîne de texte de la Publication. Le second entier représente l’emplacement du premier caractère après le hashtag. Par conséquent, la différence entre les deux nombres correspondra à la longueur du nom du hashtag plus un (pour le caractère « # »). Exemple :

“indices”:[32,38]
textStringNom du hashtag, sans le caractère « # » initial. Exemple :

“text”:“nodejs”

Objet média

La section entities contiendra un tableau media contenant un seul objet média si un objet média a été « associé » à la Publication. Si aucun média natif n’a été associé, il n’y aura pas de tableau media dans entities. Pour les raisons suivantes, la section extended_entities doit être utilisée pour traiter les médias natifs de la Publication :
  • Le type de média indiquera toujours « photo », même lorsqu’une vidéo ou un GIF est associé à la Publication.
  • Même si jusqu’à quatre photos peuvent être associées, seule la première sera répertoriée dans la section entities.
L’opérateur has:media donnera une correspondance si ce tableau contient au moins un élément.
ChampTypeDescription
display_urlStringURL du média à afficher aux utilisateurs. Exemple :

“display_url”:“pic.x.com/rJC5Pxsu”
expanded_urlStringVersion développée de display_url. Renvoie à la page d’affichage du média. Exemple :

“expanded_url”: “http://x.com/yunorno/status/114080493036773378/photo/1
idInt64Identifiant du média exprimé sous la forme d’un entier 64 bits. Exemple :

“id”:114080493040967680
id_strStringID du média exprimé sous forme de chaîne de caractères. Exemple :

“id_str”:“114080493040967680”
indicesTableau d’entiers (Int)Un tableau d’entiers indiquant les décalages dans le texte de la Publication où commence et se termine l’URL. Le premier entier représente l’emplacement du premier caractère de l’URL dans le texte de la Publication. Le deuxième entier représente l’emplacement du premier caractère ne faisant pas partie de l’URL apparaissant après l’URL (ou la fin de la chaîne si l’URL constitue la dernière partie du texte de la Publication). Exemple :

“indices”:[15,35]
media_urlStringUne URL http:// qui pointe directement vers le fichier média mis en ligne. Exemple :

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

Pour les médias dans les messages privés, media_url est la même URL https que media_url_https et doit être récupérée en signant une requête avec le jeton d’accès de l’utilisateur à l’aide d’OAuth 1.0a.

Il n’est pas possible d’accéder aux images via une session x.com authentifiée. Veuillez consulter cette page pour savoir comment tenir compte de ces changements récents. 

Vous ne pouvez pas intégrer directement ces images dans une page web.

Voir Formatage des URL de médias photo pour savoir comment formater l’URL d’une photo, telle que media_url_https, en fonction des sizes disponibles.
media_url_httpsStringUne URL https:// qui pointe directement vers le fichier média téléversé, pour l’intégration dans des pages en https. Exemple :

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

Pour les médias dans les messages directs, media_url_https doit être récupéré en signant une requête avec le jeton d’accès de l’utilisateur à l’aide d’OAuth 1.0A.

Il n’est pas possible d’accéder aux images via une session x.com authentifiée. Veuillez consulter cette page pour savoir comment prendre en compte ces changements récents. 

Vous ne pouvez pas intégrer directement ces images dans une page web.

Voir Photo Media URL formatting pour savoir comment formater l’URL d’une photo, telle que media_url_https, en fonction des sizes disponibles.
sizesObjet SizeUn objet qui présente les tailles disponibles pour le fichier média. Exemple :


“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
}
}
}

Voir Photo Media URL formatting pour savoir comment formater l’URL d’une photo, comme media_url_https, en fonction des sizes disponibles.
source_status_idInt64Nullable. Pour les Publications contenant un média initialement associé à une autre Publication, cet identifiant pointe vers la Publication d’origine. Exemple :

“source_status_id”: 205282515685081088
source_status_id_strInt64Peut être nul. Pour les Publications contenant des médias qui étaient à l’origine associés à une autre publication, cet identifiant sous forme de chaîne de caractères pointe vers la Publication d’origine. Exemple:

“source_status_id_str”: “205282515685081088”
typeStringType du média téléversé. Les types possibles sont photo, vidéo et animated_gif. Exemple:

“type”:“photo”
urlStringURL encapsulée pour le lien média. Cela correspond à l’URL intégrée directement dans le texte brut de la Publication, ainsi qu’aux valeurs du paramètre indices. Exemple :

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

Objets de taille des médias

Toutes les Publications avec des médias natifs (photos, vidéos et GIF) incluront un ensemble de tailles « thumb », « small », « medium » et « large » avec une hauteur et une largeur en pixels. Pour les photos et les URL de médias d’image d’aperçu, la section Photo Media URL formatting décrit comment construire différentes URL pour charger des médias photo de tailles différentes.

Objet sizes

ChamptypeDescription
thumbSize ObjectInformations pour une version miniature du média. Exemple :

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

Les photos au format miniature seront limitées à remplir une zone de 150x150 et seront recadrées.
largeSize ObjectInformations pour une version grande du média. Exemple :

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

Les photos au petit format seront limitées à s’adapter à une zone de 680x680.
mediumSize ObjectInformations pour une version moyenne du média. Exemple :

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

Les photos au format moyen seront limitées à s’adapter à une zone de 1200x1200.
smallSize ObjectInformations pour une version petite du média. Exemple :

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

Les photos au grand format seront limitées à s’adapter à une zone de 2048x2048.

Objet size

ChampTypeDescription
wIntLargeur en pixels de cette taille. Exemple :

“w”:150
hIntHauteur en pixels de cette taille. Exemple :

“h”:150
resizeStringMéthode de redimensionnement utilisée pour obtenir cette taille. Une valeur de fit indique que le média a été redimensionné pour s’adapter à une dimension, tout en conservant son rapport hauteur/largeur natif. Une valeur de crop indique que le média a été recadré afin de s’adapter à une résolution spécifique. Exemple :

“resize”:“crop”

Formatage des URL de média photo

Les médias photo sur X peuvent être chargés en différentes tailles. Il est préférable de charger l’image de plus petite taille dont les dimensions sont suffisamment grandes pour s’adapter à une zone d’affichage (viewport) donnée. Pour charger différentes tailles, l’objet Size et le media_url (ou media_url_https) doivent être combinés selon un format particulier. Nous utiliserons l’objet d’exemple media entity déjà fourni pour illustrer la construction d’une URL de média photo. Les valeurs media_url ou media_url_https peuvent être chargées telles quelles, ce qui aura pour effet de charger par défaut la variante medium. Il est toutefois préférable de fournir, lorsque c’est possible, une URL de média photo entièrement formatée. Une URL de média photo comporte trois parties :
Base URLLa base URL est l’URL du média sans l’extension de fichier.

Par exemple :

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

La base URL est donc :

https://pbs.twimg.com/media/DOhM30VVwAEpIHq
FormatLe format est le type de photo sous lequel l’image est encodée. Les formats possibles sont jpg ou png, qui sont fournis comme extension de l’URL du média.

Par exemple :

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

Le format est donc : jpg
NameLe nom est le nom de champ de la taille à charger.

Par exemple :


 “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
   }
 }
}

Le nom lors du chargement de la photo en grande taille serait : large
Nous prenons ces trois parties (base URL, format et nom) et les combinons dans l’URL de média photo à charger. Il existe deux formats pour charger des images de cette manière, legacy et modern. Tous les chargements d’images doivent cesser d’utiliser le format legacy et utiliser le format modern. Utiliser le format modern améliore le taux de succès de mise en cache sur le CDN pour le client, ce qui réduit les latences de chargement en limitant les cas où le média doit être généré et chargé depuis le centre de données.
Format héritéL’ancien format est obsolète. Tous les chargements de médias photo doivent passer au format moderne.

<base_url>.<format>:<name>

Par exemple :

https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg:large
Format moderneLe format moderne pour le chargement des photos a été établi chez X en 2015 et est devenu le format de facto depuis 2017. Tous les chargements de médias photo doivent passer à ce format.

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

Par exemple :

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


Remarque : les éléments de la chaîne de requête de l’URL du média photo sont classés par ordre alphabétique. Si le chargement des médias devait ajouter de nouveaux éléments de requête, il faudrait continuer à respecter cet ordre alphabétique. Par exemple, s’il existait un nouvel élément de requête hypothétique nommé preferred_format, il apparaîtrait après format et name dans la chaîne de requête.

Objet URL

La section entities contiendra un tableau urls incluant un objet pour chaque lien présent dans le corps de la Publication, et inclura un tableau vide si aucun lien n’est présent. L’opérateur has:links correspondra s’il y a au moins un élément dans le tableau. L’opérateur url: est utilisé pour faire correspondre l’attribut expanded_url. Si vous utilisez l’enrichissement Expanded URL, l’opérateur url: est utilisé pour faire correspondre l’attribut unwound.url (URL complètement déroulée). Si vous utilisez l’enrichissement Enhanced URL, les opérateurs url_title: et url_decription: sont utilisés pour faire correspondre les attributs unwound.title et unwound.description.
FieldTypeDescription
display_urlStringURL collée/saisie dans la Publication. Exemple :

“display_url”:“bit.ly/2so49n2”
expanded_urlStringVersion développée de display_url . Exemple :

“expanded_url”:“http://bit.ly/2so49n2
indicesArray of IntTableau d’entiers représentant les décalages dans le texte de la Publication où l’URL commence et se termine. Le premier entier représente l’emplacement du premier caractère de l’URL dans le texte de la Publication. Le second entier représente l’emplacement du premier caractère qui ne fait pas partie de l’URL après la fin de l’URL. Exemple :

“indices”:[30,53]
urlStringURL encapsulée, correspondant à la valeur intégrée directement dans le texte brut de la Publication, ainsi qu’aux valeurs du paramètre indices. Exemple :

“url”:“https://t.co/yzocNFvJuL
Si vous utilisez les enrichissements Expanded et/ou Enhanced URL, les métadonnées suivantes sont disponibles sous l’attribut unwound :
FieldTypeDescription
urlStringVersion complètement déroulée du lien inclus dans la Publication. Exemple :

“url”:“https://blog.x.com/en&#95;us/topics/insights/2016/using-twitter-as-a-go-to-communication-channel-during-severe-weather-events.html
statusIntStatut HTTP final du processus de déroulement, une valeur « 200 » indiquant une réussite. Exemple :

200
titleStringTitre HTML du lien. Exemple :

“title”:“Using X as a ‘go-to’ communication channel during severe weather”
descriptionStringDescription HTML du lien. Exemple :

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

Objet de mention d’utilisateur

La section entities contient un tableau user_mentions qui comprend un objet pour chaque mention d’utilisateur incluse dans le corps de la Publication, et un tableau vide si aucune mention d’utilisateur n’est présente. L’opérateur PowerTrack @ est utilisé pour faire correspondre l’attribut screen_name. L’opérateur has:mentions correspond si le tableau contient au moins un élément.
ChampTypeDescription
idInt64ID de l’utilisateur mentionné, sous forme d’entier. Exemple :

“id”:6253282
id_strStringID de l’utilisateur mentionné, sous forme de chaîne de caractères. Exemple :

“id_str”:“6253282”
indicesArray of IntUn tableau d’entiers représentant les positions dans le texte de la Publication où la référence à l’utilisateur commence et se termine. Le premier entier représente l’emplacement du caractère « @ » de la mention d’utilisateur. Le deuxième entier représente l’emplacement du premier caractère qui ne fait pas partie du screen_name suivant la mention d’utilisateur. Exemple :

“indices”:[4,15]
nameStringNom d’affichage de l’utilisateur mentionné. Exemple :

“name”:“API”
screen_nameStringNom d’utilisateur (screen_name) de l’utilisateur mentionné. Exemple :

“screen_name”:“api”

Objet Symbol

La section entities contient un tableau symbols qui comporte un objet pour chaque $cashtag inclus dans le corps de la Publication, et inclut un tableau vide si aucun symbole n’est présent. L’opérateur PowerTrack $ est utilisé pour faire correspondre la valeur de l’attribut text. L’opérateur has:symbols correspondra s’il y a au moins un élément dans le tableau.
ChampTypeDescription
indicesTableau d’entiersUn tableau d’entiers indiquant les positions dans le texte de la Publication où le symbole/cashtag commence et se termine. Le premier entier représente l’emplacement du caractère danslachaı^nedetextedelaPublication.Lesecondentierrepreˊsentelemplacementdupremiercaracteˋreapreˋslecashtag.Parconseˊquent,ladiffeˊrenceentrelesdeuxnombrescorrespondraaˋlalongueurdunomducashtagplusun(pourlecaracteˋre«  dans la chaîne de texte de la Publication. Le second entier représente l’emplacement du premier caractère après le cashtag. Par conséquent, la différence entre les deux nombres correspondra à la longueur du nom du cashtag plus un (pour le caractère «  »). Exemple :

“indices”:[12,17]
textStringNom du cashtag, sans le caractère initial « $ ». Exemple :

“text”:“twtr”

Objet de sondage

La section entities contient un tableau polls contenant un seul objet poll si la Publication contient un sondage. Si aucun sondage n’est inclus, il n’y aura pas de tableau polls dans la section entities. Notez que ces métadonnées de sondage ne sont disponibles qu’avec les API Entreprise suivantes :
ChampTypeDescription
optionsArray of Option ObjectUn tableau d’options, chacune ayant une position dans le sondage et le texte pour cette position. Exemple :

“options”: [

“position”: 1,
“text”: “I read documentation once.”
}
]
}
end_datetimeStringHorodatage (UTC) de la fin du sondage. Exemple :

“end_datetime”: “Thu May 25 22:20:27 +0000 2017”
duration_minutesStringDurée du sondage en minutes. Exemple :

“duration_minutes”: 60

Détails sur les Retweets et les Quote Tweets

Du point de vue de la X API, les Retweets et les Quote Tweets sont des types particuliers de Publications qui contiennent la Publication originale sous forme d’objet imbriqué. Les objets Retweets et Quote Tweet sont donc les parents d’une Publication enfant « originale » (et sont donc deux fois plus volumineux). Les Retweets ont un objet de premier niveau “retweeted_status”, et les Quote Tweets ont un objet “quoted_status”. Pour des raisons de cohérence, ces objets de premier niveau Retweet et Quote Tweet disposent également d’une propriété text et d’entities associées. Cependant, les entities au niveau supérieur peuvent différer des entities fournies par les entities « originales » imbriquées. Dans le cas des Retweets, un nouveau texte est ajouté au début du corps de la Publication originale. Pour les Publications citées, un nouveau texte est ajouté à la fin du corps de la Publication. De manière générale, la meilleure pratique consiste à récupérer le texte, les entities, l’auteur original et la date à partir de la Publication originale dans retweeted_status dès lors que celui-ci existe. Une exception concerne la récupération des entities X qui font partie du texte additionnel de la citation. Voir ci-dessous pour plus de détails et de conseils.

Retweets

Un point important concernant les Retweets est qu’aucune autre entité X ne peut être ajoutée à la Publication. Les utilisateurs ne peuvent pas ajouter de hashtags, d’URL ou d’autres éléments lorsqu’ils Retweetent. Cependant, l’attribut de texte du Retweet (au niveau supérieur) est composé du texte de la Publication originale avec « RT @username: » ajouté en préfixe.   Dans certains cas, en particulier pour les comptes avec des noms d’utilisateur longs, la combinaison de ces nouveaux caractères et du corps de la Publication originale peut facilement dépasser la limite de longueur de 140 caractères du texte de la Publication originale. Afin de conserver la prise en charge de l’affichage et du stockage basés sur 140 caractères, le corps de niveau supérieur tronque la fin du corps de la Publication et ajoute des points de suspension (« … »). Par conséquent, certaines entités de niveau supérieur placées à la fin de la Publication originale peuvent être incorrectes ou manquantes, par exemple dans le cas d’un hashtag ou d’une entrée d’URL tronqués. Cette Publication, https://x.com/FloodSocial/status/907974220298125312, contient le texte de Publication suivant :                Just another test Post that needs to be exactly 140 characters with trailing URL and hashtag http://wapo.st/2w8iwPQ #Testing Dans l’exemple ci-dessus, l’URL et le hashtag ont tous deux été affectés. Étant donné que le hashtag a été complètement tronqué et l’URL partiellement tronquée, ceux-ci sont absents des entités de niveau supérieur. Vous remarquerez également l’entité de niveau supérieur user_mentions supplémentaire provenant du préfixe « RT @floodsocial: » dans le champ text. Cependant, le texte de la Publication et les entités dans retweeted_status reflètent parfaitement la Publication originale, sans troncation ni entités incorrectes, d’où notre recommandation de se fier à l’objet imbriqué retweeted_status pour les Retweets.

Tweets cités

Les Tweets cités ont été introduits en 2016 et diffèrent des Retweets en ceci que lorsque vous « citez » une Publication, vous ajoutez un nouveau contenu « par-dessus » une Publication partagée. Ce nouveau contenu peut inclure quasiment tout ce qu’une Publication originale peut contenir, notamment du nouveau texte, des hashtags, des mentions et des URL. Les Tweets cités peuvent contenir des médias natifs (photos, vidéos et GIF) et apparaissent dans l’objet entities. Étant donné que des entités X peuvent être ajoutées, les entités du Tweet cité sont probablement différentes des entités d’origine. Dans cet exemple, une nouvelle URL et un nouveau hashtag ont été placés à la fin du Tweet cité. Cette Publication, https://x.com/FloodSocial/status/907983973225160704, contient le texte de Publication suivant :                   étrange et tout aussi tragique lorsque des îles sont inondées… test transatlantique des Tweets cités | @thisuser @thatuserhttp://bit.ly/2vMMDuu #testing Dans ce cas, les entités de niveau supérieur ne reflètent pas les détails du Tweet cité.  En revanche, le texte de la Publication et les entities dans extended_tweet reflètent parfaitement le Tweet cité, sans troncature ni entités incorrectes, d’où notre recommandation de vous appuyer sur l’objet _extended_tweet _object imbriqué pour les Tweets cités.

Entités pour l’objet utilisateur

Les entités pour les objets utilisateur décrivent les URL qui apparaissent dans les champs d’URL de profil et de description définis par l’utilisateur. Elles ne décrivent pas les hashtags ni les user_mentions. Contrairement aux entités de Publication, les entités utilisateur peuvent s’appliquer à plusieurs champs au sein de leur objet parent — pour lever toute ambiguïté, vous trouverez des nœuds parents appelés url et description qui indiquent quel champ contient l’URL convertie en entité. Dans cet exemple, le champ url de l’utilisateur contient un lien t.co qui est entièrement développé dans le nœud entities/url/urls[0] de la réponse. L’utilisateur n’a pas d’URL raccourcie dans sa description.

Exemple 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": [

      ]
    }
  }
}

Entités étendues de X

Accéder aux sections de cette page Introduction Objet Extended Entities Exemples de Tweets et de payloads JSON   - Tweet avec quatre photos natives   - Tweet avec une vidéo native   - Tweet avec un GIF animé Étapes suivantes

Introduction

Si une Publication contient des médias natifs (partagés via l’interface utilisateur de la Publication plutôt que par un lien vers un autre emplacement), il y aura également une section extended_entities. Pour tout média natif (photo, vidéo ou GIF), extended_entities est la source de métadonnées privilégiée pour plusieurs raisons. Actuellement, jusqu’à quatre photos peuvent être jointes à une Publication. Les métadonnées entities ne contiendront que la première photo (jusqu’en 2014, une seule photo pouvait être incluse), tandis que la section extended_entities inclura toutes les photos jointes. Avec les médias natifs, une autre limite des métadonnées entities.media est que le type de média indiquera toujours « photo », même lorsque le média joint est une vidéo ou un GIF animé. Le type réel de média est spécifié dans l’attribut extended_entities.media[].type et prend la valeur photovideo ou animated_gif. Pour ces raisons, si vous travaillez avec des médias natifs, les métadonnées extended_entities sont la source à privilégier. Toutes les Publications avec des photos, vidéos et GIF animés joints incluront un objet JSON extended_entities. L’objet extended_entities contient un unique tableau media d’objets media (voir la section entities pour son dictionnaire de données). Aucun autre type d’entité, comme les hashtags et les liens, n’est inclus dans la section extended_entities. L’objet media dans la section extended_entities est identique, en termes de structure, à celui inclus dans la section entities. Les Publications ne peuvent avoir qu’un seul type de média associé. Pour les photos, jusqu’à quatre photos peuvent être jointes. Pour les vidéos et les GIF, une seule peut être jointe. Comme, dans la section extended_entities, la métadonnée de type de média type indique correctement le type de média (« photo », « video » ou « animated_gif ») et prend en charge jusqu’à quatre photos, il s’agit de la source de métadonnées privilégiée pour les médias natifs.
{
      "extended_entities": {
        "media": [

        ]
      }
    }

Exemples de Publications et de charges utiles JSON

Vous trouverez ci-dessous quelques exemples de Publications et les métadonnées d’entités qui leur sont associées. Publication avec quatre photos natives Publication avec hashtag, mention d’utilisateur, cashtag, URL et quatre photos natives :
Voici la section entities pour cette Publication :
{
      "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"
              }
            }
          }
        ]
      }
    }
Vous ne trouverez les quatre photos natives (au maximum) que dans le payload « étendu » ci-dessous. Notez que la première photo du tableau est la même que l’unique photo incluse dans la section X entities non étendue. La structure des métadonnées media pour les photos est identique dans les sections entities et extended_entities. Voici la section extented_entities pour cette Publication :
{
    "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"
              }
            }
          }
        ]
      }
    }

Publication avec vidéo native

Voici les métadonnées des extended entities pour cette Publication vidéo :
{
      "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"
                }
              ]
            }
          }
        ]
      }
    }
Lorsqu’un annonceur choisit de limiter la lecture de la vidéo uniquement aux plateformes détenues et exploitées par X, l’objet video_info est remplacé par un objet additional_media_info. L’objet additional_media_info contient des informations média supplémentaires fournies par l’éditeur, comme title, description et le embeddable flag. Le contenu vidéo n’est disponible que pour les clients officiels de X lorsque embeddable=false. Dans ce cas, toutes les URL vidéo fournies dans la charge utile pointeront vers X, afin que l’utilisateur puisse ouvrir la vidéo dans une propriété appartenant à X en cliquant sur le lien. Voici un exemple de ce à quoi ressemblera l’objet extended entities dans cette situation :
{
      "extended_entities": {
        "media": [
          {
            "id": 924685332347469824,
            "id_str": "924685332347469824",
            "indices": [
              49,
              72
            ],
            "media_url": "http://pbs.twimg.com/media/DNUkdLMVwAEzj8K.jpg",
            "media_url_https": "https://pbs.twimg.com/media/DNUkdLMVwAEzj8K.jpg",
            "url": "https://t.co/90xOJqKMox",
            "display_url": "pic.x.com/90xOJqKMox",
            "expanded_url": "https://x.com/nyjets/status/924685391524798464/video/1",
            "type": "photo",
            "sizes": {
              "small": {
                "w": 680,
                "h": 383,
                "resize": "fit"
              },
              "medium": {
                "w": 1200,
                "h": 675,
                "resize": "fit"
              },
              "large": {
                "w": 1280,
                "h": 720,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              }
            },
            "additional_media_info": {
              "title": "#ATLvsNYJ : TD de Tomlinson de McCown",
              "description": "NFL",
              "embeddable": false,
              "monetizable": true
            }
          }
        ]
      }
    }
Comme indiqué ci-dessus, voici la section entities où le champ type est incorrectement défini sur « photo ». Là encore, la section extended_entities est à privilégier pour tous les types de médias natifs, y compris « video » et « 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"
              }
            }
          }
        ]
      }

    }

Publication avec un GIF animé

Vous trouverez ci-dessous les métadonnées des extended entities pour cette Publication avec un GIF animé :
{
      "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"
                }
              ]
            }
          }
        ]
      }
    }

Exemples de charges utiles « Native Enriched »

Publication

{
	"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": "La voix de l'équipe #XDevelopers et votre source officielle pour les mises à jour, les actualités et les événements liés à l'#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
	}]
}

Réponse à une publication

{
	"created_at": "Fri Aug 21 19:10:05 +0000 2020",
	"id": 1296887316556980200,
	"id_str": "1296887316556980230",
	"text": "Découvrez comment @PennMedCDH utilise les données X pour comprendre la crise sanitaire liée au COVID-19 📊\n\nhttps://t.co/1tdA8uDWes",
	"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">Application Web X</a>",
	"truncated": false,
	"in_reply_to_status_id": 1296887091901718500,
	"in_reply_to_status_id_str": "1296887091901718529",
	"in_reply_to_user_id": 2244994945,
	"in_reply_to_user_id_str": "2244994945",
	"in_reply_to_screen_name": "XDevelopers",
	"user": {
		"id": 2244994945,
		"id_str": "2244994945",
		"name": "X Dev",
		"screen_name": "XDevelopers",
		"location": "127.0.0.1",
		"url": "https://developer.x.com/en/community",
		"description": "La voix de l'équipe #XDevelopers et votre source officielle de mises à jour, d'actualités et d'événements liés à l'#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": "Le Penn Med Center for Digital Health a créé une carte X du COVID-19 qui comprend des graphiques détaillant les sentiments, les symptômes signalés, des données par État et des données transfrontalières sur l'épidémie de COVID-19. De plus, leur initiative Penn Med With You utilise des informations régionales agrégées provenant de X pour alimenter leur site Web et leur service de messagerie texte. Le service utilise ces informations pour diffuser des ressources pertinentes et actualisées."
			},
			"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
	}]
}

Publication étendue

{
	"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": "Aujourd'hui, nous sommes heureux d'annoncer la disponibilité générale du point de terminaison pour masquer les réponses dans la nouvelle X API. Ce point de terminaison vous permet de créer des outils qui aident les utilisateurs à masquer ou afficher les réponses à leurs Tweets. Les utilisateurs gèrent leurs réponses pour de nombreuses raisons, notamment pour accorder moins d'attention aux commentaires abusifs, distrayants ou trompeurs, ou pour rendre les conversations plus engageantes. Grâce à ce point de terminaison, vous pouvez créer des outils pour aider les utilisateurs sur X à masquer ou afficher les réponses plus rapidement et plus..."
				},
				"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
	}]
}

Publication avec extended_entities

{
	"created_at": "Wed Aug 12 17:01:42 +0000 2020",
	"id": 1293593516040269800,
	"id_str": "1293593516040269825",
	"text": "It’s finally here! 🥁 Say hello to the new #XAPI.\n\nWe’re rebuilding the X API v2 from the ground up to b… 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 voix de l'équipe #XDevelopers et votre source officielle de mises à jour, d'actualités et d'événements liés à 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": "It’s finally here! 🥁 Say hello to the new #XAPI.\n\nWe’re rebuilding the X API v2 from the ground up to better serve our developer community. And today’s launch is only the beginning.\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": "Introducing a new and improved X API",
					"description": "Introducing the new X API - rebuilt from the ground up to deliver new features faster so developers can help the world connect to the public conversation happening on 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: J'ai créé une Skill Alexa pour X en utilisant APL, qui vous permet d'afficher des Tweets et des tendances sur l'Echo Show !\n\nDécouvrez-la ici…",
	"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">Application Web X</a>",
	"truncated": false,
	"in_reply_to_status_id": null,
	"in_reply_to_status_id_str": null,
	"in_reply_to_user_id": null,
	"in_reply_to_user_id_str": null,
	"in_reply_to_screen_name": null,
	"user": {
		"id": 2244994945,
		"id_str": "2244994945",
		"name": "X Dev",
		"screen_name": "X Developers",
		"location": "127.0.0.1",
		"url": "https://developer.x.com/en/community",
		"description": "La voix de l'équipe #XDevelopers et votre source officielle pour les mises à jour, les actualités et les événements liés à 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": "J'ai créé une Skill Alexa pour X en utilisant APL, qui vous permet d'afficher des Tweets et des tendances sur l'Echo Show !\n\nDécouvrez-la… https://t.co/RP9NgltX7i",
		"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">Application Web X</a>",
		"truncated": true,
		"in_reply_to_status_id": null,
		"in_reply_to_status_id_str": null,
		"in_reply_to_user_id": null,
		"in_reply_to_user_id_str": null,
		"in_reply_to_screen_name": null,
		"user": {
			"id": 857699969263964200,
			"id_str": "857699969263964161",
			"name": "Suhem Parack",
			"screen_name": "suhemparack",
			"location": "Seattle, WA",
			"url": "https://developer.x.com",
			"description": "Relations développeurs pour la recherche académique @X. Parlez-moi de recherches utilisant les données X. Auparavant : Amazon Alexa. Les opinions exprimées sont les miennes.",
			"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": "J'ai créé une Skill Alexa pour X en utilisant APL, qui vous permet d'afficher des Tweets et des tendances sur l'Echo Show !\n\nDécouvrez-la ici 👇\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 cité

{
	"created_at": "Mon Nov 16 18:09:36 +0000 2020",
	"id": 1328399838128468000,
	"id_str": "1328399838128467969",
	"text": "Comme prévu, les points de terminaison Labs v2 référencés ci-dessous ont été retirés. Veuillez nous en informer sur les forums si vous a… 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 voix de l'équipe #XDevelopers et votre source officielle de mises à jour, d'actualités et d'événements liés à 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": "👋 Rappel amical : les fonctionnalités hide replies et recent search de X Developer Labs v2 seront retirées lundi prochain, nove… 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 voix de l'équipe #XDevelopers et votre source officielle de mises à jour, d'actualités et d'événements liés à 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": "👋 Rappel amical : les fonctionnalités hide replies et recent search de X Developer Labs v2 seront retirées lundi prochain, le 16 novembre ! Nous vous encourageons à migrer vers les nouveaux points de terminaison hide replies et recent search désormais disponibles dans la #XAPI v2. Détails : 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": "Retrait des fonctionnalités recent search et hide replies de Labs v2",
						"description": "Comme nous l'avons annoncé dans nos communications sur l'accès anticipé et hide replies, les points de terminaison X Developer Labs v2 suivants seront retirés le 16 novembre. Labs v2 recent search Labs v2 hide replies Si appelés, ces points de terminaison répondront avec un statut HTTP 410 et ne renverront aucune donnée. Sur la base de vos retours concernant Labs, nous avons intégré les fonctionnalités correspondantes dans la X API v2. La documentation pertinente est accessible via les liens ci-dessous. Cliquez ici pour vous inscrire à l'accès v2 si ce n'est pas déjà fait..."
					},
					"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": "Comme prévu, les points de terminaison Labs v2 référencés ci-dessous ont été retirés. N'hésitez pas à nous faire part de vos questions ou demandes d'aide concernant X API v2 sur les forums ! 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
	}]
}

Retweet d’une citation de Tweet

{
 	"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 pour iPhone</a>",
 	"truncated": false,
 	"in_reply_to_status_id": null,
 	"in_reply_to_status_id_str": null,
 	"in_reply_to_user_id": null,
 	"in_reply_to_user_id_str": null,
 	"in_reply_to_screen_name": null,
 	"user": {
 		"id": 2244994945,
 		"id_str": "2244994945",
 		"name": "X Dev",
 		"screen_name": "XDevelopers",
 		"location": "127.0.0.1",
 		"url": "https://developer.x.com/en/community",
 		"description": "La voix de l'équipe #XDevelopers et votre source officielle de mises à jour, d'actualités et d'événements liés à l'#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\">Application web 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": "Londres, Royaume-Uni",
 			"url": null,
 			"description": "devrel @TwitterUK • Suissesse à Londres • mère de plantes d'intérieur • coiffeuse personnelle de @_dormrod",
 			"translator_type": "none",
 			"protected": false,
 			"verified": false,
 			"followers_count": 1032,
 			"friends_count": 1331,
 			"listed_count": 26,
 			"favourites_count": 4979,
 			"statuses_count": 854,
 			"created_at": "Fri Jan 18 23:45:43 +0000 2013",
 			"utc_offset": null,
 			"time_zone": null,
 			"geo_enabled": true,
 			"lang": null,
 			"contributors_enabled": false,
 			"is_translator": false,
 			"profile_background_color": "8B542B",
 			"profile_background_image_url": "http://abs.twimg.com/images/themes/theme8/bg.gif",
 			"profile_background_image_url_https": "https://abs.twimg.com/images/themes/theme8/bg.gif",
 			"profile_background_tile": false,
 			"profile_link_color": "5E341C",
 			"profile_sidebar_border_color": "D9B17E",
 			"profile_sidebar_fill_color": "EADEAA",
 			"profile_text_color": "333333",
 			"profile_use_background_image": true,
 			"profile_image_url": "http://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
 			"profile_image_url_https": "https://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
 			"profile_banner_url": "https://pbs.twimg.com/profile_banners/1102321381/1587552672",
 			"default_profile": false,
 			"default_profile_image": false,
 			"following": null,
 			"follow_request_sent": null,
 			"notifications": null
 		},
 		"geo": null,
 		"coordinates": null,
 		"place": null,
 		"contributors": null,
 		"quoted_status_id": 1195000047089389600,
 		"quoted_status_id_str": "1195000047089389573",
 		"quoted_status": {
 			"created_at": "Thu Nov 14 15:26:27 +0000 2019",
 			"id": 1195000047089389600,
 			"id_str": "1195000047089389573",
 			"text": "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\">Application web 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": "Londres, Royaume-Uni",
 				"url": null,
 				"description": "devrel @TwitterUK • Suissesse à Londres • mère de plantes d'intérieur • coiffeuse personnelle 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": "J'ai écrit un tutoriel sur comment obtenir des informations de trajet personnalisées en utilisant la X API🚇\n\n#DEVcommunity #Pythontutorial \n\nConsultez-le ici 👇\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 vous avez apprécié le tutoriel sur les trajets à Londres que j'ai écrit en novembre dernier, consultez la version refactorisée qui utilise le nouvel endpoint de recherche 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": "J'ai écrit un tutoriel sur comment obtenir des informations de trajet personnalisées en utilisant 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 • Suisse à Londres • maman de plantes d'intérieur • coiffeuse personnelle 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": "I wrote a tutorial on how to get bespoke commute information using the X API🚇\n\n#DEVcommunity #Pythontutorial \n\nCheck it out here 👇\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
 	}]
 }

Objets de données Enterprise Activity Streams

Vous souhaitez en savoir plus sur la façon dont le format de données Activity Streams correspond au format X API v2 ?
Consultez notre guide comparatif : Comparaison entre Activity Streams et X API v2
Veuillez noter : il est fortement recommandé d’utiliser le format Enriched Native pour les API de données Enterprise. 
  • Le format Enriched Native inclut toutes les nouvelles métadonnées depuis 2017, telles que les métadonnées de sondage, ainsi que des métriques supplémentaires comme reply_count et quote_count.
  • Le format Activity Streams n’a pas été mis à jour avec de nouvelles métadonnées ou de nouveaux enrichissements depuis la mise à jour du nombre de caractères en 2017.

Objet Activity

Activity Streams est un schéma d’objet dérivé du format de données d’origine de X, créé par Gnip pour « normaliser le format » des données de Publications et d’autres données de réseaux sociaux en utilisant le schéma tiers Activity Base Schema décrit ici. Les Publications sont normalisées selon le schéma Activity Streams, notamment au moyen des types d’objet note, person, place et service, utilisés comme objets imbriqués. Les Publications peuvent contenir d’autres objets d’activité de Publication imbriqués pour les Retweets, ou d’autres, notamment twitter_quoted_status, long_object. L’objet de base de type « activity » est similaire à l’objet de base Post du format natif enrichi. Des exemples de charges utiles au format Activity Streams sont disponibles ici.

Dictionnaire de données

Vous trouverez ci-dessous le dictionnaire de données pour ces attributs « activity » de niveau racine, ainsi que des liens vers les dictionnaires de données des objets enfants.
AttributTypeDescription
idchaîne de caractèresUn IRI unique pour la publication. Plus précisément, “tag” est le schéma, “search.x.com” représente le domaine pour ce schéma, et 2005 est l’année où le schéma a été élaboré.
Lors de l’enregistrement des Publications, il doit être utilisé comme identifiant unique ou clé primaire.
“id”: “tag:search.x.com,2005:1050118621198921728”
objectTypechaîne de caractèresType d’objet, toujours égal à “activity”
“objectType”: “activity”
objectobjetUn objet représentant la Publication en cours de création ou de partage.
Pour les Retweets, il contiendra une “activity” complète, avec les champs pertinents décrits dans ce schéma.
Pour les Publications originales, il contiendra un objet “note”, avec les champs décrits ici.
“object”:
“object”:
“objectType”: “note”,
“id”: “object:search.x.com,2005:1050118621198921728”,
“summary”: “Afin de laisser plus de place à l’expression, nous compterons désormais tous les emojis de la même façon — y compris ceux avec genre et couleur de peau t… https://t.co/MkGjXf9aXm”,
“link”: “http://x.com/API/statuses/1050118621198921728”,
“postedTime”: “2018-10-10T20:19:24.000Z”
long_objectobjetUn objet représentant le texte intégral si le texte de la publication dépasse 140 caractères.


“long_object”:
“body”: “Pour laisser plus de place à l’expression, nous compterons désormais tous les emojis de la même façon — y compris ceux avec des modificateurs de genre‍‍‍ ‍‍et de couleur de peau 👍🏻👍🏽👍🏿. Ceci est désormais pris en compte dans Twitter-Text, notre bibliothèque open source. \n\nVous utilisez Twitter-Text ? Consultez la publication du forum pour plus de détails : 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_rangetableausi le texte de la Publication dépasse les 140 caractères.


“display_text_range”: [
0,
142
]
verbchaîne de caractèresLe type d’action réalisée par l’utilisateur.
Publications, “post”
Retweets, “share”
Publications supprimées, “delete”
Le verbe est le moyen approprié de distinguer un Tweet d’un véritable Retweet. Cependant, cela s’applique uniquement aux véritables Retweets, et non aux Tweets modifiés ou cités, qui n’utilisent pas la fonctionnalité de Retweet de X. Pour une description des verbes AS
cliquez ici.
Pour les Deletes, notez qu’un nombre limité de champs sera inclus, comme indiqué dans l’exemple de payload ci-dessous.
“verb”: “post”
postedTimedate au format ISO 8601L’heure à laquelle l’action s’est produite, par exemple le moment où la Publication a été créée.


“postedTime”: “2018-10-10T20:19:24.000Z”
generatorobjetUn objet représentant l’outil utilisé pour publier la Publication. Il contiendra le nom (“displayName”) et un lien (“link”) pour l’application source qui génère la Publication.
“generator”:
“displayName”: “X Web Client”,
“link”: “http://x.com
providerobjetUn objet JSON représentant le fournisseur de l’activité. Il comporte un objectType (“service”), le nom du fournisseur (“displayName”) et un lien vers le site web du fournisseur (“link”).
“provider”:

“objectType”: “service”,
“displayName”: “X”,
“link”: “http://www.x.com
linkchaîne de caractèresUn permalien vers la Publication.
“link”: “http://x.com/API/statuses/1050118621198921728
bodychaîne de caractèresLe texte de la publication.

Dans les Retweets, notez que X modifie la valeur de body au niveau de la racine en ajoutant “RT @username” au début, et en tronquant le texte original puis en ajoutant des points de suspension à la fin. Ainsi, pour les Retweets, votre App doit se référer à object.body afin de s’assurer qu’elle extrait le texte non modifié de la Publication originale (qui est retweetée).
“body”: “With Cardiff, Crystal Palace, and Hull City joining the EPL from the Championship it will be a great relegation battle at the end.”
display_text_rangetableauDécrit l’intervalle de caractères dans le texte du champ body qui indique la Publication affichée. Les Publications commençant par des @mentions auront une valeur de début supérieure à 0 et les Publications accompagnées de médias ou dépassant 140 caractères indiqueront le display_text_range dans le long_object.

“display_text_range”: [
14,
42
]
ou
“long_object”:
“display_text_range”: [
0,
277
]…
actorobjetUn objet représentant l’utilisateur X qui a publié. L’Actor Object fait référence à un utilisateur X et contient toutes les métadonnées pertinentes pour cet utilisateur.
Voir
les détails de l’Actor Object
inReplyToobjetUn objet JSON faisant référence à la Publication à laquelle on répond, le cas échéant. Contient un lien vers la Publication.
“inReplyTo”:

“link”: “http://x.com/GOP/statuses/349573991561838593
locationobjetUn objet JSON représentant l’objet « Place » de X correspondant à l’endroit où la Publication a été créée. Il s’agit d’un objet transmis tel quel depuis la plateforme X.

Voir
objet de localisation
twitter_entitiesobjetL’objet entities du format de données de X, qui contient des listes d’URL, de mentions et de hashtags. Pour plus d’informations, consultez la documentation de X sur les « Entities ». Notez que, dans les Retweets, X peut tronquer les valeurs des entities qu’il extrait au niveau racine. Ainsi, pour les Retweets, votre application doit consulter object.twitter_entities afin de s’assurer que vous utilisez des valeurs non tronquées.

Voir les détails de l’objet twitter_entities
twitter_extended_entitiesobjetUn objet du format de données natif de X qui contient le champ “media”. Il sera présent pour toute Publication dans laquelle l’objet twitter_entities contient des données dans le champ “media”, et inclura plusieurs photos lorsqu’elles sont présentes dans la Publication. Notez qu’il s’agit de l’endroit approprié pour récupérer les informations relatives aux médias pour les Publications comportant plusieurs photos.

Plusieurs photos sont représentées par des objets JSON séparés par des virgules au sein du tableau “media”.

Voir les détails de l’objet twitter_extended_entities
gnipobjetObjet ajouté à la charge utile d’activité pour indiquer les règles de correspondance et ajouter des données enrichies, en fonction des enrichissements actifs sur le flux ou le produit.

Voir les détails de l’objet gnip
edit_historyObjectIdentifiants uniques correspondant à toutes les versions d’une Publication. Pour les Publications sans modification, il y aura un seul ID. Pour les Publications avec un historique de modifications, il y aura plusieurs ID, classés par ordre croissant, reflétant l’ordre des modifications, la version la plus récente occupant la dernière position du tableau. 

Les ID de Publication peuvent être utilisés pour hydrater et afficher les versions précédentes d’une Publication.

Exemple :

edit_history”:
“initial_tweet_id”: “1283764123”
“edit_tweet_ids”: [“1283764123”, “1394263866”]
edit_controlsObjectLorsqu’il est présent, indique pendant combien de temps une Publication reste modifiable et le nombre de modifications restantes. Les Publications ne sont modifiables que pendant les 30 premières minutes suivant leur création et peuvent être modifiées jusqu’à cinq fois. 

Les id de Publication peuvent être utilisés pour hydrater et afficher les versions précédentes d’une Publication.

Exemple :

“edit_controls”:
“editable_until_ms”: 123
“edits_remaining”: 3
editableBooleanLorsqu’il est présent, indique si une Publication était éligible à la modification au moment de sa publication. Ce champ n’est pas dynamique et ne passera pas de True à False lorsque la Publication atteint sa limite de temps de modification ou son nombre maximal de modifications. Les caractéristiques de Publication suivantes feront que ce champ aura la valeur False :

* La Publication est promue
* La Publication contient un sondage
* La Publication est une réponse dans un fil qui n’est pas le sien
* La Publication est un retweet (notez que les Quote Tweets sont éligibles à la modification)
* La Publication est nullcast
* Publication de communauté
* Publication Superfollow
* Publication collaborative

Attributs supplémentaires de la publication

AttributTypeDescription
twitter_langstring
favoritesCountintNullable. Indique approximativement combien de fois cette publication a été ajoutée aux favoris par des utilisateurs de X.

“favoritesCount”:298
retweetCountintNombre de fois où cette publication a été retweetée. Exemple :

“retweetCount”:153

Attributs obsolètes

ChampTypeDescription
geoobjectPosition géographique (point) où la Publication a été créée.
twitter_filter_levelstringChamp obsolète conservé pour éviter une modification rompant la rétrocompatibilité

Objets d’activité de Publication imbriqués

Dans certains cas, un objet Publication inclura d’autres Publications imbriquées. Si vous travaillez avec des objets imbriqués, la charge utile JSON contiendra alors plusieurs objets, et chaque objet Publication pourra contenir ses propres objets. L’objet au niveau racine contiendra des informations sur le type d’action effectuée, c’est‑à‑dire s’il s’agit d’un Retweet ou d’un Quote Tweet, et pourra également contenir un objet qui décrit la Publication « originale » partagée. Les Publications étendues incluront un objet étendu imbriqué qui va au‑delà de 140 caractères, ce qui a été utilisé pour éviter des ruptures de compatibilité lorsque la mise à jour a été effectuée en 2017. Chaque dictionnaire d’objet imbriqué est décrit ci‑dessous. Retweets Le format Activity Streams des Retweets inclut un objet imbriqué avec le type “activity” et le verbe “note” pour représenter la Publication originale qui est retweetée.
{
	"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": {}
}
Statut cité sur X Le format Activity Streams permet d’intégrer des Tweets cités { "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": {} } } Retweet d’un Tweet cité :
    {
    	"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": {}
    }

Objet long

Format Activity Streams de l’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"
}

Objet actor

L’objet actor contient les métadonnées du compte utilisateur X qui décrivent l’utilisateur X à l’origine de l’activité.

Dictionnaire de données

AttributeTypeDescription
objectTypestring”objectType”: “person”
idstringLa représentation sous forme de chaîne de l’identifiant unique de cet auteur. Exemple :

“id:x.com:2244994945”
linkhttp://www.x.com/XDeveloeprs
displayNameStringLe nom de l’utilisateur, tel qu’il l’a défini. Ce n’est pas nécessairement le nom d’une personne. Généralement limité à 50 caractères, mais sujet à modification. Exemple :

“displayName”: “XDevelopers”
preferredUsernamestringLe nom d’écran, identifiant ou alias avec lequel cet utilisateur s’identifie. Unique mais sujet à modification. Utilisez id comme identifiant d’utilisateur lorsque c’est possible. Généralement d’une longueur maximale de 15 caractères, mais certains comptes historiques peuvent exister avec des noms plus longs. Exemple :

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

“objectType”:** “place”,

“displayName”: “127.0.0.1”

**        }**
linksarrayNullable. Une URL fournie par l’utilisateur en association avec son profil. Exemple :

**       “links”: [

          {

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

“rel”: “me”

**          }

        ]**
summarystringNullable. La chaîne UTF-8 définie par l’utilisateur décrivant son compte. Exemple :

“summary”: “The voice of the #XDevelopers team…“
protectedBooleanLorsque la valeur est true, indique que cet utilisateur a choisi de protéger ses Publications. Voir À propos des Publications publiques et protégées. Exemple :

“protected”: true
verifiedBooleanLorsque la valeur est true, indique que l’utilisateur dispose d’un compte vérifié. Voir Comptes vérifiés. Exemple :

“verified”: false
followersCountIntLe nombre d’abonnés que ce compte a actuellement. Dans certaines conditions de forte charge, ce champ indiquera temporairement « 0 ». Exemple :

“followers_count”: 21
friendsCountIntLe nombre d’utilisateurs que ce compte suit (également appelés « abonnements »). Dans certaines conditions de forte charge, ce champ indiquera temporairement « 0 ». Exemple :

“friends_count”: 32
listedCountIntLe nombre de Listes publiques dont cet utilisateur est membre. Exemple :

“listed_count”: 9274
favoritesCountIntLe nombre de Publications que cet utilisateur a aimées au cours de la durée de vie du compte. L’orthographe britannique est utilisée dans le nom du champ pour des raisons historiques. Exemple :

“favourites_count”: 13
statusesCountIntLe nombre de Publications (y compris les retweets) émises par l’utilisateur. Exemple :

“statuses_count”: 42
postedTimedateLa date et l’heure UTC de création du compte utilisateur sur X. Exemple :

“postedTime”: “2013-12-14T04:35:55.036Z”
imagestringUne URL basée sur HTTPS pointant vers l’image de profil de l’utilisateur. Exemple :

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

Attributs obsolètes (deprecated)

ChampTypeDescription
utcOffsetnullLa valeur sera définie sur null. Toujours disponible via GET account/settings
twitterTimeZonenullLa valeur sera définie sur null. Toujours disponible via GET account/settings en tant que tzinfo_name
languagesnullLa valeur sera définie sur null. Toujours disponible via GET account/settings en tant que language

Exemples :

			"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
  }

Location Object

Les objets Location peuvent exister dans l’objet actor défini au niveau du compte X ou dans l’objet profileLocations de l’objet gnip. Les objets Location ont un type d’objet place et peuvent avoir un nom, une adresse ou des coordonnées géographiques. Les objets Location sont similaires à Geo au format natif enrichi.

Dictionnaire de données Location

ChampTypeDescription
objectTypestringVoir ici pour plus d’informations détaillées. Exemple :

“objectType”: “place”
displayNamestringLe nom complet du lieu.

****“displayName”:
“United States”
namestringNom du lieu, issu du format JSON « place » de X.
linkstringLien vers la représentation JSON complète du lieu sur X.

“link”:https://api.x.com/1.1/geo/id/27c45d804c777999.json
geoobjectL’objet de coordonnées géographiques provenant de X, soit un polygone, soit un point.

Voir geo
countryCodeStringCode pays abrégé représentant le pays contenant ce lieu. Exemple :

“countryCode”: “US
countryStringNom du pays contenant ce lieu. Exemple :

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

objets dérivés de profileLocations

FieldTypeDescription
addressobjectDans l’objet location de profileLocation au sein de l’objet GNIP.  Adresse de l’emplacement dérivée par l’enrichissement géographique du profil.  Le niveau de granularité peut varier. 

“address”: {

**          “country”: “United States”,

          “countryCode”: “US”,

          “locality”: “Providence”,

          “region”: “Rhode Island”,

          “subRegion”: “Providence County”

        }**
geoobjectDans l’objet location de profileLocation au sein de l’objet GNIP.  Coordonnées du centroïde de l’emplacement dérivées par l’enrichissement géographique du profil.

”geo”: {

**          “coordinates”: [

-98.5
,

39.76

          ],

          “type”: “point”

        }**
Exemples
	"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"
    }

Objet X entities

Pour le format Activity Streams, twitter_entities a le même format et utilise le même dictionnaire de données que l’objet entities du format enrichi natif.

Exemple :

"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": []
}

Objet X extended entities

Pour le format Activity Streams, twitter_extended_entities utilise le même format et le même dictionnaire de données que ceux présentés dans le format enrichi natif, voir l’objet X extended_entities ici.

Exemple :

"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"
			}
		}
	}]
}

Objet Gnip

L’objet gnip, dans le format Activity Streams, contient les métadonnées ajoutées par les enrichissements actifs, ainsi que des indications sur les règles de correspondance appliquées à l’activité.

Dictionnaire de données

ChampTypeDescription
matching_rulesarrayContient un tableau d’objets de règles de correspondance qui indiquent la règle correspondant à l’activité.
“matching_rules”: [

**      {

        “tag”: null,

“id”:** 1026514022567358500**,

“id_str”:** “1026514022567358464”

**      }

    ]**
urlsarrayContient un tableau des liens présents dans l’activité, ainsi que les métadonnées de l’URL développée fournies par l’enrichissement 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 objectsContient l’objet de localisation dérivé de l’enrichissement 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”

**      }

    ]

  }**

Exemple :

	"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
      }
    ]
  }

Exemples de charges utiles pour les flux d’activité

Activité de Publication
{
	"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": "La voix de l'équipe #XDevelopers et votre source officielle pour les mises à jour, actualités et événements liés à l'#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"
}
Activité de Publication en réponse
{
	"id": "tag:search.x.com,2005:1296887316556980230",
	"objectType": "activity",
	"verb": "post",
	"postedTime": "2020-08-21T19:10:05.000Z",
	"generator": {
		"displayName": "Application Web X",
		"link": "https://mobile.x.com"
	},
	"provider": {
		"objectType": "service",
		"displayName": "X",
		"link": "http://www.x.com"
	},
	"link": "http://x.com/XDevelopers/statuses/1296887316556980230",
	"body": "Découvrez comment @PennMedCDH utilise les données X pour comprendre la crise sanitaire du 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 voix de l'équipe #XDevelopers et votre source officielle pour les mises à jour, actualités et événements liés à l'#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": "Découvrez comment @PennMedCDH utilise les données X pour comprendre la crise sanitaire du 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": "Le Penn Med Center for Digital Health a créé une carte X du COVID-19 qui comprend des graphiques détaillant les sentiments, les symptômes signalés, les données par État et les données transfrontalières sur l'épidémie de COVID-19. De plus, leur initiative Penn Med With You utilise des informations régionales agrégées provenant de X pour alimenter leur site web et leur service de messagerie texte. Le service utilise ces informations pour diffuser des ressources pertinentes et actualisées."
		}]
	},
	"twitter_filter_level": "low"
}
Activité de Publication avec long_object
{
	"id": "tag:search.x.com,2005:1296121314218897408",
	"objectType": "activity",
	"verb": "post",
	"postedTime": "2020-08-19T16:26:16.000Z",
	"generator": {
		"displayName": "Application Web X",
		"link": "https://mobile.x.com"
	},
	"provider": {
		"objectType": "service",
		"displayName": "X",
		"link": "http://www.x.com"
	},
	"link": "http://x.com/XDevelopers/statuses/1296121314218897408",
	"body": "Le point de terminaison de masquage des réponses est lancé aujourd'hui !\n\nLes développeurs peuvent masquer les réponses aux Tweets - un moyen essentiel pour les développeurs de… https://t.co/VyfXs1RTXn",
	"long_object": {
		"body": "Le point de terminaison de masquage des réponses est lancé aujourd'hui !\n\nLes développeurs peuvent masquer les réponses aux Tweets - un moyen essentiel pour les développeurs d'améliorer la santé de la conversation publique en utilisant la #XAPI.\n\nhttps://t.co/khXhTurm9x",
		"display_text_range": [
			0,
			215
		],
		"twitter_entities": {
			"hashtags": [{
				"text": "API",
				"indices": [
					178,
					189
				]
			}],
			"urls": [{
				"url": "https://t.co/khXhTurm9x",
				"expanded_url": "https://devcommunity.x.com/t/hide-replies-now-available-in-the-new-twitter-api/140996",
				"display_url": "devcommunity.com/t/hide-replies…",
				"indices": [
					192,
					215
				]
			}],
			"user_mentions": [],
			"symbols": []
		}
	},
	"actor": {
		"objectType": "person",
		"id": "id:twitter.com:2244994945",
		"link": "http://www.x.com/XDevelopers",
		"displayName": "X Dev",
		"postedTime": "2013-12-14T04:35:55.036Z",
		"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"summary": "La voix de l'équipe #XDevelopers et votre source officielle pour les mises à jour, actualités et événements liés à la #XAPI.",
		"friendsCount": 2038,
		"followersCount": 512292,
		"listedCount": 1666,
		"statusesCount": 3634,
		"twitterTimeZone": null,
		"verified": true,
		"utcOffset": null,
		"preferredUsername": "XDevelopers",
		"languages": [],
		"links": [{
			"href": "https://developer.x.com/en/community",
			"rel": "me"
		}],
		"location": {
			"objectType": "place",
			"displayName": "127.0.0.1"
		},
		"favoritesCount": 2147
	},
	"object": {
		"objectType": "note",
		"id": "object:search.x.com,2005:1296121314218897408",
		"summary": "Le point de terminaison de masquage des réponses est lancé aujourd'hui !\n\nLes développeurs peuvent masquer les réponses aux Tweets - un moyen essentiel pour les développeurs de… 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": "Masquer les réponses désormais disponible dans la nouvelle X API",
			"expanded_url_description": "Aujourd'hui, nous sommes heureux d'annoncer la disponibilité générale du point de terminaison de masquage des réponses dans la nouvelle X API. Le point de terminaison de masquage des réponses vous permet de créer des outils qui aident les utilisateurs à masquer ou afficher les réponses à leurs Tweets. Les utilisateurs gèrent leurs réponses pour de nombreuses raisons, notamment pour accorder moins d'attention aux commentaires abusifs, distrayants, trompeurs, ou pour rendre les conversations plus engageantes. Grâce à ce point de terminaison, vous pouvez créer des outils pour aider les utilisateurs sur X à masquer ou afficher les réponses plus rapidement et plus..."
		}]
	},
	"twitter_filter_level": "low"
}
Activité de publication avec 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": "It’s finally here! 🥁 Say hello to the new #XAPI.\n\nWe’re rebuilding the X API v2 from the ground up to b… https://t.co/UeCndQGMjx",
	"long_object": {
		"body": "C'est enfin là ! 🥁 Dites bonjour à la nouvelle #XAPI.\n\nNous reconstruisons l'API X v2 de zéro pour mieux servir notre communauté de développeurs. Et le lancement d'aujourd'hui n'est que le début.\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": "The voice of the #XDevelopers team and your official source for updates, news, and events, related to the #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": "It’s finally here! 🥁 Say hello to the new #API.\n\nWe’re rebuilding the X API v2 from the ground up to b… 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": "Introducing a new and improved X API",
			"expanded_url_description": "Présentation de la nouvelle X API - reconstruite de A à Z pour proposer de nouvelles fonctionnalités plus rapidement afin que les développeurs puissent aider le monde à se connecter à la conversation publique sur X."
		}]
	},
	"twitter_filter_level": "low"
}
Activité de Retweet
{
	"id": "tag:search.x.com,2005:1229851574555508737",
	"objectType": "activity",
	"verb": "share",
	"postedTime": "2020-02-18T19:33:59.000Z",
	"generator": {
		"displayName": "Application web X",
		"link": "https://mobile.x.com"
	},
	"provider": {
		"objectType": "service",
		"displayName": "X",
		"link": "http://www.x.com"
	},
	"link": "http://x.com/XDevelopers/statuses/1229851574555508737",
	"body": "RT @suhemparack: J'ai créé une Skill Alexa pour X utilisant APL qui permet de voir les Tweets et les Tendances sur l'echo show !\n\nDécouvrez-la ici…",
	"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 voix de l'équipe #XDevelopers et votre source officielle pour les mises à jour, actualités et événements liés à l'#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": "Application web X",
			"link": "https://mobile.x.com"
		},
		"provider": {
			"objectType": "service",
			"displayName": "X",
			"link": "http://www.x.com"
		},
		"link": "http://x.com/suhemparack/statuses/1229843515603144704",
		"body": "J'ai créé une Skill Alexa pour X utilisant APL qui permet de voir les Tweets et les Tendances sur l'echo show !\n\nDécouvrez-la… https://t.co/RP9NgltX7i",
		"long_object": {
			"body": "J'ai créé une Skill Alexa pour X utilisant APL qui permet de voir les Tweets et les Tendances sur l'echo show !\n\nDécouvrez-la ici 👇\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": "Relations développeurs pour la recherche académique @X. Parlez-moi de recherche avec les données X. Auparavant : Amazon Alexa. Mes opinions sont les miennes",
			"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": "J'ai créé une Skill Alexa pour X utilisant APL qui permet de voir les Tweets et les Tendances sur l'echo show !\n\nDécouvrez-la… 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"
}
Activité de citation de Tweet
{
 	"id": "tag:search.x.com,2005:1328399838128467969",
 	"objectType": "activity",
 	"verb": "post",
 	"postedTime": "2020-11-16T18:09:36.000Z",
 	"generator": {
 		"displayName": "Application web X",
 		"link": "https://mobile.x.com"
 	},
 	"provider": {
 		"objectType": "service",
 		"displayName": "X",
 		"link": "http://www.x.com"
 	},
 	"link": "http://x.com/XDevelopers/statuses/1328399838128467969",
 	"body": "Comme prévu, les points de terminaison Labs v2 référencés ci-dessous ont été retirés. N'hésitez pas à nous contacter sur les forums si vous a… https://t.co/ahQvTYaOcZ",
 	"long_object": {
 		"body": "Comme prévu, les points de terminaison Labs v2 référencés ci-dessous ont été retirés. N'hésitez pas à nous contacter sur les forums si vous avez des questions ou besoin d'aide avec 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 voix de l'équipe #XDevelopers et votre source officielle de mises à jour, d'actualités et d'événements liés à #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": "Comme prévu, les points de terminaison Labs v2 référencés ci-dessous ont été retirés. N'hésitez pas à nous contacter sur les forums si vous a… 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": "Retrait de la recherche récente et du masquage des réponses Labs v2",
 			"expanded_url_description": "Comme nous l'avons annoncé dans nos communications concernant l'accès anticipé et le masquage des réponses, les points de terminaison X Developer Labs v2 suivants seront retirés le 16 novembre. Recherche récente Labs v2 Masquage des réponses Labs v2 En cas d'appel, ces points de terminaison renverront un statut HTTP 410 sans aucune donnée. Suite à vos retours sur Labs, nous avons intégré les fonctionnalités correspondantes dans X API v2. La documentation pertinente est accessible via les liens ci-dessous. Cliquez ici pour vous inscrire à l'accès v2 si ce n'est pas encore fait..."
 		}]
 	},
 	"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": "Application web X",
 			"link": "https://mobile.x.com"
 		},
 		"provider": {
 			"objectType": "service",
 			"displayName": "X",
 			"link": "http://www.x.com"
 		},
 		"link": "http://x.com/XDevelopers/statuses/1327011423252144128",
 		"body": "👋 Rappel amical : le masquage des réponses et la recherche récente X Developer Labs v2 seront retirés lundi prochain, nove… https://t.co/EEWN2Q9aXh",
 		"long_object": {
 			"body": "👋 Rappel amical : le masquage des réponses et la recherche récente X Developer Labs v2 seront retirés lundi prochain, le 16 novembre ! Nous vous encourageons à migrer vers les nouveaux points de terminaison de masquage des réponses et de recherche récente désormais disponibles dans #XAPI v2. Détails : 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 voix de l'équipe #XDevelopers et votre source officielle de mises à jour, d'actualités et d'événements liés à #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": "👋 Rappel amical : les fonctionnalités hide replies et recent search de X Developer Labs v2 seront retirées lundi prochain, nove… 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"
 	}
 }
Activité de Retweet d’un Tweet cité
{
	"id": "tag:search.x.com,2005:1225470895902412800",
	"objectType": "activity",
	"verb": "share",
	"postedTime": "2020-02-06T17:26:44.000Z",
	"generator": {
		"displayName": "X pour iPhone",
		"link": "http://x.com/download/iphone"
	},
	"provider": {
		"objectType": "service",
		"displayName": "X",
		"link": "http://www.x.com"
	},
	"link": "http://x.com/XDevelopers/statuses/1225470895902412800",
	"body": "RT @AureliaSpecker: 📣 If you enjoyed the London commute tutorial I wrote in November last year, check out the refactored version that uses…",
	"actor": {
		"objectType": "person",
		"id": "id:twitter.com:2244994945",
		"link": "http://www.x.com/XDevelopers",
		"displayName": "X Dev",
		"postedTime": "2013-12-14T04:35:55.036Z",
		"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"summary": "La voix de l'équipe #XDevelopers et votre source officielle pour les mises à jour, actualités et événements liés à #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": "Application web X",
			"link": "https://mobile.x.com"
		},
		"provider": {
			"objectType": "service",
			"displayName": "X",
			"link": "http://www.x.com"
		},
		"link": "http://x.com/AureliaSpecker/statuses/1224709550214873090",
		"body": "📣 If you enjoyed the London commute tutorial I wrote in November last year, check out the refactored version that u… https://t.co/cAepHunkFp",
		"long_object": {
			"body": "📣 If you enjoyed the London commute tutorial I wrote in November last year, check out the refactored version that uses X's new search endpoint 🚇 https://t.co/87XIPZmZBJ\n\n#DEVcommunity #Pythontutorial @XDevelopers @API https://t.co/dXrJYvn3hY",
			"display_text_range": [
				0,
				229
			],
			"twitter_entities": {
				"hashtags": [{
						"text": "DEVcommunity",
						"indices": [
							176,
							189
						]
					},
					{
						"text": "Pythontutorial",
						"indices": [
							190,
							205
						]
					}
				],
				"urls": [{
						"url": "https://t.co/87XIPZmZBJ",
						"expanded_url": "https://bit.ly/2OrnrCC",
						"display_url": "bit.ly/2OrnrCC",
						"indices": [
							151,
							174
						]
					},
					{
						"url": "https://t.co/dXrJYvn3hY",
						"expanded_url": "https://x.com/AureliaSpecker/status/1195000047089389573",
						"display_url": "x.com/AureliaSpecker…",
						"indices": [
							230,
							253
						]
					}
				],
				"user_mentions": [{
						"screen_name": "XDevelopers",
						"name": "X Dev",
						"id": 2244994945,
						"id_str": "2244994945",
						"indices": [
							206,
							217
						]
					},
					{
						"screen_name": "API",
						"name": "X API",
						"id": 6253282,
						"id_str": "6253282",
						"indices": [
							218,
							229
						]
					}
				],
				"symbols": []
			}
		},
		"display_text_range": [
			0,
			140
		],
		"actor": {
			"objectType": "person",
			"id": "id:twitter.com:1102321381",
			"link": "http://www.x.com/AureliaSpecker",
			"displayName": "Aurelia Specker",
			"postedTime": "2013-01-18T23:45:43.000Z",
			"image": "https://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
			"summary": "devrel @TwitterUK • Suissesse à Londres • mère de plantes d'intérieur • coiffeuse personnelle 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, Royaume-Uni"
			},
			"favoritesCount": 4979
		},
		"object": {
			"objectType": "note",
			"id": "object:search.x.com,2005:1224709550214873090",
			"summary": "📣 If you enjoyed the London commute tutorial I wrote in November last year, check out the refactored version that u… https://t.co/cAepHunkFp",
			"link": "http://x.com/AureliaSpecker/statuses/1224709550214873090",
			"postedTime": "2020-02-04T15:01:25.000Z"
		},
		"favoritesCount": 43,
		"twitter_entities": {
			"hashtags": [],
			"urls": [{
				"url": "https://t.co/cAepHunkFp",
				"expanded_url": "https://x.com/i/web/status/1224709550214873090",
				"display_url": "x.com/i/web/status/1…",
				"indices": [
					117,
					140
				]
			}],
			"user_mentions": [],
			"symbols": []
		},
		"twitter_lang": "en",
		"twitter_filter_level": "low"
	},
	"favoritesCount": 0,
	"twitter_entities": {
		"hashtags": [],
		"urls": [],
		"user_mentions": [{
			"screen_name": "AureliaSpecker",
			"name": "Aurelia Specker",
			"id": 1102321381,
			"id_str": "1102321381",
			"indices": [
				3,
				18
			]
		}],
		"symbols": []
	},
	"twitter_lang": "en",
	"retweetCount": 12,
	"gnip": {
		"matching_rules": [{
			"tag": null
		}],
		"urls": [{
				"url": "https://t.co/87XIPZmZBJ",
				"expanded_url": "https://dev.to/XDevelopers/migrate-to-twitter-s-newly-released-labs-recent-search-endpoint-3npe",
				"expanded_status": 200,
				"expanded_url_title": null,
				"expanded_url_description": null
			},
			{
				"url": "https://t.co/sOjXW4YhbN",
				"expanded_url": "https://dev.to/XDevelopers/using-the-twitter-api-to-make-your-commute-easier-3od0",
				"expanded_status": 200,
				"expanded_url_title": null,
				"expanded_url_description": null
			}
		]
	},
	"twitter_filter_level": "low",
	"twitter_quoted_status": {
		"id": "tag:search.x.com,2005:1195000047089389573",
		"objectType": "activity",
		"verb": "post",
		"postedTime": "2019-11-14T15:26:27.000Z",
		"generator": {
			"displayName": "Application Web X",
			"link": "https://mobile.x.com"
		},
		"provider": {
			"objectType": "service",
			"displayName": "X",
			"link": "http://www.x.com"
		},
		"link": "http://x.com/AureliaSpecker/statuses/1195000047089389573",
		"body": "I wrote a tutorial on how to get bespoke commute information using the X API🚇\n\n#DEVcommunity #Pythontutorial… https://t.co/pL0qJ4vhtE",
		"long_object": {
			"body": "I wrote a tutorial on how to get bespoke commute information using the X API🚇\n\n#DEVcommunity #Pythontutorial \n\nCheck it out here 👇\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 • Swiss in London • mother of houseplants • personal hairdresser to @_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": "London, UK"
			},
			"favoritesCount": 4979
		},
		"object": {
			"objectType": "note",
			"id": "object:search.x.com,2005:1195000047089389573",
			"summary": "I wrote a tutorial on how to get bespoke commute information using the 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"
	}
}

Chronologie des métadonnées de Tweet

Aller à une section de cette page Introduction Concepts clés Chronologie X Conseils de filtrage Étapes suivantes

Introduction**

Au fond, X est un réseau de communication public, en temps réel et mondial. Depuis 2006, l’évolution de X est guidée à la fois par les modes d’utilisation et les conventions des utilisateurs, ainsi que par de nouvelles fonctionnalités et améliorations produits. Si vous utilisez des données X pour de la recherche historique, comprendre la chronologie de cette évolution est important pour faire émerger, à partir de l’archive de données, les Publications qui vous intéressent. X a été lancé comme une simple application mobile SMS et est devenu une plateforme de communication complète, avec un ensemble complet d’API. Les API ont toujours été un pilier du réseau X. La première API est arrivée très peu de temps après le lancement de X. Lorsque la géolocalisation des Publications a été introduite pour la première fois en 2009, elle a été proposée via une Geo API (et plus tard, la possibilité de « géolocaliser » une Publication a été intégrée à l’interface utilisateur de X.com). Aujourd’hui, les API de X alimentent le réseau de communication bidirectionnel qui est devenu une source d’actualités de dernière minute et de partage d’informations. Les possibilités de développer par‑dessus ce canal de communication mondial et en temps réel sont infinies. X met à disposition deux API historiques qui offrent un accès à chaque Publication rendue publique : Historical PowerTrack et la Full-Archive Search API. Les deux API proposent un ensemble d’opérateurs utilisés pour interroger et collecter les Publications d’intérêt. Ces opérateurs effectuent des correspondances sur une variété d’attributs associés à chaque Publication, des centaines d’attributs tels que le contenu textuel de la Publication, le nom de compte de l’auteur et les liens partagés dans la Publication. Les Publications et leurs attributs sont encodés en JSON, un format d’échange de données textuel courant. Ainsi, à mesure que de nouvelles fonctionnalités ont été introduites, de nouveaux attributs JSON sont apparus et, en général, de nouveaux opérateurs d’API ont été ajoutés pour effectuer des correspondances sur ces attributs. Si votre cas d’usage implique un besoin d’écouter ce que le monde a dit sur X, plus vous comprenez à quel moment les opérateurs ont commencé à disposer de métadonnées JSON auxquelles les faire correspondre, plus vos filtres Historical PowerTrack pourront être efficaces. Ensuite, nous présenterons quelques concepts clés qui posent le cadre pour comprendre comment les mises à jour des métadonnées de Publication influent sur la capacité à trouver le signal de données qui vous intéresse.

Concepts clés**

Des conventions utilisateurs aux objets de première classe de X

Les utilisateurs de X ont, de façon organique, introduit de nouveaux modes de communication désormais fondamentaux pour le réseau X. Un exemple fondateur est le hashtag, aujourd’hui presque universel sur l’ensemble des réseaux sociaux. Les hashtags ont été introduits comme un moyen d’organiser les conversations et les sujets. Sur un réseau comptant des centaines de millions de messages par jour, les outils permettant de trouver des Publications pertinentes sont essentiels, et les hashtags sont devenus un mécanisme clé. Peu après la montée en puissance des hashtags, ceux-ci ont reçu un statut officiel et une prise en charge native de la part de X. Quand les hashtags sont devenus un objet de « première classe », cela a eu de nombreuses implications. Cela signifiait que les hashtags devenaient cliquables/recherchables dans l’interface utilisateur de X.com. Cela signifiait également que les hashtags devenaient membres de la famille des entités de X, aux côtés des @mentions, des médias joints, des symboles boursiers et des liens partagés. Ces entités sont encodées de manière pratique dans un tableau JSON déjà parsé, ce qui facilite pour les développeurs leur traitement, leur analyse et leur stockage. Les Retweets sont un autre exemple de conventions définies par les utilisateurs devenant des objets officiels. Le Retweet est apparu comme un moyen de « transférer » du contenu à d’autres. Il a commencé comme un processus manuel consistant à copier/coller une Publication et à la faire précéder du motif « RT @ ». Ce processus a finalement été automatisé via un nouveau bouton Retweet, accompagné de nouvelles métadonnées JSON. Le Retweet « officiel » était né. D’autres exemples incluent les « mentions », le partage de médias et de liens web, ainsi que le partage d’une position géographique avec votre Publication. Chacun de ces modes d’utilisation a abouti à de nouvelles fonctionnalités de l’interface utilisateur de x.com, à de nouveaux JSON de support, et donc à de nouvelles façons de faire correspondre des Publications. L’ensemble de ces attributs fondamentaux des Publications a donné lieu à des opérateurs PowerTrack utilisés pour effectuer des correspondances sur ces attributs.

Métadonnées de Publication, mutabilité, mises à jour et actualité

Bien que les Publications puissent contenir jusqu’à un nombre fixe de caractères, la description JSON d’une Publication se compose de plus de 100 attributs. Il s’agit d’attributs tels que qui a publié, à quel moment, s’il s’agit d’une Publication originale ou d’un Retweet, ainsi que d’un tableau d’objets de premier niveau tels que les hashtags, les mentions et les liens partagés. Pour le compte qui a publié, il existe un objet User (ou Actor) avec un ensemble d’attributs qui fournissent le profil de l’utilisateur et d’autres métadonnées du compte. Les profils incluent une courte description biographique, un lieu de résidence (texte libre), la langue préférée et un lien de site web facultatif. Certaines métadonnées de compte ne changent jamais (par exemple l’id utilisateur numérique et la date de création), d’autres changent lentement au fil du temps, tandis que d’autres attributs changent plus fréquemment. Les personnes changent d’emploi et déménagent. Les entreprises mettent à jour leurs informations. Lorsque vous collectez des Publications historiques, il est important de comprendre que certaines métadonnées sont telles qu’elles étaient au moment de la Publication, tandis que d’autres métadonnées sont telles qu’elles sont au moment où la requête est soumise Avec toutes les API historiques, la description du profil de l’utilisateur, le nom d’affichage et les attributs « home » du profil sont mis à jour avec les valeurs qu’ils ont au moment de la requête.

Médias « natifs »

X.com et les applications mobiles X permettent d’ajouter des photos et des vidéos à une Publication en cliquant sur un bouton et en parcourant vos galeries de photos. Maintenant qu’elles sont intégrées comme actions de base, les vidéos et photos partagées de cette façon sont appelées des médias « natifs ». De nombreux opérateurs de requête fonctionnent avec ces ressources « natives », notamment has:videos, has:images et has:media. Ceux-ci ne renvoient que des contenus média qui ont été partagés via les fonctionnalités de X. Pour faire correspondre d’autres médias hébergés en dehors de la plateforme X, vous devrez utiliser des opérateurs qui se basent sur les métadonnées d’URL. Avant donc d’entrer dans les détails produits de Historical PowerTrack et Full-Archive Search, faisons un tour de l’évolution de X, en tant que produit et plateforme, au fil du temps. Chronologie de X Vous trouverez ci-dessous une chronologie sélectionnée de X. La plupart de ces mises à jour de X ont, d’une manière ou d’une autre, fondamentalement affecté le comportement des utilisateurs, le contenu JSON des Publications, les opérateurs de requête, ou les trois à la fois. Si l’on considère X comme une plateforme d’API, les événements suivants ont, d’une manière ou d’une autre, affecté les charges utiles JSON utilisées pour encoder les Publications. En retour, ces détails JSON influencent la façon dont les API historiques de X les font correspondre. Notez que cette liste chronologique est globalement précise mais non exhaustive.

2006

  • Octobre
    • @replies devient une convention d’usage.
    • Les cashtagsapparaissentpourlapremieˋrefois,maisleurutilisationpourmentionnerdessymbolesboursiersnedevientcourantequaudeˊbutde2009.Lescashtags apparaissent pour la première fois, mais leur utilisation pour mentionner des symboles boursiers ne devient courante qu’au début de 2009. Les cashtags deviennent des liens cliquables et recherchables en juin 2012.
  • Novembre - Introduction des favoris.

2007

  • janvier - les @replies deviennent un type d’objet à part entière avec un bouton Répondre dans l’interface utilisateur et des métadonnées in_reply_to.
  • avril - les Retweets deviennent une convention.
  • août - les #hashtags apparaissent comme un outil principal pour rechercher et organiser les Publications.

2009

  • Février - les $cashtags deviennent d’usage courant pour discuter des symboles boursiers.
  • Mai - la version « bêta » des Retweets est introduite avec « Via @ » ajouté au début du corps de la Publication.
  • Juin - introduction des comptes vérifiés.
  • Août - les Retweets deviennent un objet de première classe avec le motif « RT @ » et les nouvelles métadonnées retweet_status.
  • Octobre - fonctionnalité de Listes lancée.
  • Novembre - l’API de géolocalisation des Publications est lancée, offrant pour la première fois aux utilisateurs un moyen de partager leur position via des applications tierces.

2010

  • Juin - X Places est lancé pour géolocaliser les Publications.
  • Août - Le bouton de Publication pour les sites web est lancé. Il simplifie le partage de liens.

2011

  • Mai - Lancement du bouton « Follow », qui facilite le suivi des comptes associés à des sites web.
  • Août - Introduction des photos natives.

2012

  • Juin - les $Cashtags deviennent des liens cliquables et recherchables.

2014

2015

  • Avril - Une modification de l’interface utilisateur de publication de X entraîne une diminution du nombre de Publications géolocalisées.
  • Octobre - Lancement de X Polls. Les sondages prenaient initialement en charge deux choix avec une période de vote de 24 heures. En novembre, les sondages ont commencé à prendre en charge quatre choix avec des périodes de vote de 5 minutes à sept jours. Les métadonnées de sondage ont été mises à disposition (format natif enrichi uniquement) en février 2017.

2016

2017

  • Février - Les métadonnées de sondage X sont incluses dans les métadonnées de Publication (format natif enrichi uniquement).
  • Avril - Introduction de « Simplified Replies », avec les comptes auxquels il est répondu qui ne sont pas comptabilisés dans la limite de 140 caractères (« dmw140, part 2 »).
2018 2022
  • 29 septembre - La possibilité de modifier des Publications est déployée auprès d’un petit groupe de test. Les métadonnées des Publications modifiées sont ajoutées à l’objet Publication lorsque c’est pertinent. Celles-ci incluent les objets edit_history et edit_controls. Ces métadonnées ne seront pas renvoyées pour les Publications créées avant l’ajout de la fonctionnalité d’édition. Aucun opérateur associé pour ces métadonnées. Pour en savoir plus sur le fonctionnement de la modification des Publications, consultez les principes fondamentaux de la modification des Publications
Conseils de filtrage Bien connaître la chronologie X indiquant quand et comment les nouvelles fonctionnalités ont été ajoutées peut vous aider à créer des requêtes plus efficaces. Ici, une requête désigne un filtre ou une règle appliqué par les API historiques X à l’archive de Publications, en utilisant des opérateurs PowerTrack pour faire correspondre le JSON de Publication. Un exemple est l’opérateur lang:, qui est utilisé pour faire correspondre des Publications dans une langue donnée. X fournit un service de classification linguistique (prenant en charge plus de 50 langues), et les API X fournissent ces métadonnées dans le JSON généré pour chaque Publication. Ainsi, si une Publication est écrite en espagnol, l’attribut JSON « lang » est défini sur « es ». Donc, si vous construisez un filtre avec la clause lang:es, il ne correspondra qu’aux messages de Publication classés comme espagnols. Les informations de chronologie peuvent également aider à mieux interpréter les données de Publication reçues. Supposons que vous recherchiez le partage de contenu à propos des Jeux olympiques d’été de 2008 et 2012. Si vous appliquez uniquement l’opérateur is:retweet pour faire correspondre les Retweets, aucune donnée ne correspondra en 2008. Cependant, pour 2012, il y aurait probablement des millions de Retweets. À partir de cela, vous pourriez potentiellement conclure à tort qu’en 2008 les Retweets n’étaient pas une convention d’utilisation, ou que simplement personne n’a fait de Retweet à propos de ces Jeux olympiques. Étant donné que les Retweets sont devenus un objet de première classe en 2009, vous devez ajouter une clause de règle ”RT @” pour aider à les identifier en 2008. Les Retweets et la classification linguistique des Publications sont tous deux des exemples d’attributs de Publication avec une longue histoire et de nombreux détails liés au produit. Ci-dessous, nous aborderons plus en détail ces éléments et d’autres catégories d’attributs importantes pour faire correspondre et comprendre les données de X.

Reconnaître les faux négatifs

Lorsqu’il s’agit de créer des filtres, il est important de garder à l’esprit que toutes les métadonnées sur lesquelles les Opérateurs font correspondre les résultats ont des dates de « naissance ». Si vous créez un filtre avec un Opérateur qui agit sur des métadonnées introduites après la Publication d’origine, vous obtiendrez un faux négatif. Par exemple, supposons que vous vous intéressiez à toutes les Publications qui mentionnent « snow » et partagent une vidéo. Si vous créez une règle avec l’Opérateur has:videos, qui fait correspondre les Publications comportant des vidéos natives, cette clause ne renverra aucune Publication antérieure à 2015. Cependant, le partage de vidéos était courant sur X bien avant 2015. Avant cela, les utilisateurs partageaient des liens vers des vidéos hébergées ailleurs, mais en 2015, X a intégré directement à la plateforme de nouvelles fonctionnalités de « partage de vidéo ». Pour trouver ces Publications plus anciennes qui vous intéressent, vous ajouteriez une clause de règle comme url:”youtube.com”. À noter qu’avec les API Search, il existe quelques exemples de métadonnées ayant été renseignées a posteriori lors de la reconstruction de l’index. Un bon exemple est celui des cashtags, qui sont devenus très utilisés pour discuter des symboles boursiers en 2009. Après l&#39;introduction de l&#39;opérateur cashtag en 2015, l’index Search a été reconstruit et, au cours de ce processus, l’entité de symbole a été extraite de tous les corps de Publications, y compris dès 2006, lorsque «  » était utilisé principalement comme argot : « J&#39;espère qu&#39;il neige bientôt$ ! ».

Identifier et filtrer les attributs de Publication importants pour votre cas d’utilisation

Certaines métadonnées, comme les id numériques de comptes X, existent depuis le premier jour (et sont un exemple de métadonnées de compte qui ne changent jamais). D’autres métadonnées n’ont été introduites que bien après le lancement de X en 2006. Des exemples de nouvelles métadonnées introduites incluent les métadonnées de Retweets, les emplacements des Publications, les titres et descriptions d’URL, ainsi que les médias « natifs ». Vous trouverez ci-dessous quelques-uns des types d’attributs de Publication les plus courants qui ont été fondamentalement affectés par ces mises à jour de la plateforme X. Le comportement de filtrage et de correspondance pour ces éléments dépend, dans la plupart des cas, de l’API historique des Publications que vous utilisez. Pour vous aider à déterminer quel produit est le mieux adapté à vos recherches et à votre cas d’utilisation, les détails relatifs aux attributs fournis ci-dessous incluent des informations générales sur les produits.

Profils X

Puisqu’au cœur de son fonctionnement X est un canal de communication mondial en temps réel, les recherches basées sur les données de Publication mettent souvent l’accent sur qui communique. Il est souvent utile de savoir où un utilisateur X considère être son domicile. Savoir qu’une bio de compte mentionne des centres d’intérêt et des loisirs peut souvent vous conduire à des Publications pertinentes. Il est très courant de vouloir surveiller les Publications émanant de comptes qui vous intéressent. Les attributs de profil sont essentiels pour tous ces cas d’utilisation. Chaque compte sur X possède un profil qui inclut des métadonnées telles que le @handle X, le nom d’affichage, une courte bio, le lieu de résidence (texte libre saisi par l’utilisateur), le nombre d’abonnés et bien d’autres encore. Certains attributs ne changent jamais, comme l’identifiant numérique de l’utilisateur et la date de création du compte. D’autres changent généralement au jour le jour, de semaine en semaine ou de mois en mois, comme le nombre de Publications publiées et le nombre de comptes suivis et d’abonnés. D’autres attributs de compte peuvent également changer à tout moment, mais ont tendance à changer moins fréquemment : nom d’affichage, lieu de résidence et bio. La charge utile JSON pour chaque Publication inclut des métadonnées de profil de compte pour l’auteur de la Publication. S’il s’agit d’un Retweet, elle inclut également les métadonnées de profil du compte qui a publié la Publication originale. La mutabilité des métadonnées de profil d’une Publication dépend entièrement du produit historique utilisé. Les Search APIs renvoient des Publications historiques avec les paramètres de profil tels qu’ils sont au moment de la récupération. Pour Historical PowerTrack, le profil est tel qu’il était au moment où la Publication a été publiée, à l’exception des données antérieures à 2011. Pour les Publications antérieures à 2011, les métadonnées de profil reflètent le profil tel qu’il était en septembre 2011.

Publication originale et Retweets

Les Retweets sont un autre exemple de conventions initiées par les utilisateurs qui sont devenues des objets officiels. Le Retweet est apparu comme un moyen de « transférer » du contenu à d’autres. Il a commencé comme un processus manuel consistant à copier/coller une Publication et à la faire précéder du motif « RT @ ». Ce processus a finalement été automatisé via un nouveau bouton Retweet, accompagné de nouvelles métadonnées JSON. Le Retweet « officiel » est né et l’action de retweeter est devenue un événement de Publication à part entière. Avec le nouveau bouton Retweet, de nouvelles métadonnées ont été introduites, comme le payload complet de la Publication originale. Le fait qu’une Publication soit originale ou partagée est un critère de filtrage courant. Dans certains cas, seul le contenu original est nécessaire. Dans d’autres, l’engagement autour des Publications est primordial, et les Retweets sont alors essentiels. L’opérateur PowerTrack is:retweet permet aux utilisateurs d’inclure ou d’exclure les Retweets. Si vous extrayez des données d’avant août 2009, vous devez prévoir deux stratégies pour la prise en compte (ou non) des Retweets. Avant août 2009, il est nécessaire de vérifier le message de la Publication elle‑même, en utilisant une correspondance de phrase exacte, pour trouver les correspondances avec le motif « @RT ». Pour les périodes postérieures à août 2009, l’opérateur is:retweet est disponible.

Classifications linguistiques des Publications

La langue dans laquelle une Publication est rédigée est un sujet d’intérêt courant. La langue d’une Publication peut aider à en déduire la localisation et, souvent, une seule langue spécifique est nécessaire pour l’analyse ou l’affichage. (Les profils X disposent également d’un paramètre de langue préférée.) Pour filtrer en fonction de la classification linguistique d’une Publication, les produits historiques de X (Search API et Historical PowerTrack) sont assez différents. Lors de la création de l’archive de recherche, toutes les Publications ont été complétées rétroactivement avec la classification linguistique de X. Par conséquent, l’opérateur lang: est disponible pour l’ensemble de l’archive des Publications. Avec Historical PowerTrack, les métadonnées de classification linguistique de X sont disponibles dans l’archive à partir du 26 mars 2013. 

Géoréférencement des Publications

Pouvoir déterminer où une Publication a été publiée (c’est-à-dire la géoréférencer) est important pour de nombreux cas d’utilisation. Il existe trois principales méthodes pour géoréférencer des Publications :
  • Références géographiques dans le message d’une Publication
  • Publications géolocalisées par l’utilisateur
  • Localisation « domicile » du profil de compte définie par un utilisateur
Références géographiques dans le message d’une Publication
L’appariement sur les références géographiques dans le message d’une Publication, bien que souvent la méthode la plus complexe puisqu’elle dépend de connaissances locales, est une option applicable à l’ensemble de l’archive de Publications. Voici un exemple de correspondance géoréférencée de 2006 pour la zone de San Francisco, basée sur un filtre « golden gate » : https://x.com/biz/statuses/28311
Publications géolocalisées par l’utilisateur
En novembre 2009, X a introduit son Post Geotagging API, qui permettait de géolocaliser des Publications avec un emplacement exact. En juin 2010, X a introduit X Places, qui représentent une zone géographique à l’échelle d’un lieu, d’un quartier ou d’une ville. Environ 1 à 2 % des Publications sont géolocalisées à l’aide de l’une ou l’autre de ces méthodes. L’historique de géolocalisation disponible dépend de l’API Historical que vous utilisez. Avec les Search APIs, la possibilité de commencer à faire correspondre des Publications à l’aide de certains Geo Operators a débuté en mars 2010, et avec d’autres en février 2015. Si vous utilisez Historical PowerTrack, le géoréférencement commence le 1er septembre 2011. Lors de la création de l’archive Historical PowerTrack, toutes les géolocalisations antérieures à cette date n’ont pas été prises en compte.
L’emplacement « domicile » du profil du compte défini par un utilisateur
Tous les utilisateurs X ont la possibilité de définir leur Profile Location, qui indique leur lieu de résidence. Des millions d’utilisateurs X fournissent cette information, ce qui accroît considérablement la quantité de géodonnées dans le X Firehose. Ces métadonnées d’emplacement sont une chaîne de texte libre, générée par l’utilisateur et non normalisée. Environ 30 % des comptes disposent de métadonnées Profile Geo qui peuvent être résolues au niveau du pays. Comme pour la géolocalisation des Publications, les méthodes de correspondance et les périodes disponibles dépendent de l’API historique que vous utilisez. Historical PowerTrack permet aux utilisateurs d’effectuer leur propre appariement personnalisé sur ces chaînes libres. Pour faciliter ce processus, X fournit également un Profile Geo Enrichment qui effectue, lorsque c’est possible, le géocodage et fournit des métadonnées normalisées ainsi que les opérateurs correspondants. Les opérateurs Profile Geo sont disponibles à la fois dans Historical PowerTrack et dans les Search APIs. Avec Historical PowerTrack, ces métadonnées Profile Geo sont disponibles à partir de juin 2014. Avec les Search APIs, ces métadonnées sont disponibles à partir de février 2015. Le partage de liens vers des pages web, de photos et de vidéos a toujours été un cas d’usage fondamental de X. Au début de son histoire, toutes ces actions impliquaient l’inclusion d’un lien URL directement dans le message de la Publication. En 2011, X a intégré le partage de photos directement dans son interface utilisateur. En 2016, les vidéos natives ont été ajoutées. Compte tenu de cette histoire, il existe une variété d’opérateurs de filtrage utilisés pour cibler ce type de contenu. Il existe un ensemble d’opérateurs qui vérifient si les Publications comportent des liens, des photos et des vidéos partagés. De plus, comme la plupart des URL partagées sur X sont raccourcies pour consommer moins de caractères d’une Publication (par exemple, générées par un service tel que bitly ou tinyurl), X fournit des enrichissements de données qui génèrent une URL complète et développée sur laquelle il est possible d’établir des correspondances. Par exemple, si vous souhaitez faire correspondre des Publications incluant des liens qui traitent de X et des systèmes d’alerte précoce, un filtre qui fait référence à « severe weather communication » correspondra à une Publication contenant cette URL http://bit.ly/1XV1tG4. En mars 2012, l’enrichissement d’URL développée a été introduit. Avant cette date, le corps des Publications incluait uniquement l’URL fournie par l’utilisateur. Ainsi, si l’utilisateur incluait une URL raccourcie, il pouvait être difficile de faire correspondre les URL (développées) d’intérêt. Avec Historical PowerTrack et les API Search, ces métadonnées sont disponibles à partir de mars 2012. En juillet 2016, l’enrichissement d’URL améliorée a été introduit. Cette version améliorée fournit le titre HTML et la description du site web dans le corps de la Publication, ainsi que des opérateurs permettant de faire des correspondances sur ces éléments. Avec Historical PowerTrack, ces métadonnées deviennent disponibles en juillet 2016. Avec les API Search, ces métadonnées commencent à apparaître en décembre 2014. En septembre 2016, X a introduit les « pièces jointes natives », pour lesquelles un lien partagé final n’est pas comptabilisé dans la limite de 140 caractères d’une Publication. Les deux enrichissements d’URL continuent de s’appliquer à ces liens partagés. Pour d’autres détails spécifiques au produit concernant le filtrage d’URL, consultez les articles correspondants pour plus d’informations.