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

# Odoo

> Guía de configuración para Odoo 19 y Odoo.sh — integración Payana

<Tabs>
  <Tab title="Version 19 / Odoo.sh">
    Guía paso a paso para obtener las credenciales necesarias para conectar Payana con tu instancia de **Odoo 19** u **Odoo.sh**. Los mismos datos sirven para ambas plataformas.

    ***

    ## 1. Obtener la URL de la instancia

    La **URL** es la dirección base de tu Odoo (sin barra final).

    | Tipo de instancia                | Ejemplo de URL                                                |
    | -------------------------------- | ------------------------------------------------------------- |
    | **Odoo.com** (SaaS)              | `https://tuempresa.odoo.com`                                  |
    | **Odoo.sh** (producción)         | `https://tu-proyecto.odoo.com` o la URL que te asigna Odoo.sh |
    | **Odoo.sh** (staging/desarrollo) | `https://tu-proyecto-12345.dev.odoo.com` (o similar)          |
    | **Self-hosted**                  | `https://odoo.tudominio.com`                                  |

    1. Abre tu Odoo en el navegador e inicia sesión.
    2. Copia la URL de la barra de direcciones **hasta el dominio** (no incluyas `/web`, `/web/login` ni parámetros).
    3. No dejes una barra final: usa `https://tuempresa.odoo.com`, no `https://tuempresa.odoo.com/`.

    <Tip>
      En Odoo.sh, la URL exacta aparece en el panel del proyecto (pestaña de la rama: producción, staging, etc.). Usa la URL del entorno que quieras conectar a Payana.
    </Tip>

    ***

    ## 2. Obtener el User ID

    El **User ID** es el identificador numérico del usuario con el que Payana se conectará a la API (por ejemplo `2` para el usuario administrador).

    1. Ve a **Ajustes** (engranaje) > **Usuarios y empresas** > **Usuarios** (o **Settings** > **Users & Companies** > **Users**).
    2. Haz clic en el usuario que usará la integración (recomendado: un usuario dedicado o el administrador).
    3. Mira la barra de direcciones del navegador: verás algo como `...?model=res.users&id=2` o `...#id=2&model=res.users`.
    4. El número que aparece en **id=** es el **User ID** (ej. `2`, `5`). Anótalo.

    <Tip>
      Es buena práctica crear un usuario dedicado para la integración (ej. `payana@tuempresa.com`) en lugar de usar una cuenta personal. Así evitas revocar acceso si esa persona deja la empresa.
    </Tip>

    ***

    ## 3. Crear y copiar la API Key

    La **API Key** sustituye a la contraseña para las llamadas a la API. Solo se muestra una vez al crearla.

    1. Haz clic en tu **avatar** (esquina superior derecha) y abre **Preferencias** (o **My Profile** / **Preferences**).
    2. Ve a la pestaña **Seguridad de la cuenta** (o **Account Security**).
    3. En la sección **Claves API** (o **API Keys**), haz clic en **Nueva clave API** (**New API Key**).
    4. Escribe una descripción (ej. `Integración Payana`) y haz clic en **Generar** (**Generate**).
    5. **Copia de inmediato** la clave que se muestra y guárdala en un lugar seguro.

    <Warning>
      La API Key solo se muestra una vez. Si la cierras o la pierdes, tendrás que crear una nueva clave; la anterior no se puede recuperar.
    </Warning>

    ***

    ## 4. Nombre de base de datos (db\_name) — si aplica

    En muchas instancias **Odoo.com** y **Odoo.sh** con una sola base de datos, el **db\_name** no es necesario y Payana puede omitirlo. En instalaciones **self-hosted** o con varias bases de datos suele ser obligatorio.

    | Escenario                              | ¿Necesitas db\_name? | Dónde verlo                                                                        |
    | -------------------------------------- | -------------------- | ---------------------------------------------------------------------------------- |
    | Odoo.com / Odoo.sh (una sola base)     | A menudo **no**      | —                                                                                  |
    | Odoo.sh (si te lo pide la integración) | Sí                   | Panel del proyecto en Odoo.sh; suele coincidir con el nombre del proyecto o la URL |
    | Self-hosted                            | Sí                   | Pantalla de login (selector de base de datos) o en la URL (parámetro `?db=nombre`) |

    Si tu pantalla de login **no** muestra selector de base de datos, normalmente puedes dejar **db\_name** vacío o indicar a Payana que no lo uses.

    ***

    ## 5. Resumen de valores para compartir con Payana

    | Campo        | Dónde obtenerlo                                                                                                               |
    | ------------ | ----------------------------------------------------------------------------------------------------------------------------- |
    | **url**      | URL base de la instancia (sin `/web` ni barra final). Ej.: `https://tuempresa.odoo.com`                                       |
    | **api\_key** | Preferencias > Seguridad de la cuenta > Nueva clave API (copiar al generarla)                                                 |
    | **user\_id** | Ajustes > Usuarios > \[usuario] → número en la URL (`id=X`)                                                                   |
    | **db\_name** | Solo si aplica: panel Odoo.sh, selector de BD en login o parámetro `db=` en la URL. Si no hay varias BD, puede dejarse vacío. |

    Comparte estos valores por un **canal seguro**

    ***

    ## 6. Lista de verificación

    <div>
      * [ ] Tienes la **URL** de la instancia (sin barra final).
      * [ ] Tienes el **User ID** del usuario que usará la integración.
      * [ ] Has creado una **API Key** y la has copiado y guardado.
      * [ ] Sabes si necesitas **db\_name** (self-hosted o varias BD) o puedes dejarlo vacío.
      * [ ] Has compartido de forma segura los valores (url, api\_key, user\_id y db\_name si aplica) con Payana.
      * [ ] Conexión validada con una solicitud de prueba (sección 7).
    </div>

    ***

    ## 7. Validar la conexión (Opcional)

    Una vez que tengas las credenciales, haz una llamada de prueba para confirmar que la API Key y el User ID funcionan correctamente.

    ### Con Postman (recomendado)

    <Steps>
      <Step title="Crear una solicitud GET">
        Usa la siguiente URL, reemplazando `TU_INSTANCIA` por tu dominio y `TU_USER_ID` por el número obtenido en el paso 2:

        ```
        https://TU_INSTANCIA.odoo.com/api/res.users/TU_USER_ID?fields=name,login
        ```

        Ejemplo: `https://miempresa.odoo.com/api/res.users/2?fields=name,login`
      </Step>

      <Step title="Configurar autenticación">
        En la pestaña **Authorization**:

        | Campo | Valor        |
        | ----- | ------------ |
        | Type  | Bearer Token |
        | Token | Tu API Key   |
      </Step>

      <Step title="Enviar la solicitud">
        Haz clic en **Send**.
      </Step>
    </Steps>

    ### Respuesta esperada

    Una respuesta **200 OK** con los datos del usuario confirma que la API Key y el User ID son válidos:

    ```json theme={null}
    {
      "id": 2,
      "name": "Administrador",
      "login": "admin"
    }
    ```

    ### Errores comunes

    | Código | Significado                 | Qué revisar                                                                                                  |
    | ------ | --------------------------- | ------------------------------------------------------------------------------------------------------------ |
    | `401`  | API Key inválida o expirada | Verifica que copiaste la clave completa y que no ha sido eliminada en Preferencias > Seguridad de la cuenta. |
    | `403`  | Acceso denegado             | El usuario no tiene permisos para leer su propio registro. Confirma que el usuario está activo.              |
    | `404`  | URL o User ID incorrectos   | Revisa que la URL base sea correcta (sin `/web`) y que el User ID exista en esa instancia.                   |

    <AccordionGroup>
      <Accordion title="Alternativa: probar con cURL">
        Copia el siguiente comando, reemplaza los tres valores al inicio y pégalo en una terminal (macOS, Linux o Windows con WSL/Git Bash):

        ```bash theme={null}
        # ── Credenciales (reemplaza estos valores) ──
        ODOO_URL="https://tuempresa.odoo.com"
        API_KEY="TU_API_KEY"
        USER_ID="2"

        # ── Ejecutar solicitud ──
        curl -s -X GET "${ODOO_URL}/api/res.users/${USER_ID}?fields=name,login" \
          -H "Authorization: Bearer ${API_KEY}" \
          -H "Content-Type: application/json" | python3 -m json.tool
        ```

        Una respuesta con `"id"`, `"name"` y `"login"` confirma que las credenciales son correctas.
      </Accordion>
    </AccordionGroup>
  </Tab>
</Tabs>
