Confira nossos guias de comparação:
X API: Dicionário de dados do Enterprise
Introdução
Enterprise
Posts são o bloco de construção atômico básico de tudo no X. Todas as APIs do X que retornam Posts fornecem esses dados codificados em JSON (JavaScript Object Notation). O JSON é baseado em pares chave-valor, com atributos nomeados e valores associados. Objetos Post recuperados da API incluem a “atualização de status” de um usuário do X, mas Retweets, respostas e Tweets com citação também são objetos Post. Se um Post estiver relacionado a outro, como um Retweet, resposta ou Tweet com citação, cada um será identificado ou incorporado ao objeto Post. Mesmo o Post mais simples, no formato nativo de dados do X, terá objetos JSON aninhados para representar outros atributos de um Post, como o autor, usuários mencionados, local marcado, hashtags, símbolos de cashtag, mídias ou links de URL. Ao trabalhar com dados do X, é importante entender esse conceito. O formato dos dados de Post que você receberá da X API depende do tipo de Post recebido, da X API que você está usando e das configurações de formato.
Endpoints Enterprise que retornam objetos Post foram atualizados para fornecer os metadados necessários para entender o histórico de edição do Post. Saiba mais sobre esses metadados na página “Editar Posts”.
No formato nativo do X, o payload JSON incluirá atributos de ‘nível raiz’ e objetos JSON aninhados (que são representados aqui com a notação
{}
):
Formatos de dados disponíveis
Observação: Recomenda-se fortemente usar o formato Enriched Native para APIs de dados Enterprise.As APIs de dados Enterprise fornecem dados em dois formatos. O formato Enterprise mais próximo do formato nativo Standard v1.1 é o Enriched Native. O formato Enterprise legado é o Activity Streams, originalmente implementado e usado pela Gnip como um formato normalizado entre a X e outros provedores de dados de mídia social na época. Embora esse formato ainda esteja disponível, a X tem investido em novos recursos e desenvolvimentos apenas no formato Enriched Native desde 2017. O formato Enriched Native é exatamente como o nome sugere: inclui objetos nativos da X, além de enrichments adicionais disponíveis para produtos de dados Enterprise, como metadata de “URL unwinding”, profile geo, poll metadata e metrics adicionais de engajamento.
- O formato Enriched Native inclui todas as novas metadata desde 2017, como poll metadata, e metrics adicionais como reply_count e quote_count.
- O formato Activity Streams não recebe novas metadata ou enrichments desde a atualização de caracteres de 2017.
- Expanded and enhanced URLs enrichment
- Matching rules enrichment
- Poll metadata enrichment
- Profile geo enrichment
Comparação de objetos por formato de dados
Nativo enriquecido | Activity Streams |
---|---|
Link Objeto Post | Link Objeto Activity |
Link Objeto de usuário | Link Objeto Actor |
Link Objeto Entities | Link Objeto X entities |
Link Objeto Extended entities | Link Objeto X extended entitites |
Link Objeto Geo | Link Objeto Location |
n/a | Link Objeto Gnip |
Melhores práticas de parsing
- O JSON do X é codificado em UTF-8.
- Os parsers devem tolerar com facilidade variações na ordem de fields. Deve-se assumir que o JSON de Post é servido como um hash não ordenado de data.
- Os parsers devem tolerar a adição de fields “novos”.
- Parsers de JSON devem ser tolerantes a fields “ausentes”, já que nem todos os fields aparecem em todos os contextos.
- Geralmente é seguro considerar um field nulo, um conjunto vazio e a ausência de um field como a mesma coisa.
Objetos de data enriquecida nativos do Enterprise
Objeto Tweet do Native Enriched
Quer saber mais sobre como o formato de dados Native Enriched corresponde ao formato da X API v2? Confira nosso guia de comparação: Native Enriched comparado à X API v2
Objeto Post
id
, created_at
e text
. Objetos Post também terão objetos aninhados que incluem user
, entities
e extended_entities
. Objetos Post também terão outros objetos Post aninhados, como retweeted_status, quoted_status e extended_tweet. O formato nativo enriquecido terá adicionalmente um objeto matching_rules.
Dicionário de Dados do X
Atributo | Tipo | Descrição |
---|---|---|
created_at | String | Horário UTC em que este Post foi criado. Exemplo: “created_at”: “Wed Oct 10 20:19:24 +0000 2018” |
id | Int64 | A representação inteira do identificador único para este Post. Este número é maior que 53 bits e algumas linguagens de programação podem ter dificuldades/defeitos silenciosos ao interpretá-lo. É seguro usar um inteiro de 64 bits com sinal para armazenar este identificador. Use id_str para obter o identificador com segurança. Consulte IDs do X para mais informações. Exemplo:“id”:1050118621198921728 |
id_str | String | A representação em string do identificador único para este Post. As implementações devem usar este campo em vez do inteiro grande em id . Exemplo:“id_str”:“1050118621198921728” |
text | String | O texto UTF-8 real da atualização de status. Consulte X-text para detalhes sobre quais caracteres são atualmente considerados válidos. Exemplo: “text”:“To make room for more expression, we will now count all emojis as equal—including those with gender and skin t… https://t.co/MkGjXf9aXm” |
source | String | Utilitário usado para publicar o Post, como uma string formatada em HTML. Posts do site do X têm um valor de source web .Exemplo: “source”:“X Web Client” |
truncated | Boolean | Indica se o valor do parâmetro text foi truncado, por exemplo, como resultado de um retweet que excede o limite original de 140 caracteres do texto do Post. Texto truncado terminará com reticências, assim: ... Como o X agora rejeita Posts longos em vez de truncá-los, a grande maioria dos Posts terá este valor definido como false . Note que, embora retweets nativos possam ter sua propriedade text de nível superior encurtada, o texto original estará disponível no objeto retweeted_status e o parâmetro truncated será definido com o valor do status original (na maioria dos casos, false ). Exemplo:“truncated”:true |
in_reply_to_status_id | Int64 | Anulável. Se o Post representado for uma resposta, este campo conterá a representação inteira do ID do Post original. Exemplo: “in_reply_to_status_id”:1051222721923756032 |
in_reply_to_status_id_str | String | Anulável. Se o Post representado for uma resposta, este campo conterá a representação em string do ID do Post original. Exemplo: “in_reply_to_status_id_str”:“1051222721923756032” |
in_reply_to_user_id | Int64 | Anulável. Se o Post representado for uma resposta, este campo conterá a representação inteira do ID do autor do Post original. Isso não será necessariamente sempre o usuário mencionado diretamente no Post. Exemplo: “in_reply_to_user_id”:6253282 |
in_reply_to_user_id_str | String | Anulável. Se o Post representado for uma resposta, este campo conterá a representação em string do ID do autor do Post original. Isso não será necessariamente sempre o usuário mencionado diretamente no Post. Exemplo: “in_reply_to_user_id_str”:“6253282” |
in_reply_to_screen_name | String | Anulável. Se o Post representado for uma resposta, este campo conterá o nome de usuário do autor do Post original. Exemplo: “in_reply_to_screen_name”:“xapi” |
user | objeto de usuário | O usuário que publicou este Post. Consulte o dicionário de dados do usuário para a lista completa de atributos. Exemplo destacando atributos selecionados: { “user”: <br/> “id”: 6253282, “id_str”: “6253282”, “name”: “X API”, “screen_name”: “API”, “location”: “San Francisco, CA”, “url”: “https://developer.x.com”, “description”: “The Real X API. Tweets about API changes, service issues and our Developer Platform. Don’t get an answer? It’s on my website.”, “verified”: true, “followers_count”: 6129794, “friends_count”: 12, “listed_count”: 12899, “favourites_count”: 31, “statuses_count”: 3658, “created_at”: “Wed May 23 06:01:13 +0000 2007”, “utc_offset”: null, “time_zone”: null, “geo_enabled”: false, “lang”: “en”, “contributors_enabled”: false, “is_translator”: false, “profile_background_color”: “null”, “profile_background_image_url”: “null”, “profile_background_image_url_https”: “null”, “profile_background_tile”: null, “profile_link_color”: “null”, “profile_sidebar_border_color”: “null”, “profile_sidebar_fill_color”: “null”, “profile_text_color”: “null”, “profile_use_background_image”: null, “profile_image_url”: “null”, “profile_image_url_https”: “https://pbs.twimg.com/profile_images/942858479592554497/BbazLO9L_normal.jpg”, “profile_banner_url”: “https://pbs.twimg.com/profile_banners/6253282/1497491515”, “default_profile”: false, “default_profile_image”: false, “following”: null, “follow_request_sent”: null, “notifications”: null } } |
coordinates | Coordinates | Anulável. Representa a localização geográfica deste Post conforme informado pelo usuário ou aplicação cliente. O array de coordenadas interno é formatado como geoJSON (longitude primeiro, depois latitude). Exemplo: “coordinates”: <br/> “coordinates”: [ -75.14310264, 40.05701649 ], “type”:“Point” } |
place | Places | Anulável. Quando presente, indica que o Post está associado (mas não necessariamente originário de) um Local. Exemplo: “place”: <br/> “attributes”:, “bounding_box”: <br/> “coordinates”: [[ [-77.119759,38.791645], [-76.909393,38.791645], [-76.909393,38.995548], [-77.119759,38.995548] ]], “type”:“Polygon” }, “country”:“United States”, “country_code”:“US”, “full_name”:“Washington, DC”, “id”:“01fbe706f872cb32”, “name”:“Washington”, “place_type”:“city”, “url”:“http://api.x.com/1/geo/id/0172cb32.json” } |
quoted_status_id | Int64 | Este campo aparece apenas quando o Post é um Tweet citado. Este campo contém o valor inteiro do ID do Post do Tweet citado. Exemplo: “quoted_status_id”:1050119905717055488 |
quoted_status_id_str | String | Este campo aparece apenas quando o Post é um Tweet citado. Esta é a representação em string do ID do Post do Tweet citado. Exemplo: “quoted_status_id_str”:“1050119905717055488” |
is_quote_status | Boolean | Indica se este é um Tweet Citado. Exemplo: “is_quote_status”:false |
quoted_status | Post | Este campo aparece apenas quando o Post é um Tweet citado. Este atributo contém o Objeto Post do Post original que foi citado. |
retweeted_status | Post | Os usuários podem amplificar a divulgação de Posts criados por outros usuários fazendo Retweet. Retweets podem ser distinguidos de Posts típicos pela existência de um atributo retweeted_status . Este atributo contém uma representação do Post original que foi retweetado. Note que retweets de retweets não mostram representações do retweet intermediário, mas apenas o Post original. (Os usuários também podem desfazer um retweet que criaram excluindo seu retweet.) |
quote_count | Integer | Anulável. Indica aproximadamente quantas vezes este Post foi citado por usuários do X. Exemplo: “quote_count”:33 Observação: Este objeto está disponível apenas com os produtos dos níveis Premium e Enterprise. |
reply_count | Int | Número de vezes que este Post foi respondido. Exemplo: “reply_count”:30 Observação: Este objeto está disponível apenas com os produtos dos níveis Premium e Enterprise. |
retweet_count | Int | Número de vezes que este Post foi retweetado. Exemplo: “retweet_count”:160 |
favorite_count | Integer | Anulável. Indica aproximadamente quantas vezes este Post foi curtido por usuários do X. Exemplo: “favorite_count”:295 |
entities | Entities | Entidades que foram extraídas do texto do Post. Veja também Entities in X Objects. Exemplo: “entities”: <br/> “hashtags”:[], “urls”:[], “user_mentions”:[], “media”:[], “symbols”:[] “polls”:[] } |
extended_entities | Extended Entities | Quando entre uma e quatro fotos nativas ou um vídeo ou um GIF animado estão no Post, contém um array ‘media’ de metadados. Isso também está disponível em Tweets Citados. Veja também Entities in X Objects. Exemplo: “entities”: <br/> “media”:[] } |
favorited | Boolean | Anulável. Indica se este Post foi curtido pelo usuário autenticado. Exemplo: “favorited”:true |
retweeted | Boolean | Indica se este Post foi retweetado pelo usuário autenticado. Exemplo: “retweeted”:false |
possibly_sensitive | Boolean | Anulável. Este campo indica que o conteúdo pode ser reconhecido como sensível. O autor do Post pode selecionar dentro de suas próprias preferências de conta e escolher “Marcar mídia que você posta como tendo material que pode ser sensível” para que cada Post criado depois tenha esta flag definida. Isso também pode ser julgado e rotulado por um agente de suporte interno do X. ”possibly_sensitive”:false |
filter_level | String | Indica o valor máximo do parâmetro filter_level que pode ser usado e ainda transmitir este Post via stream. Então um valor de medium será transmitido em streams none , low e medium .Exemplo: “filter_level”: “low” |
lang | String | Anulável. Quando presente, indica um identificador de idioma BCP 47 correspondente ao idioma detectado automaticamente do texto do Post, ou und se nenhum idioma pôde ser detectado.Exemplo: “lang”: “en” |
edit_history | Object | Identificadores únicos que indicam todas as versões de um Post. Para Posts sem edições, haverá um ID. Para Posts com histórico de edições, haverá múltiplos IDs, organizados em ordem crescente refletindo a ordem das edições, com a versão mais recente na última posição do array. Os IDs do Post podem ser usados para hidratar e visualizar versões anteriores de um Post. Exemplo: edit_history”: <br/> “initial_tweet_id”: “1283764123” “edit_tweet_ids”: [“1283764123”, “1394263866”] } |
edit_controls | Object | Quando presente, indica por quanto tempo um Post ainda pode ser editado e o número de edições restantes. Posts só podem ser editados nos primeiros 30 minutos após a criação e podem ser editados até cinco vezes. Os IDs do Post podem ser usados para hidratar e visualizar versões anteriores de um Post. Exemplo: “edit_controls”: <br/> “editable_until_ms”: 123 “edits_remaining”: 3 } |
editable | Boolean | Quando presente, indica se um Post era elegível para edição quando foi publicado. Este campo não é dinâmico e não mudará de True para False quando um Post atingir seu limite de tempo editável ou número máximo de edições. As seguintes características do Post farão com que este campo seja false: _ Post é promovido _ Post tem uma enquete _ Post é uma resposta de thread não própria _ Post é um Retweet (note que Quote Tweets são elegíveis para edição) _ Post é nullcast _ Post da Comunidade _ Post Superfollow _ Post Colaborativo |
matching_rules | Array of Rule Objects | Presente em produtos filtrados como X Search e PowerTrack. Fornece o id e tag associados à regra que correspondeu ao Post. Mais sobre regras de correspondência aqui. Com PowerTrack, mais de uma regra pode corresponder a um Post. Exemplo: “matching_rules”: ” [<br/> “tag”: “xapi emojis”, “id”: 1050118621198921728, “id_str”: “1050118621198921728” }]“ |
Atributos adicionais de Post
Atributo | Tipo | Descrição |
---|---|---|
current_user_retweet | Objeto | Perspectival Aparece apenas em métodos que oferecem suporte ao parâmetro include_my_retweet, quando definido como true. Informa o ID do Post do próprio Retweet do usuário (se existir) deste Post. Exemplo: “current_user_retweet”: <br/> “id”: 6253282, “id_str”: “6253282” } |
scopes | Objeto | Um conjunto de pares chave-valor que indicam a entrega contextual pretendida do Post que o contém. Atualmente usado pelos Promoted Products do X. Exemplo: “scopes”:{“followers”:false} |
withheld_copyright | Booleano | Quando presente e definido como “true”, indica que este conteúdo foi retido devido a uma queixa DMCA. Exemplo: “withheld_copyright”: true |
withheld_in_countries | Array de String | Quando presente, indica uma lista de códigos de país de duas letras em maiúsculas dos quais este conteúdo está retido. O X oferece suporte aos seguintes valores que não representam países para este campo: “XX” - Conteúdo retido em todos os países “XY” - Conteúdo retido devido a uma solicitação de DMCA. Exemplo: “withheld_in_countries”: [“GR”, “HK”, “MY”] |
withheld_scope | String | Quando presente, indica se o conteúdo retido é o “status” ou um “user”. Exemplo: “withheld_scope”: “status” |
Atributos obsoletos
Campo | Type | Descrição |
geo | Objeto | Obsoleto. Pode ser nulo. Use o campo coordinates . Este atributo obsoleto tem suas coordenadas no formato [lat, long], enquanto todo o restante da geolocalização de Post usa o formato [long, lat]. |
Objetos Post aninhados
Quote Tweets
Posts estendidos
Objeto de usuário nativo enriquecido
Dicionário de dados de usuário
Atributo | Tipo | Descrição |
---|---|---|
id | Int64 | A representação inteira do identificador único para este usuário. Este número é maior que 53 bits e algumas linguagens de programação podem ter dificuldades/defeitos silenciosos ao interpretá-lo. É seguro usar um inteiro de 64 bits com sinal para armazenar este identificador. Use id_str para obter o identificador com segurança. Consulte X IDs para mais informações. Exemplo:“id”: 6253282 |
id_str | String | A representação em string do identificador único para este usuário. As implementações devem usar isso em vez do inteiro grande e possivelmente não consumível em id . Exemplo:“id_str”: “6253282” |
name | String | O nome do usuário, conforme definido por ele. Não necessariamente o nome de uma pessoa. Normalmente limitado a 50 caracteres, mas sujeito a alterações. Exemplo: “name”: “API” |
screen_name | String | O nome de usuário, identificador ou alias com o qual este usuário se identifica. Os screen_names são únicos, mas sujeitos a alterações. Use id_str como identificador de usuário sempre que possível. Normalmente tem no máximo 15 caracteres, mas algumas contas históricas podem ter nomes mais longos. Exemplo:“screen_name”: “api” |
location | String | Anulável. A localização definida pelo usuário para o perfil desta conta. Não necessariamente uma localização, nem interpretável por máquina. Este campo será ocasionalmente interpretado de forma aproximada pelo serviço de Busca. Exemplo: “location”: “San Francisco, CA” |
derived | Arrays of Enrichment Objects | Apenas APIs Enterprise. Coleção de metadados de Enriquecimento derivados para o usuário. Fornece os metadados de Enriquecimento Profile Geo. Consulte a documentação referenciada para mais informações, incluindo dicionários de dados JSON. Exemplo: “derived”:“locations”: [“country”:“United States”,“country_code”:“US”,“locality”:“Denver”] |
url | String | Anulável. Uma URL fornecida pelo usuário em associação com seu perfil. Exemplo: “url”: “https://developer.x.com” |
description | String | Anulável. A string UTF-8 definida pelo usuário descrevendo sua conta. Exemplo: “description”: “The Real X API.” |
protected | Boolean | Quando verdadeiro, indica que este usuário escolheu proteger seus Posts. Consulte Sobre Posts Públicos e Protegidos. Exemplo: “protected”: true |
verified | Boolean | Quando verdadeiro, indica que o usuário tem uma conta verificada. Consulte Contas Verificadas. Exemplo: “verified”: false |
followers_count | Int | O número de seguidores que esta conta possui atualmente. Sob certas condições de sobrecarga, este campo indicará temporariamente “0”. Exemplo: “followers_count”: 21 |
friends_count | Int | O número de usuários que esta conta está seguindo (também conhecidos como “seguindo”). Sob certas condições de sobrecarga, este campo indicará temporariamente “0”. Exemplo: “friends_count”: 32 |
listed_count | Int | O número de listas públicas das quais este usuário é membro. Exemplo: “listed_count”: 9274 |
favourites_count | Int | O número de Posts que este usuário curtiu durante o tempo de vida da conta. Grafia britânica usada no nome do campo por razões históricas. Exemplo: “favourites_count”: 13 |
statuses_count | Int | O número de Posts (incluindo retweets) publicados pelo usuário. Exemplo: “statuses_count”: 42 |
created_at | String | A data e hora UTC em que a conta do usuário foi criada no X. Exemplo: “created_at”: “Mon Nov 29 21:18:15 +0000 2010” |
profile_banner_url | String | A URL baseada em HTTPS que aponta para a representação web padrão do banner de perfil enviado pelo usuário. Ao adicionar um elemento de caminho final à URL, é possível obter diferentes tamanhos de imagem otimizados para telas específicas. Para variantes de tamanho, consulte Imagens e Banners de Perfil do Usuário. Exemplo: “profile_banner_url”: “https://si0.twimg.com/profile_banners/819797/1348102824” |
profile_image_url_https | String | Uma URL baseada em HTTPS que aponta para a imagem de perfil do usuário. Exemplo: “profile_image_url_https”: “https://abs.twimg.com/sticky/default_profile_images/default_profile_normal.png” |
default_profile | Boolean | Quando verdadeiro, indica que o usuário não alterou o tema ou plano de fundo de seu perfil de usuário. Exemplo: “default_profile”: false |
default_profile_image | Boolean | Quando verdadeiro, indica que o usuário não enviou sua própria imagem de perfil e uma imagem padrão é usada em seu lugar. Exemplo: “default_profile_image”: false |
Atributos obsoletos (sem suporte)
Campo | Tipo | Descrição |
---|---|---|
utc_offset | null | O valor será definido como null. Ainda disponível via GET account/settings |
time_zone | null | O valor será definido como null. Ainda disponível via GET account/settings como tzinfo_name |
lang | null | O valor será definido como null. Ainda disponível via GET account/settings como language |
geo_enabled | null | O valor será definido como null. Ainda disponível via GET account/settings. Este campo deve ser true para que o usuário atual anexe dados geográficos ao usar POST statuses/update |
following | null | O valor será definido como null. Ainda disponível via GET friendships/lookup |
follow_request_sent | null | O valor será definido como null. Ainda disponível via GET friendships/lookup |
has_extended_profile | null | Deprecated. O valor será definido como null. |
notifications | null | Deprecated. O valor será definido como null. |
profile_location | null | Deprecated. O valor será definido como null. |
contributors_enabled | null | Deprecated. O valor será definido como null. |
profile_image_url | null | Deprecated. O valor será definido como null. OBSERVAÇÃO: As imagens de perfil estão disponíveis apenas por meio do campo profile_image_url_https. |
profile_background_color | null | Deprecated. O valor será definido como null. |
profile_background_image_url | null | Deprecated. O valor será definido como null. |
profile_background_image_url_https | null | Deprecated. O valor será definido como null. |
profile_background_tile | null | Deprecated. O valor será definido como null. |
profile_link_color | null | Deprecated. O valor será definido como null. |
profile_sidebar_border_color | null | Deprecated. O valor será definido como null. |
profile_sidebar_fill_color | null | Deprecated. O valor será definido como null. |
profile_text_color | null | Deprecated. O valor será definido como null. |
profile_use_background_image | null | Deprecated. O valor será definido como null. |
is_translator | null | Deprecated. O valor será definido como null. |
is_translation_enabled | null | Deprecated. O valor será definido como null. |
translator_type | null | Deprecated. O valor será definido como null. |
Exemplo de objeto de usuário:
Objetos de Geo Enriquecidos Nativos
place
está sempre presente quando um Post é marcado com um place. Places são locais específicos, nomeados, com coordenadas geográficas correspondentes. Quando os usuários decidem atribuir uma localização ao seu Post, é apresentada a eles uma lista de X Places candidatos. Ao usar a API para publicar, um X Place pode ser anexado especificando um place_id no momento da postagem. Posts associados a Places não são necessariamente emitidos a partir daquele local, podendo também ser sobre aquele local.
Os objetos geo e coordinates
só estão presentes (não nulos) quando o Post é associado a um local exato. Se um local exato for fornecido, o objeto coordinates
fornecerá um array [long, lat] com as coordenadas geográficas, e um X Place correspondente a esse local será atribuído.
Dicionário de dados de Place
Field | Type | Description |
---|---|---|
id | String | ID que representa este place. Observação: é representado como uma string, não um inteiro. Exemplo: “id”:“01a9a39529b27f36” |
url | String | URL que representa a localização dos metadados adicionais de place para este place. Exemplo: “url”:“https://api.x.com/1.1/geo/id/01a9a39529b27f36.json” |
place_type | String | O tipo de local representado por este place. Exemplo: “place_type”:“city” |
name | String | Representação curta e legível por humanos do nome do place. Exemplo: “name”:“Manhattan” |
full_name | String | Representação completa e legível por humanos do nome do place. Exemplo: “full_name”:“Manhattan, NY” |
country_code | String | Código de país abreviado que representa o país que contém este place. Exemplo: “country_code”:“US” |
country | String | Nome do país que contém este place. Exemplo: “country”:“United States” |
bounding_box | Object | Uma caixa delimitadora de coordenadas que envolve este place. Exemplo: “bounding_box”: “coordinates”: [ [ [ -74.026675, 40.683935 ], [ -74.026675, 40.877483 ], [ -73.910408, 40.877483 ], [ -73.910408, 40.3935 ] ] ], “type”: “Polygon” |
attributes | Object | Ao usar as APIs PowerTrack, 30-Day e Full-Archive Search e os Volume Streams, este hash é null. Exemplo: “attributes”: |
Campo | Tipo | Descrição |
coordinates | Array of Array of Array of Float | Uma série de pontos de longitude e latitude que definem uma caixa que conterá a entidade Place à qual esta caixa delimitadora se relaciona. Cada ponto é um array no formato [longitude, latitude]. Os pontos são agrupados em um array por caixa delimitadora. Arrays de caixas delimitadoras são envolvidos por um array adicional para serem compatíveis com a notação de polígono. Exemplo: “coordinates”: [ [ [ -74.026675, 40.683935 ], [ -74.026675, 40.877483 ], [ -73.910408, 40.877483 ], [ -73.910408, 40.3935 ] ] ] |
type | String | O tipo de dados codificado na propriedade coordinates. Será “Polygon” para caixas delimitadoras e “Point” para Posts com coordenadas exatas. Exemplo: “type”:“Polygon” |
Dicionário de dados do objeto Geo
Field | Type | Description |
coordinates | Collection of Float | A longitude e a latitude da localização do Post, como uma coleção no formato [latitude, longitude]. Exemplo: ** “geo”: “type”:** “Point”, ** “coordinates”: [ 54.27784, -0.41068 ] ** |
type | String | O tipo de dado codificado na propriedade coordinates. Será “Point” para os fields de coordinates de Post. Exemplo: “type”: “Point” |
Field | Type | Description |
coordinates | Collection of Float | A longitude e a latitude da localização do Post, como uma coleção no formato [longitude, latitude]. Exemplo: ** “coordinates”: “type”:** “Point”, ** “coordinates”: [ -0.41068, 54.27784 ] ** |
type | String | O tipo de dado codificado na propriedade coordinates. Será “Point” para os fields de coordinates de Post. Exemplo: “type”: “Point” |
Localizações derivadas
Campo | Tipo | Descrição |
derived | objeto locations | Localização derivada do enriquecimento geográfico do perfil “derived”: “locations”: [ ** “country”:** “United Kingdom”, “country_code”: “GB”, “locality”: “Yorkshire”, “region”: “England”, “full_name”: “Yorkshire, England, United Kingdom”, ** “geo”: “coordinates”: [ -1.5, 54 ], “type”:** “point” ** ] ** |
Exemplos:
Entidades do X
Ir para nesta página Introdução Objeto entities - Objeto hashtag - Objeto mídia - Objeto tamanho de mídia - Objeto URL - Objeto menção de usuário - Objeto símbolo - Objeto enquete Detalhes de Retweet e Quote Tweet Entidades em objetos de usuário Entidades em Mensagens diretas Próximas etapasIntrodução
entities
fornece arrays de itens comuns incluídos em Posts: hashtags, menções a usuários, links, tickers de ações (símbolos), enquetes do X e mídia anexada. Esses arrays são convenientes para desenvolvedores ao ingerirem Posts, já que o X essencialmente pré-processou, ou pré-parseou, o corpo do texto. Em vez de precisar procurar e localizar explicitamente essas entidades no corpo do Post, seu parser pode ir direto para esta seção JSON e encontrá-las lá.
Além de oferecer conveniências de parsing, a seção entities
também fornece metadados úteis como “valor agregado”. Por exemplo, se você estiver usando o Enhanced URLs enrichment, os metadados de URL incluem URLs totalmente expandidas, bem como títulos e descrições do site associado. Outro exemplo é quando há menções a usuários: os metadados de entities incluem o id numérico do usuário, o que é útil ao fazer solicitações para muitas X APIs.
Todo payload JSON de Post inclui uma seção entities
, com o conjunto mínimo de atributos hashtags
, urls
, user_mentions
e symbols
, mesmo que nenhuma dessas entidades faça parte da mensagem do Post. Por exemplo, se você examinar o JSON de um Post com o corpo “Hello World!” e sem mídia anexada, o JSON do Post incluirá o seguinte conteúdo, com arrays de entidades contendo zero itens:
- as entidades media e polls só aparecerão quando esse tipo de conteúdo fizer parte do Post.
- se você estiver trabalhando com mídia nativa (fotos, vídeos ou GIFs), o objeto Extended Entities é a melhor opção.
Objeto Entities
entities
e extended_entities
são compostas por arrays de objetos de entidade. A seguir, você encontrará descrições de cada um desses objetos, incluindo dicionários de dados que detalham os nomes dos atributos, seus tipos e uma breve descrição. Também indicaremos quais PowerTrack Operators correspondem a esses atributos e incluiremos alguns exemplos de payloads JSON.
Uma coleção de entidades comuns encontradas em Posts, incluindo hashtags, links e menções a usuários. O objeto entities
inclui um atributo media
, mas sua implementação na seção entities
é totalmente precisa apenas para Posts com uma única foto. Para Posts com mais de uma foto, com vídeo ou com GIF animado, consulte a seção extended_entities
.
Dicionário de dados de Entities
entities
, serão fornecidos dicionários de dados para esses subobjetos e os operadores que fazem correspondência com eles.
Campo | Tipo | Descrição |
---|---|---|
hashtags | Array de Objetos Hashtag | Representa hashtags que foram analisadas e extraídas do texto do Post. Exemplo: “hashtags”: [ “indices”: [ 32, 38 ], “text”: “nodejs” ] |
media | Array de Objetos Media | Representa elementos de mídia carregados com o Post. Exemplo: “media”: [ “display_url”: “pic.x.com/5J1WJSRCy9”, “expanded_url”: “https://x.com/nolan_test/status/930077847535812610/photo/1”, “id”: 9.300778475358126e17, “id_str”: “930077847535812610”, “indices”: [ 13, 36 ], “media_url”: “http://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg”, “media_url_https”: “https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg” “sizes”: “thumb”: “h”: 150, “resize”: “crop”, “w”: 150 , “large”: “h”: 1366, “resize”: “fit”, “w”: 2048 , “medium”: “h”: 800, “resize”: “fit”, “w”: 1200 , “small”: “h”: 454, “resize”: “fit”, “w”: 680 , “type”: “photo”, “url”: “https://t.co/5J1WJSRCy9”, ] |
urls | Array de Objetos URL | Representa URLs incluídas no texto de um Post. Exemplo (sem o enriquecimento Enhanced URLs ativado): “urls”: [ “indices”: [ 32, 52 ], “url”: “http://t.co/IOwBrTZR”, “display_url”: “youtube.com/watch?v=oHg5SJ…”, “expanded_url”: “http://www.youtube.com/watch?v=oHg5SJYRHA0” ] Exemplo (com o enriquecimento Enhanced URLs ativado): “urls”: [ “url”: “https://t.co/D0n7a53c2l”, “expanded_url”: “http://bit.ly/18gECvy”, “display_url”: “bit.ly/18gECvy”, “unwound”: “url”: “https://www.youtube.com/watch?v=oHg5SJYRHA0”, “status”: 200, “title”: “RickRoll’D”, “description”: “http://www.facebook.com/rickroll548 As long as trolls are still trolling, the Rick will never stop rolling.” , “indices”: [ 62, 85 ] ] |
user_mentions | Array de Objetos User Mention | Representa outros usuários do X mencionados no texto do Post. Exemplo: “user_mentions”: [ “name”: “X API”, “indices”: [ 4, 15 ], “screen_name”: “xapi”, “id”: 6253282, “id_str”: “6253282” ] |
symbols | Array de Objetos Symbol | Representa símbolos, isto é, $cashtags, incluídos no texto do Post. Exemplo: “symbols”: [ “indices”: [ 12, 17 ], “text”: “twtr” ] |
polls | Array de Objetos Poll | Representa enquetes do X incluídas no Post. Exemplo: “polls”: [ “options”: [ “position”: 1, “text”: “I read documentation once.” , “position”: 2, “text”: “I read documentation twice.” }, “position”: 3, “text”: “I read documentation over and over again.” } ], “end_datetime”: “Thu May 25 22:20:27 +0000 2017”, “duration_minutes”: 60 ] |
Objeto de hashtag
A seçãoentities
conterá um array hashtags
com um objeto para cada hashtag incluída no corpo do Post e incluirá um array vazio se nenhuma hashtag estiver presente.
O operador #
do PowerTrack é usado para fazer correspondência com o atributo text
. O operador has:hashtags
corresponderá se houver pelo menos um item no array.
Campo | type | Descrição |
indices | Array of Int | Um array de inteiros indicando os deslocamentos dentro do texto do Post onde a hashtag começa e termina. O primeiro inteiro representa a posição do caractere # na string de texto do Post. O segundo inteiro representa a posição do primeiro caractere após a hashtag. Portanto, a diferença entre os dois números será o comprimento do nome da hashtag mais um (pelo caractere ‘#’). Exemplo: “indices”:[32,38] |
text | String | Nome da hashtag, sem o caractere inicial ‘#’. Exemplo: “text”:“nodejs” |
Objeto de mídia
A seçãoentities
conterá um array media
com um único objeto de mídia se algum objeto de mídia tiver sido “anexado” ao Post. Se nenhuma mídia nativa tiver sido anexada, não haverá um array media
em entities
. Pelos seguintes motivos, a seção extended_entities
deve ser usada para processar a mídia nativa do Post:
- O
type
da mídia sempre indicará “photo”, mesmo nos casos de um vídeo ou um GIF anexados ao Post. - Embora até quatro fotos possam ser anexadas, apenas a primeira será listada na seção
entities
.
has:media
fará correspondência se esse array estiver populado.
Campo | Tipo | Descrição |
display_url | String | URL da mídia para exibição aos clientes. Exemplo: “display_url”:“pic.x.com/rJC5Pxsu” |
expanded_url | String | Uma versão expandida de display_url. Direciona para a página de exibição da mídia. Exemplo: “expanded_url”: “http://x.com/yunorno/status/114080493036773378/photo/1” |
id | Int64 | ID da mídia expresso como um inteiro de 64 bits. Exemplo: “id”:114080493040967680 |
id_str | String | ID da mídia expresso como uma string. Exemplo: “id_str”:“114080493040967680” |
indices | Array of Int | Um array de inteiros indicando os deslocamentos dentro do texto do Post onde a URL começa e termina. O primeiro inteiro representa a localização do primeiro caractere da URL no texto do Post. O segundo inteiro representa a localização do primeiro caractere não-URL que ocorre após a URL (ou o final da string se a URL for a última parte do texto do Post). Exemplo: “indices”:[15,35] |
media_url | String | Uma URL http:// que aponta diretamente para o arquivo de mídia enviado. Exemplo: “media_url”:“http://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg” Para mídia em Mensagens diretas, media_url é a mesma URL https que media_url_https e deve ser acessada assinando uma solicitação com o access token do usuário usando OAuth 1.0a.Não é possível acessar imagens através de uma sessão autenticada do x.com. Visite esta página para aprender como lidar com essa mudança recente. Você não pode incorporar essas imagens diretamente em uma página web. Consulte Formatação de URL de mídia de foto para saber como formatar a URL de uma foto, como media_url_https , com base nos sizes disponíveis. |
media_url_https | String | Uma URL https:// que aponta diretamente para o arquivo de mídia enviado, para incorporação em páginas https. Exemplo: “media_url_https”:“https://p.twimg.com/AZVLmp-CIAAbkyy.jpg” Para mídia em Mensagens diretas, media_url_https deve ser acessada assinando uma solicitação com o access token do usuário usando OAuth 1.0a.Não é possível acessar imagens através de uma sessão autenticada do x.com. Visite esta página para aprender como lidar com essa mudança recente. Você não pode incorporar essas imagens diretamente em uma página web. Consulte Formatação de URL de mídia de foto para saber como formatar a URL de uma foto, como media_url_https , com base nos sizes disponíveis. |
sizes | Size Object | Um objeto mostrando tamanhos disponíveis para o arquivo de mídia. Exemplo: “sizes”: “thumb”: “h”: 150, “resize”: “crop”, “w”: 150 }, “large”: “h”: 1366, “resize”: “fit”, “w”: 2048 }, “medium”: “h”: 800, “resize”: “fit”, “w”: 1200 }, “small”: “h”: 454, “resize”: “fit”, “w”: 680 } } } Consulte Formatação de URL de mídia de foto para saber como formatar a URL de uma foto, como media_url_https , com base nos sizes disponíveis. |
source_status_id | Int64 | Anulável. Para Posts contendo mídia que foi originalmente associada a um Post diferente, este ID aponta para o Post original. Exemplo: “source_status_id”: 205282515685081088 |
source_status_id_str | Int64 | Anulável. Para Posts contendo mídia que foi originalmente associada a um Post diferente, este ID baseado em string aponta para o Post original. Exemplo: “source_status_id_str”: “205282515685081088” |
type | String | Tipo de mídia enviada. Tipos possíveis incluem photo, video e animated_gif. Exemplo: “type”:“photo” |
url | String | URL encapsulada para o link da mídia. Isso corresponde à URL incorporada diretamente no texto bruto do Post e aos valores para o parâmetro indices . Exemplo:“url”:“http://t.co/rJC5Pxsu” |
Objetos de tamanho de mídia
Objeto de tamanhos
Field | Type | Description |
thumb | Size Object | Informações para uma versão em tamanho de miniatura da mídia. Exemplo: “thumb”:“h”:150, “resize”:“crop”, “w”:150} Fotos em tamanho de miniatura serão limitadas a preencher um limite de 150x150 e serão recortadas. |
large | Size Object | Informações para uma versão em tamanho grande da mídia. Exemplo: “large”:“h”:454, “resize”:“fit”, “w”:680} Fotos em tamanho pequeno serão limitadas a se ajustar dentro de um limite de 680x680. |
medium | Size Object | Informações para uma versão em tamanho médio da mídia. Exemplo: “medium”:“h”:800, “resize”:“fit”, “w”:1200} Fotos em tamanho médio serão limitadas a se ajustar dentro de um limite de 1200x1200. |
small | Size Object | Informações para uma versão em tamanho pequeno da mídia. Exemplo: “small”:“h”:1366, “resize”:“fit”, “w”:2048} Fotos em tamanho grande serão limitadas a se ajustar dentro de um limite de 2048x2048. |
Objeto de tamanho
Campo | Tipo | Descrição |
w | Int | Largura em pixels deste tamanho. Exemplo: “w”:150 |
h | Int | Altura em pixels deste tamanho. Exemplo: “h”:150 |
resize | String | Método de redimensionamento usado para obter este tamanho. Um valor de fit indica que a mídia foi redimensionada para se ajustar a uma dimensão, mantendo sua proporção original. Um valor de crop indica que a mídia foi recortada para se ajustar a uma resolução específica. Exemplo: “resize”:“crop” |
Formatação de URL de mídia de foto
media_url
ou media_url_https
, por si só, podem ser carregadas, o que fará com que a variante média seja carregada por padrão. No entanto, é preferível fornecer uma URL de mídia de foto totalmente formatada quando possível.
Há três partes de uma URL de mídia de foto:
Base URL | A Base URL é a URL da mídia sem a extensão do arquivo. Por exemplo: “media_url_https”: “https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg”, A Base URL é então: https://pbs.twimg.com/media/DOhM30VVwAEpIHq |
Format | O formato é o tipo de arquivo em que a imagem está. Os formatos possíveis são jpg ou png, fornecidos como a extensão da URL da mídia. Por exemplo: “media_url_https”: “https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg”, O formato é então: jpg |
Name | O name é o nome do campo do tamanho a ser carregado. Por exemplo: “sizes”: “thumb”: “h”: 150, “resize”: “crop”, “w”: 150 , “large”: “h”: 1366, “resize”: “fit”, “w”: 2048 }, “medium”: “h”: 800, “resize”: “fit”, “w”: 1200 }, “small”: “h”: 454, “resize”: “fit”, “w”: 680 } } } O name ao carregar a foto no tamanho grande seria: large |
Formato legado | O formato legado foi descontinuado. Todos os carregamentos de mídia de foto devem migrar para o formato moderno. <base_url>.<format>:<name> Por exemplo: https://pbs.twimg.com/media/DOhM30VVwAEpIHq.jpg:large |
Formato moderno | O formato moderno para carregamento de fotos foi estabelecido na X em 2015 e é o padrão de fato desde 2017. Todos os carregamentos de mídia de foto devem migrar para esse formato. <base_url>?format=<format>&name=<name> Por exemplo: https://pbs.twimg.com/media/DOhM30VVwAEpIHq?format=jpg&name=large Observação: os itens na query string da URL de mídia de foto estão em ordem alfabética. Se o carregamento de mídia vier a adicionar quaisquer itens adicionais de query, a ordenação alfabética continuará sendo necessária. Por exemplo, se houvesse o item de query hipotético chamado preferred_format, ele viria depois de format e name na query string. |
Objeto de URL
A seçãoentities
conterá um array urls
com um objeto para cada link incluído no corpo do Post e incluirá um array vazio se não houver links.
O operador has:links
faz correspondência se houver pelo menos um item no array. O operador url:
é usado para corresponder ao atributo expanded_url
. Se você estiver usando o Expanded URL enrichment, o operador url:
é usado para corresponder ao atributo unwound.url
(URL totalmente descompactada). Se você estiver usando o Enhanced URL enrichment, os operadores url_title:
e url_description:
são usados para corresponder aos atributos unwound.title
e unwound.description
.
Field | Type | Description |
display_url | String | URL colada/digitada no Post. Exemplo: “display_url”:“bit.ly/2so49n2” |
expanded_url | String | Versão expandida de display_url . Exemplo:“expanded_url”:“http://bit.ly/2so49n2” |
indices | Array of Int | Um array de inteiros que representam deslocamentos no texto do Post indicando onde a URL começa e termina. O primeiro inteiro representa a posição do primeiro caractere da URL no texto do Post. O segundo inteiro representa a posição do primeiro caractere não pertencente à URL após o fim da URL. Exemplo: “indices”:[30,53] |
url | String | URL encapsulada, correspondente ao valor incorporado diretamente no texto bruto do Post e aos valores do parâmetro indices. Exemplo: “url”:“https://t.co/yzocNFvJuL” |
unwound
:
Field | Type | Description |
url | String | A versão totalmente descompactada do link incluído no Post. Exemplo: “url”:“https://blog.x.com/en_us/topics/insights/2016/using-twitter-as-a-go-to-communication-channel-during-severe-weather-events.html” |
status | Int | Status HTTP final do processo de descompactação, sendo ‘200’ indicativo de sucesso. Exemplo: 200 |
title | String | Título HTML do link. Exemplo: “title”:“Using X as a ‘go-to’ communication channel during severe weather” |
description | String | Descrição HTML do link. Exemplo: “description”:“Using X as a ‘go-to’ communication channel during severe weather” |
Objeto de menção de usuário
A seçãoentities
conterá um array user_mentions
com um objeto para cada menção de usuário incluída no corpo do Post e incluirá um array vazio se nenhuma menção de usuário estiver presente.
O operador @
do PowerTrack é usado para corresponder ao atributo screen_name
. O operador has:mentions
corresponderá se houver pelo menos um item no array.
Campo | Tipo | Descrição |
id | Int64 | ID do usuário mencionado, como um inteiro. Exemplo: “id”:6253282 |
id_str | String | ID do usuário mencionado, como uma string. Exemplo: “id_str”:“6253282” |
indices | Array of Int | Um array de inteiros que representa os deslocamentos no texto do Post onde a referência ao usuário começa e termina. O primeiro inteiro representa a posição do caractere “@” da menção ao usuário. O segundo inteiro representa a posição do primeiro caractere que não faz parte do screen name após a menção ao usuário. Exemplo: “indices”:[4,15] |
name | String | Nome de exibição do usuário referenciado. Exemplo: “name”:“API” |
screen_name | String | Screen name do usuário referenciado. Exemplo: “screen_name”:“api” |
Objeto de símbolo
A seçãoentities
conterá um array symbols
com um objeto para cada $cashtag incluído no corpo do Post e incluirá um array vazio se nenhum símbolo estiver presente.
O operador $
do PowerTrack é usado para fazer a correspondência no atributo text
. O operador has:symbols
fará a correspondência se houver pelo menos um item no array.
Field | Type | Description |
indices | Array of Int | Um array de números inteiros que indica os deslocamentos dentro do texto do Post onde o símbolo/cashtag começa e termina. O primeiro número inteiro representa a posição do caractere ’). Exemplo: “indices”:[12,17] |
text | String | Nome do cashtag, sem o caractere ‘$’ inicial. Exemplo: “text”:“twtr” |
Objeto de enquete
entities
conterá um array polls
com um único objeto poll
se o Post incluir uma enquete. Se nenhuma enquete for incluída, não haverá array polls
na seção entities
.
Observe que esses metadados de enquete estão disponíveis apenas nas seguintes APIs Enterprise:
- streams de volume (Decahose)
- Real-time PowerTrack
- X Search APIs (Full-Archive Search e 30-Day Search)
Field | Type | Description |
options | Array of Option Object | Um array de opções, cada uma com uma posição da enquete e o texto para essa posição. Exemplo: “options”: [ “position”: 1, “text”: “I read documentation once.” } ] } |
end_datetime | String | Carimbo de data/hora (UTC) indicando quando a enquete termina. Exemplo: “end_datetime”: “Thu May 25 22:20:27 +0000 2017” |
duration_minutes | String | Duração da enquete em minutos. Exemplo: “duration_minutes”: 60 |
Detalhes sobre Retweet e Quote Tweet
Retweets













Quote Tweets
Entidades para objeto de usuário
Exemplo de JSON
Entidades estendidas do X
Ir para nesta página Introdução Objeto Extended Entities Exemplos de Tweets e payloads JSON - Tweet com quatro fotos nativas - Tweet com vídeo nativo - Tweet com um GIF animado Próximos passosIntrodução
extended_entities
. O objeto extended_entities
contém um único array media
de objetos media
(consulte a seção entities
para seu dicionário de data). Nenhum outro tipo de entidade, como hashtags e links, é incluído na seção extended_entities
. O objeto media
na seção extended_entities
é idêntico em estrutura ao incluído na seção entities
.
Posts só podem ter um tipo de mídia anexado. Para fotos, é possível anexar até quatro fotos. Para vídeos e GIFs, é possível anexar uma. Como a metadata type
de mídia na seção extended_entities
indica corretamente o tipo de mídia (‘photo’, ‘video’ ou ‘animated_gif’) e oferece suporte a até 4 fotos, ela é a fonte de metadata preferida para mídia nativa.
Exemplos de Posts e payloads JSON
Aqui está a seção
entities
deste Post:
extented_entities
para este Post:
Post com vídeo nativo
video_info
será substituído por um objeto additional_media_info
.
O additional_media_info
conterá informações adicionais de mídia fornecidas pelo publisher, como title
, description
e o sinalizador embeddable
. O conteúdo de vídeo fica disponível apenas para clientes oficiais da X quando embeddable=false
. Nesse caso, todas as URLs de vídeo fornecidas no payload serão baseadas na X, para que o usuário possa abrir o vídeo em uma propriedade da X ao clicar no link.
Aqui está um exemplo de como o objeto extended entities ficará nessa situação:
entities
que está incorretamente com o type
definido como ‘photo’. Novamente, a seção extended_entities
é preferida para todos os tipos de mídia nativa, incluindo ‘video’ e ‘animated_gif’.
Post com um GIF animado
A seguir estão os metadados de extended entities deste Post com um GIF animado:
Exemplos de payloads Native Enriched
Post
Responder ao Post
Post estendido
Post com extended_entities
Retweet
Tweet citado
Retweet de Tweet com Citação
Objetos de dados do Activity Streams do Enterprise
Interessado em entender melhor como o formato de dados Activity Streams se mapeia para o formato da X API v2?
Observação: é altamente recomendável usar o formato Enriched Native para as APIs de dados do Enterprise.
- O formato Enriched Native inclui todas as novas metadata desde 2017, como metadata de enquetes, e metrics adicionais como reply_count e quote_count.
- O formato Activity Streams não recebe atualizações com novas metadata ou enrichments desde a atualização de caracteres, em 2017.
Objeto Activity
Dicionário de dados
Atributo | Tipo | Descrição |
id | string | Um IRI único para o Post. Em mais detalhes, “tag” é o esquema, “search.x.com” representa o domínio para o esquema, e 2005 é quando o esquema foi derivado. Ao armazenar Posts, isso deve ser usado como o identificador único ou chave primária. “id”: “tag:search.x.com,2005:1050118621198921728” |
objectType | string | Tipo de objeto, sempre definido como “activity” “objectType”: “activity” |
object | object | Um objeto representando o Post sendo publicado ou compartilhado. Para Retweets, isso conterá uma “activity” completa, com os campos pertinentes descritos neste esquema. Para Posts originais, isso conterá um objeto “note”, com os campos descritos aqui. “object”: “object”: “objectType”: “note”, “id”: “object:search.x.com,2005:1050118621198921728”, “summary”: “To make room for more expression, we will now count all emojis as equal—including those with gender and skin t… https://t.co/MkGjXf9aXm”, “link”: “http://x.com/API/statuses/1050118621198921728”, “postedTime”: “2018-10-10T20:19:24.000Z” |
long_object | object | Um objeto representando o corpo de texto completo se o texto do Post exceder 140 caracteres. “long_object”: “body”: “To make room for more expression, we will now count all emojis as equal—including those with gender and skin tone modifiers 👍🏻👍🏽👍🏿. This is now reflected in Twitter-Text, our Open Source library. \n\nUsing Twitter-Text? See the forum post for detail: https://t.co/Nx1XZmRCXA”, “display_text_range”: [ 0, 277 ], “twitter_entities”: “hashtags”: [], “urls”: [ “url”: “https://t.co/Nx1XZmRCXA”, “expanded_url”: “https://devcommunity.x.com/t/new-update-to-the-twitter-text-library-emoji-character-count/114607”, “display_url”: “devcommunity.com/t/new-update-t…”, “indices”: [ 254, 277 ] ], “user_mentions”: [], “symbols”: [] |
display_text_range | array | se o texto do Post exceder 140 caracteres. “display_text_range”: [ 0, 142 ] |
verb | string | O tipo de ação sendo executada pelo usuário. Posts, “post” Retweets, “share” Posts Excluídos, “delete” O verb é a maneira adequada de distinguir entre um Tweet e um Retweet verdadeiro. No entanto, isso se aplica apenas a retweets verdadeiros, e não a Tweets modificados ou citados, que não usam a funcionalidade de Retweet do X. Para uma descrição dos verbos AS clique aqui. Para exclusões, observe que apenas um número limitado de campos será incluído, conforme mostrado no payload de exemplo abaixo. “verb”: “post” |
postedTime | date (ISO 8601) | O horário em que a ação ocorreu, por exemplo, o horário em que o Post foi publicado. “postedTime”: “2018-10-10T20:19:24.000Z” |
generator | object | Um objeto representando o utilitário usado para publicar o Post. Isso conterá o nome (“displayName”) e um link (“link”) para a aplicação fonte que gera o Post. “generator”: “displayName”: “X Web Client”, “link”: “http://x.com” |
provider | object | Um objeto JSON representando o provedor da atividade. Isso conterá um objectType (“service”), o nome do provedor (“displayName”), e um link para o site do provedor (“link”). “provider”: “objectType”: “service”, “displayName”: “X”, “link”: “http://www.x.com” |
link | string | Um permalink para o Post. “link”: “http://x.com/API/statuses/1050118621198921728” |
body | string | O texto do Post. Em Retweets, observe que o X modifica o valor do body no nível raiz adicionando “RT @username” no início, e truncando o texto original e adicionando reticências no final. Assim, para Retweets, sua aplicação deve consultar o object.body para garantir que está extraindo o texto não modificado do Post original (sendo retweetado). “body”: “With Cardiff, Crystal Palace, and Hull City joining the EPL from the Championship it will be a great relegation battle at the end.” |
display_text_range | array | Descreve o intervalo de caracteres dentro do texto do body que indica o Post exibido. Posts com @mentions iniciais começarão em mais de 0 e Posts com mídia anexada ou que excedem 140 caracteres indicarão o display_text_range no long_object. “display_text_range”: [ 14, 42 ] ou “long_object”: “display_text_range”: [ 0, 277 ]… |
actor | object | Um objeto representando o usuário do X que publicou. O Objeto Actor refere-se a um Usuário do X, e contém todos os metadados relevantes para esse usuário. Veja detalhes do objeto actor |
inReplyTo | object | Um objeto JSON referindo-se ao Post sendo respondido, se aplicável. Contém um link para o Post. “inReplyTo”: “link”: “http://x.com/GOP/statuses/349573991561838593” |
location | object | Um objeto JSON representando o “Place” do X onde o Post foi criado. Este é um objeto passado através da plataforma X. Veja objeto location |
twitter_entities | object | O objeto entities do formato de dados do X que contém listas de URLs, menções e hashtags. Consulte a documentação do X sobre Entities aqui. Observe que em Retweets, o X pode truncar os valores das entities que extrai no nível raiz. Portanto, para Retweets, seu app deve verificar object.twitter_entities para garantir que você está usando valores não truncados. Veja detalhes do objeto twitter_entities |
twitter_extended_entities | object | Um objeto do formato de dados nativo do X contendo “media”. Estará presente para qualquer Post onde o objeto twitter_entities tenha dados presentes no campo “media”, e incluirá múltiplas fotos quando presentes no Post. Observe que esta é a localização correta para recuperar informações de mídia para Posts com múltiplas fotos. Múltiplas fotos são representadas por objetos JSON separados por vírgula dentro do array “media”. Veja detalhes do objeto twitter_extended_entities |
gnip | object | Um objeto adicionado ao payload da atividade para indicar as regras correspondentes e dados enriquecidos adicionados com base nos enriquecimentos ativos no stream ou produto. Veja detalhes do objeto gnip |
edit_history | Object | Identificadores únicos indicando todas as versões de um Post. Para Posts sem edições, haverá um ID. Para Posts com histórico de edições, haverá múltiplos IDs, organizados em ordem crescente refletindo a ordem das edições, com a versão mais recente na última posição do array. Os IDs do Post podem ser usados para hidratar e visualizar versões anteriores de um Post. Exemplo: edit_history”: “initial_tweet_id”: “1283764123” “edit_tweet_ids”: [“1283764123”, “1394263866”] |
edit_controls | Object | Quando presente, indica por quanto tempo um Post ainda é editável e o número de edições restantes. Posts são editáveis apenas nos primeiros 30 minutos após a criação e podem ser editados até cinco vezes. Os IDs do Post podem ser usados para hidratar e visualizar versões anteriores de um Post. Exemplo: “edit_controls”: “editable_until_ms”: 123 “edits_remaining”: 3 |
editable | Boolean | Quando presente, indica se um Post era elegível para edição quando publicado. Este campo não é dinâmico e não mudará de True para False quando um Post atingir seu limite de tempo editável ou número máximo de edições. As seguintes características do Post farão com que este campo seja false: _ Post é promovido _ Post tem uma enquete _ Post é uma resposta de thread não própria _ Post é um Retweet (observe que Quote Tweets são elegíveis para edição) _ Post é nullcast _ Post da Comunidade _ Post Superfollow _ Post Colaborativo |
Atributos adicionais de Post
Atributo | Type | Descrição |
---|---|---|
twitter_lang | string | |
favoritesCount | int | Nullable. Indica aproximadamente quantas vezes este Post recebeu like de usuários do X. “favoritesCount”:298 |
retweetCount | int | Número de vezes que este Post foi retweetado. Exemplo: “retweetCount”:153 |
Atributos obsoletos
Campo | type | Descrição |
geo | object | Localização pontual onde o Post foi criado. |
twitter_filter_level | string | Campo obsoleto mantido para evitar alteração incompatível. |
Objetos de atividade de Post aninhados
{ "id": "tag:search.x.com,2005:222222222222", "objectType": "activity", "verb": "post", "body": "Citanto um Tweet: https://t.co/mxiFJ59FlB", "actor": { "displayName": "TheQuoter2" }, "object": { "objectType": "note", "id": "object:search.x.com,2005:111111111", "summary": "https://t.co/mxiFJ59FlB" }, "twitter_entities": {}, "twitter_extended_entities": {}, "gnip": {}, "twitter_quoted_status": { "id": "tag:search.x.com,2005:111111111", "objectType": "activity", "verb": "post", "body": "console.log('Happy birthday, JavaScript!');", "actor": { "displayName": "TheOriginalTweeter" }, "object": { "objectType": "note", "id": "object:search.x.com,2005:111111111" }, "twitter_entities": {} } }
Quote Tweet retuitado:
Objeto longo
Objeto Actor
Dicionário de Dados
Atributo | Tipo | Descrição |
---|---|---|
objectType | string | ”objectType”: “person” |
id | string | A representação em string do identificador exclusivo deste autor. Exemplo: “id:x.com:2244994945” |
link | ”http://www.x.com/XDevelopers” | |
displayName | String | O nome do usuário, conforme definido por ele. Não é necessariamente o nome de uma pessoa. Normalmente limitado a 50 caracteres, mas sujeito a alterações. Exemplo: “displayName”: “XDevelopers” |
preferredUsername | string | O nome de tela, handle (@) ou alias com o qual este usuário se identifica. Único, mas sujeito a alterações. Use id como identificador de usuário sempre que possível. Normalmente tem no máximo 15 caracteres, mas algumas contas históricas podem ter nomes mais longos. Exemplo:“preferredUsername”: “XDevelopers” |
location | object | ** “location”: “objectType”:** “place”, “displayName”: “127.0.0.1” ** }** |
links | array | Pode ser nulo. Uma URL fornecida pelo usuário associada ao seu perfil. Exemplo: ** “links”: [ { “href”:** “https://developer.x.com/en/community”, “rel”: “me” ** } ]** |
summary | string | Pode ser nulo. A string UTF-8 definida pelo usuário descrevendo sua conta. Exemplo: “summary”: “The voice of the #XDevelopers team…“ |
protected | Boolean | Quando verdadeiro, indica que este usuário optou por proteger seus Posts. Consulte About Public and Protected Posts. Exemplo: “protected”: true |
verified | Boolean | Quando verdadeiro, indica que o usuário possui uma conta verificada. Consulte Verified Accounts. Exemplo: “verified”: false |
followersCount | Int | O número de seguidores que esta conta possui no momento. Em determinadas condições de instabilidade, este campo indicará temporariamente “0”. Exemplo: “followers_count”: 21 |
friendsCount | Int | O número de usuários que esta conta está seguindo (também chamados de “followings”). Em determinadas condições de instabilidade, este campo indicará temporariamente “0”. Exemplo: “friends_count”: 32 |
listedCount | Int | O número de listas públicas das quais este usuário é membro. Exemplo: “listed_count”: 9274 |
favoritesCount | Int | O número de Posts que este usuário marcou com like durante a existência da conta. Ortografia britânica usada no nome do campo por razões históricas. Exemplo: “favourites_count”: 13 |
statusesCount | Int | O número de Posts (incluindo Retweets) publicados pelo usuário. Exemplo: “statuses_count”: 42 |
postedTime | date | A data e hora em UTC em que a conta de usuário foi criada no X. Exemplo: “postedTime”: “2013-12-14T04:35:55.036Z” |
image | string | Uma URL baseada em HTTPS apontando para a imagem de perfil do usuário. Exemplo: “image”: “https://pbs.twimg.com/profile_images/1283786620521652229/lEODkLTh_normal.jpg” |
Atributos descontinuados (obsoletos)
Campo | Type | Descrição |
---|---|---|
utcOffset | null | O valor será definido como null. Ainda disponível via GET account/settings |
twitterTimeZone | null | O valor será definido como null. Ainda disponível via GET account/settings como tzinfo_name |
languages | null | O valor será definido como null. Ainda disponível via GET account/settings como language |
Exemplos:
Objeto de localização
Dicionário de dados de localização
Campo | Tipo | Descrição |
---|---|---|
objectType | string | Consulte aqui para mais informações detalhadas. Exemplo: “objectType”: “place” |
displayName | string | Nome completo da localização. “displayName”: “United States” |
name | string | Nome da localização conforme o formato JSON de place do X. |
link | string | Link para a representação JSON completa do place no X. “link”: “https://api.x.com/1.1/geo/id/27c45d804c777999.json” |
geo | object | Objeto de coordenadas geográficas do X. Pode ser um polígono ou um ponto. Consulte geo |
countryCode | String | Código de país abreviado que representa o país que contém este lugar. Exemplo: “countryCode”: “US” |
country | String | Nome do país que contém este lugar. Exemplo: “country”: “United States” |
objetos derivados de profileLocations
Field | Type | Description |
address | object | Dentro do objeto de localização profileLocation no objeto gnip. Endereço da localização derivado pelo enriquecimento geográfico de perfil. O nível de granularidade pode variar. “address”: { ** “country”: “United States”, “countryCode”: “US”, “locality”: “Providence”, “region”: “Rhode Island”, “subRegion”: “Providence County” }** |
geo | object | Dentro do objeto de localização profileLocation no objeto gnip. Coordenadas do centróide da localização derivadas pelo enriquecimento geográfico de perfil. ”geo”: { ** “coordinates”: [ -98.5, 39.76 ], “type”: “point” }** |
Objeto de entidades do X
Exemplo:
Objeto X extended entities
Exemplo:
Objeto Gnip
Dicionário de dados
Campo | Tipo | Descrição |
matching_rules | array | Contém um array de objetos de regras de correspondência que indicam a regra com a qual a atividade corresponde. “matching_rules”: [ ** { “tag”: null, “id”:** 1026514022567358500**, “id_str”:** “1026514022567358464” ** } ]** |
urls | array | Contém um array de links presentes na atividade e os metadados da URL expandida para o enriquecimento de desenrolamento de URL. ** “urls”: [ { “url”:** “https://t.co/tGQqNxxyhU”, “expanded_url”: “https://www.youtube.com/channel/UCwUxW2CV2p5mzjMBqvqLzJA”, “expanded_status”: 200**, “expanded_url_title”:** “Birdys Daughter”, “expanded_url_description”: “Premium, single-origin, handpicked Jamaica Blue Mountain Coffee” ** } ]** |
profileLocations | array de objetos de localização | Contém o objeto de localização derivado do enriquecimento Profile Geo. ** “profileLocations”: [ { “address”: { “country”:** “Canada”, “countryCode”: “CA”, “locality”: “Toronto”, “region”: “Ontario” ** }, “displayName”:** “Toronto, Ontario, Canada”, ** “geo”: { “coordinates”: [ -79.4163, 43.70011 ], “type”:** “point” ** }, “objectType”:** “place” ** } ] }** |
Exemplo:
Exemplos de payload de streams de atividade
twitter_extended_entities
Linha do tempo de metadata de Tweet
Introdução**
Em sua essência, X é uma rede de comunicação pública, em tempo real e global. Desde 2006, a evolução do X tem sido impulsionada tanto por padrões e convenções de uso dos usuários quanto por novos recursos e melhorias de produto. Se você utiliza dados do X para pesquisa histórica, entender a linha do tempo dessa evolução é importante para encontrar Posts de interesse no arquivo de dados. O X foi lançado como um app móvel simples via SMS e evoluiu para uma plataforma de comunicação abrangente — uma plataforma com um conjunto completo de APIs. As APIs sempre foram um pilar da rede X. A primeira API foi lançada pouco depois do lançamento do X. Quando a marcação geográfica de Posts foi introduzida pela primeira vez, em 2009, ela foi disponibilizada por meio de uma Geo API (e, posteriormente, a capacidade de “geotaguear” um Post foi integrada à interface do usuário do X.com). Hoje, as APIs do X impulsionam a rede de comunicação bidirecional que se tornou fonte de notícias de última hora e de compartilhamento de informações. As oportunidades de construir sobre esse canal de comunicação global e em tempo real são infinitas. O X disponibiliza duas APIs históricas que fornecem acesso a todo Post disponível publicamente: Historical PowerTrack e a Full-Archive Search API. Ambas as APIs oferecem um conjunto de operadores usados para consultar e coletar Posts de interesse. Esses operadores fazem correspondência com uma variedade de atributos associados a cada Post — centenas de atributos, como o conteúdo de texto do Post, o nome da conta do autor e os links compartilhados no Post. Os Posts e seus atributos são codificados em JSON, um formato comum de intercâmbio de dados baseado em texto. Assim, à medida que novos recursos foram introduzidos, novos atributos JSON surgiram e, normalmente, novos operadores de API foram adicionados para fazer correspondência com esses atributos. Se seu caso de uso inclui a necessidade de ouvir o que o mundo disse no X, quanto melhor você entender quando os operadores passaram a ter metadata JSON para corresponder, mais eficazes serão seus filtros históricos do PowerTrack. A seguir, apresentaremos alguns conceitos-chave que preparam o terreno para entender como as atualizações na metadata de Posts afetam a identificação do seu sinal de dados de interesse.Conceitos principais**
De convenções de usuários a objetos de primeira classe no X
Metadados de Post, mutabilidade, atualizações e atualidade
Mídia “nativa”
has:videos
, has:images
e has:media
. Eles correspondem apenas a conteúdo de mídia compartilhado por meio de recursos do X. Para corresponder a outras mídias hospedadas fora da plataforma X, use operadores que atuem sobre os metadados da URL.
Então, antes de entrarmos nos detalhes dos produtos Historical PowerTrack e Full-Archive Search, vamos percorrer como o X, como produto e plataforma, evoluiu ao longo do tempo.
Linha do tempo do X
Abaixo você encontrará uma linha do tempo selecionada do X. A maioria dessas atualizações do X, de alguma forma, afetou fundamentalmente o comportamento do usuário, o conteúdo JSON dos Posts, os operadores de consulta, ou os três. Observando o X como uma plataforma de API, os eventos a seguir, de alguma forma, afetaram os payloads JSON usados para codificar Posts. Por sua vez, esses detalhes em JSON afetam como as APIs históricas do X fazem a correspondência com eles.
Observe que esta linha do tempo é geralmente precisa e não exaustiva.
2006
- Outubro
- @replies tornam-se uma convenção.
- Os cashtags passam a ser links clicáveis/pesquisáveis em junho de 2012.
- Novembro - Favoritos introduzidos.
2007
- Janeiro - @replies passam a ser um objeto de primeira classe, com um botão de responder na interface e metadata
in_reply_to
. - Abril - Retweets tornam-se uma convenção.
- Agosto - #hashtags surgem como uma ferramenta principal para pesquisar e organizar Posts.
2009
- Fevereiro - $cashtags se tornam uma convenção comum para discutir símbolos de ações.
- Maio - Retweet “beta” é introduzido com “Via @” adicionado ao corpo do Post.
- Junho - Contas verificadas são introduzidas.
- Agosto - Retweets se tornam um objeto de primeira classe com o padrão “RT @” e nova metadata
retweet_status
. - Outubro - Recurso List lançado.
- Novembro - A Post Geotagging API é lançada, fornecendo o primeiro método para que usuários compartilhem localização por meio de apps de terceiros.
2010
- Junho - X Places é introduzido para geotagging de Posts.
- Agosto - O botão de Post para sites é lançado. Facilitou o compartilhamento de links.
2011
- Maio - Introduzido o botão Follow, facilitando o acompanhamento de contas associadas a sites.
- Agosto - Introduzidas fotos nativas.
2012
- Junho - $Cashtags passam a ser um link clicável/pesquisável.
2014
- Março - Marcação de fotos e suporte a até quatro fotos. Foi introduzida a Extended X Entities metadata.
- Abril - Emojis passaram a ser suportados nativamente na interface do X. Emojis eram comumente usados em Posts desde pelo menos 2008.
2015
- Abril - Uma mudança no design da interface de usuário de Post do X resulta em menos Posts com geotag.
- Outubro - Enquetes do X introduzidas. As enquetes inicialmente ofereciam duas opções com um período de votação de 24 horas. Em novembro, passaram a oferecer quatro opções, com períodos de votação de 5 minutos a sete dias. metadata das enquetes disponibilizada (apenas no formato nativo enriquecido) em fevereiro de 2017.
2016
- Fevereiro - GIFs pesquisáveis hospedados nativamente no compositor de Post.
- Maio - “Fazendo mais com 140” (dmw140) anunciado, apresentando planos para novas formas de lidar com respostas e mídias anexadas em relação à mensagem de 140 caracteres de um Post.
- Junho - Suporte nativo a vídeo
- Junho - Retweets com citação disponíveis de forma geral.
- Junho - Stickers introduzidos para adicionar a fotos.
- Setembro - “Anexos nativos” introduzidos, com a URL ao final não sendo contabilizada nos 140 caracteres (“dmw140, parte 1”).
2017
- Fevereiro - metadados de X Poll incluídos nos metadados de Post (apenas no formato nativo enriquecido).
- Abril - “Respostas simplificadas” introduzidas, com as contas mencionadas na resposta não contando para o limite de 140 caracteres (“dmw140, parte 2”).
- Maio - Atualizações do GDPR: user.time_zone definido como null, user.utc_offset definido como null, user.profile_background_image_url definido como o valor padrão
- Junho - Atualização das alterações no formato de quoteTweet
- 29 de setembro - O recurso de edição de Posts é disponibilizado para um pequeno grupo de testes. Metadados de Posts editados são adicionados ao Objeto Post quando relevante. Isso inclui os objetos edit_history e edit_controls. Esses metadados não serão retornados para Posts criados antes da adição da funcionalidade de edição. Não há Operadores associados a esses metadados. Para saber mais sobre como as edições de Post funcionam, consulte os fundamentos de edição de Posts
lang:
, usado para corresponder a Posts em um idioma específico. A X fornece um serviço de classificação de idioma (com suporte a mais de 50 idiomas), e as X APIs fornecem esse metadado no JSON gerado para cada Post. Assim, se um Post for escrito em espanhol, o atributo JSON “lang” é definido como “es”. Portanto, se você criar um filtro com a cláusula lang:es
, ele corresponderá apenas a mensagens de Post classificadas como espanhol.
As informações da linha do tempo também podem ajudar a interpretar melhor os dados de Post recebidos. Suponha que você esteja pesquisando o compartilhamento de conteúdo sobre as Olimpíadas de Verão de 2008 e 2012. Se você aplicasse apenas o operador is:retweet
para corresponder a Retweets, nenhum dado corresponderia em 2008. No entanto, para 2012 provavelmente haveria milhões de Retweets. A partir disso, você poderia concluir erroneamente que, em 2008, Retweets não eram uma convenção entre usuários ou que simplesmente ninguém fez Retweet sobre aquelas Olimpíadas. Como os Retweets se tornaram um objeto de primeira classe em 2009, é preciso adicionar uma cláusula de regra ”RT @”
para ajudar a identificá-los em 2008.
Tanto os Retweets quanto a classificação de idioma do Post são exemplos de atributos de Post com longa história e muitos detalhes de produto. A seguir, discutiremos mais detalhes desses e de outras classes de atributos importantes para corresponder e entender os Dados da X.
Reconhecendo falsos negativos
has:videos
, que corresponde a Posts com vídeos nativos, essa cláusula não corresponderá a nenhum Post anterior a 2015.
No entanto, o compartilhamento de vídeos já era comum no X muito antes de 2015. Antes disso, os usuários compartilhavam links para vídeos hospedados em outros lugares, mas em 2015 o X incorporou novos recursos de “compartilhar vídeo” diretamente na plataforma. Para localizar esses Posts anteriores de interesse, você incluiria uma cláusula de regra como url:"youtube.com"
.
Observe que, com as Search APIs, há casos em que metadata foi “preenchida retroativamente” conforme o índice era reconstruído. Um bom exemplo são os cashtag foi introduzido em 2015, o índice de Search foi reconstruído e, nesse processo, a entidade de símbolo foi extraída de todos os corpos de Post, incluindo os do início de 2006, quando $
era usado principalmente como gíria: “I hope it $oon!”.
Identificando e filtrando atributos de Post importantes para o seu caso de uso
Perfis do X
Post original e Retweets
is:retweet
permite incluir ou excluir Retweets. Se estiver obtendo data de antes de agosto de 2009, é preciso ter duas estratégias para correspondência de Retweet (ou não correspondência). Antes de agosto de 2009, a própria mensagem do Post precisa ser verificada, usando correspondência de frase exata, para identificar o padrão “RT @”. Para períodos após agosto de 2009, o Operador is:retweet
está disponível.
Classificações de idioma de Post
lang:
está disponível para todo o arquivo de Posts. No Historical PowerTrack, os metadados de classificação de idioma do X estão disponíveis no arquivo a partir de 26 de março de 2013.
Georreferenciamento de Posts
- Referências geográficas no conteúdo de um Post
- Posts geotagueados pelo usuário.
- Localização “home” do perfil da conta definida pelo usuário