Nota bene Abbiamo rilasciato un nuovo strumento di conformità per X API v2 chiamato batch compliance. Questo nuovo strumento consente di caricare ampi dataset di Post o id utente per recuperare il relativo stato di conformità e determinare quali dati richiedono azioni per portare i tuoi dataset in conformità.
Inoltre, sia il batch compliance sia il compliance firehose sono stati aggiornati per supportare le modifiche ai Post. Per il compliance firehose è stato aggiunto un nuovo evento “tweet_edit”. Consulta la documentazione Compliance Data Objects per maggiori dettagli. Scopri di più su come funziona la metadata di Edit Post nella pagina Edit Posts fundamentals.
Panoramica
Enterprise
Uno dei valori fondamentali di X è difendere e rispettare la voce degli utenti. Ciò include il rispetto delle loro aspettative e intenzioni quando eliminano, modificano o apportano modifiche ai contenuti che scelgono di condividere su X. Riteniamo che questo sia di importanza cruciale per la salute a lungo termine di una delle più grandi piattaforme pubbliche di informazione in tempo reale al mondo. X mette i controlli nelle mani dei suoi utenti, dando a ciascuno la possibilità di gestire la propria esperienza su X. Riteniamo che le aziende che ricevono dati da X abbiano la responsabilità di rispettare le aspettative e le intenzioni degli utenti finali.
Per ulteriori informazioni sui tipi di eventi di conformità possibili sulla piattaforma X, consulta il nostro articolo Honoring User Intent on X.
Qualsiasi sviluppatore o azienda che utilizzi i dati di X tramite un’API ha l’obbligo di compiere ogni sforzo ragionevole per rispettare le modifiche ai contenuti degli utenti. Questo obbligo si estende a eventi dell’utente come eliminazioni, modifiche e cambiamenti delle opzioni di condivisione (ad es., contenuti che diventano protetti o non disponibili). Ciò include anche i casi in cui gli utenti modificano i loro Post. Consulta la formulazione specifica nella Developer Policy e/o nel tuo X Data Agreement per comprendere come questo obbligo influisca sul tuo utilizzo dei dati di X.
X offre le seguenti soluzioni che forniscono informazioni su questi eventi di conformità degli utenti e indicano se un determinato Post o utente è pubblicamente disponibile o meno. Di seguito è riportata una breve panoramica delle soluzioni e dei relativi schemi di integrazione:
GET statuses/lookup e GET users/lookup
- Formato: API REST. Vedi: GET statuses/lookup e GET users/lookup.
- Questi endpoint restituiscono sempre la versione più recente di qualsiasi modifica a un Post. Tutti gli Oggetti Post che descrivono Post creati dopo l’introduzione della funzionalità di modifica includeranno i metadati di modifica del Post. Questo vale anche per i Post che non sono stati modificati.
- Per tutti i Post, le richieste relative a Post a più di 30 minuti dalla loro creazione rappresenteranno lo stato finale di tutti i Post.
- Forniscono informazioni sulla disponibilità per specifici Post o utenti, come definito dal chiamante nell’ambito della richiesta API.
- Possono essere utilizzati per verifiche puntuali ad hoc sullo stato di disponibilità corrente di un gruppo specifico di Post/utenti.
- Ideale per i clienti che necessitano di un modo per verificare lo stato corrente di uno specifico Post o utente in un dato momento.
-
Queste API forniscono un meccanismo utile che può essere utilizzato dai clienti che devono verificare la disponibilità di un contenuto, ad esempio quando:
- Si visualizzano Post
- Si interagisce in modalità 1:1 con un Post o un utente
- Si distribuiscono Contenuti X a terze parti tramite un download di file consentito
- Si archiviano Post per periodi di tempo prolungati
Compliance Firehose (solo Enterprise)
- Formato: Streaming API. Vedi: Compliance Firehose.
- Fornisce uno stream in tempo reale delle attività di compliance su X. Queste attività includono l’editing dei Post.
- Può essere utilizzato per mantenere lo stato di conformità su un insieme di dati archiviati man mano che sulla piattaforma si verificano nuovi eventi di compliance.
- Ideale per i clienti che acquisiscono e archiviano grandi volumi di dati di X per periodi prolungati.
Guide
Best practice per la conformità
Raccomandazioni e best practice
- Progettare schemi di archiviazione che memorizzino l’ID numerico del Post e l’ID utente: I messaggi dell’utente richiedono interventi su tutti i Post di quell’utente. Poiché tutti i messaggi di compliance sono forniti solo tramite ID numerico, è importante progettare schemi di archiviazione che mantengano la relazione tra Post e utente basata su ID numerici. I fruitori di dati dovranno monitorare gli eventi di compliance sia per ID del Post sia per ID utente e poter aggiornare di conseguenza l’archivio dati locale.
- Progettare schemi che contemplino tutti gli stati di compliance: A seconda di come le attività di compliance verranno gestite nelle varie applicazioni, potrebbe essere necessario aggiungere altra metadata all’archivio dati. Ad esempio, i fruitori di dati potrebbero decidere di aggiungere metadata a un database esistente per facilitare la limitazione della visualizzazione dei contenuti nei Paesi interessati da un messaggio status_withheld.
- Gestione delle eliminazioni dei Retweet: I Retweet sono un tipo speciale di Post in cui il messaggio originale è annidato in un oggetto all’interno del Retweet. In questo caso, in un Retweet sono presenti due ID del Post: l’ID del Retweet e l’ID del messaggio originale (incluso nell’oggetto annidato). Quando un messaggio originale viene eliminato, viene emesso un messaggio di eliminazione del Post per l’ID originale. Gli eventi di eliminazione del Post in genere attivano eventi di DELETE per tutti i Retweet. Tuttavia, in alcuni casi non tutti vengono inviati e i sistemi client dovrebbero tollerare eliminazioni di Retweet incomplete. L’eliminazione dell’ID originale dovrebbe essere sufficiente per eliminare tutti i Retweet successivi. È una best practice fare riferimento all’ID del Post originale quando si archiviano i Retweet ed eliminare tutti i Retweet referenziati quando si ricevono eventi di eliminazione del Post.
Oggetti di dati di conformità
Compliance Firehose API
- Ulteriori informazioni sugli status utente sono disponibili qui e la nostra policy per sviluppatori sui Post eliminati è consultabile qui.
- La Compliance Firehose è stata aggiornata per fornire eventi ‘tweet_edit’.
- Diversi eventi di eliminazione, protezione e sospensione dell’utente non sono necessariamente permanenti e possono alternarsi tra stati all’infinito. Questi includono: user_delete, user_undelete, user_protect, user_unprotect e user_suspend, user_unsuspend.
- Gli user_delete sono seguiti da status_delete 30 giorni dopo solo se l’utente non ha scelto di user_undelete il proprio account. È possibile che uno user_delete venga annullato dall’utente e che le eliminazioni di tutti i loro Post dopo 30 giorni non avvengano.
- user_suspend è un’azione che rimane valida a meno che l’utente non sia soggetto a un evento user_unsuspend. Questi non sono soggetti ad alcuna modifica nel periodo di 30 giorni.
Tipo di messaggio originale | Oggetto | Permanente (Sì/No) | Azione consigliata |
---|---|---|---|
delete | Status | Sì | Elimina il Post associato. |
status_withheld | Status | Sì | Sopprimi il Post associato nei Paesi specifici elencati nel messaggio status_withheld. |
drop | Status | No | Rimuovi il Post dalla visualizzazione pubblica. |
undrop | Status | No | Lo status può essere nuovamente visualizzato e trattato come pubblico. |
tweet_edit | Status | Sì | Rispetta e, ove pertinente, mostra la nuova modifica. |
user_delete | User | No | Sopprimi o elimina tutti i Post dell’utente associato. |
user_undelete | User | No | Tutti i Post dell’utente associato possono essere nuovamente visualizzati e trattati come pubblici. |
user_protect | User | No | Sopprimi o elimina tutti i Post dell’utente associato. |
user_unprotect | User | No | Tutti i Post dell’utente associato possono essere nuovamente visualizzati e trattati come pubblici. |
user_suspend | User | No | Sopprimi o elimina tutti i Post dell’utente associato. |
user_unsuspend | User | No | Tutti i Post dell’utente associato possono essere nuovamente visualizzati e trattati come pubblici. |
scrub_geo | User | Sì | Elimina tutti i geodati forniti da X per tutti i Post dell’utente precedenti al Post specificato nel messaggio scrub_geo. Nota che i Post successivi di un utente possono contenere geodati che possono essere utilizzati. |
user_withheld | User | Sì | Sopprimi i Post dell’utente associato nei Paesi specifici elencati nel messaggio user_withheld. |
delete | Favorite | Sì | Elimina il like/favorite associato. |
Esempi di payload
Eliminazione di Post
Post limitato
Drop
Annulla eliminazione
Rimuovi dati geografici
Eliminazione dell’utente
Ripristino dell’utente
Utente nascosto
Protezione dell’utente
Rimozione protezione utente
Sospensione dell’utente
Riattivazione utente
integrazione di Compliance Firehose
Integrazione con il Compliance Firehose
- Stabilire una connessione in streaming a ciascuna partizione dell’API di streaming del Compliance Firehose
- Gestire volumi elevati di data – disaccoppiare l’acquisizione dello stream dall’elaborazione aggiuntiva utilizzando processi asincroni
- Riconnettersi automaticamente alle partizioni dello stream quando la connessione viene interrotta per qualsiasi motivo
- Elaborare gli eventi di compliance pertinenti ai Post e ai dati utente che hai archiviato, in conformità con le linee guida presentate sopra
Rispettare le intenzioni degli utenti su X
Utente
Azione | Descrizione |
---|---|
Proteggi account | Un utente di X può proteggere o rimuovere la protezione dal proprio account in qualsiasi momento. Gli account protetti richiedono l’approvazione manuale, da parte dell’utente, di ogni persona autorizzata a visualizzare i Post del proprio account. Per ulteriori informazioni, vedi Informazioni su Post pubblici e protetti. |
Elimina account | Un utente di X può decidere di eliminare il proprio account e tutti i messaggi di stato associati in qualsiasi momento. X conserva le informazioni dell’account per 30 giorni dopo l’eliminazione, nel caso in cui l’utente decida di annullare l’eliminazione e riattivare il proprio account. |
Rimozione dati di localizzazione | Un utente di X può rimuovere in qualsiasi momento tutti i dati di localizzazione dai Post passati. Questa operazione è nota come “scrub geo”. |
Sospendi account | X si riserva il diritto di sospendere gli account che violano le Regole di X o se si sospetta che un account sia stato violato o compromesso. Le sospensioni dell’account possono essere revocate (unsuspend) solo da X. |
Limitazione per paese dell’account | X si riserva il diritto di limitare reattivamente, di volta in volta, l’accesso a determinati contenuti in un paese specifico. Un account sottoposto a limitazione può essere rimosso dalla limitazione solo da X. Per ulteriori informazioni, vedi Contenuti limitati per paese. |
Stato
Azione | Descrizione |
---|---|
Elimina stato | Un utente X può eliminare uno stato in qualsiasi momento. Gli stati eliminati non possono essere ripristinati e vengono eliminati in modo permanente. |
Limitare stato | X si riserva il diritto di limitare, in modo reattivo, l’accesso a determinati contenuti in uno specifico paese di volta in volta. Uno stato limitato può essere reso di nuovo disponibile solo da X. Per ulteriori informazioni, consulta Contenuti limitati per paese. |
Monitorare le modifiche a Utente e Status
Riferimento API
GET compliance/firehose
Metodi
Metodo | Descrizione |
---|---|
GET /compliance/:stream | Connessione allo stream di dati |
Autenticazione
GET /compliance/:stream
Request Method | HTTP GET |
Connection Type | Keep-Alive |
URL | Disponibile nella pagina di aiuto dell’API dello stream nel tuo dashboard e ha una struttura simile alla seguente: https://gnip-stream.x.com/stream/compliance/accounts/:account_name/publishers/twitter/:stream_label.json?partition=1 Nota: il parametro “partition” è obbligatorio. Dovrai connetterti a tutte e 8 le partition, ciascuna contenente il 12,5% del volume totale, per consumare l’intero stream. |
Compression | Gzip. Per connetterti allo stream utilizzando la compressione Gzip, invia un header Accept-Encoding nella richiesta di connessione. L’header dovrebbe essere il seguente: Accept-Encoding: gzip |
Character Encoding | UTF-8 |
Response Format | JSON. L’header della richiesta dovrebbe specificare il formato JSON per la risposta. |
Rate Limit | 10 richieste ogni 60 secondi. |
Read Timeout | Imposta un timeout di lettura sul client e assicurati che sia superiore a 30 secondi. |
Support for Tweet edits | Tutte le modifiche ai Tweet generano un evento di Compliance “tweet_edit”. Consulta la documentazione Compliance Data Objects per maggiori dettagli. |
partition=1
del Compliance firehose: dovrai connetterti a tutte e 8 le partition per consumare l’intero stream.
Codici di risposta
Stato | Testo | Definizione |
---|---|---|
200 | Successo | La connessione è stata aperta correttamente e le nuove attività verranno inviate man mano che arrivano. |
401 | Non autorizzato | L’autenticazione HTTP non è riuscita a causa di credenziali non valide. Accedi a console.gnip.com con le tue credenziali per verificare di utilizzarle correttamente nella richiesta. |
406 | Non accettabile | In genere si verifica quando il client non include correttamente gli header per accettare la codifica gzip dallo stream, ma può verificarsi anche in altre circostanze. Conterrà un messaggio JSON simile a “Questa connessione richiede la compressione. Per abilitare la compressione, invia l’header ‘Accept-Encoding: gzip’ nella richiesta ed esegui la decompressione dello stream mentre viene letto lato client.” |
429 | Limite di velocità superato | La tua App ha superato il limite per le richieste di connessione. |
503 | Servizio non disponibile | Problema del server X. Riconnettiti utilizzando un backoff esponenziale. Se non è stato pubblicato alcun avviso su questo problema sulla X API Status Page, contatta il supporto. |
Altre raccomandazioni e best practice
- Progetta schemi di archiviazione dei dati che memorizzino l’ID numerico del Tweet e l’ID dell’utente: I messaggi relativi agli utenti richiedono azioni su tutti i Tweet di quell’utente. Poiché tutti i messaggi di conformità vengono recapitati esclusivamente tramite ID numerici, è importante progettare schemi di archiviazione che mantengano la relazione tra Tweet e Utente basata su ID numerici. Chi utilizza i dati dovrà monitorare gli eventi di conformità sia per ID del Tweet sia per ID dell’utente ed essere in grado di aggiornare correttamente l’archivio dati locale.
- Progetta schemi che contemplino tutti gli stati di conformità: A seconda di come le attività di conformità verranno gestite nelle diverse applicazioni, potrebbe essere necessario aggiungere ulteriore metadata all’archivio dati. Ad esempio, chi utilizza i dati può decidere di aggiungere metadata a un database esistente per facilitare la limitazione della visualizzazione dei contenuti nei paesi interessati da un messaggio status_withheld.
- Gestione delle eliminazioni dei Retweet: I Retweet sono un tipo particolare di Tweet in cui il messaggio originale è annidato in un oggetto all’interno del Retweet. In questo caso, in un Retweet sono presenti due ID di Tweet: l’ID del Retweet e l’ID del messaggio originale (incluso nell’oggetto annidato). Quando il messaggio originale viene eliminato, viene emesso un messaggio di eliminazione del Tweet per l’ID originale. Successivi messaggi di delete NON vengono emessi per tutti i Retweet. L’eliminazione dell’ID originale dovrebbe essere sufficiente per eliminare tutti i Retweet successivi.