Saltar al contenido principal

Coherencia en todos los endpoints de X API v2

Uno de los aspectos principales de la nueva versión v2 de X API es la coherencia entre los endpoints. Esto significa que los objetos devueltos, las funcionalidades y los comportamientos de la API son uniformes en endpoints similares. Puedes 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 añadir un parámetro de consulta al final si el endpoint admite parámetros de consulta. Estos son algunos ejemplos de cómo se pueden organizar 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 en forma de matrices, donde cada elemento tiene un id. Las solicitudes no devuelven mapas con el id como clave.

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 utilizan de forma coherente la ortografía del inglés estadounidense.
  • Los campos están vacíos o no se devuelven si no hay un 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 tarjetas, incluidos los campos media_keys y poll_ids, se devuelve en el objeto attachments.
Aquí tienes un objeto de respuesta de ejemplo del endpoint de búsqueda de un Post (con el parámetro tweet.fields configurado en author_id, entities):
{
   "data": {
       "id": "1278747501642657792",
       "text": "Ha pasado un año desde el lanzamiento de Twitter Developer Labs.\n\nMientras construimos la próxima generación de la #TwitterAPI (que llegará MUY pronto), vea lo que hemos aprendido y cambiado en el proceso. 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 cambiado",
                   "description": "Labs ha sido invaluable para ayudarnos a comprender 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 exige incluir un Bearer Token en la solicitud al endpoint para que esta sea exitosa. Para los endpoints que requieren autorización para crear, modificar o recuperar datos en nombre de otro usuario, usa el Contexto de usuario de OAuth 1.0a. Esto implica proporcionar las API keys and tokens de tu App de desarrollador, así como un conjunto de Access Tokens de usuario que generes para el usuario en cuyo nombre realizas la solicitud. El flujo OAuth de 3 patas puede ayudarte a obtener los Access Tokens. Usa una herramienta o biblioteca que construya automáticamente este encabezado de autorización. Puedes encontrar más información sobre la autenticación en nuestra documentación de autenticación.

Campos

El objeto que devuelve cada endpoint es resumido. Para ofrecer a los desarrolladores más control sobre la respuesta de la API, se utiliza el parámetro fields para solicitar los campos deseados. Los campos se mantienen coherentes en todos los endpoints. El objeto Post devolverá los mismos campos en todos los endpoints en los que aparezca. 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.

Expansions

Cuando corresponda, expansions están disponibles para todos los campos id anidados (p. ej., todos los campos con nombre *_id, como author_id). Las Expansions también están disponibles para todos los campos que tienen un id que no es el identificador de nivel superior del objeto actual. Por ejemplo, en Posts lookup, el Post es el objeto actual y el campo id es su identificador de nivel superior. Los campos author_id o referenced_tweets.id se pueden expandir a objetos completos de usuario o Post añadiendo estos valores separados por comas al parámetro expansions. Por favor, informa de cualquier inconsistencia que observes en relación con estos campos.