Vai al contenuto principale
Consulta le nostre guide di confronto:

X API: Dizionario dei dati di Enterprise

Introduzione

Enterprise I Post sono il mattone fondamentale di tutto ciò che riguarda X. Tutte le X API che restituiscono Post forniscono i dati codificati in JavaScript Object Notation (JSON). JSON si basa su coppie chiave-valore, con attributi nominati e valori associati. Gli Oggetti Post recuperati dall’API includono l’“aggiornamento di stato” di un User di X, ma anche Retweet, risposte e Tweet con citazione sono tutti Oggetti Post. Se un Post è correlato a un altro Post, come un Retweet, una risposta o un Tweet con citazione, ciascuno verrà identificato o incorporato nell’Oggetto Post. Anche il Post più semplice nel formato dati nativo di X presenta oggetti JSON annidati per rappresentare altri attributi di un Post, come l’autore, gli users menzionati, il luogo taggato, gli hashtag, i simboli cashtag, i media o i link URL. Quando si lavora con i dati di X, questo è un concetto importante da comprendere. Il formato dei dati del Post che riceverai dalla X API dipende dal tipo di Post ricevuto, dalla X API utilizzata e dalle impostazioni di formattazione. Gli endpoint Enterprise che restituiscono Oggetti Post sono stati aggiornati per fornire i metadata necessari a comprendere la cronologia delle modifiche del Post. Per saperne di più su questi metadata, visita la pagina “Modifica Post”.
Nel formato nativo di X, il payload JSON includerà attributi di livello principale e oggetti JSON annidati (rappresentati qui con la notazione {}):
{
	"created_at": "Fri Feb 14 19:00:55 +0000 2020",
	"id_str": "1228393702244134912",
	"text": "Cosa ha scritto lo sviluppatore nel suo biglietto di San Valentino?\n  \nwhile(true) {\n    I = Love(You);  \n}",
	"entities": {
		"hashtags": [],
		"symbols": [],
		"user_mentions": [],
		"urls": []
	},
	"user": {
		"entities": {
			"url": {}
		}
	},
	"place": {}
}

Formati di dati disponibili

Nota: si consiglia vivamente di utilizzare il formato Enriched Native per le API di dati Enterprise. 
  • Il formato Enriched Native include tutti i nuovi metadata introdotti dal 2017, come i metadata dei sondaggi, e metriche aggiuntive come reply_count e quote_count.
  • Il formato Activity Streams non è stato aggiornato con nuovi metadata o arricchimenti dalla modifica del numero di caratteri del 2017.
Le API di dati Enterprise forniscono dati in due formati. Il formato Enterprise più vicino al formato nativo Standard v1.1 è Enriched Native. Il formato di dati Enterprise legacy è Activity Streams, originariamente implementato e utilizzato da Gnip come formato normalizzato su X e presso altri provider di dati social del periodo. Sebbene questo formato sia ancora disponibile, X ha investito in nuove funzionalità e sviluppi solo sul formato Enriched Native dal 2017. Il formato Enriched Native è esattamente ciò che il nome suggerisce: include oggetti nativi di X oltre ad arricchimenti aggiuntivi disponibili per i prodotti di dati Enterprise, come i metadata di URL unwinding, profile geo, metadata dei sondaggi e metriche di engagement aggiuntive.  

Confronto degli oggetti per formato di dati

Indipendentemente dal caso d’uso su X, comprendere cosa rappresentano questi Oggetti Post e attributi codificati in JSON è fondamentale per individuare correttamente i segnali di dati di interesse. Per facilitare questo processo, è disponibile un set di pagine dedicate a ciascun oggetto in ciascun formato di dati. Riflettendo la gerarchia JSON sopra, ecco i link a ciascuno di questi oggetti:
Native EnrichedActivity Streams
Link Oggetto PostLink Oggetto Activity
Link Oggetto utenteLink Oggetto Actor
Link Oggetto EntitiesLink Oggetto X entities
Link Oggetto Extended entitiesLink Oggetto X extended entities
Link Oggetto GeoLink Oggetto Location
n/aLink Oggetto Gnip

Best practice di parsing

  • Il JSON di X è codificato in UTF-8.
  • I parser dovrebbero tollerare con facilità la variabilità nell’ordinamento dei fields. Si dovrebbe presumere che il JSON dei Post sia fornito come un hash non ordinato di data.
  • I parser dovrebbero tollerare l’aggiunta di nuovi fields.
  • I parser JSON devono tollerare fields mancanti, poiché non tutti i fields compaiono in tutti i contesti.
  • In generale è accettabile considerare un field impostato a null, un insieme vuoto e l’assenza di un field come equivalenti.

Oggetti di data arricchiti nativi per Enterprise

Oggetto Tweet Native Enriched

Vuoi sapere come il formato dati Native Enriched corrisponde al formato X API v2? Consulta la nostra guida di confronto: Native Enriched rispetto a X API v2

Oggetto Post

Quando si utilizzano i prodotti di dati Enterprise, si noterà che gran parte del data dictionary è simile al formato nativo dei dati dei Post, con alcune ulteriori metadati arricchiti. Il livello base del formato nativo arricchito utilizza molti degli stessi nomi di oggetto del formato dati X API v1.1. L’oggetto Post ha un lungo elenco di attributi di “livello root”, inclusi attributi fondamentali come id, created_at e text. Gli oggetti Post presentano anche oggetti annidati che includono user, entities ed extended_entities. Gli oggetti Post possono inoltre contenere altri oggetti Post annidati come retweeted_status, quoted_status ed extended_tweet. Il formato nativo arricchito include inoltre un oggetto matching_rules.
Dizionario dati di X
Di seguito trovi il dizionario dati per questi attributi di livello radice, oltre ai link ai dizionari dati degli oggetti figli.
AttributoTipoDescrizione
created_atStringOrario UTC di creazione di questo Post. Esempio:

“created_at”: “Wed Oct 10 20:19:24 +0000 2018”
idInt64Rappresentazione numerica intera dell’identificatore univoco per questo Post. Questo numero è superiore a 53 bit e alcuni linguaggi di programmazione potrebbero presentare difficoltà/difetti silenti nell’interpretarlo. È sicuro utilizzare un intero con segno a 64 bit per memorizzare questo identificatore. Utilizzare id_str per recuperare l’identificatore in modo sicuro. Consultare ID di X per maggiori informazioni. Esempio:

“id”:1050118621198921728
id_strStringRappresentazione stringa dell’identificatore univoco per questo Post. Le implementazioni dovrebbero utilizzare questo campo anziché il numero intero di grandi dimensioni in id. Esempio:

“id_str”:“1050118621198921728”
textStringTesto UTF-8 effettivo dell’aggiornamento di stato. Consultare X-text per dettagli sui caratteri attualmente considerati validi. Esempio:

“text”:“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
sourceStringStrumento utilizzato per pubblicare il Post, come stringa formattata HTML. I Post dal sito web di X hanno un valore source di web.

Esempio:

“source”:“X Web Client”
truncatedBooleanIndica se il valore del parametro text è stato troncato, ad esempio a seguito di un retweet che supera il limite originale di 140 caratteri per il testo del Post. Il testo troncato termina con i puntini di sospensione, come ... Poiché X ora rifiuta i Post lunghi anziché troncarli, la grande maggioranza dei Post avrà questo valore impostato su false. Si noti che mentre i retweet nativi potrebbero avere la proprietà text di primo livello accorciata, il testo originale sarà disponibile nell’oggetto retweeted_status e il parametro truncated sarà impostato sul valore dello stato originale (nella maggior parte dei casi, false). Esempio:

“truncated”:true
in_reply_to_status_idInt64Nullable. Se il Post rappresentato è una risposta, questo campo conterrà la rappresentazione numerica intera dell’ID del Post originale. Esempio:

“in_reply_to_status_id”:1051222721923756032
in_reply_to_status_id_strStringNullable. Se il Post rappresentato è una risposta, questo campo conterrà la rappresentazione stringa dell’ID del Post originale. Esempio:

“in_reply_to_status_id_str”:“1051222721923756032”
in_reply_to_user_idInt64Nullable. Se il Post rappresentato è una risposta, questo campo conterrà la rappresentazione numerica intera dell’ID dell’autore del Post originale. Non sarà necessariamente sempre l’utente direttamente menzionato nel Post. Esempio:

“in_reply_to_user_id”:6253282
in_reply_to_user_id_strStringNullable. Se il Post rappresentato è una risposta, questo campo conterrà la rappresentazione stringa dell’ID dell’autore del Post originale. Non sarà necessariamente sempre l’utente direttamente menzionato nel Post. Esempio:

“in_reply_to_user_id_str”:“6253282”
in_reply_to_screen_nameStringNullable. Se il Post rappresentato è una risposta, questo campo conterrà il nome utente dell’autore del Post originale. Esempio:

“in_reply_to_screen_name”:“xapi”
userOggetto utenteL’utente che ha pubblicato questo Post. Consultare il dizionario dati utente per l’elenco completo degli attributi.

Esempio che evidenzia attributi selezionati:

{ “user”: <br/> “id”: 6253282,
“id_str”: “6253282”,
“name”: “X API”,
“screen_name”: “API”,
“location”: “San Francisco, CA”,
“url”: “https://developer.x.com”,
“description”: “The Real X API. Tweets about API changes, service issues and our Developer Platform. Don’t get an answer? It’s on my website.”,
“verified”: true,
“followers_count”: 6129794,
“friends_count”: 12,
“listed_count”: 12899,
“favourites_count”: 31,
“statuses_count”: 3658,
“created_at”: “Wed May 23 06:01:13 +0000 2007”,
“utc_offset”: null,
“time_zone”: null,
“geo_enabled”: false,
“lang”: “en”,
“contributors_enabled”: false,
“is_translator”: false,
“profile_background_color”: “null”,
“profile_background_image_url”: “null”,
“profile_background_image_url_https”: “null”,
“profile_background_tile”: null,
“profile_link_color”: “null”,
“profile_sidebar_border_color”: “null”,
“profile_sidebar_fill_color”: “null”,
“profile_text_color”: “null”,
“profile_use_background_image”: null,
“profile_image_url”: “null”,
“profile_image_url_https”: “https://pbs.twimg.com/profile&#95;images/942858479592554497/BbazLO9L&#95;normal.jpg”,
“profile_banner_url”: “https://pbs.twimg.com/profile&#95;banners/6253282/1497491515”,
“default_profile”: false,
“default_profile_image”: false,
“following”: null,
“follow_request_sent”: null,
“notifications”: null
}
}
coordinatesCoordinatesNullable. Rappresenta la posizione geografica di questo Post come riportata dall’utente o dall’applicazione client. L’array di coordinate interno è formattato come geoJSON (longitudine prima, poi latitudine). Esempio:

“coordinates”:
<br/> “coordinates”:
[
-75.14310264,
40.05701649
],
“type”:“Point”
}
placePlacesNullable Quando presente, indica che il Post è associato (ma non necessariamente originario) a un Place Esempio:

“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_idInt64Questo campo viene visualizzato solo quando il Post è un Quote Tweet. Questo campo contiene il valore intero dell’ID del Post del Tweet citato. Esempio:

“quoted_status_id”:1050119905717055488
quoted_status_id_strStringQuesto campo viene visualizzato solo quando il Post è un Quote Tweet. Questa è la rappresentazione stringa dell’ID del Post del Tweet citato. Esempio:

“quoted_status_id_str”:“1050119905717055488”
is_quote_statusBooleanIndica se questo è un Quoted Tweet. Esempio:

“is_quote_status”:false
quoted_statusPostQuesto campo viene visualizzato solo quando il Post è un Quote Tweet. Questo attributo contiene l’Oggetto Post del Post originale che è stato citato.
retweeted_statusPostGli utenti possono amplificare la diffusione di Post creati da altri utenti tramite Retweet. I Retweet possono essere distinti dai Post tipici per la presenza di un attributo retweeted_status. Questo attributo contiene una rappresentazione del Post originale che è stato ritwittato. Si noti che i retweet di retweet non mostrano rappresentazioni del retweet intermedio, ma solo il Post originale. (Gli utenti possono anche annullare un retweet che hanno creato eliminando il loro retweet.)
quote_countIntegerNullable. Indica approssimativamente quante volte questo Post è stato citato dagli utenti di X. Esempio:

“quote_count”:33

Nota: Questo oggetto è disponibile solo con i prodotti di livello Premium ed Enterprise.
reply_countIntNumero di volte che questo Post ha ricevuto risposta. Esempio:

“reply_count”:30

Nota: Questo oggetto è disponibile solo con i prodotti di livello Premium ed Enterprise.
retweet_countIntNumero di volte che questo Post è stato ritwittato. Esempio:

“retweet_count”:160
favorite_countIntegerNullable. Indica approssimativamente quante volte questo Post è stato messo tra i like dagli utenti di X. Esempio:

“favorite_count”:295
entitiesEntitiesEntità che sono state estratte dal testo del Post. Vedi anche Entities in X Objects. Esempio:

“entities”:
<br/> “hashtags”:[],
“urls”:[],
“user_mentions”:[],
“media”:[],
“symbols”:[]
“polls”:[]
}
extended_entitiesExtended EntitiesQuando tra una e quattro foto native o un video o una GIF animata sono presenti nel Post, contiene un array ‘media’ di metadata. Questo è disponibile anche nei Quote Tweet. Vedi anche Entities in X Objects. Esempio:

“entities”:
<br/> “media”:[]
}
favoritedBooleanNullable. Indica se questo Post è stato messo tra i like dall’utente autenticato. Esempio:

“favorited”:true
retweetedBooleanIndica se questo Post è stato ritwittato dall’utente autenticato. Esempio:

“retweeted”:false
possibly_sensitiveBooleanNullable. Questo campo indica che il contenuto potrebbe essere riconosciuto come sensibile. L’autore del Post può selezionare nelle proprie preferenze dell’account e scegliere “Contrassegna i media che pubblichi come contenenti materiale che potrebbe essere sensibile” così ogni Post creato successivamente ha questo flag impostato.

Questo può anche essere giudicato e etichettato da un agente di supporto interno di X.

”possibly_sensitive”:false
filter_levelStringIndica il valore massimo del parametro filter_level che può essere utilizzato e che comunque trasmetterà questo Post in streaming. Quindi un valore di medium sarà trasmesso in streaming su none, low e medium.

Esempio:

“filter_level”: “low”
langStringNullable. Quando presente, indica un identificatore di lingua BCP 47 corrispondente alla lingua rilevata automaticamente del testo del Post, o und se non è stato possibile rilevare alcuna lingua.

Esempio:

“lang”: “en”
edit_historyObjectIdentificatori univoci che indicano tutte le versioni di un Post. Per i Post senza modifiche, sarà presente un solo ID. Per i Post con una cronologia di modifiche, saranno presenti più ID, disposti in ordine crescente che riflette l’ordine delle modifiche, con la versione più recente nell’ultima posizione dell’array.

Gli ID del Post possono essere utilizzati per recuperare e visualizzare le versioni precedenti di un Post.

Esempio:

edit_history”: <br/> “initial_tweet_id”: “1283764123”
“edit_tweet_ids”: [“1283764123”, “1394263866”]
}
edit_controlsObjectQuando presente, indica per quanto tempo un Post è ancora modificabile e il numero di modifiche rimanenti. I Post sono modificabili solo per i primi 30 minuti dopo la creazione e possono essere modificati fino a cinque volte.

Gli ID del Post possono essere utilizzati per recuperare e visualizzare le versioni precedenti di un Post.

Esempio:

“edit_controls”: <br/> “editable_until_ms”: 123
“edits_remaining”: 3
}
editableBooleanQuando presente, indica se un Post era idoneo per la modifica al momento della pubblicazione. Questo campo non è dinamico e non cambierà da True a False quando un Post raggiunge il limite di tempo per la modifica o il numero massimo di modifiche. Le seguenti caratteristiche del Post faranno sì che questo campo sia false:

_ Il Post è promosso
_ Il Post ha un sondaggio
_ Il Post è una risposta non-self-thread
_ Il Post è un retweet (nota che i Quote Tweet sono idonei per la modifica)
_ Il Post è nullcast
_ Post della Community
_ Post Superfollow
_ Post Collaborativo
matching_rulesArray of Rule ObjectsPresente nei prodotti filtrati come X Search e PowerTrack. Fornisce l’id e il tag associati alla regola che ha trovato corrispondenza con il Post. Maggiori informazioni sulle regole di corrispondenza qui. Con PowerTrack, più di una regola può trovare corrispondenza con un Post.

Esempio:

“matching_rules”: ” [<br/> “tag”: “xapi emojis”,
“id”: 1050118621198921728,
“id_str”: “1050118621198921728”
}]“
Attributi aggiuntivi del Post
Le X API che forniscono Post (ad es. l’endpoint GET statuses/lookup) possono includere i seguenti attributi aggiuntivi del Post:
AttributeTypeDescription
current_user_retweetObjectProspettico Viene restituito solo nei metodi che supportano il parametro include_my_retweet, quando impostato su true. Fornisce l’ID del Post del retweet dell’utente (se presente) relativo a questo Post. Esempio:

“current_user_retweet”: <br/> “id”: 6253282,
“id_str”: “6253282”
}
scopesObjectUn insieme di coppie chiave-valore che indica la consegna contestuale prevista del Post che lo contiene. Attualmente utilizzato dai Promoted Products di X. Esempio:

“scopes”:{“followers”:false}
withheld_copyrightBooleanQuando presente e impostato su “true”, indica che questo contenuto è stato bloccato a seguito di una segnalazione DMCA. Esempio:

“withheld_copyright”: true
withheld_in_countriesArray of StringQuando presente, indica un elenco di codici paese a due lettere in maiuscolo dai quali questo contenuto è bloccato. X supporta i seguenti valori non relativi a paesi per questo campo:

“XX” - Contenuto bloccato in tutti i paesi “XY” - Contenuto bloccato a causa di una richiesta DMCA.

Esempio:

“withheld_in_countries”: [“GR”, “HK”, “MY”]
withheld_scopeStringQuando presente, indica se il contenuto bloccato è lo “status” o un “user”.

Esempio:

“withheld_scope”: “status”
Attributi obsoleti
CampotypeDescrizione
geoObjectObsoleto. Nullable. Usa il campo coordinates. Questo attributo obsoleto ha le coordinate nel formato [lat, long], mentre tutta la geolocalizzazione dei Post è nel formato [long, lat].

Oggetti Post annidati

In diversi casi, un Oggetto Post include altri oggetti annidati. Se lavori con oggetti annidati, quel payload JSON conterrà più Oggetti Post e ciascun Oggetto Post può includere a sua volta i propri oggetti. L’oggetto a livello root conterrà informazioni sul tipo di azione eseguita, ad esempio se si tratta di un Retweet o di un Quote Tweet, e può anche contenere un oggetto che descrive il Post “originale” condiviso. I Post estesi includono un oggetto esteso annidato che supera i 140 caratteri, utilizzato per evitare modifiche non retrocompatibili quando l’aggiornamento è stato introdotto nel 2017. Ogni dizionario di oggetti annidati è descritto di seguito. Retweet I Retweet contengono sempre due Oggetti Post. Il Post “originale” oggetto del Retweet è fornito in un oggetto “retweeted_status”. L’oggetto a livello root incapsula il Retweet stesso, includendo un oggetto utente per l’account che esegue l’azione di Retweet e l’orario del Retweet. Il Retweet è un’azione per condividere un Post con i propri follower e non è possibile aggiungere nuovi contenuti. Inoltre, non è possibile fornire una (nuova) posizione con un Retweet. Sebbene il Post “originale” possa essere geotaggato, gli oggetti “geo” e “place” del Retweet saranno sempre null. Anche prima dell’introduzione dei Post estesi, in alcuni casi l’oggetto “entities” a livello root risultava troncato e incompleto a causa della stringa “RT @username ” aggiunta al messaggio del Post oggetto del Retweet. Nota che se un Retweet viene a sua volta retwittato, “retweet_status” punterà comunque al Post originale, il che significa che il Retweet intermedio non è incluso. Un comportamento analogo si riscontra quando si utilizza x.com per “visualizzare” un Retweet: se copi l’ID del Post univoco assegnato all’“azione” di Retweet, viene mostrato il Post originale. Di seguito è riportato un esempio di struttura per un Retweet. Anche in questo caso, durante l’analisi dei Retweet, è fondamentale analizzare l’oggetto “retweeted_status” per ottenere il messaggio del Post originale completo e i metadati delle entità.
{
	"tweet": {
		"text": "RT @author messaggio originale",
		"user": {
			"screen_name": "Retweeter"
		},
		"retweeted_status": {
			"text": "messaggio originale",
			"user": {
				"screen_name": "OriginalTweeter"
			},
			"place": {},
			"entities": {},
			"extended_entities": {}
		}
	},
	"entities": {},
	"extended_entities": {}
}
Quote Tweets
I Quote Tweets sono molto simili ai Retweet, tranne per il fatto che includono un nuovo messaggio Post. Questi nuovi messaggi possono contenere il proprio set di hashtag, link e altre “entities” metadata. I Quote Tweets possono anche includere informazioni sulla posizione condivise dall’utente che pubblica il Quote Tweet, insieme a contenuti multimediali come GIF, video e foto. I Quote Tweets contengono almeno due Oggetto Post e, in alcuni casi, tre. Il Post citato, che a sua volta può essere un Tweet citato, è fornito in un oggetto “quoted_status”. L’oggetto a livello root incapsula il Quote Tweet stesso, includendo un oggetto utente per l’account che esegue l’azione di condivisione e l’ora del Quote Tweet. Nota che ora i Quote Tweets possono avere foto, GIF o video aggiunti tramite l’interfaccia utente ‘Post’. Quando nel messaggio del Quote Tweet sono inclusi link a contenuti multimediali ospitati esternamente, le “entities.urls” a livello root li descriveranno. I contenuti multimediali allegati ai Quote Tweets appariranno nelle “extended_entities” metadata a livello root. Quando i Quote Tweets sono stati lanciati per la prima volta, un link abbreviato (URL t.co) veniva aggiunto al messaggio del Post “originale” e fornito nel campo “text” a livello root. Inoltre, i metadata per quell’URL t.co erano inclusi nell’array “entities.urls” a livello root. Nel maggio 2018 abbiamo modificato questo comportamento in modo che l’URL t.co abbreviato al Tweet citato non sia più incluso nel campo “text” a livello root. In secondo luogo, i metadata per il Tweet citato non saranno inclusi nei metadata “entities.urls”. Invece, i metadata URL per il Tweet citato saranno in un nuovo oggetto “quoted_status_permalink” a livello root (o di livello superiore), quindi allo stesso livello dell’oggetto “quoted_status”. Di seguito è riportato un esempio di struttura per un Quote Tweet che utilizza questa formattazione originale.
{
	"created_at": "Tue Feb 14 19:30:06 +0000 2017",
	"id_str": "831586333415976960",
	"text": "Assolutamente da citare! 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": "Questo è un test del sistema di tweeting \ud83d\ude0e per aggiornare #supportdocs @twitterboulder qui: 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": "Test di citazione 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": {}
}
Post estesi
Il JSON che descrive i Post estesi è stato introdotto quando, nel novembre 2017, sono stati lanciati i Post da 280 caratteri. Il JSON dei Post è stato esteso per includere questi messaggi più lunghi, senza interrompere le migliaia di app che analizzano questi oggetti fondamentali di X. Per garantire la piena retrocompatibilità, sono stati mantenuti il campo originario ‘text’ da 140 caratteri e gli oggetti delle entità ricavati da esso. Nel caso di Post più lunghi di 140 caratteri, questo campo ‘text’ a livello root risulterebbe troncato e quindi incompleto. Poiché gli oggetti ‘entities’ a livello root contengono array di metadati chiave ricavati dal messaggio ‘text’, come hashtag e link inclusi, queste raccolte risulterebbero incomplete. Ad esempio, se un messaggio di Post fosse lungo 200 caratteri, con un hashtag alla fine, l’array legacy ‘entities.hashtags’ a livello root non lo includerebbe. È stato introdotto un nuovo campo ‘extended_tweet’ per contenere i messaggi di Post più lunghi e i metadati completi delle entità. L’oggetto “extended_tweet” fornisce il campo “full_text” che contiene il messaggio di Post completo, non troncato, quando supera i 140 caratteri. L’oggetto “extended_tweet” contiene anche un oggetto “entities” con array completi di hashtag, link, menzioni, ecc. I Post estesi sono identificati da un booleano “truncated” a livello root. Quando è true (“truncated”: true), i campi “extended_tweet” devono essere analizzati invece dei campi a livello root. Nel seguente esempio JSON, si noti che il campo “text” a livello root è troncato e l’array “entities.hashtags” a livello root è vuoto anche se il messaggio del Post include tre hashtag. Poiché questo è un Post esteso, il campo “truncated” è impostato su true e l’oggetto “extended_tweet” fornisce i metadati completi del Post per “full_text” ed “entities”.
{
	"created_at": "Thu May 10 17:41:57 +0000 2018",
	"id_str": "994633657141813248",
	"text": "Solo un altro Tweet Esteso con più di 140 caratteri, generato come esempio di documentazione, che mostra che [\"tru… https://t.co/U7Se4NM7Eu",
	"display_text_range": [0, 140],
	"truncated": true,
	"user": {
		"id_str": "944480690",
		"screen_name": "FloodSocial"
	},
	"extended_tweet": {
		"full_text": "Solo un altro Tweet Esteso con più di 140 caratteri, generato come esempio di documentazione, che mostra che [\"truncated\": true] e la presenza di un oggetto \"extended_tweet\" con testo completo ed \"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": []
	}
}

Oggetto utente nativo arricchito

L’oggetto utente contiene i metadati dell’account utente X che descrivono l’utente X di riferimento. 

Dizionario dei dati utente

AttributoTipoDescrizione
idInt64La rappresentazione numerica dell’identificatore univoco per questo Utente. Questo numero è maggiore di 53 bit e alcuni linguaggi di programmazione potrebbero avere difficoltà/difetti silenti nell’interpretarlo. L’utilizzo di un intero con segno a 64 bit per memorizzare questo identificatore è sicuro. Utilizza id_str per recuperare l’identificatore in modo sicuro. Consulta X IDs per maggiori informazioni. Esempio:

“id”: 6253282
id_strStringLa rappresentazione stringa dell’identificatore univoco per questo Utente. Le implementazioni dovrebbero utilizzare questo piuttosto che l’intero grande, possibilmente non gestibile in id. Esempio:

“id_str”: “6253282”
nameStringIl nome dell’utente, come definito dall’utente stesso. Non necessariamente il nome di una persona. Tipicamente limitato a 50 caratteri, ma soggetto a modifiche. Esempio:

“name”: “API”
screen_nameStringIl nome utente, handle o alias con cui questo utente si identifica. I screen_name sono univoci ma soggetti a modifiche. Utilizza id_str come identificatore utente quando possibile. Tipicamente un massimo di 15 caratteri, ma alcuni account storici potrebbero esistere con nomi più lunghi. Esempio:

“screen_name”: “api”
locationStringNullable . La posizione definita dall’utente per il profilo di questo account. Non necessariamente una posizione, né interpretabile automaticamente. Questo campo sarà occasionalmente interpretato in modo approssimativo dal servizio di ricerca. Esempio:

“location”: “San Francisco, CA”
derivedArray di Oggetti EnrichmentSolo API Enterprise. Collezione di metadata di Enrichment derivati per l’utente. Fornisce i metadata di Enrichment Profile Geo. Consulta la documentazione di riferimento per maggiori informazioni, inclusi i dizionari dati JSON. Esempio:

“derived”:“locations”: [“country”:“United States”,“country_code”:“US”,“locality”:“Denver”]
urlStringNullable . Un URL fornito dall’utente in associazione con il proprio profilo. Esempio:

“url”: “https://developer.x.com
descriptionStringNullable . La stringa UTF-8 definita dall’utente che descrive il proprio account. Esempio:

“description”: “The Real X API.”
protectedBooleanQuando true, indica che questo utente ha scelto di proteggere i propri Post. Consulta Informazioni sui Post Pubblici e Protetti . Esempio:

“protected”: true
verifiedBooleanQuando true, indica che l’utente ha un account verificato. Consulta Account Verificati . Esempio:

“verified”: false
followers_countIntIl numero di follower che questo account ha attualmente. In certe condizioni di stress, questo campo indicherà temporaneamente “0”. Esempio:

“followers_count”: 21
friends_countIntIl numero di utenti che questo account sta seguendo (ovvero i propri “following”). In certe condizioni di stress, questo campo indicherà temporaneamente “0”. Esempio:

“friends_count”: 32
listed_countIntIl numero di liste pubbliche di cui questo utente è membro. Esempio:

“listed_count”: 9274
favourites_countIntIl numero di Post a cui questo utente ha messo like durante la vita dell’account. Ortografia britannica utilizzata nel nome del campo per ragioni storiche. Esempio:

“favourites_count”: 13
statuses_countIntIl numero di Post (inclusi i retweet) pubblicati dall’utente. Esempio:

“statuses_count”: 42
created_atStringLa data e ora UTC in cui l’account utente è stato creato su X. Esempio:

“created_at”: “Mon Nov 29 21:18:15 +0000 2010”
profile_banner_urlStringL’URL basato su HTTPS che punta alla rappresentazione web standard del banner del profilo caricato dall’utente. Aggiungendo un elemento di percorso finale all’URL, è possibile ottenere diverse dimensioni di immagine ottimizzate per display specifici. Per le varianti di dimensione, consulta Immagini e Banner del Profilo Utente .

Esempio:

“profile_banner_url”: “https://si0.twimg.com/profile&#95;banners/819797/1348102824
profile_image_url_httpsStringUn URL basato su HTTPS che punta all’immagine del profilo dell’utente. Esempio:

“profile_image_url_https”:
https://abs.twimg.com/sticky/default&#95;profile&#95;images/default&#95;profile&#95;normal.png
default_profileBooleanQuando true, indica che l’utente non ha modificato il tema o lo sfondo del proprio profilo utente. Esempio:

“default_profile”: false
default_profile_imageBooleanQuando true, indica che l’utente non ha caricato la propria immagine del profilo e viene utilizzata un’immagine predefinita. Esempio:

“default_profile_image”: false

Attributi non più supportati (obsoleti)

CampoTipoDescrizione
utc_offsetnullIl valore sarà impostato su null. Ancora disponibile tramite GET account/settings
time_zonenullIl valore sarà impostato su null. Ancora disponibile tramite GET account/settings come tzinfo_name
langnullIl valore sarà impostato su null. Ancora disponibile tramite GET account/settings come language
geo_enablednullIl valore sarà impostato su null. Ancora disponibile tramite GET account/settings. Questo campo deve essere true affinché l’utente corrente possa allegare dati geografici quando utilizza POST statuses/update
followingnullIl valore sarà impostato su null. Ancora disponibile tramite GET friendships/lookup
follow_request_sentnullIl valore sarà impostato su null. Ancora disponibile tramite GET friendships/lookup
has_extended_profilenullObsoleto. Il valore sarà impostato su null.
notificationsnullObsoleto. Il valore sarà impostato su null.
profile_locationnullObsoleto. Il valore sarà impostato su null.
contributors_enablednullObsoleto. Il valore sarà impostato su null.
profile_image_urlnullObsoleto. Il valore sarà impostato su null. NOTA: le immagini del profilo sono disponibili solo utilizzando il campo profile_image_url_https.
profile_background_colornullObsoleto. Il valore sarà impostato su null.
profile_background_image_urlnullObsoleto. Il valore sarà impostato su null.
profile_background_image_url_httpsnullObsoleto. Il valore sarà impostato su null.
profile_background_tilenullObsoleto. Il valore sarà impostato su null.
profile_link_colornullObsoleto. Il valore sarà impostato su null.
profile_sidebar_border_colornullObsoleto. Il valore sarà impostato su null.
profile_sidebar_fill_colornullObsoleto. Il valore sarà impostato su null.
profile_text_colornullObsoleto. Il valore sarà impostato su null.
profile_use_background_imagenullObsoleto. Il valore sarà impostato su null.
is_translatornullObsoleto. Il valore sarà impostato su null.
is_translation_enablednullObsoleto. Il valore sarà impostato su null.
translator_typenullObsoleto. Il valore sarà impostato su null.

Esempio di oggetto utente:

"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 voce del team #XDevelopers e la vostra fonte ufficiale per aggiornamenti, notizie ed eventi relativi all'#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
	}

Oggetti geo nativi arricchiti

I Post possono essere associati a una posizione, generando un Post “geo‑taggato”. Le posizioni dei Post possono essere assegnate tramite l’interfaccia utente di X oppure quando si pubblica un Post utilizzando l’API. Le posizioni dei Post possono essere un “punto” esatto oppure un X Place con un “bounding box” che descrive un’area più ampia, da una sede fino a un’intera regione. Esistono tre oggetti JSON a “livello radice” utilizzati per descrivere la posizione associata a un Post: place, geo e coordinates. Inoltre, il formato nativo arricchito include, all’interno dell’oggetto utente, il profile geo enrichment derived location. L’oggetto place è sempre presente quando un Post è geo‑taggato con un luogo. I Place sono posizioni specifiche e denominate, con le relative coordinate geografiche. Quando gli utenti decidono di assegnare una posizione al proprio Post, viene presentato loro un elenco di X Place candidati. Quando si utilizza l’API per pubblicare, è possibile allegare un X Place specificando un place_id al momento della pubblicazione. I Post associati ai Place non provengono necessariamente da quella posizione, ma potrebbero anche essere relativi a quella posizione. Gli oggetti geo e coordinates sono presenti (non null) solo quando al Post viene assegnata una posizione esatta. Se viene fornita una posizione esatta, l’oggetto coordinates restituirà un array [long, lat] con le coordinate geografiche e verrà assegnato un X Place corrispondente a tale posizione.

Dizionario dei dati Place

FieldTypeDescription
idStringID che rappresenta questo luogo. Nota: è rappresentato come stringa, non come numero intero. Esempio:

“id”:“01a9a39529b27f36”
urlStringURL della posizione delle ulteriori metadata per questo luogo. Esempio:

“url”:“https://api.x.com/1.1/geo/id/01a9a39529b27f36.json
place_typeStringIl tipo di località rappresentato da questo luogo. Esempio:

“place_type”:“city”
nameStringRappresentazione breve e leggibile del nome del luogo. Esempio:

“name”:“Manhattan”
full_nameStringRappresentazione completa e leggibile del nome del luogo. Esempio:

“full_name”:“Manhattan, NY”
country_codeStringCodice paese abbreviato del paese che contiene questo luogo. Esempio:

“country_code”:“US”
countryStringNome del paese che contiene questo luogo. Esempio:

“country”:“United States”
bounding_boxObjectUn riquadro di delimitazione di coordinate che racchiude questo luogo. Esempio:


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

attributesObjectQuando si utilizzano le API PowerTrack, 30-Day e Full-Archive Search, e i Volume Streams, questo hash è nullo. Esempio:

“attributes”:

Riquadro di delimitazione

CampoTipoDescrizione
coordinatesArray di Array di Array di FloatUna serie di punti di longitudine e latitudine che definiscono un riquadro che conterrà l’entità Place a cui è associato questo riquadro di delimitazione. Ogni punto è un array nel formato [longitudine, latitudine]. I punti sono raggruppati in un array per ciascun riquadro di delimitazione. Gli array del riquadro di delimitazione sono racchiusi in un ulteriore array per essere compatibili con la notazione dei poligoni. Esempio:


“coordinates”: [
[
[
-74.026675,
40.683935
],
[
-74.026675,
40.877483
],
[
-73.910408,
40.877483
],
[
-73.910408,
40.3935
]
]
]
typeStringIl tipo di data codificato nella proprietà coordinates. Per i riquadri di delimitazione sarà “Polygon” e “Point” per i Post con coordinate esatte. Esempio:

“type”:“Polygon”

Dizionario dei dati dell’oggetto Geo

FieldTypeDescription
coordinatesCollection of FloatLongitudine e latitudine della posizione del Post, come raccolta nel formato [latitudine, longitudine]. Esempio:

**  “geo”:

“type”:** “Point”,

**    “coordinates”: [

54.27784
,

-0.41068

    ]

  **
typeStringIl tipo di dato codificato nella proprietà coordinates. Per i campi di coordinate del Post sarà “Point”. Esempio:

“type”: “Point”
Dizionario dei dati dell’oggetto Coordinates
FieldTypeDescription
coordinatesCollection of FloatLongitudine e latitudine della posizione del Post, come raccolta nel formato [longitudine, latitudine]. Esempio:

**  “coordinates”:

“type”:** “Point”,

**    “coordinates”: [

-0.41068
,

54.27784

    ]

  **
typeStringIl tipo di dato codificato nella proprietà coordinates. Per i campi di coordinate del Post sarà “Point”. Esempio:

“type”: “Point”

Località derivate

CampoTipoDescrizione
derivedoggetto locationsLocalità derivata dall’enrichment geografico del profilo

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

**         

       

      ]

    **

Esempi:

{
  "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": "Stati Uniti",
    "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": "Stati Uniti",
    "bounding_box": {
      "type": "Polygon",
      "coordinates": [
        [
          [
            -74.026675,
            40.683935
          ],
          [
            -74.026675,
            40.877483
          ],
          [
            -73.910408,
            40.877483
          ],
          [
            -73.910408,
            40.683935
          ]
        ]
      ]
    },
    "attributes": {

    }
  }
}
Dizionario dei dati: Enterprise

Entità di X  

Vai a questa pagina Introduzione Oggetto entities   - Oggetto hashtag   - Oggetto media   - Oggetto dimensioni dei media   - Oggetto URL   - Oggetto menzione utente   - Oggetto simbolo   - Oggetto sondaggio Dettagli su Retweet e Quote Tweet Entità negli oggetti utente Entità nei Messaggi Diretti Passaggi successivi

Introduzione

Le entità forniscono metadata e informazioni contestuali aggiuntive sui contenuti pubblicati su X. La sezione entities contiene array di elementi comuni presenti nei Post: hashtag, menzioni di utenti, link, ticker azionari (simboli), sondaggi di X e media allegati. Questi array sono comodi per gli sviluppatori durante l’ingestione dei Post, poiché X ha sostanzialmente pre-elaborato, o pre-parsato, il corpo del testo. Invece di dover cercare e individuare esplicitamente queste entità nel corpo del Post, il parser può andare direttamente a questa sezione JSON e trovarle lì. Oltre a offrire praticità di parsing, la sezione entities fornisce anche utili metadata di “valore aggiunto”. Ad esempio, se stai utilizzando l’arricchimento Enhanced URLs, i metadata degli URL includono URL completamente espansi, oltre ai titoli e alle descrizioni dei siti web associati. Un altro esempio: quando sono presenti menzioni di utenti, i metadata delle entità includono l’id numerico dell’utente, utile quando si effettuano richieste a molte X API. Ogni payload JSON di un Post include una sezione entities, con il set minimo di attributi hashtags, urls, user_mentions e symbols, anche se nessuna di queste entità fa parte del messaggio del Post. Ad esempio, se esamini il JSON di un Post con il testo “Hello World!” e senza media allegati, il JSON del Post includerà il seguente contenuto con array di entità contenenti zero elementi:
"entities": {
        "hashtags": [
        ],
        "urls": [
        ],
        "user_mentions": [
        ],
        "symbols": [
        ]
      }
Note:
  • le entità media e poll compaiono solo quando quel tipo di contenuto fa parte del Post.
  • se lavori con media nativi (foto, video o GIF), l’oggetto Extended Entities è l’approccio consigliato.

Oggetto Entities

Le sezioni entities ed extended_entities sono entrambe composte da array di oggetti entità. Di seguito trovi le descrizioni di ciascuno di questi oggetti entità, inclusi i dizionari dei dati che illustrano i nomi degli attributi dell’oggetto, i tipi e una breve descrizione. Indicheremo anche quali operatori PowerTrack corrispondono a questi attributi e includeremo alcuni payload JSON di esempio. Una raccolta di entità comuni presenti nei Post, tra cui hashtag, link e menzioni di utenti. L’oggetto entities include un attributo media, ma la sua implementazione nella sezione entities è completamente accurata solo per i Post con una singola foto. Per tutti i Post con più di una foto, un video o una GIF animata, rimandiamo alla sezione extended_entities.

Dizionario dei dati delle entità

L’oggetto entities è un contenitore di array di altri sotto-oggetti di entità. Dopo aver illustrato la struttura di entities, verranno forniti i dizionari dei dati per questi sotto-oggetti e gli operatori che li corrispondono.
CampoTipoDescrizione
hashtagsArray di Oggetti HashtagRappresenta gli hashtag estratti dal testo del Post. Esempio:


“hashtags”: [

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

]
mediaArray di Oggetti MediaRappresenta gli elementi multimediali caricati con il Post. Esempio:


“media”: [

“display_url”: “pic.x.com/5J1WJSRCy9”,
“expanded_url”: “https://x.com/nolan_test/status/930077847535812610/photo/1”,
“id”: 9.300778475358126e17,
“id_str”: “930077847535812610”,
“indices”: [
13,
36
],
“media_url”: “http://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg”,
“media_url_https”: “https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg
“sizes”:
“thumb”:
“h”: 150,
“resize”: “crop”,
“w”: 150
,
“large”:
“h”: 1366,
“resize”: “fit”,
“w”: 2048
,
“medium”:
“h”: 800,
“resize”: “fit”,
“w”: 1200
,
“small”:
“h”: 454,
“resize”: “fit”,
“w”: 680

,
“type”: “photo”,
“url”: “https://t.co/5J1WJSRCy9”,

]
urlsArray di Oggetti URLRappresenta gli URL inclusi nel testo di un Post.

Esempio (senza arricchimento Enhanced URLs abilitato):


“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

]


Esempio (con arricchimento Enhanced URLs abilitato):

“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 Finché ci saranno troll che fanno trolling, Rick non smetterà mai di fare rolling.”
,
“indices”: [
62,
85
]

]
user_mentionsArray di Oggetti User MentionRappresenta altri utenti X menzionati nel testo del Post. Esempio:


“user_mentions”: [

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

]
symbolsArray di Oggetti SymbolRappresenta i simboli, ovvero i $cashtag, inclusi nel testo del Post. Esempio:


“symbols”: [

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

]
pollsArray di Oggetti PollRappresenta i sondaggi X inclusi nel Post. Esempio:

“polls”: [

“options”: [

“position”: 1,
“text”: “Leggo la documentazione una volta.”
,

“position”: 2,
“text”: “Leggo la documentazione due volte.”
},

“position”: 3,
“text”: “Leggo la documentazione più e più volte.”
}
],
“end_datetime”: “Thu May 25 22:20:27 +0000 2017”,
“duration_minutes”: 60

]

Oggetto Hashtag  

La sezione entities conterrà un array hashtags con un oggetto per ogni hashtag incluso nel corpo del Post e includerà un array vuoto se non sono presenti hashtag. L’operatore PowerTrack # viene utilizzato per eseguire il match sull’attributo text. L’operatore has:hashtags farà match se è presente almeno un elemento nell’array.
CampoTypeDescrizione
indicesArray of IntUn array di interi che indica gli offset all’interno del testo del Post in cui l’hashtag inizia e termina. Il primo intero rappresenta la posizione del carattere # nella stringa di testo del Post. Il secondo intero rappresenta la posizione del primo carattere dopo l’hashtag. Pertanto, la differenza tra i due numeri corrisponde alla lunghezza del nome dell’hashtag più uno (per il carattere ‘#’). Esempio:

“indices”:[32,38]
textStringNome dell’hashtag, senza il carattere iniziale ‘#’. Esempio:

“text”:“nodejs”

Oggetto multimediale  

La sezione entities conterrà un array media con un singolo oggetto multimediale se al Post è stato “allegato” un oggetto multimediale. Se non è stato allegato alcun media nativo, nella sezione entities non sarà presente alcun array media. Per i seguenti motivi, per elaborare i media nativi del Post è consigliabile utilizzare la sezione extended_entities:
  • Il type del media indicherà sempre “photo”, anche quando al Post sono allegati un video o una GIF.
  • Anche se è possibile allegare fino a quattro foto, nella sezione entities sarà elencata solo la prima.
L’operatore has:media ha corrispondenza se questo array è valorizzato.
CampoTipoDescrizione
display_urlStringURL del media da visualizzare ai client. Esempio:

“display_url”:“pic.x.com/rJC5Pxsu”
expanded_urlStringUna versione espansa di display_url. Rimanda alla pagina di visualizzazione del media. Esempio:

“expanded_url”: “http://x.com/yunorno/status/114080493036773378/photo/1
idInt64ID del media espresso come intero a 64 bit. Esempio:

“id”:114080493040967680
id_strStringID del media espresso come stringa. Esempio:

“id_str”:“114080493040967680”
indicesArray of IntUn array di interi che indica gli offset all’interno del testo del Post dove l’URL inizia e finisce. Il primo intero rappresenta la posizione del primo carattere dell’URL nel testo del Post. Il secondo intero rappresenta la posizione del primo carattere non-URL che si trova dopo l’URL (o la fine della stringa se l’URL è l’ultima parte del testo del Post). Esempio:

“indices”:[15,35]
media_urlStringUn URL http:// che punta direttamente al file media caricato. Esempio:

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

Per i media nei Messaggi Diretti, media_url è lo stesso URL https di media_url_https e deve essere accessibile firmando una richiesta con l’access token dell’utente utilizzando OAuth 1.0A.

Non è possibile accedere alle immagini tramite una sessione x.com autenticata. Visitare questa pagina per informazioni su come gestire questa modifica recente.

Non è possibile incorporare direttamente queste immagini in una pagina web.

Vedere Formattazione URL Media Foto per informazioni su come formattare l’URL di una foto, come media_url_https, in base alle sizes disponibili.
media_url_httpsStringUn URL https:// che punta direttamente al file media caricato, per l’incorporamento su pagine https. Esempio:

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

Per i media nei Messaggi Diretti, media_url_https deve essere accessibile firmando una richiesta con l’access token dell’utente utilizzando OAuth 1.0A.

Non è possibile accedere alle immagini tramite una sessione x.com autenticata. Visitare questa pagina per informazioni su come gestire questa modifica recente.

Non è possibile incorporare direttamente queste immagini in una pagina web.

Vedere Formattazione URL Media Foto per informazioni su come formattare l’URL di una foto, come media_url_https, in base alle sizes disponibili.
sizesSize ObjectUn oggetto che mostra le dimensioni disponibili per il file media. Esempio:


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

Vedere Formattazione URL Media Foto per informazioni su come formattare l’URL di una foto, come media_url_https, in base alle sizes disponibili.
source_status_idInt64Nullable. Per i Post contenenti media che era originariamente associato a un Post diverso, questo ID punta al Post originale. Esempio:

“source_status_id”: 205282515685081088
source_status_id_strInt64Nullable. Per i Post contenenti media che era originariamente associato a un post diverso, questo ID basato su stringa punta al Post originale. Esempio:

“source_status_id_str”: “205282515685081088”
typeStringTipo di media caricato. I tipi possibili includono photo, video e animated_gif. Esempio:

“type”:“photo”
urlStringURL incapsulato per il collegamento media. Questo corrisponde all’URL incorporato direttamente nel testo grezzo del Post e ai valori per il parametro indices. Esempio:

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

Oggetti delle dimensioni dei media

Tutti i Post con media nativi (foto, video e GIF) includeranno un set di dimensioni “thumb”, “small”, “medium” e “large” con altezza e larghezza in pixel. Per le foto e gli URL dei media dell’immagine di anteprima, la formattazione degli URL dei media foto specifica come costruire URL diversi per caricare media fotografici di dimensioni differenti.

Oggetto Sizes 

CampoTypeDescrizione
thumbSize ObjectInformazioni per una versione in miniatura del contenuto multimediale. Esempio:

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

Le foto in formato miniatura saranno limitate a riempire un riquadro 150x150 e verranno ritagliate.
largeSize ObjectInformazioni per una versione di grandi dimensioni del contenuto multimediale. Esempio:

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

Le foto di piccole dimensioni saranno limitate ad adattarsi entro un riquadro 680x680.
mediumSize ObjectInformazioni per una versione di medie dimensioni del contenuto multimediale. Esempio:

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

Le foto di medie dimensioni saranno limitate ad adattarsi entro un riquadro 1200x1200.
smallSize ObjectInformazioni per una versione di piccole dimensioni del contenuto multimediale. Esempio:

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

Le foto di grandi dimensioni saranno limitate ad adattarsi entro un riquadro 2048x2048.

Oggetto Size 

CampoTipoDescrizione
wIntLarghezza in pixel di questa dimensione. Esempio:

“w”:150
hIntAltezza in pixel di questa dimensione. Esempio:

“h”:150
resizeStringMetodo di ridimensionamento utilizzato per ottenere questa dimensione. Un valore fit indica che il contenuto multimediale è stato ridimensionato per adattarsi a una dimensione, mantenendo il rapporto d’aspetto originale. Un valore crop indica che il contenuto multimediale è stato ritagliato per adattarsi a una risoluzione specifica. Esempio:

“resize”:“crop”

Formattazione degli URL dei media fotografici

I media fotografici su X possono essere caricati in diverse dimensioni. È consigliabile caricare l’immagine più piccola che sia comunque sufficientemente grande da adattarsi a un determinato viewport. Per caricare dimensioni diverse, è necessario combinare l’oggetto Size e media_url (o media_url_https) in un formato specifico. Useremo l’oggetto di esempio dell’entità media già fornito per costruire un URL dei media fotografici. media_url o media_url_https possono essere utilizzati da soli, caricando per impostazione predefinita la variante medium. Tuttavia, quando possibile, è preferibile fornire un URL dei media fotografici completamente formattato. Un URL dei media fotografici è composto da tre parti:
Base URLIl base URL è l’URL del media senza l’estensione del file.

Ad esempio:

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

Il base URL è quindi:

https://pbs.twimg.com/media/DOhM30VVwAEpIHq
FormatIl formato è il tipo di file in cui è salvata la foto. I formati possibili sono jpg o png, forniti come estensione dell’URL del media.

Ad esempio:

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

Il formato è quindi: jpg
NameIl name è il nome del campo della dimensione da caricare.

Ad esempio:


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

Il name quando si carica la foto in dimensione large sarà: large
Prendiamo queste tre parti (base URL, format e name) e le combiniamo nell’URL dei media fotografici da caricare. Esistono 2 formati per caricare le immagini in questo modo, legacy e modern. Tutti i caricamenti di immagini dovrebbero smettere di usare il formato legacy e utilizzare il formato modern. L’uso del formato modern comporterà un tasso di hit della CDN migliore per il client, migliorando così le latenze di caricamento poiché sarà meno probabile dover generare e caricare il media dal Data Center.
Formato legacyIl formato legacy è obsoleto. Tutti i caricamenti di foto devono passare al formato moderno.

<base_url>.<format>:<name>

Ad esempio:

https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg:large
Formato modernoIl formato moderno per il caricamento delle foto è stato introdotto su X nel 2015 ed è diventato quello di fatto dal 2017. Tutti i caricamenti di foto devono passare a questo formato.

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

Ad esempio:

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


Nota: gli elementi nella query string dell’URL dei contenuti foto sono in ordine alfabetico. Se il caricamento dei contenuti dovesse aggiungere ulteriori elementi di query, sarà necessario mantenerne l’ordinamento alfabetico. Ad esempio, se ci fosse un nuovo elemento di query ipotetico chiamato preferred_format, andrebbe dopo format e name nella query string.

Oggetto URL 

La sezione entities conterrà un array urls con un oggetto per ogni link presente nel corpo del Post e includerà un array vuoto se non sono presenti link. L’operatore has:links ha corrispondenza se è presente almeno un elemento nell’array. L’operatore url: viene utilizzato per effettuare la corrispondenza sull’attributo expanded_url. Se utilizzi l’Expanded URL enrichment, l’operatore url: viene utilizzato per effettuare la corrispondenza sull’attributo unwound.url (URL completamente “unwound”). Se utilizzi l’Enhanced URL enrichment, gli operatori url_title: e url_description: vengono utilizzati per effettuare la corrispondenza sugli attributi unwound.title e unwound.description.
FieldTypeDescription
display_urlStringURL incollato/digitato nel Post. Esempio:

“display_url”:“bit.ly/2so49n2”
expanded_urlStringVersione espansa di display_url. Esempio:

“expanded_url”:“http://bit.ly/2so49n2
indicesArray of IntUn array di interi che rappresentano gli offset all’interno del testo del Post in cui l’URL inizia e termina. Il primo intero rappresenta la posizione del primo carattere dell’URL nel testo del Post. Il secondo intero rappresenta la posizione del primo carattere non URL dopo la fine dell’URL. Esempio:

“indices”:[30,53]
urlStringURL “wrapped”, corrispondente al valore incorporato direttamente nel testo grezzo del Post e ai valori del parametro indices. Esempio:

“url”:“https://t.co/yzocNFvJuL
Se utilizzi gli enrichment Expanded e/o Enhanced URL, le seguenti metadata sono disponibili sotto l’attributo unwound:
FieldTypeDescription
urlStringLa versione completamente “unwound” del link incluso nel Post. Esempio:

“url”:“https://blog.x.com/en&#95;us/topics/insights/2016/using-twitter-as-a-go-to-communication-channel-during-severe-weather-events.html
statusIntStato HTTP finale del processo di “unwinding”, con 200 che indica il successo. Esempio:

200
titleStringTitolo HTML del link. Esempio:

“title”:“Using X as a ‘go-to’ communication channel during severe weather”
descriptionStringDescrizione HTML del link. Esempio:

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

Oggetto menzione utente  

La sezione entities conterrà un array user_mentions con un oggetto per ogni menzione utente inclusa nel corpo del Post e includerà un array vuoto se non è presente alcuna menzione utente. L’operatore PowerTrack @ viene utilizzato per eseguire il matching sull’attributo screen_name. L’operatore has:mentions effettua il matching se è presente almeno un elemento nell’array.
CampoTypeDescrizione
idInt64ID dell’utente menzionato, come intero. Esempio:

“id”:6253282
id_strStringID dell’utente menzionato, come stringa. Esempio:

“id_str”:“6253282”
indicesArray of IntUn array di interi che rappresentano gli offset all’interno del testo del Post in cui inizia e termina il riferimento all’utente. Il primo intero rappresenta la posizione del carattere ‘@’ della menzione utente. Il secondo intero rappresenta la posizione del primo carattere successivo alla menzione che non fa parte dello screen name. Esempio:

“indices”:[4,15]
nameStringNome visualizzato dell’utente di riferimento. Esempio:

“name”:“API”
screen_nameStringScreen name dell’utente di riferimento. Esempio:

“screen_name”:“api”

Oggetto Symbol  

La sezione entities conterrà un array symbols che include un oggetto per ogni $cashtag presente nel corpo del Post e includerà un array vuoto se non è presente alcun simbolo. L’operatore PowerTrack $ viene utilizzato per effettuare il match sull’attributo text. L’operatore has:symbols effettua il match se è presente almeno un elemento nell’array.
CampoTypeDescrizione
indicesArray of IntUn array di interi che indica gli offset all’interno del testo del Post in cui il simbolo/cashtag inizia e finisce. Il primo intero rappresenta la posizione del carattere nellastringaditestodelPost.Ilsecondointerorappresentalaposizionedelprimocaratteredopoilcashtag.Pertanto,ladifferenzatraiduenumericorrispondeallalunghezzadelnomedelcashtagpiuˋuno(perilcarattere nella stringa di testo del Post. Il secondo intero rappresenta la posizione del primo carattere dopo il cashtag. Pertanto, la differenza tra i due numeri corrisponde alla lunghezza del nome del cashtag più uno (per il carattere ‘’). Esempio:

“indices”:[12,17]
textStringNome del cashtag, senza il carattere iniziale ‘$’. Esempio:

“text”:“twtr”

Oggetto Poll

La sezione entities conterrà un array polls con un singolo oggetto poll se il Post include un sondaggio. Se non è incluso alcun sondaggio, non sarà presente alcun array polls nella sezione entities. Nota che questi metadati del sondaggio sono disponibili solo con le seguenti API Enterprise:
CampoTipoDescrizione
optionsArray di oggetti OptionUn array di opzioni, ciascuna con una posizione nel sondaggio e il testo relativo a quella posizione. Esempio:

“options”: [

“position”: 1,
“text”: “I read documentation once.”
}
]
}
end_datetimeStringTimestamp (UTC) della fine del sondaggio. Esempio:

“end_datetime”: “Thu May 25 22:20:27 +0000 2017”
duration_minutesStringDurata del sondaggio in minuti. Esempio:

“duration_minutes”: 60

Dettagli su Retweet e Quote Tweet

Dal punto di vista della X API, i Retweet e i Quote Tweet sono tipi speciali di Post che contengono il Post originale come oggetto incorporato. Pertanto, gli oggetti Retweet e Quote Tweet sono genitori di un Post figlio “original” (e quindi raddoppiano le dimensioni). I Retweet hanno un oggetto di primo livello “retweeted_status” e i Quote Tweet hanno un oggetto “quoted_status”. Per coerenza, questi oggetti di primo livello per Retweet e Quote Tweet includono anche una proprietà text e le relative entities. Tuttavia, le entities a livello superiore possono differire dalle entities fornite dall’“original” incorporato. Nel caso dei Retweet, il nuovo testo viene anteposto al corpo del Post originale. Per i Post citati, il nuovo testo viene accodato al corpo del Post. In generale, la best practice è recuperare testo, entities, autore originale e data dal Post originale in retweeted_status ogni volta che questo esiste. Un’eccezione è il recupero delle X entities che fanno parte della citazione aggiuntiva. Vedere di seguito per ulteriori dettagli e suggerimenti.

Retweet

Un dettaglio importante dei Retweet è che non possono essere aggiunte ulteriori entità di X al Post. Gli utenti non possono aggiungere hashtag, URL o altri dettagli quando effettuano un Retweet. Tuttavia, l’attributo di testo del Retweet (di primo livello) è composto dal testo del Post originale con il prefisso “RT @username: ”. In alcuni casi, soprattutto con account dal nome utente lungo, la combinazione di questi nuovi caratteri e del corpo del Post originale può facilmente superare il limite di 140 caratteri del testo del Post. Per preservare la compatibilità con la visualizzazione e l’archiviazione basate su 140 caratteri, il corpo di primo livello tronca la parte finale del corpo del Post e aggiunge un’ellissi (“…”). Di conseguenza, alcune entità di primo livello posizionate alla fine del Post originale potrebbero risultare errate o mancanti, ad esempio nel caso di un hashtag o di un URL troncati. Questo Post, https://x.com/FloodSocial/status/907974220298125312, presenta il seguente testo del Post: Just another test Post that needs to be exactly 140 characters with trailing URL and hashtag
http://wapo.st/2w8iwPQ #Testing
Nell’esempio sopra, sia l’URL sia l’hashtag sono stati interessati. Poiché l’hashtag è stato completamente troncato e l’URL parzialmente troncato, questi mancano dalle entità di primo livello. Noterai anche l’entità di primo livello aggiuntiva user_mentions derivante dal prefisso “RT @floodsocial: ” nel campo text. Tuttavia, il testo del Post e le entità in retweeted_status riflettono perfettamente il Post originale senza troncamenti o entità errate; pertanto, consigliamo di fare affidamento sull’oggetto annidato retweeted_status per i Retweet.

Quote Tweets

I Quote Tweet sono stati introdotti nel 2016 e differiscono dai Retweet in quanto, quando si “quota” un Post, si aggiunge nuovo contenuto “sopra” un Post condiviso. Questo nuovo contenuto può includere quasi tutto ciò che può avere un Post originale, inclusi nuovo testo, hashtag, menzioni e URL. I Quote Tweet possono contenere media nativi (foto, video e GIF) e compaiono all’interno dell’oggetto entities. Poiché è possibile aggiungere entità di X, le entità del Quote probabilmente differiscono da quelle originali. In questo esempio, un nuovo URL e un hashtag sono stati posizionati alla fine del Quote Tweet. Questo Post, https://x.com/FloodSocial/status/907983973225160704, ha il seguente testo del Post: strano e altrettanto tragico quando le isole si allagano… test transatlantico dei quote tweet | @thisuser @thatuserhttp://bit.ly/2vMMDuu #testing In questo caso, le entities di livello superiore non riflettono i dettagli del Quote. Tuttavia, il testo del Post e le entities in extended_tweet riflettono perfettamente il Quote Tweet senza troncamenti o entities errate; pertanto, consigliamo di fare affidamento sull’oggetto nidificato extended_tweet per i Quote Tweet.

Entità per l’oggetto utente

Le entità per gli oggetti utente descrivono gli URL che compaiono nei campi profile URL e description definiti dall’utente. Non descrivono hashtag o user_mentions. A differenza delle entità dei Post, le entità utente possono applicarsi a più campi all’interno dell’oggetto padre: per disambiguare, troverai nodi padre chiamati url e description che indicano quale campo contiene l’URL entizzato. In questo esempio, il campo url dell’utente contiene un link t.co che è completamente espanso all’interno del nodo entities/url/urls[0] della risposta. L’utente non ha un URL “wrappato” nella propria description.

Esempio di JSON

{
  "id": 6253282,
  "id_str": "6253282",
  "name": "X API",
  "screen_name": "xapi",
  "location": "San Francisco, CA",
  "description": "La vera X API. Pubblico tweet sui cambiamenti dell'API, sui problemi del servizio e rispondo volentieri alle domande su X e sulla nostra API. Non hai ricevuto una risposta? La trovi sul mio sito web.",
  "url": "http:\/\/t.co\/78pYTvWfJd",
  "entities": {
    "url": {
      "urls": [
        {
          "url": "http:\/\/t.co\/78pYTvWfJd",
          "expanded_url": "http:\/\/dev.x.com",
          "display_url": "dev.x.com",
          "indices": [
            0,
            22
          ]
        }
      ]
    },
    "description": {
      "urls": [

      ]
    }
  }
}

Entità estese su X 

Vai a questa pagina Introduzione Oggetto Extended Entities Esempi di Tweet e payload JSON   - Tweet con quattro foto native   - Tweet con video nativo   - Tweet con GIF animata Passaggi successivi

Introduzione

Se un Post contiene contenuti multimediali nativi (condivisi tramite l’interfaccia utente del Post anziché tramite un link esterno), sarà presente anche una sezione extended_entities. Per qualsiasi contenuto multimediale nativo (foto, video o GIF), extended_entities è la fonte di metadata preferita per diversi motivi. Attualmente è possibile allegare fino a quattro foto a un Post. I metadata di entities conterranno solo la prima foto (fino al 2014 era possibile includerne una sola), mentre la sezione extended_entities includerà tutte le foto allegate. Con i contenuti multimediali nativi, un’altra limitazione dei metadata di entities.media è che il tipo di media indicherà sempre “photo”, anche nei casi in cui il contenuto allegato sia un video o una GIF animata. Il tipo effettivo di contenuto è specificato nell’attributo extended_entities.media[].type e può essere photo, video o animated_gif. Per questi motivi, se si lavora con contenuti multimediali nativi, i metadata di extended_entities sono la scelta consigliata. Tutti i Post con foto, video e GIF animate allegate includeranno un oggetto JSON extended_entities. L’oggetto extended_entities contiene un unico array media di oggetti media (consultare la sezione entities per il relativo data dictionary). Nessun altro tipo di entità, come hashtag e link, è incluso nella sezione extended_entities. L’oggetto media nella sezione extended_entities è identico nella struttura a quello incluso nella sezione entities. I Post possono avere un solo tipo di contenuto multimediale allegato. Per le foto è possibile allegarne fino a quattro. Per i video e le GIF, è possibile allegarne uno. Poiché i metadata type dei media nella sezione extended_entities indicano correttamente il tipo di contenuto (“photo”, “video” o “animated_gif”) e supportano fino a 4 foto, questa è la fonte di metadata preferita per i contenuti multimediali nativi.
{
      "extended_entities": {
        "media": [

        ]
      }
    }

Esempi di Post e payload JSON

Di seguito sono riportati alcuni esempi di Post e i relativi metadati delle entità. Post con quattro foto native Post con hashtag, menzione di un utente, cashtag, URL e quattro foto native:
Ecco la sezione entities per questo Post:
{
      "entities": {
        "hashtags": [
          {
            "text": "hashtag",
            "indices": [
              59,
              67
            ]
          }
        ],
        "urls": [
          {
            "url": "https://t.co/RzmrQ6wAzD",
            "expanded_url": "http://bit.ly/2pUk4be",
            "display_url": "bit.ly/2pUk4be",
            "unwound": {
              "url": "https://blog.gnip.com/tweeting-in-the-rain/",
              "status": 200,
              "title": "Tweeting in the Rain, Parte 1 - Blog Gnip - Blog di Dati Social e Data Science",
              "description": "Se qualcuno mi avesse detto qualche anno fa che un giorno avrei confrontato i dati delle precipitazioni con quelli delle serie temporali dei social media, avrei pensato che stesse scherzando. Per 13 anni in OneRain ho contribuito a sviluppare software e monitoraggio … Continua a leggere →"
            },
            "indices": [
              35,
              58
            ]
          }
        ],
        "user_mentions": [
          {
            "screen_name": "MentionThis",
            "name": "Solo Io",
            "id": 50247739,
            "id_str": "50247739",
            "indices": [
              16,
              28
            ]
          }
        ],
        "symbols": [
          {
            "text": "twtr",
            "indices": [
              29,
              34
            ]
          }
        ],
        "media": [
          {
            "id": 861627472244162561,
            "id_str": "861627472244162561",
            "indices": [
              68,
              91
            ],
            "media_url": "http://pbs.twimg.com/media/C_UdnvPUwAE3Dnn.jpg",
            "media_url_https": "https://pbs.twimg.com/media/C_UdnvPUwAE3Dnn.jpg",
            "url": "https://t.co/9r69akA484",
            "display_url": "pic.x.com/9r69akA484",
            "expanded_url": "https://x.com/FloodSocial/status/861627479294746624/photo/1",
            "type": "photo",
            "sizes": {
              "medium": {
                "w": 1200,
                "h": 900,
                "resize": "fit"
              },
              "small": {
                "w": 680,
                "h": 510,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "large": {
                "w": 2048,
                "h": 1536,
                "resize": "fit"
              }
            }
          }
        ]
      }
    }
Solo nel payload “esteso” qui sotto trorai fino a quattro foto native. Nota che la prima foto nell’array è la stessa della singola foto inclusa nella sezione X entities non estesa. La struttura dei metadata di media per le foto è la stessa sia nelle sezioni entities sia in extended_entities. Ecco la sezione extended_entities per questo Post:
{
    "extended_entities": {
        "media": [
          {
            "id": 861627472244162561,
            "id_str": "861627472244162561",
            "indices": [
              68,
              91
            ],
            "media_url": "http://pbs.twimg.com/media/C_UdnvPUwAE3Dnn.jpg",
            "media_url_https": "https://pbs.twimg.com/media/C_UdnvPUwAE3Dnn.jpg",
            "url": "https://t.co/9r69akA484",
            "display_url": "pic.x.com/9r69akA484",
            "expanded_url": "https://x.com/FloodSocial/status/861627479294746624/photo/1",
            "type": "photo",
            "sizes": {
              "medium": {
                "w": 1200,
                "h": 900,
                "resize": "fit"
              },
              "small": {
                "w": 680,
                "h": 510,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "large": {
                "w": 2048,
                "h": 1536,
                "resize": "fit"
              }
            }
          },
          {
            "id": 861627472244203520,
            "id_str": "861627472244203520",
            "indices": [
              68,
              91
            ],
            "media_url": "http://pbs.twimg.com/media/C_UdnvPVYAAZbEs.jpg",
            "media_url_https": "https://pbs.twimg.com/media/C_UdnvPVYAAZbEs.jpg",
            "url": "https://t.co/9r69akA484",
            "display_url": "pic.x.com/9r69akA484",
            "expanded_url": "https://x.com/FloodSocial/status/861627479294746624/photo/1",
            "type": "photo",
            "sizes": {
              "small": {
                "w": 680,
                "h": 680,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "medium": {
                "w": 1200,
                "h": 1200,
                "resize": "fit"
              },
              "large": {
                "w": 2048,
                "h": 2048,
                "resize": "fit"
              }
            }
          },
          {
            "id": 861627474144149504,
            "id_str": "861627474144149504",
            "indices": [
              68,
              91
            ],
            "media_url": "http://pbs.twimg.com/media/C_Udn2UUQAADZIS.jpg",
            "media_url_https": "https://pbs.twimg.com/media/C_Udn2UUQAADZIS.jpg",
            "url": "https://t.co/9r69akA484",
            "display_url": "pic.x.com/9r69akA484",
            "expanded_url": "https://x.com/FloodSocial/status/861627479294746624/photo/1",
            "type": "photo",
            "sizes": {
              "medium": {
                "w": 1200,
                "h": 900,
                "resize": "fit"
              },
              "small": {
                "w": 680,
                "h": 510,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "large": {
                "w": 2048,
                "h": 1536,
                "resize": "fit"
              }
            }
          },
          {
            "id": 861627474760708096,
            "id_str": "861627474760708096",
            "indices": [
              68,
              91
            ],
            "media_url": "http://pbs.twimg.com/media/C_Udn4nUMAAgcIa.jpg",
            "media_url_https": "https://pbs.twimg.com/media/C_Udn4nUMAAgcIa.jpg",
            "url": "https://t.co/9r69akA484",
            "display_url": "pic.x.com/9r69akA484",
            "expanded_url": "https://x.com/FloodSocial/status/861627479294746624/photo/1",
            "type": "photo",
            "sizes": {
              "small": {
                "w": 680,
                "h": 680,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "medium": {
                "w": 1200,
                "h": 1200,
                "resize": "fit"
              },
              "large": {
                "w": 2048,
                "h": 2048,
                "resize": "fit"
              }
            }
          }
        ]
      }
    }

Post con video nativo

Di seguito sono riportati i metadati delle entità estese per questo Post con video:
{
      "extended_entities": {
        "media": [
          {
            "id": 869317980307415040,
            "id_str": "869317980307415040",
            "indices": [
              31,
              54
            ],
            "media_url": "http://pbs.twimg.com/ext_tw_video_thumb/869317980307415040/pu/img/t_E6wyADk_PvxuzF.jpg",
            "media_url_https": "https://pbs.twimg.com/ext_tw_video_thumb/869317980307415040/pu/img/t_E6wyADk_PvxuzF.jpg",
            "url": "https://t.co/TLSTTOvvmP",
            "display_url": "pic.x.com/TLSTTOvvmP",
            "expanded_url": "https://x.com/FloodSocial/status/869318041078820864/video/1",
            "type": "video",
            "sizes": {
              "small": {
                "w": 340,
                "h": 604,
                "resize": "fit"
              },
              "large": {
                "w": 720,
                "h": 1280,
                "resize": "fit"
              },
              "thumb": {
                "w": 150,
                "h": 150,
                "resize": "crop"
              },
              "medium": {
                "w": 600,
                "h": 1067,
                "resize": "fit"
              }
            },
            "video_info": {
              "aspect_ratio": [
                9,
                16
              ],
              "duration_millis": 10704,
              "variants": [
                {
                  "bitrate": 320000,
                  "content_type": "video/mp4",
                  "url": "https://video.twimg.com/ext_tw_video/869317980307415040/pu/vid/180x320/FMei8yCw7yc_Z7e-.mp4"
                },
                {
                  "bitrate": 2176000,
                  "content_type": "video/mp4",
                  "url": "https://video.twimg.com/ext_tw_video/869317980307415040/pu/vid/720x1280/octt5pFbISkef8RB.mp4"
                },
                {
                  "bitrate": 832000,
                  "content_type": "video/mp4",
                  "url": "https://video.twimg.com/ext_tw_video/869317980307415040/pu/vid/360x640/2OmqK74SQ9jNX8mZ.mp4"
                },
                {
                  "content_type": "application/x-mpegURL",
                  "url": "https://video.twimg.com/ext_tw_video/869317980307415040/pu/pl/wcJQJ2nxiFU4ZZng.m3u8"
                }
              ]
            }
          }
        ]
      }
    }
Quando un inserzionista sceglie di limitare la riproduzione dei video alle sole piattaforme di proprietà e gestite da X, l’oggetto video_info viene sostituito con un oggetto additional_media_info. L’oggetto additional_media_info contiene ulteriori informazioni multimediali fornite dal publisher, come title, description ed embeddable flag. I contenuti video sono disponibili solo per i client ufficiali di X quando embeddable=false. In questo caso, tutti gli URL video forniti nel payload saranno basati su X, così l’utente potrà aprire il video in una proprietà di X cliccando sul link. Ecco un esempio di come si presenta l’oggetto extended entities in questa situazione:
{
      "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 di Tomlinson da McCown",
              "description": "NFL",
              "embeddable": false,
              "monetizable": true
            }
          }
        ]
      }
    }
Come discusso sopra, ecco la sezione entities in cui type è impostato erroneamente su ‘photo’. Anche in questo caso, la sezione extended_entities è preferibile per tutti i tipi di contenuti multimediali nativi, inclusi ‘video’ e ‘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"
              }
            }
          }
        ]
      }

    }

Post con una GIF animata

Di seguito sono riportati i metadati delle entità estese per questo Post con una GIF animata:
{
      "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"
                }
              ]
            }
          }
        ]
      }
    }

Esempi di payload nativi con arricchimento

Post

{
	"created_at": "Fri Sep 18 18:36:15 +0000 2020",
	"id": 1307025659294675000,
	"id_str": "1307025659294674945",
	"text": "Ecco un articolo che illustra gli aggiornamenti nel nuovo payload Tweet 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 voce del team #XDevelopers e la vostra fonte ufficiale per aggiornamenti, notizie ed eventi relativi alla #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": "Comprendere il nuovo payload Tweet nella X API v2",
				"description": "X ha recentemente annunciato la nuova X API v2, ricostruita da zero per offrire nuove funzionalità..."
			},
			"indices": [
				74,
				97
			]
		}],
		"user_mentions": [],
		"symbols": []
	},
	"favorited": false,
	"retweeted": false,
	"possibly_sensitive": false,
	"filter_level": "low",
	"lang": "en",
	"matching_rules": [{
		"tag": null
	}]
}

Rispondi al Post

{
	"created_at": "Fri Aug 21 19:10:05 +0000 2020",
	"id": 1296887316556980200,
	"id_str": "1296887316556980230",
	"text": "Scopri come @PennMedCDH utilizza i dati di X per comprendere la crisi sanitaria del COVID-19 📊\n\nhttps://t.co/1tdA8uDWes",
	"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">X Web App</a>",
	"truncated": false,
	"in_reply_to_status_id": 1296887091901718500,
	"in_reply_to_status_id_str": "1296887091901718529",
	"in_reply_to_user_id": 2244994945,
	"in_reply_to_user_id_str": "2244994945",
	"in_reply_to_screen_name": "XDevelopers",
	"user": {
		"id": 2244994945,
		"id_str": "2244994945",
		"name": "X Dev",
		"screen_name": "XDevelopers",
		"location": "127.0.0.1",
		"url": "https://developer.x.com/en/community",
		"description": "La voce del team #XDevelopers e la vostra fonte ufficiale per aggiornamenti, notizie ed eventi relativi alla #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": "Il Penn Med Center for Digital Health ha creato una mappa X del COVID-19 che include grafici con dettagli su sentiment, sintomi riportati, dati suddivisi per stato e dati sui confini relativi all'epidemia di COVID-19. Inoltre, la loro iniziativa Penn Med With You utilizza informazioni regionali aggregate da X per alimentare il loro sito web e il servizio di messaggistica. Il servizio utilizza queste informazioni per diffondere risorse pertinenti e tempestive."
			},
			"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
	}]
}

Post esteso

{
	"created_at": "Wed Aug 19 16:26:16 +0000 2020",
	"id": 1296121314218897400,
	"id_str": "1296121314218897408",
	"text": "L'endpoint per nascondere le risposte viene lanciato oggi! \n\nGli sviluppatori possono nascondere le risposte ai Tweet - un modo fondamentale per gli sviluppatori di… 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": "La voce del team #XDevelopers e la vostra fonte ufficiale per aggiornamenti, notizie ed eventi relativi alla #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": "L'endpoint per nascondere le risposte viene lanciato oggi! \n\nGli sviluppatori possono nascondere le risposte ai Tweet - un modo fondamentale per gli sviluppatori di contribuire a migliorare la qualità della conversazione pubblica utilizzando la #XAPI.\n\nhttps://t.co/khXhTurm9x",
		"display_text_range": [
			0,
			215
		],
		"entities": {
			"hashtags": [{
				"text": "XAPI",
				"indices": [
					178,
					189
				]
			}],
			"urls": [{
				"url": "https://t.co/khXhTurm9x",
				"expanded_url": "https://devcommunity.x.com/t/hide-replies-now-available-in-the-new-twitter-api/140996",
				"display_url": "devcommunity.com/t/hide-replies…",
				"unwound": {
					"url": "https://devcommunity.x.com/t/hide-replies-now-available-in-the-new-twitter-api/140996",
					"status": 200,
					"title": "Nascondi risposte ora disponibile nella nuova X API",
					"description": "Oggi siamo lieti di annunciare la disponibilità generale dell'endpoint per nascondere le risposte nella nuova X API. L'endpoint per nascondere le risposte consente di creare strumenti che aiutano le persone a nascondere o mostrare le risposte ai loro Tweet. Le persone gestiscono le loro risposte per molte ragioni, tra cui dare meno visibilità ai commenti offensivi, distraenti o fuorvianti, oppure per rendere le conversazioni più coinvolgenti. Attraverso questo endpoint, è possibile creare strumenti per aiutare le persone su X a nascondere o mostrare le risposte in modo più rapido e..."
				},
				"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
	}]
}

Post con extended_entities

{
	"created_at": "Wed Aug 12 17:01:42 +0000 2020",
	"id": 1293593516040269800,
	"id_str": "1293593516040269825",
	"text": "È finalmente arrivata! 🥁 Dite ciao alla nuova #XAPI.\n\nStiamo ricostruendo X API v2 da zero per s… 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 voce del team #XDevelopers e la vostra fonte ufficiale per aggiornamenti, notizie ed eventi relativi a #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": "È finalmente arrivata! 🥁 Dite ciao alla nuova #XAPI.\n\nStiamo ricostruendo X API v2 da zero per servire meglio la nostra comunità di sviluppatori. E il lancio di oggi è solo l'inizio.\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": "Introduzione alla nuova e migliorata X API",
					"description": "Introduzione alla nuova X API - ricostruita da zero per fornire nuove funzionalità più rapidamente, così che gli sviluppatori possano aiutare il mondo a connettersi alla conversazione pubblica che avviene su 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: Ho sviluppato una Skill Alexa per X usando APL che consente di visualizzare Tweet e Trend sull'Echo Show!\n\nGuardala qui…",
	"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">X Web App</a>",
	"truncated": false,
	"in_reply_to_status_id": null,
	"in_reply_to_status_id_str": null,
	"in_reply_to_user_id": null,
	"in_reply_to_user_id_str": null,
	"in_reply_to_screen_name": null,
	"user": {
		"id": 2244994945,
		"id_str": "2244994945",
		"name": "X Dev",
		"screen_name": "X Developers",
		"location": "127.0.0.1",
		"url": "https://developer.x.com/en/community",
		"description": "La voce del team #XDevelopers e la tua fonte ufficiale per aggiornamenti, notizie ed eventi relativi all'#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": "Ho sviluppato una Skill Alexa per X usando APL che consente di visualizzare Tweet e Trend sull'Echo Show!\n\nGuardala… https://t.co/RP9NgltX7i",
		"source": "<a href=\"https://mobile.x.com\" rel=\"nofollow\">X Web App</a>",
		"truncated": true,
		"in_reply_to_status_id": null,
		"in_reply_to_status_id_str": null,
		"in_reply_to_user_id": null,
		"in_reply_to_user_id_str": null,
		"in_reply_to_screen_name": null,
		"user": {
			"id": 857699969263964200,
			"id_str": "857699969263964161",
			"name": "Suhem Parack",
			"screen_name": "suhemparack",
			"location": "Seattle, WA",
			"url": "https://developer.x.com",
			"description": "Developer Relations per la Ricerca Accademica @X. Parliamo di ricerca con i dati di X. In precedenza: Amazon Alexa. Le opinioni sono personali",
			"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": "Ho sviluppato una Skill Alexa per X usando APL che consente di visualizzare Tweet e Trend sull'Echo Show!\n\nGuardala qui 👇\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
	}]
}

Retweet con commento

{
	"created_at": "Mon Nov 16 18:09:36 +0000 2020",
	"id": 1328399838128468000,
	"id_str": "1328399838128467969",
	"text": "Come previsto, gli endpoint Labs v2 menzionati di seguito sono stati dismessi. Fateci sapere nei forum se avete… 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 voce del team #XDevelopers e la vostra fonte ufficiale per aggiornamenti, notizie ed eventi relativi alla #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": "👋 Promemoria che X Developer Labs v2 hide replies e recent search saranno dismessi lunedì prossimo, 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 voce del team #XDevelopers e la vostra fonte ufficiale per aggiornamenti, notizie ed eventi relativi alla #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": "👋 Promemoria che X Developer Labs v2 hide replies e recent search saranno dismessi lunedì prossimo, 16 novembre! Vi incoraggiamo a migrare ai nuovi endpoint hide replies e recent search ora disponibili nella v2 #XAPI. Dettagli: 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": "Dismissione di Labs v2 recent search e hide replies",
						"description": "Come annunciato nei nostri comunicati Early Access e hide replies, i seguenti endpoint X Developer Labs v2 saranno dismessi il 16 novembre. Labs v2 recent search Labs v2 hide replies Se chiamati, questi endpoint risponderanno con uno stato HTTP 410 e non restituiranno dati. Basandoci sui vostri feedback da Labs, abbiamo integrato la funzionalità corrispondente nella X API v2. La documentazione pertinente può essere trovata utilizzando i link sottostanti. Clicca qui per iscriverti all'accesso v2 se non l'hai già fatto..."
					},
					"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": "Come previsto, gli endpoint Labs v2 menzionati di seguito sono stati ritirati. Fateci sapere nei forum se avete domande o se avete bisogno di aiuto con X API v2! https://t.co/JaxttUMmjX",
		"display_text_range": [
			0,
			166
		],
		"entities": {
			"hashtags": [],
			"urls": [{
				"url": "https://t.co/JaxttUMmjX",
				"expanded_url": "https://x.com/XDevelopers/status/1327011423252144128",
				"display_url": "x.com/XDevelopers/sta…",
				"indices": [
					167,
					190
				]
			}],
			"user_mentions": [],
			"symbols": []
		}
	},
	"quote_count": 1,
	"reply_count": 4,
	"retweet_count": 7,
	"favorite_count": 29,
	"entities": {
		"hashtags": [],
		"urls": [{
			"url": "https://t.co/ahQvTYaOcZ",
			"expanded_url": "https://x.com/i/web/status/1328399838128467969",
			"display_url": "x.com/i/web/status/1…",
			"indices": [
				117,
				140
			]
		}],
		"user_mentions": [],
		"symbols": []
	},
	"favorited": false,
	"retweeted": false,
	"possibly_sensitive": false,
	"filter_level": "low",
	"lang": "en",
	"matching_rules": [{
		"tag": null
	}]
}

Retweet di Quote Tweet

{
 	"created_at": "Thu Feb 06 17:26:44 +0000 2020",
 	"id": 1225470895902412800,
 	"id_str": "1225470895902412800",
 	"text": "RT @AureliaSpecker: 📣 Se ti è piaciuto il tutorial sul pendolarismo londinese che ho scritto a novembre dell'anno scorso, dai un'occhiata alla versione refactorizzata che usa…",
 	"source": "<a href=\"http://x.com/download/iphone\" rel=\"nofollow\">X per 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 voce del team #XDevelopers e la vostra fonte ufficiale per aggiornamenti, notizie ed eventi relativi alla #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": "📣 Se ti è piaciuto il tutorial sul pendolarismo londinese che ho scritto a novembre dell'anno scorso, dai un'occhiata alla versione refactorizzata che u… https://t.co/cAepHunkFp",
 		"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": 1102321381,
 			"id_str": "1102321381",
 			"name": "Aurelia Specker",
 			"screen_name": "AureliaSpecker",
 			"location": "London, UK",
 			"url": null,
 			"description": "devrel @TwitterUK • Svizzera a Londra • mamma di piante da appartamento • parrucchiera personale di @_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": "Ho scritto un tutorial su come ottenere informazioni personalizzate sui trasporti utilizzando 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 • Svizzera a Londra • mamma di piante da appartamento • parrucchiera personale di @_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": "Ho scritto un tutorial su come ottenere informazioni personalizzate sui trasporti utilizzando la X API🚇\n\n#DEVcommunity #Pythontutorial \n\nDai un'occhiata qui 👇\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": "📣 Se ti è piaciuto il tutorial sui trasporti di Londra che ho scritto a novembre dell'anno scorso, dai un'occhiata alla versione refactorizzata che utilizza il nuovo endpoint di ricerca di 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": "Ho scritto un tutorial su come ottenere informazioni personalizzate sui trasporti utilizzando 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": "Londra, Regno Unito",
 			"url": null,
 			"description": "devrel @TwitterUK • Svizzera a Londra • madre di piante da appartamento • parrucchiera personale di @_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": "Ho scritto un tutorial su come ottenere informazioni personalizzate sui trasporti utilizzando le X API🚇\n\n#DEVcommunity #Pythontutorial \n\nDai un'occhiata qui 👇\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
 	}]
 }

Oggetti dati degli stream di attività Enterprise

Vuoi saperne di più su come il formato dati Activity Streams si mappa al formato X API v2?
Consulta la nostra guida di confronto: Activity Streams rispetto a X API v2
Nota: è fortemente consigliato utilizzare il formato Enriched Native per le API di dati Enterprise.
  • Il formato Enriched Native include tutti i nuovi metadata dal 2017, come i metadata dei sondaggi, e metriche aggiuntive come reply_count e quote_count.
  • Il formato Activity Streams non è stato aggiornato con nuovi metadata o arricchimenti dall’aggiornamento dei caratteri del 2017.

Oggetto Activity

Activity Streams è una traduzione dello schema a oggetti del formato dati originale di X, creata da Gnip per “normalizzare il formato” dei dati dei Post e di altri dati dei social media utilizzando lo Activity Base Schema di terze parti descritto qui. I Post vengono normalizzati nello schema Activity Streams, includendo i tipi di oggetto note, person, place e service come oggetti annidati. I Post possono includere altri oggetti di attività annidati per i Retweet o altri, tra cui twitter_quoted_status e long_object. Il tipo di oggetto di livello base “activity” è simile al Post base level object del formato nativo arricchito. Esempi di payload in formato Activity Streams sono disponibili qui.

Dizionario dei dati

Di seguito trovi il dizionario dei dati per questi attributi di “activity” a livello root, oltre ai link ai dizionari dei dati degli oggetti figli.
AttributoTipoDescrizione
idstringUn IRI univoco per il post. Più nel dettaglio, “tag” è lo schema, “search.x.com” rappresenta il dominio per lo schema, e 2005 è l’anno in cui lo schema è stato derivato.
Quando si memorizzano i Post, questo dovrebbe essere utilizzato come identificatore univoco o chiave primaria.
“id”: “tag:search.x.com,2005:1050118621198921728”
objectTypestringTipo di oggetto, sempre impostato su “activity”
“objectType”: “activity”
objectobjectUn oggetto che rappresenta il post che viene pubblicato o condiviso.
Per i Retweet, questo conterrà un’intera “activity”, con i campi pertinenti descritti in questo schema.
Per i post originali, questo conterrà un oggetto “note”, con i campi descritti qui.
“object”:
“object”:
“objectType”: “note”,
“id”: “object:search.x.com,2005:1050118621198921728”,
“summary”: “To make room for more expression, we will now count all emojis as equal—including those with gender‍‍‍ ‍‍and skin t… https://t.co/MkGjXf9aXm”,
“link”: “http://x.com/API/statuses/1050118621198921728”,
“postedTime”: “2018-10-10T20:19:24.000Z”
long_objectobjectUn oggetto che rappresenta il corpo del testo completo se il testo del post supera i 140 caratteri.


“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”:
“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_rangearraySe il testo del post supera i 140 caratteri.


“display_text_range”: [
0,
142
]
verbstringIl tipo di azione eseguita dall’utente.
Post, “post”
Retweet, “share”
Post eliminati, “delete”
Il verbo è il modo corretto per distinguere tra un Tweet e un vero Retweet. Tuttavia, questo si applica solo ai veri retweet, e non ai Tweet modificati o citati, che non utilizzano la funzionalità Retweet di X. Per una descrizione dei verbi AS
clicca qui.
Per le eliminazioni, nota che solo un numero limitato di campi sarà incluso, come mostrato nel payload di esempio qui sotto.
“verb”: “post”
postedTimedate (ISO 8601)L’ora in cui è avvenuta l’azione, ad esempio l’ora in cui il post è stato pubblicato.


“postedTime”: “2018-10-10T20:19:24.000Z”
generatorobjectUn oggetto che rappresenta l’utilità utilizzata per pubblicare il post. Questo conterrà il nome (“displayName”) e un collegamento (“link”) per l’applicazione sorgente che genera il Post.
“generator”:
“displayName”: “X Web Client”,
“link”: “http://x.com
providerobjectUn oggetto JSON che rappresenta il fornitore dell’attività. Questo conterrà un objectType (“service”), il nome del fornitore (“displayName”), e un collegamento al sito web del fornitore (“link”).
“provider”:

“objectType”: “service”,
“displayName”: “X”,
“link”: “http://www.x.com
linkstringUn permalink per il post.
“link”: “http://x.com/API/statuses/1050118621198921728
bodystringIl testo del post.

Nei Retweet, nota che X modifica il valore del body a livello radice aggiungendo “RT @username” all’inizio, e troncando il testo originale e aggiungendo puntini di sospensione alla fine. Pertanto, per i Retweet, la tua app dovrebbe guardare object.body per assicurarsi di estrarre il testo non modificato del Post originale (che viene ritwittato).
“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_rangearrayDescrive l’intervallo di caratteri all’interno del testo del body che indica il Post visualizzato. I post con @mention iniziali inizieranno da un valore superiore a 0 e i post con media allegati o che superano i 140 caratteri indicheranno il display_text_range nel long_object.

“display_text_range”: [
14,
42
]
oppure
“long_object”:
“display_text_range”: [
0,
277
]…
actorobjectUn oggetto che rappresenta l’utente X che ha pubblicato. L’oggetto Actor si riferisce a un utente X, e contiene tutti i metadata rilevanti per quell’utente.
Vedi
dettagli dell’oggetto actor
inReplyToobjectUn oggetto JSON che si riferisce al Post a cui si sta rispondendo, se applicabile. Contiene un collegamento al Post.
“inReplyTo”:

“link”: “http://x.com/GOP/statuses/349573991561838593
locationobjectUn oggetto JSON che rappresenta il “Place” di X dove il post è stato creato. Questo è un oggetto passato dalla piattaforma X.

Vedi
oggetto location
twitter_entitiesobjectL’oggetto entities dal formato dati di X che contiene elenchi di URL, menzioni e hashtag. Fare riferimento alla documentazione di X sulle Entities qui. Si noti che nei Retweet, X potrebbe troncare i valori delle entities che estrae a livello radice. Pertanto, per i Retweet, l’applicazione dovrebbe controllare object.twitter_entities per assicurarsi di utilizzare valori non troncati.

Vedere i dettagli dell’oggetto twitter_entities
twitter_extended_entitiesobjectUn oggetto dal formato dati nativo di X contenente “media”. Sarà presente per qualsiasi post in cui l’oggetto twitter_entities contiene dati nel campo “media” e includerà più foto quando presenti nel post. Si noti che questa è la posizione corretta per recuperare informazioni sui media per post con più foto.

Più foto sono rappresentate da oggetti JSON separati da virgole all’interno dell’array “media”.

Vedere dettagli dell’oggetto twitter_extended_entities
gnipobjectUn oggetto aggiunto al payload dell’attività per indicare le regole corrispondenti e aggiungere dati arricchiti basati sugli arricchimenti attivi sullo stream o prodotto.

Vedere dettagli dell’oggetto gnip
edit_historyObjectIdentificatori univoci che indicano tutte le versioni di un Post. Per Post senza modifiche, sarà presente un ID. Per Post con una cronologia di modifiche, saranno presenti più ID, disposti in ordine crescente che riflette l’ordine delle modifiche, con la versione più recente nell’ultima posizione dell’array.

Gli ID del Post possono essere utilizzati per idratare e visualizzare versioni precedenti di un Post.

Esempio:

edit_history”:
“initial_tweet_id”: “1283764123”
“edit_tweet_ids”: [“1283764123”, “1394263866”]
edit_controlsObjectQuando presente, indica per quanto tempo un Post è ancora modificabile e il numero di modifiche rimanenti. I Post sono modificabili solo per i primi 30 minuti dopo la creazione e possono essere modificati fino a cinque volte.

Gli ID del Post possono essere utilizzati per idratare e visualizzare versioni precedenti di un Post.

Esempio:

“edit_controls”:
“editable_until_ms”: 123
“edits_remaining”: 3
editableBooleanQuando presente, indica se un Post era idoneo per la modifica al momento della pubblicazione. Questo campo non è dinamico e non cambierà da True a False quando un Post raggiunge il limite di tempo per la modifica o il numero massimo di modifiche. Le seguenti caratteristiche del Post faranno sì che questo campo sia false:

_ Il Post è promosso
_ Il Post ha un sondaggio
_ Il Post è una risposta non-self-thread
_ Il Post è un retweet (si noti che i Quote Tweet sono idonei per la modifica)
_ Il Post è nullcast
_ Post della Community
_ Post Superfollow
_ Post Collaborativo

Attributi aggiuntivi del Post

AttributoTypeDescrizione
twitter_langstring
favoritesCountintNullable. Indica approssimativamente quante volte questo Post è stato messo like dagli utenti di X.

“favoritesCount”:298
retweetCountintNumero di volte in cui questo Post è stato Retweetato. Esempio:

“retweetCount”:153

Attributi deprecati

CampotypeDescrizione
geoobjectPosizione puntuale in cui è stato creato il Post.
twitter_filter_levelstringCampo deprecato mantenuto per evitare modifiche che introducano breaking change

Oggetti di attività Post annidati

In diversi casi, un Oggetto Post includerà altri Post annidati. Se lavori con oggetti annidati, quel payload JSON conterrà più oggetti e ogni Oggetto Post può includere a sua volta propri oggetti. L’oggetto a livello radice conterrà informazioni sul tipo di azione eseguita, ad esempio se si tratta di un Retweet o di un Quote Tweet, e può anche contenere un oggetto che descrive il Post “originale” condiviso. I Post estesi includeranno un oggetto esteso annidato che supera i 140 caratteri, utilizzato per evitare modifiche incompatibili quando fu introdotto l’aggiornamento nel 2017. Ogni dizionario di oggetti annidati è descritto di seguito. Retweet Nel formato dello stream di attività, i Retweet includono un oggetto annidato con il type “activity” e il verbo “note” per rappresentare il Post originale che viene Retwittato.
{
	"id": "tag:search.x.com,2005:222222222222",
	"objectType": "activity",
	"verb": "share",
	"body": "RT @TheOriginalTweeter: Caffè e arte ☕️",
	"actor": {
		"displayName": "TheRetweeter"
	},
	"object": {
		"id": "tag:search.x.com,2005:11111111111",
		"objectType": "activity",
		"verb": "post",
		"body": "Caffè e arte ☕️",
		"actor": {
			"displayName": "TheOriginalTweeter"
		},
		"object": {
			"objectType": "note",
			"id": "object:search.x.com,2005:11111111111",
			"summary": "Caffè e arte ☕️",
			"link": "http://x.com/originaltweeter/statuses/11111111111",
			"postedTime": "2020-12-04T11:00:01.000Z"
		},
		"twitter_entities": {},
		"twitter_extended_entities": {}
	},
	"twitter_entities": {},
	"twitter_extended_entities": {},
	"gnip": {}
}
Stato con citazione su X Il formato degli stream di attività incorpora i Tweet citati { "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 di un Tweet con citazione:
    {
    	"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: Così entusiasta di rendere disponibile questo primo set di endpoint - molti altri in arrivo prima di aver finito. Il team #DevRel di @XDevelopers…",
    	"actor": {},
    	"object": {},
    	"favoritesCount": 0,
    	"twitter_entities": {},
    	"twitter_lang": "en",
    	"retweetCount": 13,
    	"gnip": {},
    	"twitter_filter_level": "low",
    	"twitter_quoted_status": {}
    }

Oggetto lungo

Formato Activity Streams di 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": "Per lasciare più spazio all'espressione, ora conteremo tutti gli emoji allo stesso modo—inclusi quelli con genere‍‍‍ ‍‍e tonalità della pelle… https://t.co/MkGjXf9aXm",
  "long_object": {
    "body": "Per lasciare più spazio all'espressione, ora conteremo tutti gli emoji allo stesso modo—inclusi quelli con genere‍‍‍ ‍‍e modificatori di tonalità della pelle 👍🏻👍🏽👍🏿. Questo cambiamento è ora implementato in Twitter-Text, la nostra libreria Open Source. \n\nStai utilizzando Twitter-Text? Consulta il post del forum per i dettagli: https://t.co/Nx1XZmRCXA",
    "display_text_range": [
      0,
      277
    ],
    "twitter_entities": {vedi oggetto twitter_entities},
  "actor": {vedi oggetto actor},
  "object": {
    "objectType": "note",
    "id": "object:search.x.com,2005:1050118621198921728",
    "summary": "Per lasciare più spazio all'espressione, ora conteremo tutti gli emoji allo stesso modo—inclusi quelli con genere‍‍‍ ‍‍e tonalità della pelle… https://t.co/MkGjXf9aXm",
    "link": "http://x.com/API/statuses/1050118621198921728",
    "postedTime": "2018-10-10T20:19:24.000Z"
  },
  "favoritesCount": 298,
  "twitter_entities": {vedi oggetto twitter_entities},
  "twitter_lang": "en",
  "retweetCount": 153,
  "gnip": {vedi oggetto gnip},
  "twitter_filter_level": "low"
}

Oggetto Actor

L’oggetto Actor contiene i metadati dell’account utente X che descrivono l’utente X che ha creato l’attività.

Dizionario dei dati

AttributoTypeDescrizione
objectTypestring”objectType”: “person”
idstringLa rappresentazione in formato stringa dell’identificatore univoco di questo autore. Esempio:

“id:x.com:2244994945”
linkhttp://www.x.com/XDeveloeprs
displayNameStringIl nome dell’utente, come definito dall’utente stesso. Non necessariamente un nome proprio. In genere limitato a 50 caratteri, ma soggetto a modifiche. Esempio:

“displayName”: “XDevelopers”
preferredUsernamestringIl nome visualizzato, handle o alias con cui questo utente si identifica. Unico ma soggetto a modifiche. Utilizzare id come identificatore utente quando possibile. In genere lungo al massimo 15 caratteri, ma potrebbero esistere alcuni account storici con nomi più lunghi. Esempio:

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

“objectType”:** “place”,

“displayName”: “127.0.0.1”

**        }**
linksarrayNullable. Un URL fornito dall’utente associato al proprio profilo. Esempio:

**       “links”: [

          {

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

“rel”: “me”

**          }

        ]**
summarystringNullable. Stringa UTF-8 definita dall’utente che descrive il proprio account. Esempio:

“summary”: “The voice of the #XDevelopers team…“
protectedBooleanQuando true, indica che questo utente ha scelto di proteggere i propri Post. Vedere About Public and Protected Posts. Esempio:

“protected”: true
verifiedBooleanQuando true, indica che l’utente ha un account verificato. Vedere Verified Accounts. Esempio:

“verified”: false
followersCountIntIl numero di follower che questo account ha attualmente. In determinate condizioni di carico, questo campo indicherà temporaneamente “0”. Esempio:

“followers_count”: 21
friendsCountIntIl numero di utenti seguiti da questo account (ovvero i suoi “following”). In determinate condizioni di carico, questo campo indicherà temporaneamente “0”. Esempio:

“friends_count”: 32
listedCountIntIl numero di List pubbliche di cui questo utente è membro. Esempio:

“listed_count”: 9274
favoritesCountIntIl numero di Post a cui questo utente ha messo like nel corso della vita dell’account. Ortografia britannica utilizzata nel nome del campo per ragioni storiche. Esempio:

“favourites_count”: 13
statusesCountIntIl numero di Post (inclusi i Retweet) pubblicati dall’utente. Esempio:

“statuses_count”: 42
postedTimedateLa data e l’ora UTC di creazione dell’account utente su X. Esempio:

“postedTime”: “2013-12-14T04:35:55.036Z”
imagestringUn URL HTTPS che punta all’immagine del profilo dell’utente. Esempio:

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

Attributi obsoleti (deprecati)

CampoTypeDescrizione
utcOffsetnullIl valore verrà impostato su null. Ancora disponibile tramite GET account/settings
twitterTimeZonenullIl valore verrà impostato su null. Ancora disponibile tramite GET account/settings come tzinfo_name
languagesnullIl valore verrà impostato su null. Ancora disponibile tramite GET account/settings come language

Esempi:

			"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 voce del team #XDevelopers e la tua fonte ufficiale per aggiornamenti, notizie ed eventi relativi alla #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": "Tweet su modifiche e problemi del servizio. Segui @XDevelopers per maggiori informazioni.",
    "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
  }

Oggetto Location

Gli oggetti Location possono esistere all’interno dell’oggetto actor impostato a livello di account X oppure all’interno dell’oggetto profileLocations del gnip object. Gli oggetti Location hanno un type di oggetto place e possono includere un nome, un indirizzo o coordinate geografiche. Gli oggetti Location sono simili a Geo nel formato nativo arricchito.

Dizionario dei dati di localizzazione

CampoTypeDescrizione
objectTypestringVedi qui per informazioni più dettagliate. Esempio:

“objectType”: “place”
displayNamestringIl nome completo della località.

“displayName”: “United States”
namestringNome della località secondo il formato JSON dei place di X.
linkstringUn link alla rappresentazione JSON completa del place di X.

“link”:https://api.x.com/1.1/geo/id/27c45d804c777999.json
geoobjectL’oggetto delle coordinate geografiche di X. Può essere un poligono o un punto.

Vedi geo
countryCodeStringCodice paese abbreviato che rappresenta il paese in cui si trova questa località. Esempio:

“countryCode”: “US”
countryStringNome del paese in cui si trova questa località. Esempio:

“country”: “United States”

oggetti derivati di profileLocations

CampoTipoDescrizione
addressobjectAll’interno dell’oggetto location di profileLocation nell’oggetto gnip. Indirizzo della località ricavato dall’arricchimento geografico del profilo. Il livello di granularità può variare.

“address”: {

**          “country”: “United States”,

          “countryCode”: “US”,

          “locality”: “Providence”,

          “region”: “Rhode Island”,

          “subRegion”: “Providence County”

        }**
geoobjectAll’interno dell’oggetto location di profileLocation nell’oggetto gnip. Coordinate del centroide della località ricavate dall’arricchimento geografico del profilo.

”geo”: {

**          “coordinates”: [

-98.5
,

39.76

          ],

          “type”: “point”

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

Oggetto entities di X

Per il formato Activity Streams, il campo twitter_entities ha lo stesso formato e lo stesso dizionario dei dati illustrati nel formato arricchito nativo entities object qui.

Esempio:

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

Oggetto X extended entities

Per il formato Activity streams, twitter_extended_entities utilizza lo stesso formato e lo stesso dizionario dei dati dell’oggetto extended_entities nel formato nativo arricchito descritto qui.

Esempio:

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

Oggetto Gnip

L’oggetto gnip, nel formato Activity streams, contiene i metadata aggiunti dagli arricchimenti attivi e indica anche le regole di corrispondenza per l’attività.

Dizionario dati

CampoTipoDescrizione
matching_rulesarrayContiene un array di oggetti regola corrispondenti che indicano la regola a cui l’attività corrisponde.
“matching_rules”: [

**      {

        “tag”: null,

“id”:** 1026514022567358500**,

“id_str”:** “1026514022567358464”

**      }

    ]**
urlsarrayContiene un array dei collegamenti presenti nell’attività e i metadati dell’URL espanso per l’arricchimento di URL unwinding.

**    “urls”: [

      {

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

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

“expanded_status”: 200**,

“expanded_url_title”:** “Birdys Daughter”,

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

**      }

    ]**
profileLocationsarray of location objectsContiene l’oggetto posizione derivato dall’arricchimento 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”

**      }

    ]

  }**

Esempio:

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

Esempi di payload degli activity stream

Attività dei Post
{
	"id": "tag:search.x.com,2005:1307025659294674945",
	"objectType": "activity",
	"verb": "post",
	"postedTime": "2020-09-18T18:36:15.000Z",
	"generator": {
		"displayName": "X Web App",
		"link": "https://mobile.x.com"
	},
	"provider": {
		"objectType": "service",
		"displayName": "X",
		"link": "http://www.x.com"
	},
	"link": "http://x.com/XDevelopers/statuses/1307025659294674945",
	"body": "Ecco un articolo che illustra gli aggiornamenti nel nuovo payload Tweet v2 https://t.co/oeF3ZHeKQQ",
	"actor": {
		"objectType": "person",
		"id": "id:twitter.com:2244994945",
		"link": "http://www.x.com/XDevelopers",
		"displayName": "X Dev",
		"postedTime": "2013-12-14T04:35:55.036Z",
		"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"summary": "La voce del team #XDevelopers e la vostra fonte ufficiale per aggiornamenti, notizie ed eventi relativi alla #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": "Ecco un articolo che illustra gli aggiornamenti nel nuovo payload Tweet v2 https://t.co/oeF3ZHeKQQ",
		"link": "http://x.com/XDevelopers/statuses/1307025659294674945",
		"postedTime": "2020-09-18T18:36:15.000Z"
	},
	"inReplyTo": {
		"link": "http://x.com/XDevelopers/statuses/1304102743196356610"
	},
	"favoritesCount": 70,
	"twitter_entities": {
		"hashtags": [],
		"urls": [{
			"url": "https://t.co/oeF3ZHeKQQ",
			"expanded_url": "https://dev.to/twitterdev/understanding-the-new-tweet-payload-in-the-twitter-api-v2-1fg5",
			"display_url": "dev.to/twitterdev/und…",
			"indices": [
				74,
				97
			]
		}],
		"user_mentions": [],
		"symbols": []
	},
	"twitter_lang": "en",
	"retweetCount": 11,
	"gnip": {
		"matching_rules": [{
			"tag": null
		}],
		"urls": [{
			"url": "https://t.co/oeF3ZHeKQQ",
			"expanded_url": "https://dev.to/twitterdev/understanding-the-new-tweet-payload-in-the-twitter-api-v2-1fg5",
			"expanded_status": 200,
			"expanded_url_title": "Comprendere il nuovo payload Tweet nella X API v2",
			"expanded_url_description": "X ha recentemente annunciato la nuova X API v2, ricostruita da zero per fornire nuove funzionalità..."
		}]
	},
	"twitter_filter_level": "low"
}
Attività del Post di risposta
{
	"id": "tag:search.x.com,2005:1296887316556980230",
	"objectType": "activity",
	"verb": "post",
	"postedTime": "2020-08-21T19:10:05.000Z",
	"generator": {
		"displayName": "X Web App",
		"link": "https://mobile.x.com"
	},
	"provider": {
		"objectType": "service",
		"displayName": "X",
		"link": "http://www.x.com"
	},
	"link": "http://x.com/XDevelopers/statuses/1296887316556980230",
	"body": "Scopri come @PennMedCDH utilizza i dati di X per comprendere la crisi sanitaria del COVID-19 📊\n\nhttps://t.co/1tdA8uDWes",
	"actor": {
		"objectType": "person",
		"id": "id:twitter.com:2244994945",
		"link": "http://www.x.com/XDevelopers",
		"displayName": "X Dev",
		"postedTime": "2013-12-14T04:35:55.036Z",
		"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"summary": "La voce del team #XDevelopers e la tua fonte ufficiale per aggiornamenti, notizie ed eventi relativi alle #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": "Scopri come @PennMedCDH utilizza i dati di X per comprendere la crisi sanitaria del COVID-19 📊\n\nhttps://t.co/1tdA8uDWes",
		"link": "http://x.com/XDevelopers/statuses/1296887316556980230",
		"postedTime": "2020-08-21T19:10:05.000Z"
	},
	"inReplyTo": {
		"link": "http://x.com/XDevelopers/statuses/1296887091901718529"
	},
	"favoritesCount": 26,
	"twitter_entities": {
		"hashtags": [],
		"urls": [{
			"url": "https://t.co/1tdA8uDWes",
			"expanded_url": "https://developer.x.com/en/use-cases/success-stories/penn",
			"display_url": "developer.x.com/en/use-cases/s…",
			"indices": [
				87,
				110
			]
		}],
		"user_mentions": [{
			"screen_name": "PennMedCDH",
			"name": "Penn Med CDH",
			"id": 1615654896,
			"id_str": "1615654896",
			"indices": [
				8,
				19
			]
		}],
		"symbols": []
	},
	"twitter_lang": "en",
	"retweetCount": 9,
	"gnip": {
		"matching_rules": [{
			"tag": null
		}],
		"urls": [{
			"url": "https://t.co/1tdA8uDWes",
			"expanded_url": "https://developer.x.com/en/use-cases/success-stories/penn",
			"expanded_status": 200,
			"expanded_url_title": "Penn Medicine Center for Digital Health",
			"expanded_url_description": "Il Penn Med Center for Digital Health ha creato una mappa X del COVID-19 che include grafici con dettagli su sentiment, sintomi riportati, dati suddivisi per stato e dati sui confini relativi all'epidemia di COVID-19. Inoltre, la loro iniziativa Penn Med With You utilizza informazioni regionali aggregate da X per alimentare il loro sito web e il servizio di messaggistica. Il servizio utilizza queste informazioni per diffondere risorse pertinenti e tempestive."
		}]
	},
	"twitter_filter_level": "low"
}
Attività dei Post con long_object
{
	"id": "tag:search.x.com,2005:1296121314218897408",
	"objectType": "activity",
	"verb": "post",
	"postedTime": "2020-08-19T16:26:16.000Z",
	"generator": {
		"displayName": "X Web App",
		"link": "https://mobile.x.com"
	},
	"provider": {
		"objectType": "service",
		"displayName": "X",
		"link": "http://www.x.com"
	},
	"link": "http://x.com/XDevelopers/statuses/1296121314218897408",
	"body": "L'endpoint per nascondere le risposte è in arrivo oggi! \n\nGli sviluppatori possono nascondere le risposte ai Tweet - un modo fondamentale con cui gli sviluppatori po… https://t.co/VyfXs1RTXn",
	"long_object": {
		"body": "L'endpoint per nascondere le risposte è in arrivo oggi! \n\nGli sviluppatori possono nascondere le risposte ai Tweet - un modo fondamentale con cui gli sviluppatori possono contribuire a migliorare la qualità della conversazione pubblica utilizzando l'#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 voce del team #XDevelopers e la vostra fonte ufficiale per aggiornamenti, notizie ed eventi relativi all'#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": "L'endpoint per nascondere le risposte è in arrivo oggi! \n\nGli sviluppatori possono nascondere le risposte ai Tweet - un modo fondamentale con cui gli sviluppatori po… 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": "Funzione per nascondere le risposte ora disponibile nella nuova X API",
			"expanded_url_description": "Oggi siamo lieti di annunciare la disponibilità generale dell'endpoint per nascondere le risposte nella nuova X API. L'endpoint per nascondere le risposte consente di creare strumenti che aiutano le persone a nascondere o rendere nuovamente visibili le risposte ai loro Tweet. Le persone gestiscono le loro risposte per molte ragioni, tra cui dare meno visibilità ai commenti offensivi, distraenti o fuorvianti, oppure per rendere le conversazioni più coinvolgenti. Tramite questo endpoint, puoi creare strumenti per aiutare le persone su X a nascondere o rendere nuovamente visibili le risposte in modo più rapido e..."
		}]
	},
	"twitter_filter_level": "low"
}
Attività dei Post con twitter_extended_entities
{
	"id": "tag:search.x.com,2005:1293593516040269825",
	"objectType": "activity",
	"verb": "post",
	"postedTime": "2020-08-12T17:01:42.000Z",
	"generator": {
		"displayName": "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": "È finalmente qui! 🥁 Dite ciao alle nuove #XAPI.\n\nStiamo ricostruendo le X API v2 da zero per s… https://t.co/UeCndQGMjx",
	"long_object": {
		"body": "È finalmente qui! 🥁 Dite ciao alle nuove #XAPI.\n\nStiamo ricostruendo le X API v2 da zero per servire meglio la nostra community di sviluppatori. E il lancio di oggi è solo l'inizio.\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": 156,
						"resize": "crop"
					},
					"medium": {
						"w": 1200,
						"h": 675,
						"resize": "fit"
					},
					"small": {
						"w": 680,
						"h": 383,
						"resize": "fit"
					},
					"large": {
						"w": 1280,
						"h": 720,
						"resize": "fit"
					}
				}
			}]
		}
	},
	"display_text_range": [
		0,
		140
	],
	"actor": {
		"objectType": "person",
		"id": "id:twitter.com:2244994945",
		"link": "http://www.x.com/XDevelopers",
		"displayName": "X Dev",
		"postedTime": "2013-12-14T04:35:55.036Z",
		"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"summary": "La voce del team #XDevelopers e la vostra fonte ufficiale per aggiornamenti, notizie ed eventi relativi alle #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": "È finalmente arrivata! 🥁 Ecco la nuova #API.\n\nStiamo ricostruendo la X API v2 da zero per c… 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": "Presentazione della nuova e migliorata X API",
			"expanded_url_description": "Presentazione della nuova X API - ricostruita da zero per fornire nuove funzionalità più rapidamente, così gli sviluppatori possono aiutare il mondo a connettersi alla conversazione pubblica che avviene su X."
		}]
	},
	"twitter_filter_level": "low"
}
Attività di Retweet
{
	"id": "tag:search.x.com,2005:1229851574555508737",
	"objectType": "activity",
	"verb": "share",
	"postedTime": "2020-02-18T19:33:59.000Z",
	"generator": {
		"displayName": "X Web App",
		"link": "https://mobile.x.com"
	},
	"provider": {
		"objectType": "service",
		"displayName": "X",
		"link": "http://www.x.com"
	},
	"link": "http://x.com/XDevelopers/statuses/1229851574555508737",
	"body": "RT @suhemparack: Ho sviluppato una Skill Alexa per X utilizzando APL che consente di visualizzare Tweet e Tendenze sull'Echo Show!\n\nGuardala qui…",
	"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 voce del team #XDevelopers e la fonte ufficiale per aggiornamenti, notizie ed eventi relativi alla #XAPI.",
		"friendsCount": 2038,
		"followersCount": 512292,
		"listedCount": 1666,
		"statusesCount": 3634,
		"twitterTimeZone": null,
		"verified": true,
		"utcOffset": null,
		"preferredUsername": "XDevelopers",
		"languages": [],
		"links": [{
			"href": "https://developer.x.com/en/community",
			"rel": "me"
		}],
		"location": {
			"objectType": "place",
			"displayName": "127.0.0.1"
		},
		"favoritesCount": 2147
	},
	"object": {
		"id": "tag:search.x.com,2005:1229843515603144704",
		"objectType": "activity",
		"verb": "post",
		"postedTime": "2020-02-18T19:01:58.000Z",
		"generator": {
			"displayName": "X Web App",
			"link": "https://mobile.x.com"
		},
		"provider": {
			"objectType": "service",
			"displayName": "X",
			"link": "http://www.x.com"
		},
		"link": "http://x.com/suhemparack/statuses/1229843515603144704",
		"body": "Ho sviluppato una Skill Alexa per X utilizzando APL che consente di visualizzare Tweet e Tendenze sull'Echo Show!\n\nGuardala… https://t.co/RP9NgltX7i",
		"long_object": {
			"body": "Ho sviluppato una Skill Alexa per X utilizzando APL che consente di visualizzare Tweet e Tendenze sull'Echo Show!\n\nGuardala qui 👇\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": "Developer Relations per la Ricerca Accademica @X. Parliamo di ricerca con i dati di X. In precedenza: Amazon Alexa. Le opinioni sono personali",
			"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": "Ho sviluppato una Skill Alexa per X utilizzando APL che consente di visualizzare Tweet e Tendenze sull'Echo Show!\n\nGuardala… 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"
}
Attività dei Quote Tweet
{
 	"id": "tag:search.x.com,2005:1328399838128467969",
 	"objectType": "activity",
 	"verb": "post",
 	"postedTime": "2020-11-16T18:09:36.000Z",
 	"generator": {
 		"displayName": "X Web App",
 		"link": "https://mobile.x.com"
 	},
 	"provider": {
 		"objectType": "service",
 		"displayName": "X",
 		"link": "http://www.x.com"
 	},
 	"link": "http://x.com/XDevelopers/statuses/1328399838128467969",
 	"body": "Come previsto, gli endpoint Labs v2 indicati di seguito sono stati dismessi. Fateci sapere nei forum se avete… https://t.co/ahQvTYaOcZ",
 	"long_object": {
 		"body": "Come previsto, gli endpoint Labs v2 indicati di seguito sono stati dismessi. Fateci sapere nei forum se avete domande o se avete bisogno di aiuto con X API v2! https://t.co/JaxttUMmjX",
 		"display_text_range": [
 			0,
 			166
 		],
 		"twitter_entities": {
 			"hashtags": [],
 			"urls": [{
 				"url": "https://t.co/JaxttUMmjX",
 				"expanded_url": "https://x.com/XDevelopers/status/1327011423252144128",
 				"display_url": "x.com/XDevelopers/sta…",
 				"indices": [
 					167,
 					190
 				]
 			}],
 			"user_mentions": [],
 			"symbols": []
 		}
 	},
 	"display_text_range": [
 		0,
 		140
 	],
 	"actor": {
 		"objectType": "person",
 		"id": "id:twitter.com:2244994945",
 		"link": "http://www.x.com/XDevelopers",
 		"displayName": "X Dev",
 		"postedTime": "2013-12-14T04:35:55.036Z",
 		"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
 		"summary": "La voce del team #XDevelopers e la vostra fonte ufficiale per aggiornamenti, notizie ed eventi relativi alle #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": "Come previsto, gli endpoint Labs v2 indicati di seguito sono stati dismessi. Fateci sapere nei forum se avete… 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": "Dismissione degli endpoint Labs v2 per ricerca recente e nascondi risposte",
 			"expanded_url_description": "Come annunciato per Early Access e nascondi risposte, i seguenti endpoint X Developer Labs v2 saranno dismessi il 16 novembre. Labs v2 ricerca recente Labs v2 nascondi risposte Se richiamati, questi endpoint risponderanno con stato HTTP 410 e non restituiranno dati. Sulla base dei vostri feedback da Labs, abbiamo integrato le funzionalità corrispondenti in X API v2. La documentazione pertinente è disponibile utilizzando i link qui sotto. Clicca qui per richiedere l'accesso v2 se non l'hai già fatto...",
 		}]
 	},
 	"twitter_filter_level": "low",
 	"twitter_quoted_status": {
 		"id": "tag:search.x.com,2005:1327011423252144128",
 		"objectType": "activity",
 		"verb": "post",
 		"postedTime": "2020-11-12T22:12:32.000Z",
 		"generator": {
 			"displayName": "X Web App",
 			"link": "https://mobile.x.com"
 		},
 		"provider": {
 			"objectType": "service",
 			"displayName": "X",
 			"link": "http://www.x.com"
 		},
 		"link": "http://x.com/XDevelopers/statuses/1327011423252144128",
 		"body": "👋 Promemoria: X Developer Labs v2 nascondi risposte e ricerca recente saranno dismessi lunedì prossimo, nove… https://t.co/EEWN2Q9aXh",
 		"long_object": {
 			"body": "👋 Promemoria: X Developer Labs v2 nascondi risposte e ricerca recente saranno dismessi lunedì prossimo, 16 novembre! Vi incoraggiamo a migrare ai nuovi endpoint nascondi risposte e ricerca recente ora disponibili in v2 #XAPI. Dettagli: 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 voce del team #XDevelopers e la vostra fonte ufficiale per aggiornamenti, notizie ed eventi relativi alle #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": "👋 Promemoria: X Developer Labs v2 nascondi risposte e ricerca recente saranno dismessi lunedì prossimo, 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"
 	}
 }
Attività di Retweet e Quote Tweet
{
	"id": "tag:search.x.com,2005:1225470895902412800",
	"objectType": "activity",
	"verb": "share",
	"postedTime": "2020-02-06T17:26:44.000Z",
	"generator": {
		"displayName": "X per 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: 📣 Se ti è piaciuto il tutorial sul pendolarismo londinese che ho scritto a novembre dell'anno scorso, dai un'occhiata alla versione refactorizzata che usa…",
	"actor": {
		"objectType": "person",
		"id": "id:twitter.com:2244994945",
		"link": "http://www.x.com/XDevelopers",
		"displayName": "X Dev",
		"postedTime": "2013-12-14T04:35:55.036Z",
		"image": "https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg",
		"summary": "La voce del team #XDevelopers e la tua fonte ufficiale per aggiornamenti, notizie ed eventi relativi alla #XAPI.",
		"friendsCount": 2038,
		"followersCount": 512292,
		"listedCount": 1666,
		"statusesCount": 3634,
		"twitterTimeZone": null,
		"verified": true,
		"utcOffset": null,
		"preferredUsername": "XDevelopers",
		"languages": [],
		"links": [{
			"href": "https://developer.x.com/en/community",
			"rel": "me"
		}],
		"location": {
			"objectType": "place",
			"displayName": "127.0.0.1"
		},
		"favoritesCount": 2147
	},
	"object": {
		"id": "tag:search.x.com,2005:1224709550214873090",
		"objectType": "activity",
		"verb": "post",
		"postedTime": "2020-02-04T15:01:25.000Z",
		"generator": {
			"displayName": "X Web App",
			"link": "https://mobile.x.com"
		},
		"provider": {
			"objectType": "service",
			"displayName": "X",
			"link": "http://www.x.com"
		},
		"link": "http://x.com/AureliaSpecker/statuses/1224709550214873090",
		"body": "📣 Se ti è piaciuto il tutorial sul pendolarismo londinese che ho scritto a novembre dell'anno scorso, dai un'occhiata alla versione refactorizzata che u… https://t.co/cAepHunkFp",
		"long_object": {
			"body": "📣 Se ti è piaciuto il tutorial sul pendolarismo londinese che ho scritto a novembre dell'anno scorso, dai un'occhiata alla versione refactorizzata che usa il nuovo endpoint di ricerca di X 🚇 https://t.co/87XIPZmZBJ\n\n#DEVcommunity #Pythontutorial @XDevelopers @API https://t.co/dXrJYvn3hY",
			"display_text_range": [
				0,
				229
			],
			"twitter_entities": {
				"hashtags": [{
						"text": "DEVcommunity",
						"indices": [
							176,
							189
						]
					},
					{
						"text": "Pythontutorial",
						"indices": [
							190,
							205
						]
					}
				],
				"urls": [{
						"url": "https://t.co/87XIPZmZBJ",
						"expanded_url": "https://bit.ly/2OrnrCC",
						"display_url": "bit.ly/2OrnrCC",
						"indices": [
							151,
							174
						]
					},
					{
						"url": "https://t.co/dXrJYvn3hY",
						"expanded_url": "https://x.com/AureliaSpecker/status/1195000047089389573",
						"display_url": "x.com/AureliaSpecker…",
						"indices": [
							230,
							253
						]
					}
				],
				"user_mentions": [{
						"screen_name": "XDevelopers",
						"name": "X Dev",
						"id": 2244994945,
						"id_str": "2244994945",
						"indices": [
							206,
							217
						]
					},
					{
						"screen_name": "API",
						"name": "X API",
						"id": 6253282,
						"id_str": "6253282",
						"indices": [
							218,
							229
						]
					}
				],
				"symbols": []
			}
		},
		"display_text_range": [
			0,
			140
		],
		"actor": {
			"objectType": "person",
			"id": "id:twitter.com:1102321381",
			"link": "http://www.x.com/AureliaSpecker",
			"displayName": "Aurelia Specker",
			"postedTime": "2013-01-18T23:45:43.000Z",
			"image": "https://pbs.twimg.com/profile_images/1137517534104772608/8FBYgc6G_normal.jpg",
			"summary": "devrel @TwitterUK • Svizzera a Londra • mamma di piante da appartamento • parrucchiera personale di @_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": "Londra, Regno Unito"
			},
			"favoritesCount": 4979
		},
		"object": {
			"objectType": "note",
			"id": "object:search.x.com,2005:1224709550214873090",
			"summary": "📣 Se ti è piaciuto il tutorial sul pendolarismo londinese che ho scritto a novembre dell'anno scorso, dai un'occhiata alla versione refactorizzata che u… https://t.co/cAepHunkFp",
			"link": "http://x.com/AureliaSpecker/statuses/1224709550214873090",
			"postedTime": "2020-02-04T15:01:25.000Z"
		},
		"favoritesCount": 43,
		"twitter_entities": {
			"hashtags": [],
			"urls": [{
				"url": "https://t.co/cAepHunkFp",
				"expanded_url": "https://x.com/i/web/status/1224709550214873090",
				"display_url": "x.com/i/web/status/1…",
				"indices": [
					117,
					140
				]
			}],
			"user_mentions": [],
			"symbols": []
		},
		"twitter_lang": "en",
		"twitter_filter_level": "low"
	},
	"favoritesCount": 0,
	"twitter_entities": {
		"hashtags": [],
		"urls": [],
		"user_mentions": [{
			"screen_name": "AureliaSpecker",
			"name": "Aurelia Specker",
			"id": 1102321381,
			"id_str": "1102321381",
			"indices": [
				3,
				18
			]
		}],
		"symbols": []
	},
	"twitter_lang": "en",
	"retweetCount": 12,
	"gnip": {
		"matching_rules": [{
			"tag": null
		}],
		"urls": [{
				"url": "https://t.co/87XIPZmZBJ",
				"expanded_url": "https://dev.to/XDevelopers/migrate-to-twitter-s-newly-released-labs-recent-search-endpoint-3npe",
				"expanded_status": 200,
				"expanded_url_title": null,
				"expanded_url_description": null
			},
			{
				"url": "https://t.co/sOjXW4YhbN",
				"expanded_url": "https://dev.to/XDevelopers/using-the-twitter-api-to-make-your-commute-easier-3od0",
				"expanded_status": 200,
				"expanded_url_title": null,
				"expanded_url_description": null
			}
		]
	},
	"twitter_filter_level": "low",
	"twitter_quoted_status": {
		"id": "tag:search.x.com,2005:1195000047089389573",
		"objectType": "activity",
		"verb": "post",
		"postedTime": "2019-11-14T15:26:27.000Z",
		"generator": {
			"displayName": "X Web App",
			"link": "https://mobile.x.com"
		},
		"provider": {
			"objectType": "service",
			"displayName": "X",
			"link": "http://www.x.com"
		},
		"link": "http://x.com/AureliaSpecker/statuses/1195000047089389573",
		"body": "Ho scritto un tutorial su come ottenere informazioni di viaggio personalizzate utilizzando le X API🚇\n\n#DEVcommunity #Pythontutorial… https://t.co/pL0qJ4vhtE",
		"long_object": {
			"body": "Ho scritto un tutorial su come ottenere informazioni di viaggio personalizzate utilizzando le X API🚇\n\n#DEVcommunity #Pythontutorial \n\nGuardalo qui 👇\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 • Svizzera a Londra • mamma di piante da appartamento • parrucchiera personale di @_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": "Londra, Regno Unito"
			},
			"favoritesCount": 4979
		},
		"object": {
			"objectType": "note",
			"id": "object:search.x.com,2005:1195000047089389573",
			"summary": "Ho scritto un tutorial su come ottenere informazioni di viaggio personalizzate utilizzando le 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"
	}
}

Cronologia dei metadata dei Tweet

Vai a Introduzione Concetti chiave Cronologia di X Suggerimenti per il filtraggio Prossimi passaggi

Introduzione**

Alla base, X è una rete di comunicazione pubblica, in tempo reale e globale. Dal 2006 l’evoluzione di X è stata guidata sia dai modelli d’uso e dalle convenzioni degli utenti sia da nuove funzionalità e miglioramenti del prodotto. Se utilizzi i dati di X per ricerche storiche, comprendere la cronologia di questa evoluzione è importante per far emergere i Post di interesse dall’archivio dei dati. X è stata lanciata come semplice app mobile via SMS ed è cresciuta fino a diventare una piattaforma di comunicazione completa. Una piattaforma con un set completo di API. Le API sono sempre state un pilastro della rete X. La prima API è arrivata poco dopo il lancio di X. Quando il geotagging dei Post è stato introdotto per la prima volta nel 2009, è stato reso disponibile tramite una Geo API (e successivamente la possibilità di “geotaggare” un Post è stata integrata nell’interfaccia utente di X.com). Oggi le API di X alimentano la rete di comunicazione bidirezionale che è diventata una fonte di notizie dell’ultima ora e di condivisione di informazioni. Le opportunità per costruire su questo canale di comunicazione globale e in tempo reale sono infinite. X mette a disposizione due API storiche che forniscono accesso a ogni Post disponibile pubblicamente: Historical PowerTrack e la Full-Archive Search API. Entrambe le API forniscono un set di operatori utilizzati per eseguire query e raccogliere Post di interesse. Questi operatori corrispondono a una varietà di attributi associati a ogni Post, centinaia di attributi come il contenuto testuale del Post, il nome dell’account dell’autore e i link condivisi nel Post. I Post e i loro attributi sono codificati in JSON, un comune formato di interscambio dati basato su testo. Con l’introduzione di nuove funzionalità, sono comparsi nuovi attributi JSON e, di norma, sono stati introdotti nuovi operatori API per eseguire il match su tali attributi. Se il tuo caso d’uso prevede la necessità di ascoltare ciò che il mondo ha detto su X, più comprendi quando gli operatori hanno iniziato ad avere metadati JSON su cui effettuare il match, più efficaci potranno essere i tuoi filtri storici di PowerTrack. Di seguito introdurremo alcuni concetti chiave che preparano il terreno per comprendere come gli aggiornamenti nei metadati dei Post influenzino l’individuazione del tuo segnale dati di interesse.

Concetti chiave**

Dalle convenzioni degli utenti agli oggetti di prima classe di X

Gli utenti di X hanno introdotto in modo organico nuovi schemi di comunicazione, oggi fondamentali, nella rete di X. Un esempio emblematico è l’hashtag, ormai utilizzato quasi universalmente su tutti i social network. Gli hashtag sono stati introdotti per organizzare conversazioni e argomenti. Su una rete con centinaia di milioni di messaggi al giorno, gli strumenti per trovare Post di interesse sono essenziali, e gli hashtag sono diventati un metodo fondamentale. Poco dopo la diffusione degli hashtag, hanno ricevuto status e supporto ufficiali da X. Quando gli hashtag sono diventati un “oggetto di prima classe”, ciò ha avuto varie conseguenze. Ha significato che gli hashtag sono diventati cliccabili/ricercabili nell’interfaccia utente di X.com. Ha anche significato che gli hashtag sono entrati a far parte della famiglia delle entities di X, insieme alle @mentions, ai media allegati, ai simboli azionari e ai link condivisi. Queste entità sono comodamente codificate in un array JSON pre‑analizzato, semplificando per gli sviluppatori l’elaborazione, la scansione e l’archiviazione. I Retweet sono un altro esempio di convenzioni guidate dagli utenti divenute oggetti ufficiali. Il Retweet è nato come modo per “inoltrare” contenuti ad altri. All’inizio era un processo manuale di copia/incolla di un Post con il prefisso “RT @”. Questo processo è stato poi automatizzato tramite un nuovo pulsante Retweet, completo di nuove metadata JSON. È nato il Retweet “ufficiale”. Altri esempi includono le “menzioni”, la condivisione di contenuti multimediali e di link web, e la condivisione della posizione insieme al proprio Post. Ciascuno di questi modelli d’uso ha portato a nuove funzionalità dell’interfaccia utente di x.com, a nuovo JSON di supporto e quindi a nuovi modi per eseguire il matching sui Post. Tutti questi attributi fondamentali del Post hanno portato alla creazione di PowerTrack Operators utilizzati per eseguire il matching su di essi.

Metadati dei Post, mutabilità, aggiornamenti e aggiornatezza

Sebbene i messaggi dei Post possano avere una lunghezza massima in caratteri, la descrizione JSON di un Post è composta da oltre 100 attributi. Tra questi: chi ha pubblicato, a che ora, se si tratta di un Post originale o di un Retweet, e un array di oggetti di primo livello come hashtag, menzioni e link condivisi. Per l’account che ha pubblicato, è presente un oggetto User (o Actor) con una varietà di attributi che forniscono il Profilo dell’utente e altri metadati dell’account. I profili includono una breve descrizione biografica, una località principale (testo libero), la lingua preferita e un link facoltativo a un sito web. Alcuni metadati dell’account non cambiano mai (ad es. id utente numerico e data di creazione), altri cambiano lentamente nel tempo, mentre altri ancora variano più frequentemente. Le persone cambiano lavoro e si trasferiscono. Le aziende aggiornano le proprie informazioni. Quando si raccolgono Post storici, è importante comprendere che alcuni metadati sono come erano al momento della pubblicazione, mentre altri sono come sono al momento dell’invio della query Con tutte le API storiche, la descrizione del profilo dell’utente, il nome visualizzato e gli attributi “home” del profilo vengono aggiornati ai valori in vigore al momento della query.

Media “nativi”

X.com e le App mobili di X supportano l’aggiunta di foto e video ai Post cliccando un pulsante e sfogliando le gallerie foto. Ora che sono integrate come azioni di primo livello, i video e le foto condivisi in questo modo sono definiti “media nativi”. Molti Operatori di query funzionano con queste risorse “native”, inclusi has:videos, has:images e has:media. Questi operatori eseguono il match solo su contenuti multimediali condivisi tramite le funzionalità di X. Per trovare altri media ospitati al di fuori della piattaforma X, è necessario usare Operatori che eseguono il match sui metadata dell’URL. Quindi, prima di approfondire i dettagli dei prodotti Historical PowerTrack e Full-Archive Search, facciamo un tour di come X, come prodotto e piattaforma, si è evoluto nel tempo. Cronologia di X Di seguito troverai una selezione della cronologia di X. La maggior parte di questi aggiornamenti di X ha in qualche modo influenzato in modo sostanziale il comportamento degli utenti, i contenuti JSON dei Post, gli Operatori di query o tutti e tre. Considerando X come una piattaforma API, i seguenti eventi hanno in qualche modo influito sui payload JSON usati per codificare i Post. A loro volta, questi dettagli JSON influiscono su come le API storiche di X eseguono il match su di essi. Nota che questo elenco cronologico è generalmente accurato ma non esaustivo.

2006

  • Ottobre
    • @replies diventa una convenzione.
    • I cashtagcompaionoperlaprimavolta,malusoperlemenzionideitickerazionaridiventacomunesoloalliniziodel2009.Icashtag compaiono per la prima volta, ma l’uso per le menzioni dei ticker azionari diventa comune solo all’inizio del 2009. I cashtag diventano un link cliccabile/ricercabile a giugno 2012.
  • Novembre - Introduzione dei Preferiti.

2007

  • Gennaio - le @reply diventano un oggetto di prima classe, con un pulsante di risposta nell’interfaccia utente e i metadati in_reply_to.
  • Aprile - i Retweet diventano una convenzione.
  • Agosto - gli #hashtag emergono come strumento principale per cercare e organizzare i Post.

2009

  • Febbraio - i $cashtags diventano una convenzione comune per discutere i simboli dei titoli azionari.
  • Maggio - Viene introdotta la beta del Retweet con “Via @” anteposto al corpo del Post.
  • Giugno - Introdotti gli account verificati.
  • Agosto - I Retweet diventano un oggetto di prima classe con il pattern “RT @” e la nuova metadata retweet_status.
  • Ottobre - Lanciata la funzionalità List.
  • Novembre - Viene lanciata la Post Geotagging API, fornendo il primo metodo per consentire agli utenti di condividere la posizione tramite app di terze parti.

2010

  • Giugno - Introdotto X Places per il geotagging dei Post.
  • Agosto - Lanciato il pulsante Post per i siti web. Condividere i link è diventato più semplice.

2011

  • Maggio - Introdotto il pulsante Segui, semplificando il follow degli account associati ai siti web.
  • Agosto - Introdotte le foto native.

2012

  • Giugno - i $Cashtags diventano link cliccabili/ricercabili.

2014

  • Marzo - Tag delle foto e fino a quattro foto supportate. Sono stati introdotti i metadati X Entities estesi.
  • Aprile - Le emoji sono supportate nativamente nell’UI di X. Le emoji erano comunemente utilizzate nei Post almeno dal 2008.

2015

  • Aprile - Una modifica al design dell’interfaccia utente del Post su X comporta un numero inferiore di Post con geotag.
  • Ottobre - Introdotti i Sondaggi su X. In origine i Sondaggi supportavano due opzioni con un periodo di voto di 24 ore. A novembre i Sondaggi hanno iniziato a supportare quattro opzioni con periodi di voto da 5 minuti a sette giorni. I metadata dei Sondaggi sono stati resi disponibili (solo in formato nativo arricchito) a febbraio 2017.

2016

2017

  • Febbraio - Metadati dei sondaggi X inclusi nei metadati del Post (solo formato nativo arricchito).
  • Aprile - Introdotte le “Simplified Replies”, con gli account a cui si risponde non conteggiati nei 140 caratteri (“dmw140, parte 2”).
2018 2022
  • 29 settembre - La possibilità di modificare i Post viene distribuita a un piccolo gruppo di test. I metadati dei Post modificati vengono aggiunti all’Oggetto Post ove pertinente. Questo include gli oggetti edit_history ed edit_controls. Questi metadati non verranno restituiti per i Post creati prima dell’introduzione della funzionalità di modifica. Nessun operatore associato per questi metadati. Per saperne di più su come funzionano le modifiche ai Post, vedi le nozioni fondamentali sulla modifica dei Post
Suggerimenti per il filtraggio Conoscere la cronologia di X su quando e come sono state aggiunte nuove funzionalità può aiutarti a creare query più efficaci. Qui, una query indica un filtro o una regola applicati dalle X historical APIs all’archivio dei Post, utilizzando i PowerTrack Operators per effettuare il matching sul JSON del Post. Un esempio è l’operatore lang:, usato per far corrispondere Post in una lingua specifica. X fornisce un servizio di classificazione della lingua (oltre 50 lingue supportate) e le X APIs forniscono questi metadati nel JSON generato per ogni Post. Quindi, se un Post è scritto in spagnolo, l’attributo JSON “lang” è impostato su “es”. Pertanto, se crei un filtro con la clausola lang:es, corrisponderà solo ai Post classificati come spagnoli. Le informazioni sulla timeline possono anche aiutare a interpretare meglio i dati dei Post ricevuti. Supponiamo che stessi studiando la condivisione di contenuti sulle Olimpiadi estive del 2008 e del 2012. Se applicassi solo l’operatore is:retweet per trovare i Retweet, nel 2008 non corrisponderebbe alcun dato. Nel 2012, invece, ce ne sarebbero probabilmente milioni. Potresti quindi concludere erroneamente che nel 2008 i Retweet non fossero una consuetudine degli utenti, o che semplicemente nessuno avesse fatto Retweet su quelle Olimpiadi. Poiché i Retweet sono diventati un oggetto di prima classe nel 2009, è necessario aggiungere una clausola di regola RT @ per aiutarne l’identificazione nel 2008. Sia i Retweet sia la classificazione linguistica dei Post sono esempi di attributi dei Post con una lunga storia e molti dettagli di prodotto. Di seguito tratteremo più nel dettaglio queste e altre classi di attributi importanti per effettuare il matching e comprendere i Dati X.

Riconoscere i falsi negativi

Quando si scrivono filtri, è importante ricordare che gli operatori basati sui metadata hanno tutti una “data di nascita”. Se crei un filtro con un operatore che agisce su metadata introdotti dopo la pubblicazione del Post, otterrai un falso negativo. Ad esempio, supponiamo che ti interessino tutti i Post che menzionano ‘snow’ e condividono un video. Se crei una regola con l’operatore has:videos, che corrisponde ai Post con video nativi, quella clausola non troverà corrispondenze per i Post precedenti al 2015. Tuttavia, la condivisione di video era comune su X molto prima del 2015. In precedenza gli utenti condividevano link a video ospitati altrove, ma nel 2015 X ha introdotto nuove funzionalità di “condivisione video” direttamente nella piattaforma. Per trovare questi Post precedenti di interesse, includeresti una clausola di regola come url:"youtube.com". Nota: con le Search API, ci sono stati alcuni casi in cui i metadata sono stati “backfillati” durante la ricostruzione dell’indice. Un buon esempio sono i cashtag,diventatiampiamenteusatiperdiscutereisimboliazionarinel2009.Dopolintroduzionedelloperatorecashtag, diventati ampiamente usati per discutere i simboli azionari nel 2009. Dopo l’introduzione dell’operatore cashtag nel 2015, l’indice di ricerca è stato ricostruito e, in quel processo, l’entità del simbolo è stata estratta dai corpi di tutti i Post, inclusi quelli dei primi del 2006, quando $ veniva usato principalmente come slang; “I hope it nownow $oon!”.

Identificare e filtrare gli attributi dei Post importanti per il tuo caso d’uso

Alcuni metadati, come gli id numerici degli account X, esistono sin dall’inizio (e sono un esempio di metadati dell’account che non cambiano mai). Altri metadati sono stati introdotti solo molto tempo dopo l’avvio di X nel 2006. Esempi di nuovi metadati introdotti includono i metadati dei Retweet, le geolocalizzazioni dei Post, i titoli e le descrizioni degli URL e i media “nativi”. Di seguito sono riportati alcuni dei tipi più comuni di attributi dei Post che sono stati sostanzialmente influenzati da questi aggiornamenti della piattaforma X. Il comportamento di filtraggio/corrispondenza per questi attributi dipende, nella maggior parte dei casi, da quale API storica dei Post viene utilizzata. Per aiutarti a determinare quale prodotto sia più adatto alla tua ricerca e al tuo caso d’uso, i dettagli degli attributi forniti di seguito includono informazioni generali sul prodotto.

Profili X

Poiché X è, alla base, un canale di comunicazione globale in tempo reale, la ricerca sui dati dei Post punta spesso l’attenzione su chi comunica. Spesso è utile sapere dove un utente di X ha la propria sede/“casa”. Sapere che la bio di un account include interessi e hobby può portare a Post pertinenti. È molto comune voler monitorare i Post provenienti da account di interesse. Gli attributi del profilo sono fondamentali per tutti questi casi d’uso. Ogni account su X ha un Profilo che include metadata come l’@handle di X, il nome visualizzato, una breve bio, la località (testo libero inserito dall’utente), il numero di follower e molti altri. Alcuni attributi non cambiano mai, come l’id utente numerico e la data di creazione dell’account. Altri invece cambiano di giorno in giorno, di settimana in settimana o di mese in mese, come il numero di Post pubblicati e il numero di account seguiti e di follower. Altri attributi dell’account possono cambiare in qualsiasi momento, ma tendono a variare meno frequentemente: nome visualizzato, località e bio. Il payload JSON di ogni Post include i metadata del profilo dell’account dell’autore del Post. Se si tratta di un Retweet, include anche i metadata del profilo dell’account che ha pubblicato il Post originale. La mutabilità dei metadata del profilo di un Post dipende interamente dal prodotto storico utilizzato. Le API di Search forniscono Post storici con le impostazioni del profilo così come sono al momento del recupero. Per Historical PowerTrack, il profilo è così com’era al momento in cui il Post è stato pubblicato, tranne che per i dati precedenti al 2011. Per i Post anteriori al 2011, i metadata del profilo riflettono il profilo così com’era a settembre 2011.

Post originale e Retweet

I Retweet sono un altro esempio di convenzioni guidate dagli utenti diventate oggetti ufficiali. Il Retweet è nato come un modo per “inoltrare” contenuti ad altri. All’inizio era un processo manuale: copiare/incollare un Post e premettere il pattern “RT @”. Questo processo è stato poi automatizzato tramite un nuovo pulsante Retweet, completo di nuove metadata JSON. È nato il Retweet “ufficiale” e l’azione di retwittare è diventata un evento di Post di prima classe. Insieme al nuovo pulsante Retweet sono state introdotte nuove metadata, come il payload completo del Post originale. Stabilire se un Post è originale o condiviso è un comune “interruttore” di filtro. In alcuni casi serve solo contenuto originale. In altri, l’engagement del Post è prioritario, quindi i Retweet sono fondamentali. L’operatore PowerTrack is:retweet consente agli utenti di includere o escludere i Retweet. Se si estraggono data precedenti ad agosto 2009, sono necessarie due strategie per il matching dei Retweet (o per evitarlo). Prima di agosto 2009, è necessario controllare il testo del Post stesso, utilizzando il matching di frase esatta, per riscontri sul pattern “RT @”. Per i periodi successivi ad agosto 2009, è disponibile l’operatore is:retweet.

Classificazioni della lingua dei Post

La lingua in cui è scritto un Post è di interesse comune. La lingua del Post può aiutare a dedurne la posizione e spesso per l’analisi o la visualizzazione è necessaria solo una lingua specifica. (I profili X includono anche un’impostazione della lingua preferita.) Per filtrare in base alla classificazione della lingua di un Post, i prodotti storici di X (Search API e Historical PowerTrack) si comportano in modo piuttosto diverso. Quando è stato creato l’archivio di Search, tutti i post sono stati popolati retroattivamente con la classificazione della lingua di X. Di conseguenza, l’operatore lang: è disponibile per l’intero archivio dei post. Con Historical PowerTrack, i metadata della classificazione della lingua di X sono disponibili nell’archivio a partire dal 26 marzo 2013. 

Georeferenziazione dei Post

Poter indicare dove è stato pubblicato un Post (cioè georeferenziarlo) è importante per molti casi d’uso. Esistono tre metodi principali per la georeferenziazione dei Post:
  • Riferimenti geografici nel contenuto del Post
  • Post geotaggati dall’utente
  • Località “di origine” del profilo dell’account impostata dall’utente
Riferimenti geografici in un messaggio Post
L’abbinamento basato su riferimenti geografici nel messaggio Post, pur essendo spesso il metodo più impegnativo poiché dipende dalla conoscenza del contesto locale, è un’opzione applicabile all’intero archivio dei Post. Ecco un esempio di corrispondenza georeferenziata del 2006 per l’area di San Francisco, ottenuta con un filtro “golden gate”: https://x.com/biz/statuses/28311
Post con geotag aggiunti dall’utente
Nel novembre 2009 X ha introdotto la Post Geotagging API, che consentiva di associare ai Post un geotag con una posizione esatta. Nel giugno 2010 X ha introdotto X Places, che rappresenta un’area geografica a livello di venue, quartiere o città. Circa l’1-2% dei Post è geotaggato utilizzando uno dei due metodi. La cronologia di geotagging disponibile dipende dalla Historical API in uso. Con le Search API, la possibilità di iniziare a effettuare il matching sui Post con alcuni Geo Operators è partita nel marzo 2010, e con altri nel febbraio 2015. Se utilizzi Historical PowerTrack, la georeferenziazione inizia il 1º settembre 2011. Quando è stato creato l’archivio di Historical PowerTrack, tutto il geotagging precedente a questa data non è stato incluso.
Posizione “home” del profilo dell’account impostata dall’utente
Tutti gli utenti di X possono impostare la Posizione del profilo, indicando la propria località di residenza. Milioni di utenti forniscono questa informazione, aumentando significativamente la quantità di geodati nello X Firehose. Questi metadati sulla posizione sono una stringa in formato libero, generata dall’utente e non normalizzata. Circa il 30% degli account dispone di metadati Profile Geo che possono essere ricondotti al livello paese. Come per la geolocalizzazione dei Post, i metodi di corrispondenza e i periodi disponibili dipendono dalla Historical API in uso. Historical PowerTrack consente di eseguire un proprio matching personalizzato su queste stringhe in formato libero. Per semplificare il processo, X fornisce anche un Profile Geo Enrichment che, ove possibile, esegue il geocoding, fornendo metadati normalizzati e gli Operatori corrispondenti. I Profile Geo Operators sono disponibili sia in Historical PowerTrack sia nelle Search API. Con Historical PowerTrack, questi metadati Profile Geo sono disponibili a partire da giugno 2014; con le Search API, sono disponibili da febbraio 2015. La condivisione di link a pagine web, foto e video è sempre stata un caso d’uso fondamentale su X. Agli inizi, tutte queste azioni prevedevano l’inclusione di un URL nel testo del Post. Nel 2011 X ha integrato la condivisione diretta delle foto nella propria interfaccia utente. Nel 2016 sono stati aggiunti i video nativi. Visto questo percorso, esiste una varietà di Operatori di filtraggio per effettuare il matching su tali contenuti. Esiste un insieme di Operatori che verificano se i Post includono link condivisi, foto e video. Inoltre, poiché la maggior parte degli URL condivisi su X viene accorciata per occupare meno caratteri del Post (ad es. generati da servizi come bitly o tinyurl), X fornisce arricchimenti dei dati che producono un URL completo e “espanso” su cui è possibile effettuare il matching. Ad esempio, se volessi fare matching sui Post che includono link relativi a X e ai sistemi di allerta precoce, un filtro che fa riferimento a “severe weather communication” corrisponderebbe a un Post contenente questo URL http://bit.ly/1XV1tG4. Nel marzo 2012 è stato introdotto l’expanded URL enrichment. Prima di allora, i payload dei Post includevano solo l’URL così come fornito dall’utente. Quindi, se l’utente includeva un URL accorciato, poteva risultare difficile effettuare il matching su URL (espansi) di interesse. Sia con Historical PowerTrack sia con le Search API, queste metadata sono disponibili a partire da marzo 2012. Nel luglio 2016 è stato introdotto l’enhanced URL enrichment. Questa versione avanzata fornisce l’HTML title e la description del sito web nel payload del Post, insieme agli Operatori per effettuare il matching su tali elementi. Con Historical PowerTrack, queste metadata diventano disponibili a luglio 2016. Con le Search API, queste metadata iniziano a essere disponibili a dicembre 2014. Nel settembre 2016 X ha introdotto i “native attachments”, in cui un link condiviso finale non viene conteggiato nel limite di 140 caratteri del Post. Entrambi gli URL enrichment si applicano ancora a questi link condivisi. Per altri dettagli di prodotto relativi al filtraggio degli URL, consulta gli articoli corrispondenti per maggiori informazioni.
I