Atenção Lançamos uma nova ferramenta de conformidade para a X API v2 chamada batch compliance. Essa ferramenta permite enviar grandes conjuntos de IDs de Posts ou de usuários para obter seu status de conformidade e determinar quais dados exigem ação para colocar seus conjuntos em conformidade.
Além disso, tanto o batch compliance quanto o firehose de conformidade foram atualizados para oferecer suporte a edições de Post. No firehose de conformidade, um novo evento ‘tweet_edit’ foi adicionado. Consulte a documentação de Compliance Data Objects para mais detalhes. Saiba mais sobre como o metadata de Edit Post funciona na página Edit Posts fundamentals.
Visão geral
Enterprise
Um dos valores centrais da X é defender e respeitar a voz do usuário. Isso inclui respeitar suas expectativas e intenção quando eles excluem, modificam ou editam o conteúdo que escolhem compartilhar na X. Acreditamos que isso é fundamental para a saúde de longo prazo de uma das maiores plataformas públicas de informação em tempo real do mundo. A X coloca o controle nas mãos de seus usuários, dando às pessoas a capacidade de gerenciar sua própria experiência na X. Acreditamos que os consumidores corporativos que recebem dados da X têm a responsabilidade de honrar as expectativas e a intenção dos usuários finais.
Para mais informações sobre os tipos de eventos de conformidade possíveis na plataforma X, consulte nosso artigo Honrando a intenção do usuário na X.
Qualquer desenvolvedor ou empresa que consuma dados da X por meio de uma API tem a obrigação de envidar todos os esforços razoáveis para honrar alterações no conteúdo do usuário. Essa obrigação se estende a eventos do usuário, como exclusões, modificações e mudanças nas opções de compartilhamento (por exemplo, quando o conteúdo se torna protegido ou retido). Isso também inclui quando os usuários editam seus Posts. Consulte a redação específica na Política do Desenvolvedor e/ou no seu Acordo de Dados da X para entender como essa obrigação afeta seu uso de dados da X.
A X oferece as seguintes soluções que fornecem informações sobre esses eventos de conformidade do usuário e indicam se um Post ou usuário específico está ou não disponível publicamente. Uma breve visão geral das soluções e seus padrões gerais de integração é apresentada abaixo:
GET statuses/lookup e GET users/lookup
- Formato: APIs REST. Consulte: GET statuses/lookup e GET users/lookup.
- Esses endpoints sempre retornam a versão mais recente de quaisquer edições de Post. Todos os Objetos Post que descrevem Posts criados após a introdução do recurso de edição incluirão metadata de edição de Post. Isso vale mesmo para Posts que não foram editados.
- Para todos os Posts, solicitações feitas mais de 30 minutos após a criação representarão o estado final de todos os Posts.
- Fornecem informações de disponibilidade para Posts ou usuários específicos, conforme definido pelo solicitante como parte da solicitação à API.
- Podem ser usados para verificações pontuais ad hoc do estado atual de disponibilidade de um grupo específico de Posts/usuários.
- Ideal para clientes que precisam verificar o estado atual de um Post ou usuário específico em um determinado momento.
-
Essas APIs fornecem um mecanismo útil que pode ser usado por clientes que precisam verificar a disponibilidade de um conteúdo, por exemplo, quando:
- Exibindo Posts
- Interagindo com um(a) Post ou usuário de forma 1:1
- Distribuindo Conteúdo da X para um terceiro por meio de um download de arquivo permitido
- Armazenando Posts por períodos prolongados
Compliance Firehose (apenas para Enterprise)
- Formato: API de streaming. Consulte: Compliance Firehose.
- Fornece um stream em tempo real de atividades de compliance no X. Essas atividades incluem edições de Posts.
- Pode ser usado para manter o estado de conformidade em um conjunto de dados armazenados à medida que novos eventos de conformidade ocorrem na plataforma.
- Ideal para clientes que consomem e armazenam grandes volumes de dados do X por períodos prolongados.
Guias
Melhores práticas de compliance
Recomendações e melhores práticas
- Crie esquemas de armazenamento de dados que guardem o ID numérico do Post e o ID do Usuário: Mensagens relacionadas ao usuário exigem ações em todos os Posts desse Usuário. Portanto, como todas as mensagens de conformidade são entregues apenas por ID numérico, é importante projetar esquemas de armazenamento que mantenham o relacionamento entre Post e Usuário com base em IDs numéricos. Consumidores de dados precisarão monitorar eventos de conformidade tanto pelo ID do Post quanto pelo ID do Usuário e conseguir atualizar o repositório de dados local de forma apropriada.
- Crie esquemas que contemplem todos os status de conformidade: Dependendo de como as atividades de conformidade serão tratadas em diferentes aplicações, pode ser necessário adicionar outros metadados ao repositório de dados. Por exemplo, consumidores de dados podem decidir adicionar metadados a um banco de dados existente para facilitar a restrição da exibição de conteúdo em países afetados por uma mensagem status_withheld.
- Tratamento de exclusões de Retweet: Retweets são um tipo especial de Post em que a mensagem original está aninhada em um objeto dentro do Retweet. Nesse caso, há dois IDs de Post referenciados em um Retweet — o ID do Retweet e o ID da mensagem original (incluída no objeto aninhado). Quando a mensagem original é excluída, uma mensagem de DELETE de Post é emitida para o ID original. Eventos de exclusão de Post normalmente acionam eventos de DELETE para todos os Retweets. No entanto, em alguns casos, nem todos são enviados, e os sistemas clientes devem tolerar exclusões de Retweet incompletas. A exclusão do ID original deve ser suficiente para excluir todos os Retweets subsequentes. É uma prática recomendada referenciar o ID do Post original ao armazenar Retweets e excluir todos os Retweets referenciados ao receber eventos de DELETE de Post.
Objetos de Conformidade data
Compliance Firehose API
- Leia mais sobre os status de Usuário aqui e sobre nossa política para desenvolvedores a respeito de Posts excluídos aqui.
- O Compliance Firehose foi atualizado para fornecer eventos ‘tweet_edit’.
- Vários eventos de exclusão, proteção e suspensão de Usuário não são necessariamente permanentes e podem alternar entre estados indefinidamente. Isso inclui: user_delete, user_undelete, user_protect, user_unprotect e user_suspend, user_unsuspend.
- User_deletes são seguidos por status_deletes 30 dias depois apenas se o usuário não tiver optado por user_undelete na conta. É possível que um user_delete seja revertido pelo usuário e que as exclusões de todos os seus Posts 30 dias depois não ocorram.
- User_suspend é uma ação que permanece válida, a menos que o usuário seja submetido a um evento user_unsuspend. Esses casos não estão sujeitos a alterações dentro de um período de 30 dias.
Tipo de Mensagem Original | Objeto | Permanente (Sim/Não) | Ação Recomendada |
---|---|---|---|
delete | Status | Sim | Excluir o Post associado. |
status_withheld | Status | Sim | Suprimir o Post associado nos países específicos listados na mensagem status_withheld. |
drop | Status | Não | Remover o Post da visualização pública. |
undrop | Status | Não | O status pode voltar a ser exibido e tratado como público. |
tweet_edit | Status | Sim | Respeitar e, quando relevante, exibir a nova edição. |
user_delete | User | Não | Suprimir ou excluir todos os Posts do usuário associado. |
user_undelete | User | Não | Todos os Posts do usuário associado podem voltar a ser exibidos e tratados como públicos. |
user_protect | User | Não | Suprimir ou excluir todos os Posts do usuário associado. |
user_unprotect | User | Não | Todos os Posts do usuário associado podem voltar a ser exibidos e tratados como públicos. |
user_suspend | User | Não | Suprimir ou excluir todos os Posts do usuário associado. |
user_unsuspend | User | Não | Todos os Posts do usuário associado podem voltar a ser exibidos e tratados como públicos. |
scrub_geo | User | Sim | Excluir todos os geodados fornecidos pela X para todos os Posts do usuário anteriores ao Post especificado na mensagem scrub_geo. Observe que Posts subsequentes de um usuário podem conter geodados que podem ser usados. |
user_withheld | User | Sim | Suprimir os Posts do usuário associado nos países específicos listados na mensagem user_withheld. |
delete | Favorite | Sim | Excluir o like/favorito associado. |
Exemplos de payload
Excluir Post
Post retido
Soltar
Reverter exclusão
Limpar dados geográficos
Exclusão de usuário
Reativação de usuário
Usuário retido por restrição
Proteção do usuário
Remover proteção de usuário
Suspensão de usuário
Reativar usuário
integrando o Compliance Firehose
Integração com o Compliance Firehose
- Estabelecer uma conexão de stream com cada partição da API de stream do Compliance Firehose
- Lidar com altos volumes de dados — desacoplando a ingestão do stream do processamento adicional por meio de processos assíncronos
- Reconectar-se automaticamente às partições do stream quando houver desconexão por qualquer motivo
- Processar eventos de compliance relevantes para os dados de Post e de Usuário que você armazenou, de acordo com as orientações acima
Honrando a intenção do usuário no X
Usuário
Ação | Descrição |
---|---|
Proteger conta | Um usuário do X pode proteger ou remover a proteção da sua conta a qualquer momento. Contas protegidas exigem aprovação manual do usuário para cada pessoa autorizada a visualizar os Posts da conta. Para mais informações, consulte Sobre Posts públicos e protegidos. |
Excluir conta | Um usuário do X pode decidir excluir sua conta e todas as mensagens de status associadas a qualquer momento. O X mantém as informações da conta por 30 dias após a exclusão caso o usuário decida reverter a exclusão e reativar sua conta. |
Remover dados de localização | Um usuário do X pode remover todos os dados de localização de Posts anteriores a qualquer momento. Isso é conhecido como “scrub geo”. |
Suspender conta | O X se reserva o direito de suspender contas que violem as Regras do X ou quando houver suspeita de invasão ou comprometimento. Suspensões de conta só podem ser revertidas (cancelar suspensão) pelo X. |
Reter conta | O X se reserva o direito de reter reativamente o acesso a determinados conteúdos em um país específico de tempos em tempos. Uma conta retida só pode ser liberada pelo X. Para mais informações, consulte Conteúdo retido por país. |
Status
Ação | Descrição |
---|---|
Excluir status | Um usuário do X pode excluir um status a qualquer momento. Status excluídos não podem ser desfeitos e são permanentemente removidos. |
Reter status | A X reserva-se o direito de reter, de forma reativa, o acesso a determinados conteúdos em um país específico de tempos em tempos. Um status retido só pode ser liberado pela X. Para mais informações, consulte Conteúdo retido por país. |
Acompanhando alterações de Usuário e Status
Referência da API
GET compliance/firehose
Métodos
Método | Descrição |
---|---|
GET /compliance/:stream | Conectar ao stream de dados |
Autenticação
GET /compliance/:stream
Request Method | HTTP GET |
Connection Type | Keep-Alive |
URL | Disponível na página de Ajuda da API do stream no seu painel e com a seguinte estrutura: https://gnip-stream.x.com/stream/compliance/accounts/:account_name/publishers/twitter/:stream_label.json?partition=1 Observação: o parâmetro “partition” é obrigatório. Você precisará se conectar às 8 partições, cada uma contendo 12,5% do volume total, para consumir o stream completo. |
Compression | Gzip. Para se conectar ao stream usando compactação Gzip, basta enviar um cabeçalho Accept-Encoding na solicitação de conexão. O cabeçalho deve ser o seguinte: Accept-Encoding: gzip |
Character Encoding | UTF-8 |
Response Format | JSON. O cabeçalho da solicitação deve especificar o formato JSON para a resposta. |
Rate Limit | 10 solicitações a cada 60 segundos. |
Read Timeout | Defina um tempo limite de leitura no cliente e certifique-se de que ele esteja acima de 30 segundos. |
Support for Tweet edits | Todas as edições de Tweet acionam um evento de Compliance “tweet_edit”. Consulte a documentação Compliance Data Objects para mais detalhes. |
partition=1
do Compliance firehose — você precisará se conectar a todas as 8 partições para consumir todo este stream.
Códigos de resposta
Status | Texto | Definição |
---|---|---|
200 | Sucesso | A conexão foi aberta com sucesso e novas atividades serão enviadas conforme chegarem. |
401 | Não autorizado | A autenticação HTTP falhou devido a credenciais inválidas. Faça login em console.gnip.com com suas credenciais para garantir que você as está usando corretamente na sua solicitação. |
406 | Não aceitável | Geralmente ocorre quando o cliente não inclui corretamente os cabeçalhos para aceitar codificação gzip do stream, mas pode ocorrer em outras circunstâncias também. Conterá uma mensagem JSON semelhante a: “Esta conexão requer compactação. Para habilitar a compactação, envie um cabeçalho ‘Accept-Encoding: gzip’ na sua solicitação e esteja pronto para descompactar o stream conforme ele é lido no lado do cliente.” |
429 | Limite de taxa excedido | Seu App excedeu o limite de solicitações de conexão. |
503 | Serviço indisponível | Problema no servidor do X. Reconecte usando um padrão de recuo exponencial. Se nenhum aviso sobre esse problema tiver sido publicado na X API Status Page, entre em contato com o suporte. |
Outras recomendações e melhores práticas
- Crie esquemas de armazenamento de dados que guardem o ID numérico do Tweet e o ID do usuário: Mensagens relacionadas a um usuário exigem ação em todos os Tweets desse usuário. Portanto, como todas as mensagens de conformidade são entregues apenas por ID numérico, é importante projetar esquemas de armazenamento que mantenham o relacionamento entre Tweet e usuário com base em IDs numéricos. Os consumidores de dados precisarão monitorar eventos de conformidade tanto por ID de Tweet quanto por ID de usuário e conseguir atualizar o repositório de dados local de forma apropriada.
- Crie esquemas que contemplem todos os statuses de conformidade: Dependendo de como as atividades de conformidade serão tratadas em diferentes aplicativos, pode ser necessário adicionar outros metadados ao repositório de dados. Por exemplo, os consumidores de dados podem decidir adicionar metadados a um banco de dados existente para facilitar a restrição da exibição de conteúdo em países afetados por uma mensagem status_withheld.
- Tratamento de exclusões de Retweet: Retweets são um tipo especial de Tweet em que a mensagem original está aninhada em um objeto dentro do Retweet. Nesse caso, há dois IDs de Tweet referenciados em um Retweet — o ID do Retweet e o ID da mensagem original (incluída no objeto aninhado). Quando a mensagem original é excluída, é emitida uma mensagem de delete de Tweet para o ID original. Mensagens de delete subsequentes NÃO são emitidas para todos os Retweets. A exclusão do ID original deve ser suficiente para excluir todos os Retweets subsequentes.