Tenga en cuenta Hemos lanzado una nueva herramienta de cumplimiento para X API v2 llamada batch compliance. Esta nueva herramienta le permite cargar conjuntos de datos grandes de id de Post o de usuario para recuperar su estado de cumplimiento y determinar qué data requiere acción para poner sus conjuntos de datos en conformidad.
Además, tanto batch compliance como compliance firehose se han actualizado para admitir ediciones de Post. En compliance firehose se agregó un nuevo evento “tweet_edit”. Consulte la documentación de Compliance Data Objects para más detalles. Obtenga más información sobre cómo funciona la metadata de Edit Post en la página Edit Posts fundamentals.
Descripción general
Enterprise
Uno de los valores fundamentales de X es defender y respetar la voz del usuario. Esto incluye respetar sus expectativas e intención cuando eliminan, modifican o editan el contenido que deciden compartir en X. Consideramos que esto es fundamental para la salud a largo plazo de una de las plataformas públicas de información en tiempo real más grandes del mundo. X pone el control en manos de sus usuarios, brindándoles la capacidad de gestionar su propia experiencia en X. Creemos que las empresas que consumen data de X tienen la responsabilidad de honrar las expectativas e intención de los usuarios finales.
Para obtener más información sobre los tipos de eventos de cumplimiento posibles en la plataforma de X, consulte nuestro artículo Honoring User Intent on X.
Cualquier desarrollador o empresa que consuma data de X a través de una API tiene la obligación de realizar todos los esfuerzos razonables para respetar los cambios en el contenido del usuario. Esta obligación se extiende a eventos del usuario como eliminaciones, modificaciones y cambios en las opciones de uso compartido (p. ej., cuando el contenido pasa a estar protegido o retenido). Esto también incluye cuando los usuarios editan sus Posts. Consulte el lenguaje específico en la Developer Policy y/o en su X Data Agreement para comprender cómo esta obligación afecta su uso de la data de X.
X ofrece las siguientes soluciones que proporcionan información sobre estos eventos de cumplimiento del usuario y sobre si un Post o un Usuario específico está disponible públicamente o no. A continuación se presenta una breve descripción general de las soluciones y sus patrones de integración generales:
GET statuses/lookup y GET users/lookup
- Formato: API REST. Consulta: GET statuses/lookup y GET users/lookup.
- Estos endpoints siempre devuelven la versión más reciente de cualquier edición de Post. Todos los Objetos de Post que describen Posts creados después de la introducción de la función de edición incluirán metadatos de edición de Post. Esto se aplica incluso a los Posts que no fueron editados.
- Para todos los Posts, las solicitudes realizadas más de 30 minutos después de su creación representarán el estado final de esos Posts.
- Entregan información de disponibilidad para Posts o usuarios específicos, según lo definido por quien realiza la llamada como parte de la solicitud a la API.
- Pueden usarse para verificaciones puntuales ad hoc sobre el estado de disponibilidad actual de un grupo específico de Posts/usuarios.
- Ideal para clientes que necesitan una forma de comprobar el estado actual de un Post o de un usuario específico en un momento dado.
-
Estas API proporcionan un mecanismo útil que puede utilizarse por clientes que necesiten comprobar la disponibilidad de una pieza de contenido, por ejemplo cuando:
- Mostrar Posts
- Interactuar con uno o varios Posts o usuarios de forma 1:1
- Distribuir contenido de X a un tercero mediante una descarga de archivo permitida
- Almacenar Posts por períodos prolongados
Compliance Firehose (solo Enterprise)
- Formato: Streaming API. Consulte: Compliance Firehose.
- Entrega un stream en tiempo real de actividades de cumplimiento en X. Estas actividades incluyen cuando se editan los Posts.
- Puede utilizarse para mantener el estado de cumplimiento en un conjunto de data almacenada a medida que se producen nuevos eventos de cumplimiento en la plataforma.
- Ideal para clientes que consumen y almacenan grandes volúmenes de data de X durante períodos prolongados.
Guías
Mejores prácticas de conformidad
Recomendaciones y mejores prácticas
- Cree esquemas de almacenamiento de datos que guarden el ID numérico de Post y el ID de usuario: Los mensajes del usuario requieren tomar medidas sobre todos los Posts de ese usuario. Por lo tanto, dado que todos los mensajes de cumplimiento se entregan únicamente por ID numérico, es importante diseñar esquemas de almacenamiento que mantengan la relación entre el Post y el usuario basándose en IDs numéricos. Quienes consumen datos deberán monitorear los eventos de cumplimiento tanto por ID de Post como por ID de usuario y poder actualizar el almacén de datos local de forma adecuada.
- Cree esquemas que contemplen todos los estados de cumplimiento: Dependiendo de cómo se aborden las actividades de cumplimiento en diversas aplicaciones, puede ser necesario agregar otros metadatos al almacén de datos. Por ejemplo, quienes consumen datos pueden decidir agregar metadatos a una base de datos existente para facilitar la restricción de la visualización de contenido en países afectados por un mensaje status_withheld.
- Cómo manejar eliminaciones de Retweet: Los Retweets son un tipo especial de Post en el que el mensaje original está anidado en un objeto dentro del Retweet. En este caso, hay dos IDs de Post referenciados en un Retweet: el ID del Retweet y el ID del mensaje original (incluido en el objeto anidado). Cuando se elimina un mensaje original, se emite un mensaje de eliminación de Post para el ID original. Los eventos de eliminación de Post normalmente desencadenan eventos de eliminación para todos los Retweets. Sin embargo, en algunos casos no se envían todos y los sistemas cliente deben ser tolerantes a eliminaciones de Retweet incompletas. La eliminación del ID original debería ser suficiente para eliminar todos los Retweets posteriores. Es una buena práctica hacer referencia al ID de Post original al almacenar Retweets y eliminar todos los Retweets referenciados al recibir eventos de eliminación de Post.
Objetos de cumplimiento de datos
API de Compliance Firehose
- Lea más sobre los estados de usuario aquí y nuestra política para desarrolladores sobre Posts eliminados aquí.
- Compliance Firehose se ha actualizado para proporcionar eventos ‘tweet_edit’.
- Varios eventos de eliminación, protección y suspensión de usuario no son necesariamente permanentes y pueden alternar entre estados indefinidamente. Estos incluyen: user_delete, user_undelete, user_protect, user_unprotect y user_suspend, user_unsuspend.
- Los user_deletes van seguidos de status_deletes 30 días después solo si el usuario no ha optado por user_undelete su cuenta. Es posible que un user_delete sea revertido por el usuario y que 30 días después no se eliminen todos sus Posts.
- user_suspend es una acción que se mantiene vigente a menos que el usuario esté sujeto a un evento user_unsuspend. Estos no están sujetos a cambios en un período de 30 días.
Tipo de mensaje original | Objeto | Permanente (Sí/No) | Acción recomendada |
---|---|---|---|
delete | Status | Sí | Eliminar el Post asociado. |
status_withheld | Status | Sí | Suprimir el Post asociado en los países específicos indicados en el mensaje status_withheld. |
drop | Status | No | Quitar el Post de la vista pública. |
undrop | Status | No | El Status puede mostrarse nuevamente y tratarse como público. |
tweet_edit | Status | Sí | Respetar y, cuando corresponda, mostrar la nueva edición. |
user_delete | User | No | Suprimir o eliminar todos los Posts del usuario asociado. |
user_undelete | User | No | Todos los Posts del usuario asociado pueden mostrarse nuevamente y tratarse como públicos. |
user_protect | User | No | Suprimir o eliminar todos los Posts del usuario asociado. |
user_unprotect | User | No | Todos los Posts del usuario asociado pueden mostrarse nuevamente y tratarse como públicos. |
user_suspend | User | No | Suprimir o eliminar todos los Posts del usuario asociado. |
user_unsuspend | User | No | Todos los Posts del usuario asociado pueden mostrarse nuevamente y tratarse como públicos. |
scrub_geo | User | Sí | Eliminar todos los datos geográficos proporcionados por X para todos los Posts del usuario anteriores al Post especificado en el mensaje scrub_geo. Tenga en cuenta que los Posts posteriores de un usuario pueden contener datos geográficos que pueden usarse. |
user_withheld | User | Sí | Suprimir los Posts del usuario asociado en los países específicos indicados en el mensaje user_withheld. |
delete | Favorite | Sí | Eliminar el like/favorito asociado. |
Ejemplos de payload
DELETE de Post
Post retenido
Soltar
Revertir eliminación
Depurar geolocalización
Eliminación de usuario
Revertir eliminación de usuario
Usuario oculto
Protección del usuario
Quitar protección de usuario
Suspensión de usuarios
Rehabilitación de la cuenta del usuario
Integración de Compliance Firehose
Integración con el Compliance Firehose
- Establecer una conexión de stream con cada partición de la API de stream del Compliance Firehose
- Manejar altos volúmenes de data: desacoplar la ingesta del stream del procesamiento adicional utilizando procesos asíncronos
- Reconectarse automáticamente a las particiones del stream cuando se desconecte por cualquier motivo
- Procesar eventos de cumplimiento que sean relevantes para los datos de Post y User que haya almacenado, de acuerdo con la guía presentada arriba
Respetar la intención del usuario en Twitter
Usuario
Acción | Descripción |
---|---|
Proteger cuenta | Un usuario de X puede proteger o desproteger su cuenta en cualquier momento. Las cuentas protegidas requieren la aprobación manual del usuario para cada persona a la que se le permita ver los Posts de su cuenta. Para obtener más información, consulta About Public and Protected Posts. |
Eliminar cuenta | Un usuario de X puede decidir eliminar su cuenta y todos los mensajes de estado asociados en cualquier momento. X conserva la información de la cuenta durante 30 días después de la eliminación, por si el usuario decide revertir la eliminación y reactivar su cuenta. |
Suprimir datos de ubicación | Un usuario de X puede eliminar todos los datos de ubicación de Posts anteriores en cualquier momento. Esto se conoce como “scrub geo”. |
Suspender cuenta | X se reserva el derecho de suspender cuentas que infrinjan las Reglas de X o cuando se sospeche que una cuenta ha sido vulnerada o comprometida. Las suspensiones de cuenta solo pueden revertirse (anular la suspensión) por X. |
Retener cuenta | X se reserva el derecho de retener de forma reactiva el acceso a cierto contenido en un país específico en ocasiones. Una cuenta retenida solo puede dejar de estar retenida por X. Para obtener más información, consulta Country Withheld Content. |
Estado
Acción | Descripción |
---|---|
Eliminar estado | Un usuario de X puede eliminar un estado en cualquier momento. Los estados eliminados no se pueden revertir y se eliminan de forma permanente. |
Retener estado | X se reserva el derecho de retener de forma reactiva el acceso a cierto contenido en un país específico en determinados momentos. Un estado retenido solo puede dejar de estar retenido por X. Para obtener más información, consulta Country Withheld Content. |
Seguimiento de cambios de usuario y estado
Referencia de API
GET compliance/firehose
Métodos
Método | Descripción |
---|---|
GET /compliance/:stream | Conectarse al stream de datos |
Autenticación
GET /compliance/:stream
Request Method | HTTP GET |
Connection Type | Keep-Alive |
URL | Se encuentra en la página de ayuda de la API del stream en tu panel y se asemeja a la siguiente estructura: https://gnip-stream.x.com/stream/compliance/accounts/:account_name/publishers/twitter/:stream_label.json?partition=1 Nota: El parámetro “partition” es obligatorio. Deberás conectarte a las 8 particiones, cada una con el 12,5% del volumen total, para consumir el stream completo. |
Compression | Gzip. Para conectarte al stream usando compresión Gzip, simplemente envía un encabezado Accept-Encoding en la solicitud de conexión. El encabezado debería verse como lo siguiente: Accept-Encoding: gzip |
Character Encoding | UTF-8 |
Response Format | JSON. El encabezado de tu solicitud debe especificar el formato JSON para la respuesta. |
Rate Limit | 10 solicitudes por 60 segundos. |
Read Timeout | Configura un tiempo de espera de lectura en tu cliente y asegúrate de que sea superior a 30 segundos. |
Support for Tweet edits | Todas las ediciones de Tweet desencadenan un evento de Compliance “tweet_edit”. Consulta la documentación de Compliance Data Objects para más detalles. |
partition=1
del Compliance firehose; deberá conectarse a las 8 particiones para consumir la totalidad de este stream.
Códigos de respuesta
Estado | Texto | Definición |
---|---|---|
200 | Correcto | La conexión se abrió correctamente y se enviarán nuevas actividades a medida que lleguen. |
401 | No autorizado | La autenticación HTTP falló debido a credenciales no válidas. Inicia sesión en console.gnip.com con tus credenciales para asegurarte de que las estás usando correctamente en tu solicitud. |
406 | No aceptable | Generalmente, esto ocurre cuando tu cliente no incluye correctamente los encabezados para aceptar la codificación gzip del stream, pero también puede ocurrir en otras circunstancias. Contendrá un mensaje JSON similar a: “Esta conexión requiere compresión. Para habilitar la compresión, envía un encabezado ‘Accept-Encoding: gzip’ en tu solicitud y prepárate para descomprimir el stream a medida que se lea en el lado del cliente.” |
429 | Límite de tasa alcanzado | Tu App ha superado el límite de solicitudes de conexión. |
503 | Servicio no disponible | Problema del servidor de Twitter. Vuelve a conectarte usando un patrón de retroceso exponencial. Si no se ha publicado ningún aviso sobre este problema en la X API Status Page, contacta con soporte. |
Otras recomendaciones y prácticas recomendadas
- Cree esquemas de almacenamiento de datos que conserven el id numérico del Tweet y el id de usuario: Los mensajes de usuario requieren tomar medidas sobre todos los Tweets de ese usuario. Por lo tanto, dado que todos los mensajes de cumplimiento se entregan únicamente por id numérico, es importante diseñar esquemas de almacenamiento que mantengan la relación entre el Tweet y el usuario en función de ids numéricos. Los consumidores de datos deberán monitorear los eventos de cumplimiento tanto por id de Tweet como por id de usuario y poder actualizar el almacén de datos local de manera adecuada.
- Cree esquemas que contemplen todos los estados de cumplimiento: Según cómo se gestionen las actividades de cumplimiento en distintas aplicaciones, puede ser necesario agregar otros metadatos al almacén de datos. Por ejemplo, los consumidores de datos pueden decidir agregar metadatos a una base de datos existente para facilitar la restricción de la visualización de contenido en países afectados por un mensaje status_withheld.
- Gestión de eliminaciones de Retweet: Los Retweets son un tipo especial de Tweet en el que el mensaje original está anidado en un objeto dentro del Retweet. En este caso, se hace referencia a dos ids de Tweet en un Retweet: el id del Retweet y el id del mensaje original (incluido en el objeto anidado). Cuando se elimina un mensaje original, se emite un mensaje de eliminación de Tweet para el id original. NO se emiten mensajes de eliminación posteriores para todos los Retweets. La eliminación del id original debería ser suficiente para eliminar todos los Retweets posteriores.