> ## Documentation Index
> Fetch the complete documentation index at: https://generaltranslation.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Client

Clase principal del cliente para la X API

Este es el punto de entrada principal para interactuar con la X API. Proporciona
acceso a todos los endpoints de la API a través de módulos de cliente especializados y gestiona
la autenticación, la configuración de las solicitudes y el manejo de errores.

**`Ejemplo`**

```typescript theme={null}
import { Client } from '@xdevplatform/xdk';

const client = new Client({
  bearerToken: 'your-bearer-token'
});

// Obtener información del usuario
const user = await client.users.getUser('783214');

// Obtener seguidores con paginación
const followers = await client.users.getFollowers('783214', {
  maxResults: 10,
  userFields: ['id', 'name', 'username']
});

// Iterar por los seguidores
for await (const follower of followers) {
  console.log(follower.username);
}
```

<div id="constructors">
  ## Constructores
</div>

<div id="constructor">
  ### constructor
</div>

• **new Client**(`config`): [`Client`](/es/xdks/typescript/reference/classes/Client)

Crea una nueva instancia del Client de X API

<div id="parameters">
  #### Parámetros
</div>

| Nombre   | Type  | Descripción                              |
| :------- | :---- | :--------------------------------------- |
| `config` | `any` | Opciones de configuración para el Client |

<div id="returns">
  #### Devuelve
</div>

[`Client`](/es/xdks/typescript/reference/classes/Client)

**`Ejemplo`**

```typescript theme={null}
// Autenticación con Bearer Token
const client = new Client({
  bearerToken: 'your-bearer-token'
});

// OAuth2 authentication
const client = new Client({
  accessToken: 'your-access-token'
});

// OAuth1 authentication
const client = new Client({
  oauth1: oauth1Instance
});
```

[client.ts:401](https://github.com/xdevplatform/xdk-typescript/blob/81aacb165e0802e188f608bdf462b60fc4e713a2/src/client.ts#L401)

<div id="properties">
  ## Propiedades
</div>

<ResponseField name="baseUrl" type="string" required>
  URL base para solicitudes a la API
</ResponseField>

<ResponseField name="bearerToken" type="string">
  Bearer Token para la autenticación
</ResponseField>

<ResponseField name="accessToken" type="string">
  Token de acceso OAuth2
</ResponseField>

<ResponseField name="oauth1" type="any">
  Instancia OAuth1 para la autenticación
</ResponseField>

<ResponseField name="headers" type="Headers" required>
  Encabezados para las solicitudes
</ResponseField>

<ResponseField name="timeout" type="number" required>
  Tiempo de espera de la solicitud en milisegundos
</ResponseField>

<ResponseField name="retry" type="boolean" required>
  Indica si se deben reintentar automáticamente las solicitudes fallidas
</ResponseField>

<ResponseField name="maxRetries" type="number" required>
  Número máximo de intentos de reintento
</ResponseField>

<ResponseField name="httpClient" type="HttpClient = httpClient" required>
  Cliente HTTP para realizar solicitudes
</ResponseField>

<ResponseField name="general" type="GeneralClient" required>
  cliente general
</ResponseField>

<ResponseField name="accountActivity" type="AccountActivityClient" required>
  cliente de actividad de cuenta
</ResponseField>

<ResponseField name="communityNotes" type="CommunityNotesClient" required>
  cliente de Community Notes
</ResponseField>

<ResponseField name="compliance" type="ComplianceClient" required>
  cliente de cumplimiento (compliance)
</ResponseField>

<ResponseField name="connections" type="ConnectionsClient" required>
  cliente de conexiones
</ResponseField>

<ResponseField name="users" type="UsersClient" required>
  cliente de usuarios
</ResponseField>

<ResponseField name="news" type="NewsClient" required>
  cliente de noticias
</ResponseField>

<ResponseField name="spaces" type="SpacesClient" required>
  cliente de Spaces
</ResponseField>

<ResponseField name="activity" type="ActivityClient" required>
  cliente de actividad
</ResponseField>

<ResponseField name="usage" type="UsageClient" required>
  cliente de uso
</ResponseField>

<ResponseField name="trends" type="TrendsClient" required>
  cliente de tendencias
</ResponseField>

<ResponseField name="posts" type="PostsClient" required>
  cliente de publicaciones
</ResponseField>

<ResponseField name="directMessages" type="DirectMessagesClient" required>
  cliente de mensajes directos
</ResponseField>

<ResponseField name="communities" type="CommunitiesClient" required>
  cliente de comunidades
</ResponseField>

<ResponseField name="media" type="MediaClient" required>
  cliente de medios
</ResponseField>

<ResponseField name="webhooks" type="WebhooksClient" required>
  cliente de webhooks
</ResponseField>

<ResponseField name="stream" type="StreamClient" required>
  cliente de stream
</ResponseField>

<ResponseField name="lists" type="ListsClient" required>
  cliente de listas
</ResponseField>

<ResponseField name="request" type="Promise<T>" required>
  Realiza una solicitud autenticada a la X API

  Este método gestiona la autenticación, el formateo de la solicitud y el manejo
  de errores para todas las solicitudes a la API. Agrega automáticamente los
  encabezados de autenticación apropiados según la configuración del cliente.
</ResponseField>

<ResponseField name="isTokenExpired" type="boolean" required>
  Comprueba si el token OAuth2 ha expirado
</ResponseField>

<ResponseField name="refreshToken" type="Promise<void>" required>
  Actualiza el token OAuth2
</ResponseField>

<ResponseField name="isAuthenticated" type="boolean" required>
  Obtiene el estado de autenticación actual
</ResponseField>

<ResponseField name="mapSecuritySchemeToAuthTypes" type="string[]" required>
  Asocia los nombres de los esquemas de seguridad de OpenAPI con los tipos de autenticación internos
</ResponseField>

<ResponseField name="validateAuthentication" type="void" required>
  Valida que el método de autenticación requerido esté disponible
</ResponseField>

<ResponseField name="getAvailableAuthTypes" type="string[]" required>
  Obtiene los tipos de autenticación disponibles
</ResponseField>
