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 +262 -46
- package/dist/core/resources.js +82 -19
- package/dist/core/resources.js.map +1 -1
- package/dist/core/tools.d.ts +9 -1
- package/dist/core/tools.js +776 -86
- package/dist/core/tools.js.map +1 -1
- package/dist/index.js +2 -2
- package/package.json +1 -1
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
|
-
- **
|
|
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
|
-
### `
|
|
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 |
|
|
617
|
-
| limit | number |
|
|
618
|
-
| offset | number |
|
|
619
|
-
| searchText | string |
|
|
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 |
|
|
763
|
-
| id | number |
|
|
764
|
-
| amount | null |
|
|
765
|
-
| data | object |
|
|
766
|
-
| query_type | null |
|
|
767
|
-
| sell_type | string |
|
|
768
|
-
| agreement | string |
|
|
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`**:
|
|
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):
|
|
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 |
|
|
1158
|
-
| id | number |
|
|
1159
|
-
| amount | null |
|
|
1160
|
-
| data | object |
|
|
1161
|
-
| query_type | string |
|
|
1162
|
-
| sell_type | string |
|
|
1163
|
-
| agreement | string |
|
|
1164
|
-
| customer_id | string |
|
|
1165
|
-
|
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
1702
|
+
- `returnUrl` (string, requerido): URL de retorno después del pago
|
|
1694
1703
|
|
|
1695
|
-
- `webhookUrl` (string,
|
|
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 |
|
|
1900
|
-
| id | number |
|
|
1901
|
-
| categoryid | number |
|
|
1902
|
-
| data | object |
|
|
1903
|
-
| returnUrl | string |
|
|
1904
|
-
| webhookUrl | string |
|
|
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 |
|
|
2136
|
-
| keyBreB | string |
|
|
2137
|
-
| email | string |
|
|
2138
|
-
| webhookUrl | string |
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|