# Аутентификация в Solver SDK

Этот документ описывает методы аутентификации в Solver SDK.

## Аутентификация HTTP API

SDK поддерживает два основных метода аутентификации:

### API ключ

```javascript
const sdk = new CodeSolverSDK({
  baseURL: 'https://api.example.com',
  apiKey: 'your-api-key'
});
```

### Пользовательские заголовки

```javascript
const sdk = new CodeSolverSDK({
  baseURL: 'https://api.example.com',
  headers: {
    'Authorization': 'Bearer your-jwt-token'
  }
});
```

## Аутентификация WebSocket

SDK автоматически использует API-ключ для аутентификации WebSocket соединений. Отдельных действий не требуется.

Для некоторых методов можно указать дополнительный токен авторизации:

```javascript
// Для потоковой передачи чата с мышлением
const options = {
  model: 'claude-3-7-sonnet-20240229',
  thinking: true,
  authToken: 'your-auth-token' // Опциональный параметр 
};

// Запрос с аутентификацией
const response = await sdk.chat.streamChatWithThinking(messages, options, handleEvent);
```

## Обработка ошибок аутентификации

```javascript
// Обработчик событий WebSocket
const handleEvent = (eventType, data) => {
  if (eventType === 'authentication_error') {
    console.error('Ошибка аутентификации:', data.message);
    
    // Реакция на ошибку аутентификации
    if (data.code === 'TOKEN_EXPIRED') {
      // Получение нового токена
    }
  }
};
```

## Пример использования

```javascript
// Создание экземпляра SDK
const sdk = new CodeSolverSDK({
  baseURL: 'https://api.example.com',
  apiKey: 'your-api-key'
});

// Создание рассуждения
const reasoning = await sdk.reasoning.createReasoning({
  projectId: 'project-id',
  query: 'Объясни этот проект'
});

// Подключение к WebSocket (аутентификация выполняется автоматически)
await sdk.reasoning.connectWebSocket(reasoning.id);

// Запуск процесса
await sdk.reasoning.startReasoning(reasoning.id);
``` 