Veuillez noter Nous avons lancé un nouvel outil de conformité pour X API v2 appelé batch compliance. Ce nouvel outil vous permet de téléverser de grands ensembles de données contenant des ID de Publication ou d’utilisateur afin de récupérer leur statut de conformité et de déterminer quelles données nécessitent une action pour rendre vos ensembles de données conformes.
De plus, batch compliance et compliance firehose ont été mis à jour pour prendre en charge les modifications de Publications. Pour compliance firehose, 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 métadonnées de modification de Publication, 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 de l’utilisateur. Cela inclut le respect de ses attentes et de son intention lorsqu’il supprime, modifie ou édite le contenu qu’il choisit de partager sur X. Nous pensons que cela est d’une importance cruciale pour la santé à long terme de l’une des plus grandes plateformes publiques d’information en temps réel au monde. X met des contrôles entre les mains de ses utilisateurs, en donnant à chacun la possibilité de contrôler sa propre expérience sur X. Nous considérons que les clients professionnels qui reçoivent des données X ont la responsabilité de respecter 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 entreprise qui utilise 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 liés aux utilisateurs, tels que les suppressions, les modifications et les changements d’options de partage (par exemple, lorsque le contenu devient protégé, retiré ou restreint). Cela inclut également les cas où les utilisateurs modifient leurs Publications. Veuillez vous référer au libellé spécifique de la Developer Policy et/ou de votre Contrat de données X 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é liés aux utilisateurs et indiquent si une Publication ou un utilisateur spécifique est publiquement accessible ou non. Un bref aperçu de ces 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 d’une Publication, en tenant compte de toutes les modifications éventuelles. Tous les objets Publication décrivant des Publications créées après l’introduction de la fonctionnalité d’édition incluront les métadonnées d’édition de la Publication. Cela est vrai même pour les Publications qui n’ont pas été modifiées.
- Pour toutes les Publications, les requêtes effectuées plus de 30 minutes après leur création renverront l’état final de ces Publications.
- Fournissent des informations de disponibilité pour des Publications 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 Publications ou d’utilisateurs.
- Idéaux pour les clients qui ont besoin d’un moyen de vérifier l’état actuel d’une Publication ou d’un utilisateur donné à un moment précis.
-
Ces API fournissent un mécanisme utile qui peut être utilisé par les clients qui doivent vérifier la disponibilité d’un élément de contenu, par exemple lorsque :
- Afficher des Publications
- Interagir avec une ou plusieurs Publications ou avec des utilisateurs de manière individuelle (1:1)
- Distribuer du contenu X à un tiers via un téléchargement de fichier autorisé
- Conserver des Publications pendant de longues périodes
Compliance Firehose (offre Enterprise uniquement)
- Format : API de streaming. Voir : Compliance Firehose.
- Fournit un flux en temps réel des activités de conformité sur X. Ces activités incluent la modification de Publications.
- Peut être utilisé pour maintenir l’état de conformité au sein d’un ensemble de données stockées à mesure que de nouveaux événements de conformité se produisent sur la plateforme.
- Idéal pour les clients qui consomment et stockent de grandes quantités de données issues de X pendant de longues périodes.
Guides
Bonnes pratiques en matière de conformité
Recommandations et meilleures pratiques
- Concevoir des schémas de stockage de données qui conservent l’ID numérique de Publication et l’ID d’utilisateur : les messages des utilisateurs nécessitent une action à effectuer sur toutes les Publications de cet utilisateur. Par conséquent, comme 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 la Publication et l’utilisateur sur la base des IDs numériques. Les consommateurs de données devront surveiller les événements de conformité à la fois par ID de Publication et par ID d’utilisateur, et être en mesure de mettre à jour le magasin de données local de manière appropriée.
-
Concevoir des schémas qui prennent en charge tous les statuts de conformité : selon la façon dont les activités de conformité seront prises en compte dans les différentes applications, il peut être nécessaire d’ajouter d’autres métadonnées au magasin de données. Par exemple, les consommateurs de données peuvent décider d’ajouter des métadonnées à une base de données existante pour 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 Publication où le message original est imbriqué dans un objet à l’intérieur du Retweet. Dans ce cas, deux IDs de Publication sont référencés dans un Retweet : l’ID du Retweet et l’ID du message original (inclus dans l’objet imbriqué). Lorsqu’un message original est supprimé, un message de suppression de Publication est émis pour l’ID original. Les événements de suppression de Publication 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 être tolérants aux suppressions de Retweet incomplètes. La suppression de l’ID original devrait suffire à supprimer tous les Retweets ultérieurs. Il s’agit d’une bonne pratique de référencer l’ID de Publication original 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 Publication.
Objets de données de conformité
Compliance Firehose API
- Pour en savoir plus sur les statuts d’Utilisateur, consultez cet article et prenez connaissance de notre politique développeur concernant les Publications supprimées ici.
- L’API Compliance Firehose a été mise à jour pour fournir des événements
tweet_edit. - Plusieurs événements de suppression, protection et suspension d’Utilisateur ne sont pas nécessairement permanents et peuvent basculer indéfiniment entre différents états. Ceux‑ci incluent : user_delete, user_undelete, user_protect, user_unprotect et user_suspend, user_unsuspend.
- Les user_deletes sont suivis de status_deletes 30 jours plus tard uniquement si l’utilisateur n’a pas choisi d’effectuer un user_undelete de son compte. Il est possible qu’un user_delete soit annulé par l’utilisateur et que les suppressions de toutes ses Publications 30 jours plus tard ne se produisent pas.
- user_suspend est une action qui reste vraie, sauf si l’utilisateur fait l’objet d’un événement user_unsuspend. Ceux‑ci ne sont soumis à aucune modification au terme d’une période de 30 jours.
| Original Message Type | Object | Permanent (Yes/No) | Recommended Action |
|---|---|---|---|
| delete | Status | Yes | Supprimer la Publication associée. |
| status_withheld | Status | Yes | Masquer la Publication associée dans les pays spécifiques listés dans le message status_withheld. |
| drop | Status | No | Retirer la Publication de l’affichage public. |
| undrop | Status | No | La Publication peut de nouveau être affichée et traitée comme publique. |
| tweet_edit | Status | Yes | Respecter et, le cas échéant, afficher la nouvelle modification. |
| user_delete | User | No | Masquer ou supprimer toutes les Publications de l’utilisateur associé. |
| user_undelete | User | No | Toutes les Publications de l’utilisateur associé peuvent de nouveau être affichées et traitées comme publiques. |
| user_protect | User | No | Masquer ou supprimer toutes les Publications de l’utilisateur associé. |
| user_unprotect | User | No | Toutes les Publications de l’utilisateur associé peuvent de nouveau être affichées et traitées comme publiques. |
| user_suspend | User | No | Masquer ou supprimer toutes les Publications de l’utilisateur associé. |
| user_unsuspend | User | No | Toutes les Publications de l’utilisateur associé peuvent de nouveau être affichées et traitées comme publiques. |
| scrub_geo | User | Yes | Supprimer toutes les géodonnées fournies par X pour toutes les Publications de l’utilisateur antérieures à la Publication spécifiée dans le message scrub_geo. Notez que les Publications ultérieures d’un utilisateur peuvent contenir des géodonnées qui peuvent être utilisées. |
| user_withheld | User | Yes | Masquer les Publications 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 payloads
Suppression de publication
Publication bloquée
Suppression
Restaurer
Nettoyage des données de géolocalisation
Suppression d’un utilisateur
Annulation de la suppression de l’utilisateur
Utilisateur masqué
Protéger l’utilisateur
Annulation de la protection du compte
Suspension d’un utilisateur
Réactivation d’un compte utilisateur
intégration de Compliance Firehose
Intégrer le Compliance Firehose
- Établir une connexion de streaming à chaque partition d’API de streaming du Compliance Firehose
- Gérer des volumes de données élevés – découpler l’ingestion du flux du traitement supplémentaire au moyen de processus asynchrones
- Rétablir automatiquement la connexion aux partitions de flux lorsqu’une déconnexion se produit pour quelque raison que ce soit
- Traiter les événements de conformité pertinents pour les données de Publication et d’Utilisateur que vous avez stockées, conformément aux recommandations présentées ci-dessus
Respecter l’intention des utilisateurs sur Twitter
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 Publications de son compte. Pour en savoir plus, consultez À propos des Publications publiques et protégées. |
| Supprimer le compte | Un utilisateur X peut décider de supprimer son compte et tous les messages de statut associés à tout moment. X conserve les informations du compte pendant 30 jours après la suppression au cas où l’utilisateur déciderait de revenir sur cette suppression et de réactiver son compte. |
| Nettoyer les données de géolocalisation | Un utilisateur X peut supprimer toutes les données de localisation de ses anciennes Publications à tout moment. Ceci est appelé « scrub geo ». |
| Suspendre le compte | X se réserve le droit de suspendre les comptes qui enfreignent les Règles de X ou lorsqu’il est soupçonné qu’un compte a été piraté ou compromis. Les suspensions de compte ne peuvent être levées (réactivation) que par X. |
| Mettre le compte en retenue | X se réserve le droit de restreindre, de manière réactive, l’accès à certains contenus dans un pays spécifique, de temps à autre. Un compte en retenue ne peut être rétabli (retiré de la retenue) que par X. Pour en savoir plus, consultez Contenu retenu par pays. |
Statut
| Action | Description |
|---|---|
| Supprimer le statut | Un utilisateur de X peut supprimer un statut à tout moment. Les statuts supprimés ne peuvent pas être restaurés et sont définitivement supprimés. |
| Retenir le statut | X se réserve le droit de restreindre de manière réactive l’accès à certains contenus dans un pays donné, et ce ponctuellement. Un statut restreint ne peut être rendu à nouveau accessible que par X. Pour plus d’informations, consultez Contenu restreint par pays. |
Suivi des changements d’état de User et de Status
Référence de l’API
GET compliance/firehose
Méthodes
| Méthode | Description |
|---|---|
| GET /compliance/:stream | Se connecter au flux de données |
Authentification
GET /compliance/:stream
| Request Method | HTTP GET |
| Connection Type | Keep-Alive |
| URL | Indiquée sur la page d’aide API du flux dans 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 Remarque : 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 flux. |
| Compression | Gzip. Pour vous connecter au flux à l’aide de 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 d’expiration de lecture dans votre client et assurez-vous qu’il est défini sur une valeur supérieure à 30 secondes. |
| Support for Tweet edits | Toute modification d’un Tweet déclenche un événement de conformité “tweet_edit”. Consultez 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’ensemble de ce flux.
Codes de réponse
| Status | Text | Definition |
|---|---|---|
| 200 | Success | La connexion a été ouverte avec succès et les nouvelles activités seront envoyées au fur et à mesure de leur arrivée. |
| 401 | Unauthorized | L’authentification HTTP a échoué en raison d’identifiants non valides. Connectez-vous à console.gnip.com avec vos identifiants pour vous assurer que vous les utilisez correctement avec votre requête. |
| 406 | Not Acceptable | En général, cela se produit lorsque votre client n’inclut pas correctement les en-têtes pour accepter l’encodage gzip du flux, mais cela peut également se produire dans d’autres circonstances. Contiendra un message JSON similaire à : “This connection requires compression. To enable compression, send an ‘Accept-Encoding: gzip’ header in your request and be ready to uncompress the stream as it is read on the client end.” |
| 429 | Rate Limited | Votre application a dépassé la limite des requêtes de connexion. |
| 503 | Service Unavailable | Problème de serveur Twitter. Reconnectez-vous en utilisant une stratégie de reprise avec temporisation exponentielle. 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 numérique de l’utilisateur : les messages relatifs aux utilisateurs exigent qu’une action soit effectuée sur tous les Tweets de cet utilisateur. Par conséquent, étant donné que tous les messages de conformité sont fournis uniquement via des ID numériques, il est important de concevoir des schémas de stockage qui maintiennent la relation entre le Tweet et l’utilisateur à partir de ces 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 stockage de données local en conséquence.
-
Concevoir des schémas qui prennent en compte tous les statuts de conformité : selon la manière dont les activités de conformité seront gérées dans les différentes applications, il peut être nécessaire d’ajouter d’autres métadonnées au stockage de données. Par exemple, les consommateurs de données peuvent décider d’ajouter des métadonnées à une base de données existante pour faciliter la restriction de l’affichage de contenu dans les pays concernés par un message
status_withheld. - Gestion des suppressions de Retweets : les Retweets sont un type particulier de Tweet où le message original 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 original (inclus dans l’objet imbriqué). Lorsqu’un message original est supprimé, un message de suppression de Tweet est émis pour l’ID original. Des messages de suppression ultérieurs NE sont PAS émis pour tous les Retweets. La suppression de l’ID original doit suffire à supprimer tous les Retweets ultérieurs.