products-payment-refacil-mcp 1.2.5 → 1.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,7 +4,7 @@ Servidor MCP (Model Context Protocol) generado automáticamente para la API prod
4
4
 
5
5
  ## 🚀 Características
6
6
 
7
- - **13 herramientas** generadas automáticamente desde la colección Postman
7
+ - **21 herramientas** generadas automáticamente desde la colección Postman
8
8
  - **Autenticación flexible**: secretId con renovación automática de tokens
9
9
  - **Servidor HTTP** con Fastify
10
10
  - **Protocolo MCP** estándar para integración con IDEs
@@ -353,7 +353,7 @@ Este endpoint incluye un script automático que:
353
353
  | --- | --- | --- |
354
354
  | secretId | string | Campo del body: secretId |
355
355
 
356
- ### `status`
356
+ ### `health_check_health_check_get`
357
357
 
358
358
  Verificación del estado de la API y conectividad con servicios
359
359
 
@@ -369,7 +369,6 @@ Verificación del estado de la API y conectividad con servicios
369
369
  "status": "ok",
370
370
  "timestamp": "2024-01-15T10:30:45.123Z",
371
371
  "uptime": 3600,
372
- "services": "connected",
373
372
  "version": "1.0.0",
374
373
  "environment": "development"
375
374
  }
@@ -386,7 +385,6 @@ Verificación del estado de la API y conectividad con servicios
386
385
  "status": "error",
387
386
  "timestamp": "2024-01-15T10:30:45.123Z",
388
387
  "uptime": 3600,
389
- "services": "disconnected",
390
388
  "error": "Connection timeout",
391
389
  "version": "1.0.0",
392
390
  "environment": "development"
@@ -394,6 +392,12 @@ Verificación del estado de la API y conectividad con servicios
394
392
  }
395
393
  ```
396
394
 
395
+ ### `status`
396
+
397
+ Verificación del estado de la API y conectividad con servicios
398
+
399
+ Verifica conectividad de la API contra el core service.
400
+
397
401
  ### `products_categories`
398
402
 
399
403
  Endpoints para consultar categorías y productos disponibles
@@ -613,10 +617,10 @@ Esta respuesta contiene información clave que se debe usar para crear una solic
613
617
 
614
618
  | Name | Type | Description |
615
619
  | --- | --- | --- |
616
- | categoryId | number | Campo del body: categoryId |
617
- | limit | number | Campo del body: limit |
618
- | offset | number | Campo del body: offset |
619
- | searchText | string | Campo del body: searchText |
620
+ | categoryId * | number | ID de la categoría |
621
+ | limit | number | Número máximo de productos (default: 10) |
622
+ | offset | number | Número de productos a omitir (default: 0) |
623
+ | searchText | string | Texto para buscar en productos |
620
624
 
621
625
  ### `product_requests_quote`
622
626
 
@@ -759,13 +763,13 @@ POST /product-requests/create
759
763
 
760
764
  | Name | Type | Description |
761
765
  | --- | --- | --- |
762
- | category_id | number | Campo del body: category_id |
763
- | id | number | Campo del body: id |
764
- | amount | null | Campo del body: amount |
765
- | data | object | Campo del body: data |
766
- | query_type | null | Campo del body: query_type |
767
- | sell_type | string | Campo del body: sell_type |
768
- | agreement | string | Campo del body: agreement |
766
+ | category_id * | number | ID de la categoría |
767
+ | id * | number | ID del producto |
768
+ | amount | null | Usar `null` para productos con consulta previa |
769
+ | data * | object | Datos específicos del producto |
770
+ | query_type * | null | Tipo de consulta (BILLData, PLATE_QUERY, etc.) |
771
+ | sell_type * | string | Tipo de venta (debe requerir consulta previa) |
772
+ | agreement | string | Acuerdo del producto |
769
773
 
770
774
  ### `product_requests_create`
771
775
 
@@ -776,7 +780,7 @@ Endpoints para crear solicitudes de productos
776
780
  **📋 Relación con Endpoint de Productos:**
777
781
  Los datos para crear esta solicitud provienen principalmente del endpoint `products/by-customer-and-category`:
778
782
 
779
- - **`category_id`**: Debe usar el mismo valor de `categoryId` enviado en la consulta a `products/by-customer-and-category`
783
+ - **`category_id`**: ID de la categoría (del endpoint de productos)
780
784
 
781
785
  - **`id`**: ID del producto seleccionado (del campo `id` del producto)
782
786
 
@@ -798,7 +802,7 @@ Los datos para crear esta solicitud provienen principalmente del endpoint `produ
798
802
 
799
803
  **Body (JSON):**
800
804
 
801
- - `category_id` (number, requerido): mismo valor de `categoryId` usado al consultar `products/by-customer-and-category`
805
+ - `category_id` (number, requerido): ID de la categoría (obtenido del endpoint de productos)
802
806
 
803
807
  - `id` (number, requerido): ID del producto seleccionado (obtenido del campo `id` del producto)
804
808
 
@@ -814,6 +818,8 @@ Los datos para crear esta solicitud provienen principalmente del endpoint `produ
814
818
 
815
819
  - `customer_id` (string, opcional): Identificador único del usuario o dispositivo
816
820
 
821
+ - `subcustomer_id` (string, opcional): Identificador del subcliente o cuenta hija asociada al `customer_id`
822
+
817
823
  - cart_id (string, opcional): identificador del carrito de compra al que se quiere agregar la solicictud de producto
818
824
 
819
825
 
@@ -890,7 +896,8 @@ const customerId = deviceId || sessionId;
890
896
  "query_type": "BILLData",
891
897
  "sell_type": "Bill",
892
898
  "agreement": "2010910",
893
- "customer_id": "device_abc123def456"
899
+ "customer_id": "device_abc123def456",
900
+ "subcustomer_id": "subcust_01"
894
901
  }
895
902
 
896
903
  ```
@@ -949,6 +956,7 @@ GET /products/by-customer-and-category
949
956
  "amount": null,
950
957
  "meta": {
951
958
  "fnArgs": 20363,
959
+ "categoryId": 44,
952
960
  "form": [
953
961
  {
954
962
  "active": true,
@@ -1154,15 +1162,16 @@ Con la respuesta de este endpoint, puedes proceder a crear el pago usando `/prod
1154
1162
 
1155
1163
  | Name | Type | Description |
1156
1164
  | --- | --- | --- |
1157
- | category_id | number | Campo del body: category_id |
1158
- | id | number | Campo del body: id |
1159
- | amount | null | Campo del body: amount |
1160
- | data | object | Campo del body: data |
1161
- | query_type | string | Campo del body: query_type |
1162
- | sell_type | string | Campo del body: sell_type |
1163
- | agreement | string | Campo del body: agreement |
1164
- | customer_id | string | Campo del body: customer_id |
1165
- | cart_id | string | Campo del body: cart_id |
1165
+ | category_id * | number | ID de la categoría (obtenido del endpoint de productos) |
1166
+ | id * | number | ID del producto seleccionado (obtenido del campo `id` del producto) |
1167
+ | amount | null | Monto del producto (ver reglas de uso) |
1168
+ | data * | object | Datos específicos del producto basados en `template_data_request` del producto |
1169
+ | query_type * | string | Tipo de consulta del producto (PHONE_QUERY, PLATE_QUERY, etc.) |
1170
+ | sell_type * | string | Tipo de venta del producto (DIRECT_SALE, QUERY_FIRST) |
1171
+ | agreement | string | Aceptación de términos (puede venir del campo `agreement` del producto) |
1172
+ | customer_id | string | Identificador único del usuario o dispositivo |
1173
+ | subcustomer_id | string | Identificador del subcliente o cuenta hija asociada al `customer_id` |
1174
+ | cart_id | string | identificador del carrito de compra al que se quiere agregar la solicictud de producto |
1166
1175
 
1167
1176
  ### `product_requests_status`
1168
1177
 
@@ -1175,7 +1184,7 @@ Este endpoint incluye validación de seguridad que garantiza que solo puedas con
1175
1184
 
1176
1185
  **📋 Parámetros:**
1177
1186
 
1178
- Debes proporcionar **uno** de los siguientes parámetros (no ambos obligatorios):
1187
+ Debes proporcionar al menos uno de los siguientes parámetros:
1179
1188
 
1180
1189
  - **`requestId`** (string, opcional): ID único de la solicitud de producto individual (UUID)
1181
1190
 
@@ -1387,7 +1396,7 @@ Este endpoint incluye validación de seguridad que garantiza que solo puedas des
1387
1396
 
1388
1397
  **📋 Parámetros:**
1389
1398
 
1390
- Debes proporcionar **uno** de los siguientes parámetros (no ambos obligatorios):
1399
+ Debes proporcionar al menos uno de los siguientes parámetros:
1391
1400
 
1392
1401
  - **`requestId`** (string, opcional): ID único de la solicitud de producto individual (UUID)
1393
1402
 
@@ -1664,7 +1673,7 @@ Crea el pago de un producto usando el medio de pago seleccionado. Esta es la eta
1664
1673
  **📋 Relación con Endpoint de Solicitud:**
1665
1674
  Los datos para crear este pago provienen de la respuesta del endpoint `product-requests/create`:
1666
1675
 
1667
- - **`cartId`**: Del campo `cartId` de la respuesta de solicitud
1676
+ - **`cartId`**: Del campo `cartId` de la respuesta del carrito
1668
1677
 
1669
1678
  - **`id`**: Del campo `id` del medio de pago seleccionado
1670
1679
 
@@ -1682,7 +1691,7 @@ Los datos para crear este pago provienen de la respuesta del endpoint `product-r
1682
1691
 
1683
1692
  **Body (JSON):**
1684
1693
 
1685
- - `cartId` (string, requerido): ID de la solicitud obtenido de `product-requests/create`
1694
+ - `cartId` (string, requerido): ID del carrito obtenido de `product-requests/create`
1686
1695
 
1687
1696
  - `id` (number, requerido): ID del medio de pago seleccionado
1688
1697
 
@@ -1690,9 +1699,9 @@ Los datos para crear este pago provienen de la respuesta del endpoint `product-r
1690
1699
 
1691
1700
  - `data` (object, requerido): Datos del pagador basados en `template_data_request` del medio de pago
1692
1701
 
1693
- - `returnUrl` (string, opcional): URL de retorno después del pago
1702
+ - `returnUrl` (string, requerido): URL de retorno después del pago
1694
1703
 
1695
- - `webhookUrl` (string, opcional): URL para notificaciones de estado del pago
1704
+ - `webhookUrl` (string, requerido): URL para notificaciones de estado del pago
1696
1705
 
1697
1706
 
1698
1707
  **🔄 Flujo de Creación de Pago:**
@@ -1815,7 +1824,7 @@ Los datos para crear este pago provienen de la respuesta del endpoint `product-r
1815
1824
  "cartId": "88d0b575-80f4-4f9b-af8f-5d09ec2cb877",
1816
1825
  "url": "https://mf-core.refacil.co/refacilpay/resumen/62/5ff47b60-77b1-11f0-b5e9-6f43bd8928c1",
1817
1826
  "reference": "5ff47b60-77b1-11f0-b5e9-6f43bd8928c1",
1818
- "amount": 19000
1827
+ "amount": 19000,
1819
1828
  "expiresIn": "2025-08-13T07:20:15.038Z"
1820
1829
  }
1821
1830
  }
@@ -1896,12 +1905,12 @@ Los datos para crear este pago provienen de la respuesta del endpoint `product-r
1896
1905
 
1897
1906
  | Name | Type | Description |
1898
1907
  | --- | --- | --- |
1899
- | cartId | string | Campo del body: cartId |
1900
- | id | number | Campo del body: id |
1901
- | categoryid | number | Campo del body: categoryid |
1902
- | data | object | Campo del body: data |
1903
- | returnUrl | string | Campo del body: returnUrl |
1904
- | webhookUrl | string | Campo del body: webhookUrl |
1908
+ | cartId * | string | ID del carrito obtenido de `product-requests/create` |
1909
+ | id * | number | ID del medio de pago seleccionado |
1910
+ | categoryid * | number | ID de la categoría del medio de pago |
1911
+ | data * | object | Datos del pagador basados en `template_data_request` del medio de pago |
1912
+ | returnUrl * | string | URL de retorno después del pago |
1913
+ | webhookUrl * | string | URL para notificaciones de estado del pago |
1905
1914
 
1906
1915
  ### `products_payment_retry_sale`
1907
1916
 
@@ -2132,16 +2141,223 @@ Endpoints para crear reembolsos
2132
2141
 
2133
2142
  | Name | Type | Description |
2134
2143
  | --- | --- | --- |
2135
- | requestId | string | Campo del body: requestId |
2136
- | keyBreB | string | Campo del body: keyBreB |
2137
- | email | string | Campo del body: email |
2138
- | webhookUrl | string | Campo del body: webhookUrl |
2144
+ | requestId * | string | ID del request a reembolsar |
2145
+ | keyBreB * | string | Clave BreB del cliente (número de celular u otro identificador) |
2146
+ | email * | string | Email del cliente |
2147
+ | webhookUrl * | string | URL para notificaciones del reembolso |
2148
+
2149
+ ### `dashboard_summary`
2150
+
2151
+ Endpoints read-only para dashboards de cliente. Los siete `POST /dashboard/*` requieren autenticación (Bearer + `x-secret-id`) y filtran por el `user_api_id` del token. `customer_id` es obligatorio y mapea a `core.product_requests.user_temp_id`. El campo opcional `subcustomer_id` (string o null) se acepta en **todas** las rutas y mapea a `core.product_requests.subcustomer_id`: si se omite, es null o queda en blanco tras trim, no hay filtro por subcliente (todo el subsegmento bajo ese `customer_id`); si se envía, los resultados se limitan a ese subcliente. El rango `from`/`to` (ISO-8601 UTC) sigue las reglas de cada endpoint. Cada request documenta ambos patrones (con y sin `subcustomer_id`).
2152
+
2153
+ Devuelve KPIs agregados del cliente: totalRequests, totalSales, totalSalesAmount, totalRefunds, totalRefundsAmount, failedRequests, conversionRate (0..1).
2154
+
2155
+ **Body:**
2156
+ - `customer_id` (string, requerido)
2157
+ - `subcustomer_id` (string, opcional) → `core.product_requests.subcustomer_id`
2158
+ - `from`/`to` (ISO-8601 UTC, opcional; ambos o ninguno; from <= to)
2159
+
2160
+ Si no se envía rango, se aplican los últimos 30 días en UTC.
2161
+
2162
+ La pestaña **Body** incluye `subcustomer_id` y un rango de fechas explícito.
2163
+
2164
+ **Ejemplo — sin filtro por subcliente (omite `subcustomer_id`):**
2165
+ ```json
2166
+ {
2167
+ "customer_id": "customer_123",
2168
+ "from": "2026-03-01T00:00:00.000Z",
2169
+ "to": "2026-03-31T23:59:59.000Z"
2170
+ }
2171
+ ```
2172
+
2173
+ **Parámetros:**
2174
+
2175
+ | Name | Type | Description |
2176
+ | --- | --- | --- |
2177
+ | customer_id | string | Campo del body: customer_id |
2178
+ | subcustomer_id | string | Campo del body: subcustomer_id |
2179
+ | from | string | Campo del body: from |
2180
+ | to | string | Campo del body: to |
2181
+
2182
+ ### `dashboard_sales`
2183
+
2184
+ Endpoints read-only para dashboards de cliente. Los siete `POST /dashboard/*` requieren autenticación (Bearer + `x-secret-id`) y filtran por el `user_api_id` del token. `customer_id` es obligatorio y mapea a `core.product_requests.user_temp_id`. El campo opcional `subcustomer_id` (string o null) se acepta en **todas** las rutas y mapea a `core.product_requests.subcustomer_id`: si se omite, es null o queda en blanco tras trim, no hay filtro por subcliente (todo el subsegmento bajo ese `customer_id`); si se envía, los resultados se limitan a ese subcliente. El rango `from`/`to` (ISO-8601 UTC) sigue las reglas de cada endpoint. Cada request documenta ambos patrones (con y sin `subcustomer_id`).
2185
+
2186
+ Listado paginado de ventas exitosas (`product_sales.status = SUCCESS`) enriquecido con datos del `product_request`.
2187
+
2188
+ **Body adicional:**
2189
+ - `subcustomer_id` (opcional) → `core.product_requests.subcustomer_id`
2190
+ - `page` (default 1, min 1)
2191
+ - `limit` (default 20, max 100)
2192
+ - `product_type` (opcional)
2193
+
2194
+ Filtro de fechas: `COALESCE(executed_at, created_at)` de la venta.
2195
+
2196
+ La pestaña **Body** trae un ejemplo **con** `subcustomer_id` para que se vea directo en la colección.
2197
+
2198
+ **Ejemplo — todo el segmento de `customer_id` (sin `subcustomer_id` o null):**
2199
+ ```json
2200
+ {
2201
+ "customer_id": "customer_123",
2202
+ "page": 1,
2203
+ "limit": 20,
2204
+ "product_type": "RECARGA"
2205
+ }
2206
+ ```
2207
+
2208
+ **Parámetros:**
2209
+
2210
+ | Name | Type | Description |
2211
+ | --- | --- | --- |
2212
+ | customer_id | string | Campo del body: customer_id |
2213
+ | subcustomer_id | string | Campo del body: subcustomer_id |
2214
+ | page | number | Campo del body: page |
2215
+ | limit | number | Campo del body: limit |
2216
+ | product_type | string | Campo del body: product_type |
2217
+
2218
+ ### `dashboard_transactions`
2219
+
2220
+ Endpoints read-only para dashboards de cliente. Los siete `POST /dashboard/*` requieren autenticación (Bearer + `x-secret-id`) y filtran por el `user_api_id` del token. `customer_id` es obligatorio y mapea a `core.product_requests.user_temp_id`. El campo opcional `subcustomer_id` (string o null) se acepta en **todas** las rutas y mapea a `core.product_requests.subcustomer_id`: si se omite, es null o queda en blanco tras trim, no hay filtro por subcliente (todo el subsegmento bajo ese `customer_id`); si se envía, los resultados se limitan a ese subcliente. El rango `from`/`to` (ISO-8601 UTC) sigue las reglas de cada endpoint. Cada request documenta ambos patrones (con y sin `subcustomer_id`).
2221
+
2222
+ Listado paginado de `product_requests` con el estado consolidado del flujo (request + payment + topup + sale). Filtros opcionales: `status` (array de ProductRequestStatus) y `product_type`. `subcustomer_id` opcional → `core.product_requests.subcustomer_id`.
2223
+
2224
+ La pestaña **Body** incluye `subcustomer_id` para que el campo se vea en la colección.
2225
+
2226
+ **Ejemplo — sin filtro por subcliente (omite `subcustomer_id`):**
2227
+ ```json
2228
+ {
2229
+ "customer_id": "customer_123",
2230
+ "page": 1,
2231
+ "limit": 20,
2232
+ "status": ["SOLD", "REFUNDED"],
2233
+ "product_type": "FACTURA"
2234
+ }
2235
+ ```
2236
+
2237
+ **Parámetros:**
2238
+
2239
+ | Name | Type | Description |
2240
+ | --- | --- | --- |
2241
+ | customer_id | string | Campo del body: customer_id |
2242
+ | subcustomer_id | string | Campo del body: subcustomer_id |
2243
+ | page | number | Campo del body: page |
2244
+ | limit | number | Campo del body: limit |
2245
+ | status | array | Campo del body: status |
2246
+ | product_type | string | Campo del body: product_type |
2247
+
2248
+ ### `dashboard_stats_by_status`
2249
+
2250
+ Endpoints read-only para dashboards de cliente. Los siete `POST /dashboard/*` requieren autenticación (Bearer + `x-secret-id`) y filtran por el `user_api_id` del token. `customer_id` es obligatorio y mapea a `core.product_requests.user_temp_id`. El campo opcional `subcustomer_id` (string o null) se acepta en **todas** las rutas y mapea a `core.product_requests.subcustomer_id`: si se omite, es null o queda en blanco tras trim, no hay filtro por subcliente (todo el subsegmento bajo ese `customer_id`); si se envía, los resultados se limitan a ese subcliente. El rango `from`/`to` (ISO-8601 UTC) sigue las reglas de cada endpoint. Cada request documenta ambos patrones (con y sin `subcustomer_id`).
2139
2251
 
2140
- ### `docs_cli_web_documentation`
2252
+ Agrupa `product_requests` por `ProductRequestStatus`. La respuesta SIEMPRE incluye una entrada por cada estado del enum (count=0, totalAmount=0 si no hay registros). `subcustomer_id` opcional → `core.product_requests.subcustomer_id`.
2253
+
2254
+ La pestaña **Body** incluye `subcustomer_id`.
2255
+
2256
+ **Ejemplo — sin filtro por subcliente:**
2257
+ ```json
2258
+ {
2259
+ "customer_id": "customer_123"
2260
+ }
2261
+ ```
2262
+
2263
+ **Parámetros:**
2264
+
2265
+ | Name | Type | Description |
2266
+ | --- | --- | --- |
2267
+ | customer_id | string | Campo del body: customer_id |
2268
+ | subcustomer_id | string | Campo del body: subcustomer_id |
2269
+
2270
+ ### `dashboard_stats_by_product_type`
2271
+
2272
+ Endpoints read-only para dashboards de cliente. Los siete `POST /dashboard/*` requieren autenticación (Bearer + `x-secret-id`) y filtran por el `user_api_id` del token. `customer_id` es obligatorio y mapea a `core.product_requests.user_temp_id`. El campo opcional `subcustomer_id` (string o null) se acepta en **todas** las rutas y mapea a `core.product_requests.subcustomer_id`: si se omite, es null o queda en blanco tras trim, no hay filtro por subcliente (todo el subsegmento bajo ese `customer_id`); si se envía, los resultados se limitan a ese subcliente. El rango `from`/`to` (ISO-8601 UTC) sigue las reglas de cada endpoint. Cada request documenta ambos patrones (con y sin `subcustomer_id`).
2273
+
2274
+ Agrupa por `product_type`. Por defecto solo `status=SOLD`. Acepta `statuses` (array) para overridear. `subcustomer_id` opcional → `core.product_requests.subcustomer_id`.
2275
+
2276
+ La pestaña **Body** incluye `subcustomer_id`.
2277
+
2278
+ **Ejemplo — sin filtro por subcliente:**
2279
+ ```json
2280
+ {
2281
+ "customer_id": "customer_123",
2282
+ "statuses": ["SOLD"]
2283
+ }
2284
+ ```
2285
+
2286
+ **Parámetros:**
2287
+
2288
+ | Name | Type | Description |
2289
+ | --- | --- | --- |
2290
+ | customer_id | string | Campo del body: customer_id |
2291
+ | subcustomer_id | string | Campo del body: subcustomer_id |
2292
+ | statuses | array | Campo del body: statuses |
2293
+
2294
+ ### `dashboard_stats_timeseries`
2295
+
2296
+ Endpoints read-only para dashboards de cliente. Los siete `POST /dashboard/*` requieren autenticación (Bearer + `x-secret-id`) y filtran por el `user_api_id` del token. `customer_id` es obligatorio y mapea a `core.product_requests.user_temp_id`. El campo opcional `subcustomer_id` (string o null) se acepta en **todas** las rutas y mapea a `core.product_requests.subcustomer_id`: si se omite, es null o queda en blanco tras trim, no hay filtro por subcliente (todo el subsegmento bajo ese `customer_id`); si se envía, los resultados se limitan a ese subcliente. El rango `from`/`to` (ISO-8601 UTC) sigue las reglas de cada endpoint. Cada request documenta ambos patrones (con y sin `subcustomer_id`).
2297
+
2298
+ Serie temporal de ventas SOLD agrupada por `granularity` (`day` | `month`, default `day`). Buckets vacíos vienen con `count=0` y `totalAmount=0`. `subcustomer_id` opcional → `core.product_requests.subcustomer_id`.
2299
+
2300
+ La pestaña **Body** incluye `subcustomer_id`.
2301
+
2302
+ **Ejemplo — todos los subsegmentos en el rango (omite `subcustomer_id`):**
2303
+ ```json
2304
+ {
2305
+ "customer_id": "customer_123",
2306
+ "granularity": "day",
2307
+ "from": "2026-03-01T00:00:00.000Z",
2308
+ "to": "2026-03-07T23:59:59.000Z"
2309
+ }
2310
+ ```
2311
+
2312
+ **Parámetros:**
2313
+
2314
+ | Name | Type | Description |
2315
+ | --- | --- | --- |
2316
+ | customer_id | string | Campo del body: customer_id |
2317
+ | subcustomer_id | string | Campo del body: subcustomer_id |
2318
+ | granularity | string | Campo del body: granularity |
2319
+ | from | string | Campo del body: from |
2320
+ | to | string | Campo del body: to |
2321
+
2322
+ ### `dashboard_refunds`
2323
+
2324
+ Endpoints read-only para dashboards de cliente. Los siete `POST /dashboard/*` requieren autenticación (Bearer + `x-secret-id`) y filtran por el `user_api_id` del token. `customer_id` es obligatorio y mapea a `core.product_requests.user_temp_id`. El campo opcional `subcustomer_id` (string o null) se acepta en **todas** las rutas y mapea a `core.product_requests.subcustomer_id`: si se omite, es null o queda en blanco tras trim, no hay filtro por subcliente (todo el subsegmento bajo ese `customer_id`); si se envía, los resultados se limitan a ese subcliente. El rango `from`/`to` (ISO-8601 UTC) sigue las reglas de cada endpoint. Cada request documenta ambos patrones (con y sin `subcustomer_id`).
2325
+
2326
+ Listado paginado de reembolsos del customer con datos del `product_request` asociado. Filtro opcional `status` (array). `subcustomer_id` opcional → `core.product_requests.subcustomer_id`. Filtro de fechas sobre `refunds.created_at`.
2327
+
2328
+ La pestaña **Body** incluye `subcustomer_id`.
2329
+
2330
+ **Ejemplo — sin filtro por subcliente:**
2331
+ ```json
2332
+ {
2333
+ "customer_id": "customer_123",
2334
+ "page": 1,
2335
+ "limit": 20,
2336
+ "status": ["CONFIRMED"]
2337
+ }
2338
+ ```
2339
+
2340
+ **Parámetros:**
2341
+
2342
+ | Name | Type | Description |
2343
+ | --- | --- | --- |
2344
+ | customer_id | string | Campo del body: customer_id |
2345
+ | subcustomer_id | string | Campo del body: subcustomer_id |
2346
+ | page | number | Campo del body: page |
2347
+ | limit | number | Campo del body: limit |
2348
+ | status | array | Campo del body: status |
2349
+
2350
+ ### `about_webhook_guide`
2141
2351
 
2142
2352
  Guía para implementar webhooks del lado del cliente para recibir notificaciones de pagos y reembolsos
2143
2353
 
2144
- **📋 IMPORTANTE: Implementación de Webhooks del Cliente Requerida**
2354
+ **⚠️ ESTE ITEM NO ES UN ENDPOINT EJECUTABLE DE LA API.**
2355
+
2356
+ Es una referencia informativa para integradores. La URL `about:client-webhook-guide` se usa a propósito para evitar que Postman lo ejecute como request HTTP del microservicio (no generará 404 contra el API). El contenido debe leerse solo como guía.
2357
+
2358
+ ---
2359
+
2360
+ **📋 IMPORTANTE: Implementación de Webhooks del Cliente Requerida**
2145
2361
 
2146
2362
  Este NO es un endpoint de la API, sino una guía para implementar webhooks en TU sistema.
2147
2363