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

# Solicitar Aprobación de Compra de Tarjeta de Regalo

`requestGiftCardPurchase`

Envía una solicitud de aprobación de un gerente para comprar una tarjeta de regalo. Cuando se aprueba, Fluz completa la compra utilizando los parámetros enviados.

## Scopes

| Acción             | Scope               |
| ------------------ | ------------------- |
| Crear solicitud    | `REQUEST_GIFT_CARD` |
| Listar solicitudes | `LIST_APPROVALS`    |
| Aprobar o rechazar | `MANAGE_APPROVALS`  |

## Identificadores de Webhook

| Campo          | Valor       |
| -------------- | ----------- |
| `approvalType` | `GIFT_CARD` |
| `approvalCode` | `400007`    |

Eventos de webhook: `APPROVAL_CREATE`, `APPROVAL_APPROVE`, `APPROVAL_DECLINE` y `APPROVAL_HANDLER_ERROR` en caso de error de ejecución.

## Crear una Solicitud

Los campos de entrada reflejan la mutación directa `purchaseGiftCard`. Consulta [Comprar Tarjeta de Regalo](/purchase-gift-card) para detalles de la oferta y de la fuente de fondos.

### RequestGiftCardPurchaseInput

| Campo                       | Tipo                  | Requerido | Descripción                                          |
| --------------------------- | --------------------- | --------- | ---------------------------------------------------- |
| `offerId`                   | UUID                  | Sí        | ID de la oferta de tarjeta de regalo                 |
| `purchaseAmount`            | Float                 | Sí        | Monto de la compra                                   |
| `channel`                   | SourcePlatformChannel | Sí        | Canal de origen de la solicitud (por ejemplo, `API`) |
| `fluzpayAmount`             | Float                 | No        | Monto a financiar desde el saldo de Fluz             |
| `bankCardId`                | UUID                  | No        | Fuente de fondos de tarjeta bancaria                 |
| `bankAccountId`             | UUID                  | No        | Fuente de fondos de cuenta bancaria                  |
| `paypalVaultId`             | UUID                  | No        | Fuente de fondos de PayPal                           |
| `userCashBalanceId`         | UUID                  | No        | Cuenta de gasto para financiar la compra             |
| `seatId`                    | UUID                  | No        | Asiento asociado con la compra                       |
| `exclusiveRateId`           | UUID                  | No        | ID de tarifa exclusiva                               |
| `merchantSlug`              | String                | No        | Slug del comercio                                    |
| `gcWarehouseMerchantId`     | UUID                  | No        | ID del comercio del almacén de tarjetas de regalo    |
| `gcWarehouseUserRewardRate` | Float                 | No        | Tasa de recompensa del usuario del almacén           |
| `gcWarehouseDiscountRate`   | Float                 | No        | Tasa de descuento del almacén                        |
| `memo`                      | String                | No        | Memo de la transacción                               |
| `categoryId`                | UUID                  | No        | ID de la categoría de la transacción                 |

### Mutación de Ejemplo

```graphql theme={null}
mutation {
  requestGiftCardPurchase(
    input: {
      offerId: "ed669305-5e43-40a0-9a25-7a15ed174628"
      purchaseAmount: 25.00
      channel: API
      fluzpayAmount: 25.00
      userCashBalanceId: "b1155504-ad30-4b2f-873d-b8795277b128"
    }
  ) {
    success
    messageId
    error {
      code
      message
    }
  }
}
```

### Respuesta de Ejemplo

```json theme={null}
{
  "data": {
    "requestGiftCardPurchase": {
      "success": true,
      "messageId": "1234567890"
    }
  }
}
```

## Aprobar una Solicitud

Llama a `approveApprovalRequest` con el `approvalId`. Requiere `MANAGE_APPROVALS`.

```graphql theme={null}
mutation {
  approveApprovalRequest(approvalId: "07df5653-43a8-4532-9881-3ab5857bbe12") {
    success
    approvalId
    action
  }
}
```

Al aprobarse, Fluz compra la tarjeta de regalo.

## Rechazar una Solicitud

Llama a `declineApprovalRequest` con el `approvalId`. Requiere `MANAGE_APPROVALS`.

```graphql theme={null}
mutation {
  declineApprovalRequest(approvalId: "07df5653-43a8-4532-9881-3ab5857bbe12") {
    success
    approvalId
    action
  }
}
```

No se compra ninguna tarjeta de regalo cuando se rechaza una solicitud.
