> For the complete documentation index, see [llms.txt](https://academy.gopersonal.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://academy.gopersonal.ai/developers/plataforma-ecommerce/magento/go-search-api.md).

# Go Search API

### Introducción

Esta documentación describe cómo integrar las APIs de búsqueda de Gopersonal en una tienda Magento. Se cubren dos escenarios de implementación:

1. Con el módulo oficial de Gopersonal instalado
2. Integración directa sin módulo

### Implementación con Módulo

#### Obtención del Token

Cuando el módulo está instalado, se puede utilizar la sesión del propio módulo para realizar las peticiones. El token JWT se obtiene del siguiente modo:

```php
$token = $this->cookieManager->getCookie('gopersonal_jwt');
```

#### Ejemplo de Petición de Búsqueda

```bash
curl --location 'https://discover.gopersonal.ai/item/search' \
--header 'Authorization: Bearer {token}' \
--header 'Referer: {tu-dominio}' \
--header 'User-Agent: Mozilla/5.0' \
--header 'sec-ch-ua-platform: "macOS"' \
--header 'Content-Type: application/json'
```

#### Parámetros de Búsqueda

* `query`: Término de búsqueda
* `limit`: Número máximo de resultados (default: 50)
* `adapter`: Debe ser "magento"

### Implementación sin Módulo

#### 1. Inicialización de Sesión

Primero es necesario crear una sesión en Gopersonal para la trazabilidad del cliente:

```bash
curl --location 'https://discover.gopersonal.ai/channel/init' \
--header 'Content-Type: application/json' \
--header 'User-Agent: Mozilla/5.0' \
--data '{
    "clientId": "TU_CLIENT_ID",
    "clientSecret": "TU_CLIENT_SECRET"
}'
```

**Respuesta**

```json
{
    "token": "jwt_token_value",
    "expiresIn": 86400
}
```

#### 2. Almacenamiento del Token

* El token debe persistirse junto al usuario
* Validez por defecto: 24 horas
* Recomendación: Implementar renovación automática antes del vencimiento

#### 3. Realización de Búsquedas

```bash
curl --location 'https://discover.gopersonal.ai/item/search' \
--header 'Authorization: Bearer {token}' \
--header 'Referer: {tu-dominio}' \
--header 'Content-Type: application/json'
```

### Endpoints de API

#### Inicialización de Canal

* URL: `https://discover.gopersonal.ai/channel/init`
* Método: `POST`
* Headers requeridos:
  * `Content-Type: application/json`

#### Búsqueda de Productos

* URL: `https://discover.gopersonal.ai/item/search`
* Método: `GET`
* Headers requeridos:
  * `Authorization: Bearer {token}`
  * `Referer: {tu-dominio}`
  * `Content-Type: application/json`

### Manejo de Errores

#### Códigos de Estado

* `200`: Petición exitosa
* `401`: Token inválido o expirado
* `403`: Acceso denegado
* `500`: Error interno del servidor

#### Recomendaciones

1. Implementar retry en caso de errores 5xx
2. Renovar token automáticamente ante error 401
3. Mantener log de errores para debugging

***

Para más información o soporte, contactar al equipo de Gopersonal.
