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

# Incomm

Este documento proporciona detalles específicos para usar el Conector de la API de Proveedor de Tarjetas de Regalo de Fluz con Incomm como proveedor.

# API original de Incomm vs Adaptador de la API de Fluz

### URL base

* API original de Incomm: [https://app.giftango.com](https://app.giftango.com)
* Adaptador de la API de Fluz:
  * Staging: [https://api-adapter.staging.fluzapp.com/incomm](https://api-adapter.staging.fluzapp.com/incomm)

### Incomm original

* Usa Autenticación Bearer con el encabezado Authorization; es necesario generar primero el token de autorización.

```text theme={null}
Authorization: Bearer <INCOMM-AUTH-TOKEN>
```

Para generar el AuthToken envía una solicitud al endpoint `/auth/token` con el cuerpo:

```text theme={null}
{
  grant_type: 'client_credentials',
  client_id: INCOMM_CLIENT_ID,
  client_secret: INCOMM_SECRET_KEY,
}
```

### Adaptador de la API de Fluz

* Usa Autenticación Basic con el encabezado `Authorization` (igual que todas las integraciones de proveedores).

```text theme={null}
Authorization: Basic <FLUZ-API-Key>
```

## Comparación de Endpoints de la API

| Operación                    | Endpoint de Incomm                                 | Endpoint de Fluz                                   | Notas                                                           |
| :--------------------------- | :------------------------------------------------- | :------------------------------------------------- | :-------------------------------------------------------------- |
| Obtener detalles de la orden | `GET /orders/:orderId/cards`                       | `GET /orders/:orderId/cards`                       | Recupera los detalles de las tarjetas para una orden específica |
| Obtener orden                | `GET /orders/:orderId`                             | `GET /orders/:orderId`                             | Recupera los detalles de una orden específica                   |
| Crear orden                  | `POST /orders/immediate`                           | `POST /orders/immediate`                           | Crea una nueva orden de tarjeta de regalo                       |
| Obtener balance              | `GET /programs/programs/:programId/programbalance` | `GET /programs/programs/:programId/programbalance` | Obtiene el balance para todas las monedas                       |

# Ejemplos de solicitudes

## Crear orden

### Solicitud original de Incomm:

```text theme={null}
{
  "PurchaseOrderNumber": "cddabd6d-1f7a-483d-8126-8bc676f7bd63",
  "CustomerOrderId": "cddabd6d-1f7a-483d-8126-8bc676f7bd63",
  "Recipients": [
    {
      "FirstName": "testFirstName",
      "LastName": "testLastName",
      "EmailAddress": "testEmail@test.com",
      "DeliverEmail": false,
      "Products": [
        {
          "Sku": "VUSA-D-2500-00",
          "Quantity": 1,
          "Value": 25
        }
      ]
    }
  ]
}
```

### Solicitud del Adaptador de la API de Fluz:

```text theme={null}
{
  "PurchaseOrderNumber": "cddabd6d-1f7a-483d-8126-8bc676f7bd63",
  "CustomerOrderId": "cddabd6d-1f7a-483d-8126-8bc676f7bd63",
  "Recipients": [
    {
      "FirstName": "testFirstName",
      "LastName": "testLastName",
      "EmailAddress": "testEmail@test.com",
      "DeliverEmail": false,
      "Products": [
        {
          "Sku": "VUSA-D-2500-00",
          "Quantity": 1,
          "Value": 25
        }
      ]
    }
  ]
}
```

## Procesamiento en segundo plano para órdenes de Incomm

Todas las operaciones de compra a través de la integración con Incomm se procesan como operaciones en segundo plano. Sin embargo, para mantener la compatibilidad con el comportamiento de la API de Incomm, el Adaptador de la API de Fluz puede devolver resultados completos de forma síncrona por defecto.

<Callout icon="📘">
  **Nota:** Incluso cuando los resultados parecen síncronos, todas las compras siguen programadas y se rastrean como operaciones en segundo plano internamente para mejorar la confiabilidad y un mejor manejo de reintentos.
</Callout>

# Ejemplo de uso con cURL

## Ejemplo 1: Obtener una orden específica con tarjetas de regalo

```text theme={null}
# Get gift cards from order with Incomm via Fluz API Adapter
curl -X GET "https://api-adapter.staging.fluzapp.com/incomm/v1/orders/353a4151-2d51-48b6-81c9-90fd6815f12b/cards" \
  -H "Authorization: Basic <FLUZ-API-Key>"
```

## Ejemplo 2: Obtener detalles de la orden

```text theme={null}
# Get order details with Incomm via Fluz API Adapter
curl -X GET "https://api-adapter.staging.fluzapp.com/incomm/v1/orders/353a4151-2d51-48b6-81c9-90fd6815f12b" \
  -H "Authorization: Basic <FLUZ-API-Key>"
```

## Ejemplo 3: Obtener balance

```text theme={null}
# Get Balance with Incomm via Fluz API Adapter
curl -X GET "https://api-adapter.staging.fluzapp.com/incomm/v1/balance" \
  -H "Authorization: Basic <FLUZ-API-Key>"
```

## Ejemplo 4: Crear una nueva orden

```text theme={null}
# Create Order with Incomm via Fluz API Adapter
# Note: This operation runs as a background process but may return complete results
curl -X POST "https://api-adapter.staging.fluzapp.com/incomm/v1/orders/immediate" \
  -H "Authorization: Basic <FLUZ-API-Key>" \
  -H "Content-Type: application/json" \
  -d '{
  "PurchaseOrderNumber": "cddabd6d-1f7a-483d-8126-8bc676f7bd63",
  "CustomerOrderId": "cddabd6d-1f7a-483d-8126-8bc676f7bd63",
  "Recipients": [
    {
      "FirstName": "testFirstName",
      "LastName": "testLastName",
      "EmailAddress": "testEmail@test.com",
      "DeliverEmail": false,
      "Products": [
        {
          "Sku": "VUSA-D-2500-00",
          "Quantity": 1,
          "Value": 25
        }
      ]
    }
  ]
}'
```
