Saltar al contenido principal

Consistency across the X API v2 endpoints

Uno de los aspectos principales de la nueva X API v2 es la consistencia entre endpoints. Esto significa que los objetos devueltos, las funcionalidades y los comportamientos de la API son uniformes en endpoints similares. Puede esperar que los siguientes elementos sean los mismos en todos los endpoints:

Convenciones de nomenclatura de rutas

La nomenclatura de rutas siempre incluye la versión del endpoint, seguida del recurso. Además, la ruta puede contener un ID relacionado con el recurso anterior, un verbo de selección que ayuda a determinar qué datos devolver (p. ej., search o sample), un verbo de entrega que ayuda a determinar cómo se entregarán los datos (p. ej., stream), u otros recursos que tienen una relación con el recurso principal (p. ej., /user/12/tweets). Por último, puedes agregar un parámetro de consulta al final si el endpoint incluye parámetros de consulta. A continuación, algunos ejemplos de cómo pueden organizarse estos elementos de ruta y de consulta: /version/resource/id?param1=value&param2=value /version/resource/delivery/selection?param1=value&param2=value Ejemplos de solicitudes reales: /2/tweets/1067094924124872705?expansions=attachments.media_keys&tweet.fields=author_id /2/users/2244994945?user.fields=created_at,description /2/tweets/search/stream /2/tweets/search/recent?query=snow

Esquema JSON

Las respuestas a las solicitudes se definen mediante JSON Schema. Esto significa que las solicitudes devuelven de forma consistente conjuntos de objetos como arreglos, donde cada elemento tiene un id. Las solicitudes no devuelven mapas con id como claves.

Objeto de respuesta y parámetros

El objeto predeterminado devuelto es el mismo para cada endpoint de ese tipo de objeto:
  • Los objetos id siempre son cadenas.
  • Los parámetros y los campos de respuesta usan de forma consistente la ortografía del inglés estadounidense.
  • Los campos se devuelven vacíos o no se incluyen si no tienen valor.
  • El objeto entities solo contiene entidades extraídas del texto del Post: esto incluye urls, hashtags, mentions y cashtags.
  • Toda la información relacionada con las cards, incluidos los campos media_keys y poll_ids, se devuelve en el objeto attachments.
A continuación se muestra un ejemplo de objeto de respuesta del endpoint single Post lookup (con el parámetro tweet.fields configurado en author_id, entities):
{
   "data": {
       "id": "1278747501642657792",
       "text": "Ha pasado un año desde el lanzamiento de Developer Labs de Twitter.\n\nMientras avanzamos hacia la próxima generación de la #TwitterAPI (MUY pronto), mira lo que hemos aprendido y los cambios que hemos hecho en el camino. https://t.co/WvjuEWCa6G",
       "author_id": "2244994945",
       "entities": {
           "urls": [
               {
                   "start": 188,
                   "end": 211,
                   "url": "https://t.co/WvjuEWCa6G",
                   "expanded_url": "https://blog.x.com/developer/en_us/topics/tools/2020/a-year-with-twitter-developer-labs.html",
                   "display_url": "blog.x.com/developer/en_u…",
                   "images": [
                       {
                           "url": "https://pbs.twimg.com/news_img/1278747527043362816/7HQRkQeV?format=jpg&name=orig",
                           "width": 1600,
                           "height": 600
                       },
                       {
                           "url": "https://pbs.twimg.com/news_img/1278747527043362816/7HQRkQeV?format=jpg&name=150x150",
                           "width": 150,
                           "height": 150
                       }
                   ],
                   "status": 200,
                   "title": "Un año con Twitter Developer Labs: lo que hemos aprendido y los cambios que hemos hecho",
                   "description": "Labs ha sido inestimable para ayudarnos a entender qué funciona bien y qué no, qué te gustó y qué no."
                   "unwound_url": "https://blog.x.com/developer/en_us/topics/tools/2020/a-year-with-twitter-developer-labs.html"
               }
           ],
           "hashtags": [
               {
                   "start": 106,
                   "end": 117,
                   "tag": "TwitterAPI"
               }
           ]
       }
   }
}

Autenticación

Todos los endpoints de X API v2 requieren autenticación. Muchos de ellos aceptan el método OAuth 2.0 Bearer Token, que requiere incluir un Bearer Token en la solicitud al endpoint para que sea exitosa. Para los endpoints que requieren autorización para crear, manipular o recuperar datos en nombre de otra persona usuaria, use el Contexto de usuario de OAuth 1.0a. Esto implica proporcionar las keys and tokens de API de su App de desarrollador, así como un conjunto de Access Tokens generados para la persona usuaria en cuyo nombre realiza la solicitud. El flujo de OAuth de 3 fases puede ayudarle a obtener Access Tokens. Use una herramienta o biblioteca que construya automáticamente este encabezado de autorización. Puede encontrar más información sobre la autenticación en nuestra documentación sobre autenticación.

Campos

El objeto devuelto en cada endpoint es compacto. Para ofrecer a los desarrolladores mayor personalización en la respuesta que obtienen de la API, se utiliza el parámetro fields para solicitar los campos deseados. Los campos se mantendrán consistentes en todos los endpoints. El Objeto de Post devolverá los mismos campos en todos los endpoints donde se devuelve el Objeto de Post. El mismo conjunto de campos puede consultarse en endpoints similares. Por ejemplo, pueden consultarse los mismos campos de Post en el Posts lookup y para el Post fijado expandido en el Users lookup.

Expansiones

Cuando corresponda, las expansions están disponibles para todos los campos de id anidados (por ejemplo, todos los campos llamados *_id, como author_id). Las expansions también están disponibles para todos los campos que contienen un id que no es el identificador de nivel superior del objeto actual. Por ejemplo, en el Posts lookup, el Post es el objeto actual y su campo id es el identificador de nivel superior. Los campos author_id o referenced_tweets.id pueden ampliarse en objetos completos de usuario o de Post agregando estos valores separados por comas al parámetro expansions. Por favor, informe cualquier inconsistencia que detecte relacionada con estos campos.
I