# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://academy.gopersonal.ai/developers/plataforma-ecommerce/magento/go-search-api.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
