Veuillez noter Nous avons lancé un nouvel outil de conformité pour la X API v2, appelé batch compliance. Cet outil vous permet de téléverser de grands ensembles d’ids de Post ou d’utilisateurs afin d’obtenir leur statut de conformité et de déterminer quelles données nécessitent une action pour mettre vos ensembles de données en conformité.
De plus, batch compliance et le firehose de conformité ont été mis à jour pour prendre en charge les modifications de Post. Pour le firehose de conformité, un nouvel événement « tweet_edit » a été ajouté. Consultez la documentation Compliance Data Objects pour plus de détails. Pour en savoir plus sur le fonctionnement des metadata d’édition de Post, consultez la page Edit Posts fundamentals.
Aperçu
Enterprise
L’une des valeurs fondamentales de X est de défendre et de respecter la voix des utilisateurs. Cela inclut le respect de leurs attentes et de leur intention lorsqu’ils suppriment, modifient ou corrigent le contenu qu’ils choisissent de partager sur X. Nous estimons que cela est crucial pour la santé à long terme de l’une des plus grandes plateformes publiques d’information en temps réel au monde. X remet les contrôles entre les mains de ses utilisateurs, leur donnant la capacité de maîtriser leur propre expérience sur X. Nous considérons que les entreprises qui reçoivent des données X ont la responsabilité d’honorer les attentes et l’intention des utilisateurs finaux.
Pour plus d’informations sur les types d’événements de conformité possibles sur la plateforme X, consultez notre article Honoring User Intent on X.
Tout développeur ou toute entreprise consommant des données X via une API a l’obligation de déployer tous les efforts raisonnables pour respecter les modifications apportées au contenu des utilisateurs. Cette obligation s’étend aux événements utilisateur tels que les suppressions, modifications et changements d’options de partage (par exemple, lorsque du contenu devient protégé ou restreint). Elle couvre également les cas où les utilisateurs modifient leurs Posts. Veuillez vous référer au libellé spécifique de la Developer Policy et/ou de votre X Data Agreement pour comprendre comment cette obligation affecte votre utilisation des données X.
X propose les solutions suivantes, qui fournissent des informations sur ces événements de conformité utilisateur et indiquent si un Post ou un utilisateur donné est publiquement accessible ou non. Un bref aperçu des solutions et de leurs modèles d’intégration généraux est présenté ci-dessous :
GET statuses/lookup et GET users/lookup
- Format : API REST. Voir : GET statuses/lookup et GET users/lookup.
- Ces endpoints renvoient toujours la dernière version de toute édition d’un Post. Tous les Objets Post décrivant des Posts créés après l’introduction de la fonctionnalité d’édition incluront les metadata d’édition de Post. Cela vaut même pour les Posts qui n’ont pas été édités.
- Pour tous les Posts, les requêtes effectuées plus de 30 minutes après leur création refléteront l’état final des Posts.
- Fournissent des informations de disponibilité pour des Posts ou des utilisateurs spécifiques, tels que définis par l’appelant dans la requête API.
- Peuvent être utilisés pour des vérifications ponctuelles ad hoc de l’état de disponibilité actuel d’un groupe spécifique de Posts/utilisateurs.
- Idéal pour les clients qui ont besoin de vérifier l’état actuel d’un Post ou d’un utilisateur à un moment donné.
-
Ces API fournissent un mécanisme utile qui peut être utilisé par les clients qui doivent vérifier la disponibilité d’un contenu, par exemple lorsque :
- Afficher des Posts
- Interagir de manière 1:1 avec un ou des Post(s) ou utilisateur(s)
- Distribuer du contenu X à un tiers via un téléchargement de fichier autorisé
- Stocker des Posts pendant de longues périodes
Compliance Firehose (Enterprise uniquement)
- Format : API de streaming. Voir : Compliance Firehose.
- Fournit un stream en temps réel des activités de conformité sur X. Ces activités incluent l’édition de Posts.
- Peut être utilisé pour maintenir l’état de conformité d’un ensemble de data stockées à mesure que de nouveaux événements de conformité surviennent sur la plateforme.
- Idéal pour les clients qui ingèrent et stockent de grandes quantités de data X sur de longues périodes.
Guides
Meilleures pratiques en matière de conformité
Recommandations et bonnes pratiques
- Concevoir des schémas de stockage de données qui conservent l’ID de Post numérique et l’ID d’utilisateur : Les messages de conformité exigent d’agir sur tous les Posts de l’utilisateur concerné. Par conséquent, puisque tous les messages de conformité ne sont fournis que par ID numérique, il est important de concevoir des schémas de stockage qui maintiennent la relation entre le Post et l’utilisateur sur la base d’ID numériques. Les consommateurs de données devront surveiller les événements de conformité à la fois par ID de Post et par ID d’utilisateur et être en mesure de mettre à jour correctement le magasin de données local.
- Concevoir des schémas qui couvrent tous les statuts de conformité : Selon la manière dont les activités de conformité seront prises en charge dans diverses applications, il peut être nécessaire d’ajouter d’autres metadata au magasin de données. Par exemple, les consommateurs de données peuvent décider d’ajouter des metadata à une base de données existante afin de faciliter la restriction de l’affichage de contenu dans les pays concernés par un message status_withheld.
- Gérer les suppressions de Retweet : Les Retweets sont un type particulier de Post où le message d’origine est imbriqué dans un objet au sein du Retweet. Dans ce cas, deux ID de Post sont référencés dans un Retweet : l’ID du Retweet et l’ID du message d’origine (inclus dans l’objet imbriqué). Lorsqu’un message d’origine est supprimé, un message de suppression de Post est émis pour l’ID d’origine. Les événements de suppression de Post déclenchent généralement des événements de suppression pour tous les Retweets. Cependant, dans certains cas, ils ne sont pas tous envoyés et les systèmes clients doivent tolérer des suppressions de Retweet incomplètes. La suppression de l’ID d’origine devrait suffire à supprimer tous les Retweets ultérieurs. Il est recommandé, comme bonne pratique, de référencer l’ID de Post d’origine lors du stockage des Retweets, et de supprimer tous les Retweets référencés lors de la réception d’événements de suppression de Post.
Objets de données de conformité
API Firehose de conformité
- En savoir plus sur les statuts d’utilisateur ici et notre politique développeur concernant les Posts supprimés ici.
- Le Firehose de conformité a été mis à jour pour fournir des événements « tweet_edit ».
- Plusieurs événements de suppression, de protection et de suspension d’utilisateur ne sont pas nécessairement permanents et peuvent alterner entre des états indéfiniment. Ils incluent : user_delete, user_undelete, user_protect, user_unprotect, user_suspend et user_unsuspend.
- Les user_delete sont suivis de status_delete 30 jours plus tard uniquement si l’utilisateur n’a pas choisi de user_undelete son compte. Il est possible qu’un user_delete soit annulé par l’utilisateur et que les suppressions de tous ses Posts 30 jours plus tard n’aient pas lieu.
- user_suspend est une action qui reste effective sauf si l’utilisateur est soumis à un événement user_unsuspend. Ces événements ne sont soumis à aucun changement sur une période de 30 jours.
Original Message Type | Object | Permanent (Yes/No) | Recommended Action |
---|---|---|---|
delete | Status | Yes | Supprimer le Post associé. |
status_withheld | Status | Yes | Masquer le Post associé dans les pays spécifiques listés dans le message status_withheld. |
drop | Status | No | Retirer le Post de la vue publique. |
undrop | Status | No | Le Status peut à nouveau être affiché et traité comme public. |
tweet_edit | Status | Yes | Respecter et, le cas échéant, afficher la nouvelle édition. |
user_delete | User | No | Masquer ou supprimer tous les Posts de l’utilisateur associé. |
user_undelete | User | No | Tous les Posts de l’utilisateur associé peuvent à nouveau être affichés et traités comme publics. |
user_protect | User | No | Masquer ou supprimer tous les Posts de l’utilisateur associé. |
user_unprotect | User | No | Tous les Posts de l’utilisateur associé peuvent à nouveau être affichés et traités comme publics. |
user_suspend | User | No | Masquer ou supprimer tous les Posts de l’utilisateur associé. |
user_unsuspend | User | No | Tous les Posts de l’utilisateur associé peuvent à nouveau être affichés et traités comme publics. |
scrub_geo | User | Yes | Supprimer toutes les géodonnées fournies par X pour tous les Posts de l’utilisateur antérieurs au Post spécifié dans le message scrub_geo. Notez que les Posts ultérieurs d’un utilisateur peuvent contenir des géodonnées qui peuvent être utilisées. |
user_withheld | User | Yes | Masquer les Posts de l’utilisateur associé dans les pays spécifiques listés dans le message user_withheld. |
delete | Favorite | Yes | Supprimer le like/favori associé. |
Exemples de payload
Suppression d’un Post
Post retenu
Abandon
Annuler la suppression
Effacer les données de géolocalisation
Suppression d’un utilisateur
Restauration de l’utilisateur
Utilisateur masqué
Protection de l’utilisateur
Annuler la protection de l’utilisateur
Suspension d’utilisateur
Réactivation d’un utilisateur
Intégration de Compliance Firehose
Intégration avec le Compliance Firehose
- Établir une connexion de streaming à chaque partition de l’API de streaming du Compliance Firehose
- Gérer des volumes de data élevés – découpler l’ingestion du stream du traitement aval à l’aide de processus asynchrones
- Se reconnecter automatiquement aux partitions du stream en cas de déconnexion, quelle qu’en soit la cause
- Traiter les événements de conformité pertinents pour les data de Post et d’utilisateur que vous avez stockées, conformément aux recommandations ci‑dessus
Respecter l’intention des utilisateurs sur X
Utilisateur
Action | Description |
---|---|
Protéger le compte | Un utilisateur X peut protéger ou retirer la protection de son compte à tout moment. Les comptes protégés nécessitent l’approbation manuelle, par l’utilisateur, de chaque personne autorisée à voir les Posts de son compte. Pour en savoir plus, consultez À propos des Posts publics et protégés. |
Supprimer le compte | Un utilisateur X peut décider de supprimer son compte et tous les messages d’état associés à tout moment. X conserve les informations du compte pendant 30 jours après la suppression, au cas où l’utilisateur déciderait d’annuler la suppression et de réactiver son compte. |
Effacer les données de géolocalisation | Un utilisateur X peut supprimer toutes les données de localisation de ses Posts passés à tout moment. Cette opération est appelée « scrub geo ». |
Suspendre le compte | X se réserve le droit de suspendre les comptes qui enfreignent les Règles de X ou s’il existe un soupçon de piratage ou de compromission. Les suspensions de compte ne peuvent être levées (annulées) que par X. |
Retenir le compte | X se réserve le droit de restreindre de manière réactive l’accès à certains contenus dans un pays donné, ponctuellement. Un compte retenu ne peut être remis en ligne (non retenu) que par X. Pour en savoir plus, consultez Contenu retenu par pays. |
Statut
Action | Description |
---|---|
Supprimer un statut | Un utilisateur X peut supprimer un statut à tout moment. Les statuts supprimés ne peuvent pas être restaurés et sont définitivement supprimés. |
Restreindre un statut | X se réserve le droit de restreindre de manière réactive l’accès à certains contenus dans un pays donné de temps à autre. Un statut restreint ne peut être rétabli que par X. Pour plus d’informations, consultez Contenu restreint selon le pays. |
Suivi des changements d’utilisateur et de statut
Référence de l’API
GET compliance/firehose
Méthodes
Méthode | Description |
---|---|
GET /compliance/:stream | Se connecter au stream de données |
Authentification
GET /compliance/:stream
Request Method | HTTP GET |
Connection Type | Keep-Alive |
URL | Disponible sur la page d’aide de l’API du stream de votre tableau de bord et ressemble à la structure suivante : https://gnip-stream.x.com/stream/compliance/accounts/:account_name/publishers/twitter/:stream_label.json?partition=1 Note : le paramètre « partition » est requis. Vous devrez vous connecter aux 8 partitions, chacune contenant 12,5 % du volume total, pour consommer l’intégralité du stream. |
Compression | Gzip. Pour vous connecter au stream en utilisant la compression Gzip, envoyez simplement un en-tête Accept-Encoding dans la requête de connexion. L’en-tête doit ressembler à ce qui suit : Accept-Encoding: gzip |
Character Encoding | UTF-8 |
Response Format | JSON. L’en-tête de votre requête doit spécifier le format JSON pour la réponse. |
Rate Limit | 10 requêtes par 60 secondes. |
Read Timeout | Configurez un délai de lecture (read timeout) sur votre client et assurez-vous qu’il est défini sur une valeur supérieure à 30 secondes. |
Support for Tweet edits | Toutes les modifications de Tweet déclenchent un événement de conformité « tweet_edit ». Voir la documentation Compliance Data Objects pour plus de détails. |
partition=1
du Compliance firehose — vous devrez vous connecter aux 8 partitions pour consommer l’intégralité de ce stream.
Codes de réponse
Statut | Texte | Définition |
---|---|---|
200 | Succès | La connexion a été ouverte avec succès et de nouvelles activités seront transmises au fur et à mesure de leur arrivée. |
401 | Non autorisé | L’authentification HTTP a échoué en raison d’identifiants invalides. Connectez-vous à console.gnip.com avec vos identifiants pour vérifier que vous les utilisez correctement dans votre requête. |
406 | Non acceptable | En général, cela se produit lorsque votre client n’inclut pas correctement les en-têtes pour accepter l’encodage gzip depuis le stream, mais cela peut également se produire dans d’autres circonstances. Contiendra un message JSON similaire à « Cette connexion nécessite une compression. Pour activer la compression, envoyez un en-tête “Accept-Encoding: gzip” dans votre requête et soyez prêt à décompresser le stream lors de sa lecture côté client. » |
429 | Limite de taux dépassée | Votre App a dépassé la limite des requêtes de connexion. |
503 | Service indisponible | Problème de serveur X. Reconnectez-vous en utilisant une stratégie de repli exponentiel. Si aucun avis concernant ce problème n’a été publié sur la X API Status Page, contactez l’assistance. |
Autres recommandations et bonnes pratiques
- Concevoir des schémas de stockage de données qui conservent l’id numérique du Tweet et l’id de l’utilisateur : Les messages liés aux utilisateurs exigent d’agir sur tous les Tweets de cet utilisateur. Par conséquent, puisque tous les messages de conformité sont fournis uniquement par id numérique, il est important de concevoir des schémas de stockage qui maintiennent la relation entre le Tweet et l’utilisateur sur la base d’id numériques. Les consommateurs de données devront surveiller les événements de conformité à la fois par id de Tweet et par id d’utilisateur, et être en mesure de mettre à jour le magasin de données local en conséquence.
- Concevoir des schémas qui couvrent tous les statuts de conformité : Selon la manière dont les activités de conformité seront gérées dans différentes applications, il peut être nécessaire d’ajouter d’autres metadata au magasin de données. Par exemple, les consommateurs de données peuvent décider d’ajouter des metadata à une base de données existante afin de faciliter la restriction de l’affichage de contenu dans les pays concernés par un message status_withheld.
- Gestion des suppressions de Retweet : Les Retweets sont un type particulier de Tweet où le message d’origine est imbriqué dans un objet au sein du Retweet. Dans ce cas, deux id de Tweet sont référencés dans un Retweet : l’id du Retweet et l’id du message d’origine (inclus dans l’objet imbriqué). Lorsqu’un message d’origine est supprimé, un message de suppression de Tweet est émis pour l’id d’origine. Des messages de suppression ultérieurs NE sont PAS émis pour tous les Retweets. La suppression de l’id d’origine suffit à supprimer tous les Retweets ultérieurs.