# Reembolsos

Esta API proporciona endpoints para gestionar los reembolsos relacionados con pagos. Incluye la capacidad de crear, recuperar y listar reembolsos.

## 1. Listar Reembolsos

#### \[GET] /refunds

Retorna una lista de reembolsos basados en los parámetros de consulta. Soporta filtrado, paginación y ordenación.

**Solicitud:**

```
const query = {
  page: number,  // Número de página para paginación
  limit: number, // Número de elementos por página
  query: object  // Condiciones de filtrado opcionales
};
```

**Parámetros de Consulta:**

* `page`: El número de página para paginación (opcional, por defecto es 1).
* `limit`: El número de reembolsos para recuperar por página (opcional, por defecto es 10).
* `query`: Una lista separada por comas de pares clave-valor para filtrar resultados. Las claves serán los campos de reembolso y los valores se utilizarán para hacer coincidir los campos correspondientes (opcional).

Respuesta:

```
{
  "refunds": [ /* Array de objetos de reembolsos */ ],
  "page": 1,
  "pageSize": 10,
  "totalPages": 5
}
```

Ejemplo de Objeto de Reembolso:

```
{
  "_id": "string",
  "paymentIntentId": "string",
  "paymentId": "string",
  "userId": "string",
  "receiverId": "string",
  "refundTo": "string",
  "amount": 100,
  "status": "PROCESSING",
  "createdAt": "timestamp",
  "updatedAt": "timestamp"
}
```

## 2. Obtener reembolso por ID

\[GET] /refunds/:id

Retorna un reembolso específico por su ID.

**Solicitud:**

* **Parámetro de URL:**
  * `id`: El ID del reembolso.

Respuesta:

```
{
  "_id": "string",
  "paymentIntentId": "string",
  "paymentId": "string",
  "userId": "string",
  "receiverId": "string",
  "refundTo": "string",
  "amount": 100,
  "status": "PROCESSING",
  "createdAt": "timestamp",
  "updatedAt": "timestamp"
}
```

## 3. Crear reembolso

\[POST] /refunds

Crea un nuevo reembolso para un pago existente.

**Solicitud:**

```
{
  "paymentId": "string", // El ID del pago a reembolsar
  "refundTo": "string" // La dirección a la que se enviará el reembolso (debe ser una dirección válida)
}
```

Respuesta:

```
{
  "_id": "string",
  "paymentIntentId": "string",
  "paymentId": "string",
  "userId": "string",
  "receiverId": "string",
  "refundTo": "string",
  "amount": 100,
  "status": "PROCESSING",
  "createdAt": "timestamp",
  "updatedAt": "timestamp"
}
```

**Validación:**

* La solicitud debe incluir un `paymentId` y una dirección `refundTo` válidos.
* El `paymentId` debe corresponder a un pago confirmado.
* La dirección `refundTo` debe ser una dirección Ethereum válida (comienza con "0x" y tiene una longitud de 42 caracteres).
* El monto del reembolso no debe exceder los fondos disponibles en la cuenta del receptor.
* No se pueden procesar reembolsos si el pago ha sido retirado.

**Respuestas de Error:**

* **400 Bad Request**: Campos requeridos faltantes o datos inválidos (por ejemplo, dirección inválida, fondos insuficientes).
* **401 Unauthorized**: Si el usuario no está autenticado.
* **404 Not Found**: Si el pago o el reembolso no existen.
* **500 Internal Server Error**: Si ocurre un error inesperado.

## 4. Crear reembolso parcial

\[POST] /refunds/partial

Crea un nuevo reembolso parcial para un pago existente.

**Solicitud:**

```
{
  "paymentId": "string",// El ID del pago a reembolsar
  "refundTo": "string",// La dirección a la que se enviará el reembolso (debe ser una dirección válida)
  "amount": "number" // La cantidad solicitada en el reembolso
}
```

Respuesta:

```
{
  "_id": "string",
  "paymentIntentId": "string",
  "paymentId": "string",
  "userId": "string",
  "receiverId": "string",
  "refundTo": "string",
  "amount": 100,
  "status": "PROCESSING",
  "createdAt": "timestamp",
  "updatedAt": "timestamp"
}
```

**Validación:**

* La solicitud debe incluir un `paymentId` y una dirección `refundTo` válidos.
* El `paymentId` debe corresponder a un pago confirmado.
* La dirección `refundTo` debe ser una dirección Ethereum válida (comienza con "0x" y tiene una longitud de 42 caracteres).
* El monto del reembolso no debe exceder los fondos disponibles en la cuenta del receptor.
* No se pueden procesar reembolsos si el pago ha sido retirado.

**Respuestas de Error:**

* **400 Bad Request**: Campos requeridos faltantes o datos inválidos (por ejemplo, dirección inválida, fondos insuficientes).
* **401 Unauthorized**: Si el usuario no está autenticado.
* **404 Not Found**: Si el pago o el reembolso no existen.
* **500 Internal Server Error**: Si ocurre un error inesperado.


---

# 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://amplify-docs.gitbook.io/amplify/espanol/api/reembolsos.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.
