@cgalaviz/easysell-mcp 0.4.0
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/LICENSE +21 -0
- package/README.md +256 -0
- package/dist/client.d.ts +53 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +372 -0
- package/dist/client.js.map +1 -0
- package/dist/main.d.ts +3 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +49 -0
- package/dist/main.js.map +1 -0
- package/dist/registry/audit.d.ts +3 -0
- package/dist/registry/audit.d.ts.map +1 -0
- package/dist/registry/audit.js +23 -0
- package/dist/registry/audit.js.map +1 -0
- package/dist/registry/binary-downloads.d.ts +3 -0
- package/dist/registry/binary-downloads.d.ts.map +1 -0
- package/dist/registry/binary-downloads.js +80 -0
- package/dist/registry/binary-downloads.js.map +1 -0
- package/dist/registry/canned-responses.d.ts +11 -0
- package/dist/registry/canned-responses.d.ts.map +1 -0
- package/dist/registry/canned-responses.js +54 -0
- package/dist/registry/canned-responses.js.map +1 -0
- package/dist/registry/catalog-images.d.ts +3 -0
- package/dist/registry/catalog-images.d.ts.map +1 -0
- package/dist/registry/catalog-images.js +48 -0
- package/dist/registry/catalog-images.js.map +1 -0
- package/dist/registry/catalog.d.ts +3 -0
- package/dist/registry/catalog.d.ts.map +1 -0
- package/dist/registry/catalog.js +156 -0
- package/dist/registry/catalog.js.map +1 -0
- package/dist/registry/conversations.d.ts +9 -0
- package/dist/registry/conversations.d.ts.map +1 -0
- package/dist/registry/conversations.js +246 -0
- package/dist/registry/conversations.js.map +1 -0
- package/dist/registry/customers.d.ts +3 -0
- package/dist/registry/customers.d.ts.map +1 -0
- package/dist/registry/customers.js +242 -0
- package/dist/registry/customers.js.map +1 -0
- package/dist/registry/iam.d.ts +3 -0
- package/dist/registry/iam.d.ts.map +1 -0
- package/dist/registry/iam.js +116 -0
- package/dist/registry/iam.js.map +1 -0
- package/dist/registry/index.d.ts +3 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +37 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/integrations.d.ts +3 -0
- package/dist/registry/integrations.d.ts.map +1 -0
- package/dist/registry/integrations.js +65 -0
- package/dist/registry/integrations.js.map +1 -0
- package/dist/registry/notifications.d.ts +3 -0
- package/dist/registry/notifications.d.ts.map +1 -0
- package/dist/registry/notifications.js +44 -0
- package/dist/registry/notifications.js.map +1 -0
- package/dist/registry/orders.d.ts +3 -0
- package/dist/registry/orders.d.ts.map +1 -0
- package/dist/registry/orders.js +134 -0
- package/dist/registry/orders.js.map +1 -0
- package/dist/registry/payments.d.ts +3 -0
- package/dist/registry/payments.d.ts.map +1 -0
- package/dist/registry/payments.js +39 -0
- package/dist/registry/payments.js.map +1 -0
- package/dist/registry/pricing.d.ts +3 -0
- package/dist/registry/pricing.d.ts.map +1 -0
- package/dist/registry/pricing.js +20 -0
- package/dist/registry/pricing.js.map +1 -0
- package/dist/registry/quotes.d.ts +19 -0
- package/dist/registry/quotes.d.ts.map +1 -0
- package/dist/registry/quotes.js +81 -0
- package/dist/registry/quotes.js.map +1 -0
- package/dist/registry/reports.d.ts +3 -0
- package/dist/registry/reports.d.ts.map +1 -0
- package/dist/registry/reports.js +33 -0
- package/dist/registry/reports.js.map +1 -0
- package/dist/registry/shipping.d.ts +3 -0
- package/dist/registry/shipping.d.ts.map +1 -0
- package/dist/registry/shipping.js +85 -0
- package/dist/registry/shipping.js.map +1 -0
- package/dist/registry/super-admin.d.ts +11 -0
- package/dist/registry/super-admin.d.ts.map +1 -0
- package/dist/registry/super-admin.js +222 -0
- package/dist/registry/super-admin.js.map +1 -0
- package/dist/registry/tenants.d.ts +13 -0
- package/dist/registry/tenants.d.ts.map +1 -0
- package/dist/registry/tenants.js +78 -0
- package/dist/registry/tenants.js.map +1 -0
- package/dist/registry/types.d.ts +67 -0
- package/dist/registry/types.d.ts.map +1 -0
- package/dist/registry/types.js +10 -0
- package/dist/registry/types.js.map +1 -0
- package/dist/registry/uploads.d.ts +3 -0
- package/dist/registry/uploads.d.ts.map +1 -0
- package/dist/registry/uploads.js +86 -0
- package/dist/registry/uploads.js.map +1 -0
- package/dist/registry/usage.d.ts +9 -0
- package/dist/registry/usage.d.ts.map +1 -0
- package/dist/registry/usage.js +33 -0
- package/dist/registry/usage.js.map +1 -0
- package/dist/tools.d.ts +8 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +150 -0
- package/dist/tools.js.map +1 -0
- package/package.json +41 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Respuestas predeterminadas (`/tenants/me/canned-responses`): atajos de
|
|
3
|
+
* texto que los agentes humanos pueden insertar con un shortcut. Es la
|
|
4
|
+
* configuración operativa principal de cualquier equipo de WhatsApp.
|
|
5
|
+
*
|
|
6
|
+
* El backend declara `chat.read` para listar y `chat.write` para el resto
|
|
7
|
+
* (mismo criterio que conversaciones: leer no requiere scope de escritura).
|
|
8
|
+
*/
|
|
9
|
+
export const cannedResponseRoutes = [
|
|
10
|
+
{
|
|
11
|
+
name: "canned_responses_list",
|
|
12
|
+
method: "GET",
|
|
13
|
+
path: "/tenants/me/canned-responses",
|
|
14
|
+
description: "Lista las respuestas predeterminadas del tenant (atajos de texto con shortcut). " +
|
|
15
|
+
"Máximo 200. Filtra por texto con q.",
|
|
16
|
+
scopes: ["chat.read"],
|
|
17
|
+
query: { q: { type: "string" } },
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: "canned_responses_create",
|
|
21
|
+
method: "POST",
|
|
22
|
+
path: "/tenants/me/canned-responses",
|
|
23
|
+
description: "Crea una respuesta predeterminada nueva con shortcut, título y cuerpo.",
|
|
24
|
+
scopes: ["chat.write"],
|
|
25
|
+
body: {
|
|
26
|
+
shortcut: { type: "string", required: true, description: "Atajo, p. ej. \"/hola\" o \"/pedido\"." },
|
|
27
|
+
title: { type: "string", required: true },
|
|
28
|
+
body: { type: "string", required: true, description: "Texto que se inserta al usar el shortcut." },
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: "canned_responses_update",
|
|
33
|
+
method: "PATCH",
|
|
34
|
+
path: "/tenants/me/canned-responses/:id",
|
|
35
|
+
description: "Actualiza una respuesta predeterminada (todos los campos opcionales — solo se actualiza lo enviado).",
|
|
36
|
+
scopes: ["chat.write"],
|
|
37
|
+
pathParams: { id: { type: "string" } },
|
|
38
|
+
body: {
|
|
39
|
+
shortcut: { type: "string" },
|
|
40
|
+
title: { type: "string" },
|
|
41
|
+
body: { type: "string" },
|
|
42
|
+
},
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: "canned_responses_delete",
|
|
46
|
+
method: "DELETE",
|
|
47
|
+
path: "/tenants/me/canned-responses/:id",
|
|
48
|
+
description: "Borra una respuesta predeterminada.",
|
|
49
|
+
scopes: ["chat.write"],
|
|
50
|
+
destructiveHint: true,
|
|
51
|
+
pathParams: { id: { type: "string" } },
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
//# sourceMappingURL=canned-responses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canned-responses.js","sourceRoot":"","sources":["../../src/registry/canned-responses.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAe;IAC9C;QACE,IAAI,EAAE,uBAAuB;QAC7B,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,8BAA8B;QACpC,WAAW,EACT,kFAAkF;YAClF,qCAAqC;QACvC,MAAM,EAAE,CAAC,WAAW,CAAC;QACrB,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;KACjC;IACD;QACE,IAAI,EAAE,yBAAyB;QAC/B,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,wEAAwE;QACrF,MAAM,EAAE,CAAC,YAAY,CAAC;QACtB,IAAI,EAAE;YACJ,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,wCAAwC,EAAE;YACnG,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;YACzC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,2CAA2C,EAAE;SACnG;KACF;IACD;QACE,IAAI,EAAE,yBAAyB;QAC/B,MAAM,EAAE,OAAO;QACf,IAAI,EAAE,kCAAkC;QACxC,WAAW,EAAE,sGAAsG;QACnH,MAAM,EAAE,CAAC,YAAY,CAAC;QACtB,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QACtC,IAAI,EAAE;YACJ,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SACzB;KACF;IACD;QACE,IAAI,EAAE,yBAAyB;QAC/B,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,kCAAkC;QACxC,WAAW,EAAE,qCAAqC;QAClD,MAAM,EAAE,CAAC,YAAY,CAAC;QACtB,eAAe,EAAE,IAAI;QACrB,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;KACvC;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-images.d.ts","sourceRoot":"","sources":["../../src/registry/catalog-images.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwCjE"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subida de fotos de catálogo (producto y variante): las únicas dos rutas
|
|
3
|
+
* multipart del API. No encajan en el DSL declarativo de `types.ts`
|
|
4
|
+
* (pensado para JSON), así que se registran a mano aquí con `apiUpload`.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { apiUpload } from "../client.js";
|
|
8
|
+
const imageInputShape = {
|
|
9
|
+
id: z.string().describe("id del producto o de la variante"),
|
|
10
|
+
imageBase64: z.string().describe("Contenido de la imagen codificado en base64 (sin el prefijo data:...;base64,)."),
|
|
11
|
+
filename: z.string().describe("Nombre de archivo, p. ej. \"frente.jpg\"."),
|
|
12
|
+
mimeType: z.string().describe("image/png, image/jpeg o image/webp."),
|
|
13
|
+
};
|
|
14
|
+
const IMAGE_RULES = "PNG, JPG o WebP, máximo 5 MB, entre 200×200 y 6000×6000 px, sin animación. " +
|
|
15
|
+
"Se puede llamar varias veces: cada llamada agrega una foto más a la galería, no reemplaza las anteriores.";
|
|
16
|
+
export function registerCatalogImageTools(server) {
|
|
17
|
+
server.registerTool("catalog_add_product_image", {
|
|
18
|
+
description: `Sube una foto general de un producto (portada de su galería). ${IMAGE_RULES} Requiere scope: catalog.write.`,
|
|
19
|
+
inputSchema: imageInputShape,
|
|
20
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
|
|
21
|
+
}, async ({ id, imageBase64, filename, mimeType }) => {
|
|
22
|
+
const result = await apiUpload(`/catalog/products/${encodeURIComponent(id)}/images`, {
|
|
23
|
+
base64: imageBase64,
|
|
24
|
+
filename,
|
|
25
|
+
mimeType,
|
|
26
|
+
});
|
|
27
|
+
return {
|
|
28
|
+
isError: !result.ok,
|
|
29
|
+
content: [{ type: "text", text: JSON.stringify({ status: result.status, data: result.data }, null, 2) }],
|
|
30
|
+
};
|
|
31
|
+
});
|
|
32
|
+
server.registerTool("catalog_add_variant_image", {
|
|
33
|
+
description: `Sube una foto propia de una variante (p. ej. un color distinto al del producto). ${IMAGE_RULES} Requiere scope: catalog.write.`,
|
|
34
|
+
inputSchema: imageInputShape,
|
|
35
|
+
annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
|
|
36
|
+
}, async ({ id, imageBase64, filename, mimeType }) => {
|
|
37
|
+
const result = await apiUpload(`/catalog/variants/${encodeURIComponent(id)}/images`, {
|
|
38
|
+
base64: imageBase64,
|
|
39
|
+
filename,
|
|
40
|
+
mimeType,
|
|
41
|
+
});
|
|
42
|
+
return {
|
|
43
|
+
isError: !result.ok,
|
|
44
|
+
content: [{ type: "text", text: JSON.stringify({ status: result.status, data: result.data }, null, 2) }],
|
|
45
|
+
};
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=catalog-images.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-images.js","sourceRoot":"","sources":["../../src/registry/catalog-images.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,eAAe,GAAG;IACtB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;IAC3D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gFAAgF,CAAC;IAClH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;IAC1E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;CACrE,CAAC;AAEF,MAAM,WAAW,GACf,6EAA6E;IAC7E,2GAA2G,CAAC;AAE9G,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,WAAW,EAAE,iEAAiE,WAAW,iCAAiC;QAC1H,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;KACzG,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;QAChD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,qBAAqB,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE;YACnF,MAAM,EAAE,WAAW;YACnB,QAAQ;YACR,QAAQ;SACT,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE;YACnB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SACzG,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,WAAW,EAAE,oFAAoF,WAAW,iCAAiC;QAC7I,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE;KACzG,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;QAChD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,qBAAqB,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE;YACnF,MAAM,EAAE,WAAW;YACnB,QAAQ;YACR,QAAQ;SACT,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE;YACnB,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;SACzG,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/registry/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAa3C,eAAO,MAAM,aAAa,EAAE,QAAQ,EAoJnC,CAAC"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
const variantFields = {
|
|
2
|
+
sku: { type: "string", required: true, description: "Único por producto. Letras, números, punto, guion y guion bajo." },
|
|
3
|
+
title: { type: "string", required: true },
|
|
4
|
+
price: { type: "string", required: true, description: "Formato NN.NN, p. ej. \"149.00\"." },
|
|
5
|
+
satProductCode: { type: "string", description: "8 dígitos (clave de producto SAT)." },
|
|
6
|
+
satUnitCode: { type: "string", description: "Clave de unidad SAT, p. ej. \"H87\"." },
|
|
7
|
+
stock: { type: "string", description: "Existencia inicial (hasta 3 decimales). Ausente = sin control de inventario (EXTERNAL)." },
|
|
8
|
+
originSystem: { type: "string", description: "Sistema de origen (ecommerce/ERP), si el producto viene de una integración." },
|
|
9
|
+
originExternalId: { type: "string", description: "ID de este producto/variante en el sistema de origen." },
|
|
10
|
+
};
|
|
11
|
+
export const catalogRoutes = [
|
|
12
|
+
{
|
|
13
|
+
name: "catalog_list_products",
|
|
14
|
+
method: "GET",
|
|
15
|
+
path: "/catalog/products",
|
|
16
|
+
description: "Lista productos del catálogo del tenant, paginado por cursor. Cada producto trae sus variantes.",
|
|
17
|
+
scopes: ["catalog.read"],
|
|
18
|
+
query: {
|
|
19
|
+
q: { type: "string", description: "Búsqueda por título, SKU o sinónimo." },
|
|
20
|
+
status: { type: "string", enum: ["DRAFT", "ACTIVE", "ARCHIVED"] },
|
|
21
|
+
cursor: { type: "string", description: "pageInfo.nextCursor de la respuesta anterior." },
|
|
22
|
+
limit: { type: "number", description: "Máximo por página (el backend lo topa a 100)." },
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: "catalog_get_product",
|
|
27
|
+
method: "GET",
|
|
28
|
+
path: "/catalog/products/:id",
|
|
29
|
+
description: "Detalle de un producto por id, con todas sus variantes.",
|
|
30
|
+
scopes: ["catalog.read"],
|
|
31
|
+
pathParams: { id: { type: "string" } },
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: "catalog_create_product",
|
|
35
|
+
method: "POST",
|
|
36
|
+
path: "/catalog/products",
|
|
37
|
+
description: "Crea un producto con al menos una variante.",
|
|
38
|
+
scopes: ["catalog.write"],
|
|
39
|
+
body: {
|
|
40
|
+
sku: { type: "string", required: true },
|
|
41
|
+
title: { type: "string", required: true },
|
|
42
|
+
description: { type: "string" },
|
|
43
|
+
tags: { type: "array", items: { type: "string" } },
|
|
44
|
+
synonyms: { type: "array", items: { type: "string" } },
|
|
45
|
+
satProductCode: { type: "string", description: "8 dígitos." },
|
|
46
|
+
satUnitCode: { type: "string" },
|
|
47
|
+
variants: {
|
|
48
|
+
type: "array",
|
|
49
|
+
required: true,
|
|
50
|
+
description: "Al menos una variante.",
|
|
51
|
+
items: { type: "object", fields: variantFields },
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
name: "catalog_update_product",
|
|
57
|
+
method: "PATCH",
|
|
58
|
+
path: "/catalog/products/:id",
|
|
59
|
+
description: "Actualiza campos de un producto (no sus variantes). Control de concurrencia optimista por expectedVersion.",
|
|
60
|
+
scopes: ["catalog.write"],
|
|
61
|
+
pathParams: { id: { type: "string" } },
|
|
62
|
+
body: {
|
|
63
|
+
expectedVersion: { type: "number", required: true, description: "Versión que el cliente cree tener; si no coincide, 409." },
|
|
64
|
+
title: { type: "string" },
|
|
65
|
+
description: { type: "string" },
|
|
66
|
+
tags: { type: "array", items: { type: "string" } },
|
|
67
|
+
synonyms: { type: "array", items: { type: "string" } },
|
|
68
|
+
status: { type: "string", enum: ["DRAFT", "ACTIVE", "ARCHIVED"] },
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: "catalog_add_variant",
|
|
73
|
+
method: "POST",
|
|
74
|
+
path: "/catalog/products/:id/variants",
|
|
75
|
+
description: "Agrega una variante nueva a un producto existente. El `sku` debe ser único por producto " +
|
|
76
|
+
"(el backend rechaza 409 si ya existe otra variante del mismo producto con ese sku).",
|
|
77
|
+
scopes: ["catalog.write"],
|
|
78
|
+
pathParams: { id: { type: "string", description: "id del producto" } },
|
|
79
|
+
body: variantFields,
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: "catalog_update_variant",
|
|
83
|
+
method: "PATCH",
|
|
84
|
+
path: "/catalog/variants/:id",
|
|
85
|
+
description: "Actualiza una variante. Control de concurrencia optimista por expectedVersion. " +
|
|
86
|
+
"Limitación: desde esta tool no se puede poner stock/originSystem/originExternalId en null " +
|
|
87
|
+
"(quitar el dato); usa el panel para eso.",
|
|
88
|
+
scopes: ["catalog.write"],
|
|
89
|
+
pathParams: { id: { type: "string" } },
|
|
90
|
+
body: {
|
|
91
|
+
expectedVersion: { type: "number", required: true },
|
|
92
|
+
title: { type: "string" },
|
|
93
|
+
price: { type: "string", description: "Formato NN.NN." },
|
|
94
|
+
stock: { type: "string", description: "Existencia exacta (hasta 3 decimales)." },
|
|
95
|
+
satProductCode: { type: "string" },
|
|
96
|
+
satUnitCode: { type: "string" },
|
|
97
|
+
status: { type: "string", enum: ["DRAFT", "ACTIVE", "ARCHIVED"] },
|
|
98
|
+
originSystem: { type: "string" },
|
|
99
|
+
originExternalId: { type: "string" },
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: "catalog_delete_image",
|
|
104
|
+
method: "DELETE",
|
|
105
|
+
path: "/catalog/images/:id",
|
|
106
|
+
description: "Borra una foto de producto o de variante por id de imagen.",
|
|
107
|
+
scopes: ["catalog.write"],
|
|
108
|
+
pathParams: { id: { type: "string" } },
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
name: "catalog_dry_run_import",
|
|
112
|
+
method: "POST",
|
|
113
|
+
path: "/catalog/imports/dry-run",
|
|
114
|
+
description: "Valida (sin guardar nada) un lote de filas crudas de importación de catálogo, columna→valor tal cual vendrían de un CSV. " +
|
|
115
|
+
"Devuelve por fila qué se crearía/actualizaría y qué errores tiene. Máximo 10 000 filas.",
|
|
116
|
+
scopes: ["catalog.write"],
|
|
117
|
+
body: {
|
|
118
|
+
rows: {
|
|
119
|
+
type: "array",
|
|
120
|
+
required: true,
|
|
121
|
+
description: "Cada fila es un objeto plano string→string (columna del CSV → valor).",
|
|
122
|
+
items: { type: "any" },
|
|
123
|
+
},
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
name: "catalog_commit_import",
|
|
128
|
+
method: "POST",
|
|
129
|
+
path: "/catalog/imports/commit",
|
|
130
|
+
description: "Aplica de verdad un lote de importación (crea o actualiza productos/variantes), tras revisar con " +
|
|
131
|
+
"catalog_dry_run_import. Mismo formato de filas que el dry-run. Cada fila es un producto con UNA " +
|
|
132
|
+
"sola variante (mismo sku/title para ambos): si el sku ya existe se actualiza esa variante, si no " +
|
|
133
|
+
"se crea un producto nuevo. No hay forma de mapear varias filas a un mismo producto multi-variante " +
|
|
134
|
+
"desde aquí — para eso usa catalog_add_variant después. Procesa fila por fila: una fila con error no " +
|
|
135
|
+
"detiene las demás. Máximo 10 000 filas.",
|
|
136
|
+
scopes: ["catalog.write"],
|
|
137
|
+
destructiveHint: true,
|
|
138
|
+
body: {
|
|
139
|
+
rows: {
|
|
140
|
+
type: "array",
|
|
141
|
+
required: true,
|
|
142
|
+
description: "Cada fila es un objeto plano string→string (columna del CSV → valor): sku, title, price, satProductCode?, satUnitCode?.",
|
|
143
|
+
items: { type: "any" },
|
|
144
|
+
},
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
name: "catalog_archive_product",
|
|
149
|
+
method: "DELETE",
|
|
150
|
+
path: "/catalog/products/:id",
|
|
151
|
+
description: "Archiva un producto (borrado lógico: status pasa a ARCHIVED, no se elimina de la base).",
|
|
152
|
+
scopes: ["catalog.write"],
|
|
153
|
+
pathParams: { id: { type: "string" } },
|
|
154
|
+
},
|
|
155
|
+
];
|
|
156
|
+
//# sourceMappingURL=catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/registry/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { RouteDef } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Subset de negocio de whatsapp.controller.ts. Deliberadamente fuera:
|
|
4
|
+
* connect/disconnect/rotate-webhook-secret/webhook-url/health (alta y
|
|
5
|
+
* mantenimiento de la conexión, operativo de panel), evolution/* (onboarding
|
|
6
|
+
* por QR) y webhook/inbound/:tenantSlug (webhook público de Meta/Evolution).
|
|
7
|
+
*/
|
|
8
|
+
export declare const conversationRoutes: RouteDef[];
|
|
9
|
+
//# sourceMappingURL=conversations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../../src/registry/conversations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,EAmPxC,CAAC"}
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subset de negocio de whatsapp.controller.ts. Deliberadamente fuera:
|
|
3
|
+
* connect/disconnect/rotate-webhook-secret/webhook-url/health (alta y
|
|
4
|
+
* mantenimiento de la conexión, operativo de panel), evolution/* (onboarding
|
|
5
|
+
* por QR) y webhook/inbound/:tenantSlug (webhook público de Meta/Evolution).
|
|
6
|
+
*/
|
|
7
|
+
export const conversationRoutes = [
|
|
8
|
+
{
|
|
9
|
+
name: "conversations_list_connections",
|
|
10
|
+
method: "GET",
|
|
11
|
+
path: "/whatsapp/connections",
|
|
12
|
+
description: "Lista las conexiones de WhatsApp (Meta/Evolution) del tenant.",
|
|
13
|
+
scopes: ["chat.read"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
name: "conversations_list",
|
|
17
|
+
method: "GET",
|
|
18
|
+
path: "/whatsapp/conversations",
|
|
19
|
+
description: "Bandeja de conversaciones con filtros; incluye estadísticas globales del tenant (no afectadas por los filtros).",
|
|
20
|
+
scopes: ["chat.read"],
|
|
21
|
+
query: {
|
|
22
|
+
q: { type: "string" },
|
|
23
|
+
status: { type: "string", enum: ["OPEN", "HANDED_OFF", "CLOSED"] },
|
|
24
|
+
handoff: { type: "string", enum: ["agent", "human"] },
|
|
25
|
+
provider: { type: "string", enum: ["META", "EVOLUTION"] },
|
|
26
|
+
from: { type: "string", description: "Fecha ISO." },
|
|
27
|
+
to: { type: "string", description: "Fecha ISO." },
|
|
28
|
+
limit: { type: "number" },
|
|
29
|
+
tag: { type: "string" },
|
|
30
|
+
sort: { type: "string", enum: ["recent", "oldest"] },
|
|
31
|
+
assignee: { type: "string", description: "UUID del dueño del hilo, o \"unassigned\"." },
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "conversations_get_messages",
|
|
36
|
+
method: "GET",
|
|
37
|
+
path: "/whatsapp/conversations/:id/messages",
|
|
38
|
+
description: "Mensajes de una conversación.",
|
|
39
|
+
scopes: ["chat.read"],
|
|
40
|
+
pathParams: { id: { type: "string" } },
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: "conversations_get_context",
|
|
44
|
+
method: "GET",
|
|
45
|
+
path: "/whatsapp/conversations/:id/context",
|
|
46
|
+
description: "Contexto CRM completo del hilo en una sola lectura: ficha del cliente, gasto agregado, " +
|
|
47
|
+
"pedidos/cotizaciones/pagos recientes, notas internas y línea de tiempo fusionada.",
|
|
48
|
+
scopes: ["chat.read"],
|
|
49
|
+
pathParams: { id: { type: "string" } },
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: "conversations_update_status",
|
|
53
|
+
method: "PATCH",
|
|
54
|
+
path: "/whatsapp/conversations/:id/status",
|
|
55
|
+
description: "Cierra o reabre un hilo a mano.",
|
|
56
|
+
scopes: ["chat.write"],
|
|
57
|
+
pathParams: { id: { type: "string" } },
|
|
58
|
+
body: { status: { type: "string", required: true, enum: ["OPEN", "CLOSED"] } },
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: "conversations_set_priority",
|
|
62
|
+
method: "PATCH",
|
|
63
|
+
path: "/whatsapp/conversations/:id/priority",
|
|
64
|
+
description: "Cambia la prioridad operativa del hilo (LOW/NORMAL/HIGH/URGENT) para la cola de atención.",
|
|
65
|
+
scopes: ["chat.write"],
|
|
66
|
+
pathParams: { id: { type: "string" } },
|
|
67
|
+
body: { priority: { type: "string", required: true, enum: ["LOW", "NORMAL", "HIGH", "URGENT"] } },
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
name: "conversations_set_pending",
|
|
71
|
+
method: "PATCH",
|
|
72
|
+
path: "/whatsapp/conversations/:id/pending",
|
|
73
|
+
description: "Marca/desmarca el hilo como pendiente de seguimiento humano (no afecta el handoff al bot). " +
|
|
74
|
+
"Útil para colas internas: el agente marca que va a volver a contactar y evita que el hilo se olvide.",
|
|
75
|
+
scopes: ["chat.write"],
|
|
76
|
+
pathParams: { id: { type: "string" } },
|
|
77
|
+
body: { pending: { type: "boolean", required: true } },
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
name: "conversations_bulk",
|
|
81
|
+
method: "POST",
|
|
82
|
+
path: "/whatsapp/conversations/bulk",
|
|
83
|
+
description: "Aplica una acción masiva a hasta 100 hilos a la vez: cerrar, reabrir, asignar, etiquetar, " +
|
|
84
|
+
"cambiar prioridad o marcar pendiente. action define cuál se aplica y los campos extra " +
|
|
85
|
+
"(userId/tags/priority/...) solo aplican a las acciones que los usen.",
|
|
86
|
+
scopes: ["chat.write"],
|
|
87
|
+
body: {
|
|
88
|
+
ids: { type: "array", required: true, items: { type: "string" }, description: "Hasta 100 UUIDs." },
|
|
89
|
+
action: {
|
|
90
|
+
type: "string",
|
|
91
|
+
required: true,
|
|
92
|
+
enum: ["close", "reopen", "assign", "set_tags", "set_priority", "set_pending", "release"],
|
|
93
|
+
},
|
|
94
|
+
userId: { type: "string", description: "Requerido si action es assign." },
|
|
95
|
+
tags: { type: "array", items: { type: "string" }, description: "Requerido si action es set_tags (reemplaza)." },
|
|
96
|
+
priority: { type: "string", enum: ["LOW", "NORMAL", "HIGH", "URGENT"], description: "Requerido si action es set_priority." },
|
|
97
|
+
pending: { type: "boolean", description: "Requerido si action es set_pending." },
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
name: "conversations_list_agents",
|
|
102
|
+
method: "GET",
|
|
103
|
+
path: "/whatsapp/agents",
|
|
104
|
+
description: "Personas activas como agente de WhatsApp y cuántos hilos llevan ahora.",
|
|
105
|
+
scopes: ["chat.read"],
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
name: "conversations_get_message_notes",
|
|
109
|
+
method: "GET",
|
|
110
|
+
path: "/whatsapp/messages/:id/notes",
|
|
111
|
+
description: "Notas internas puestas sobre un mensaje puntual.",
|
|
112
|
+
scopes: ["chat.read"],
|
|
113
|
+
pathParams: { id: { type: "string" } },
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
name: "conversations_add_message_note",
|
|
117
|
+
method: "POST",
|
|
118
|
+
path: "/whatsapp/messages/:id/notes",
|
|
119
|
+
description: "Agrega una nota interna a un mensaje puntual (no la ve el cliente).",
|
|
120
|
+
scopes: ["chat.write"],
|
|
121
|
+
pathParams: { id: { type: "string" } },
|
|
122
|
+
body: { body: { type: "string", required: true } },
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
name: "conversations_update_customer",
|
|
126
|
+
method: "PATCH",
|
|
127
|
+
path: "/whatsapp/conversations/:id/customer",
|
|
128
|
+
description: "Vincula el hilo a una ficha de cliente existente.",
|
|
129
|
+
scopes: ["chat.write"],
|
|
130
|
+
pathParams: { id: { type: "string" } },
|
|
131
|
+
body: { customerId: { type: "string", required: true } },
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
name: "conversations_update_tags",
|
|
135
|
+
method: "PATCH",
|
|
136
|
+
path: "/whatsapp/conversations/:id/tags",
|
|
137
|
+
description: "Reemplaza las etiquetas de una conversación.",
|
|
138
|
+
scopes: ["chat.write"],
|
|
139
|
+
pathParams: { id: { type: "string" } },
|
|
140
|
+
body: { tags: { type: "array", required: true, items: { type: "string" } } },
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
name: "conversations_claim",
|
|
144
|
+
method: "POST",
|
|
145
|
+
path: "/whatsapp/conversations/:id/claim",
|
|
146
|
+
description: "Un agente humano toma un hilo de la cola sin asignar. Requiere sesión de usuario del portal " +
|
|
147
|
+
"(el backend rechaza esto sin RequestContext.userId): una API key sola no basta aunque tenga chat.write.",
|
|
148
|
+
scopes: ["chat.write"],
|
|
149
|
+
pathParams: { id: { type: "string" } },
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
name: "conversations_send_quote",
|
|
153
|
+
method: "POST",
|
|
154
|
+
path: "/whatsapp/conversations/:id/send-quote",
|
|
155
|
+
description: "Manda un link de cotización (o cualquier texto) al hilo, aunque siga en manos del agente automático.",
|
|
156
|
+
scopes: ["chat.write"],
|
|
157
|
+
destructiveHint: true,
|
|
158
|
+
pathParams: { id: { type: "string" } },
|
|
159
|
+
body: { body: { type: "string", required: true } },
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
name: "conversations_send",
|
|
163
|
+
method: "POST",
|
|
164
|
+
path: "/whatsapp/send",
|
|
165
|
+
description: "Manda un mensaje saliente de WhatsApp a un número, sin necesidad de un hilo existente.",
|
|
166
|
+
scopes: ["chat.write"],
|
|
167
|
+
destructiveHint: true,
|
|
168
|
+
body: {
|
|
169
|
+
to: { type: "string", required: true, description: "Número en formato internacional, p. ej. +5216671234567." },
|
|
170
|
+
type: { type: "string", required: true, enum: ["text", "template", "image", "audio"] },
|
|
171
|
+
body: { type: "string", required: true, description: "Texto del mensaje (o caption, según type)." },
|
|
172
|
+
templateName: { type: "string", description: "Requerido si type es \"template\"." },
|
|
173
|
+
mediaUrl: { type: "string", description: "Requerido si type es \"image\" o \"audio\"." },
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
name: "conversations_handoff",
|
|
178
|
+
method: "POST",
|
|
179
|
+
path: "/whatsapp/conversations/:id/handoff",
|
|
180
|
+
description: "Transfiere el hilo del agente automático a una persona del equipo.",
|
|
181
|
+
scopes: ["chat.write"],
|
|
182
|
+
pathParams: { id: { type: "string" } },
|
|
183
|
+
body: { userId: { type: "string", required: true, description: "id de la persona que recibe el hilo." } },
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
name: "conversations_reply",
|
|
187
|
+
method: "POST",
|
|
188
|
+
path: "/whatsapp/conversations/:id/reply",
|
|
189
|
+
description: "Responde en un hilo ya transferido a una persona (atención humana).",
|
|
190
|
+
scopes: ["chat.write"],
|
|
191
|
+
destructiveHint: true,
|
|
192
|
+
pathParams: { id: { type: "string" } },
|
|
193
|
+
body: { body: { type: "string", required: true } },
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
name: "conversations_send_attachment",
|
|
197
|
+
method: "POST",
|
|
198
|
+
path: "/whatsapp/conversations/:id/attachments",
|
|
199
|
+
description: "Manda un archivo adjunto (imagen, audio, documento) al cliente, codificado en base64.",
|
|
200
|
+
scopes: ["chat.write"],
|
|
201
|
+
destructiveHint: true,
|
|
202
|
+
pathParams: { id: { type: "string" } },
|
|
203
|
+
body: {
|
|
204
|
+
filename: { type: "string", required: true },
|
|
205
|
+
mimetype: { type: "string", required: true },
|
|
206
|
+
base64: { type: "string", required: true, description: "Contenido del archivo en base64." },
|
|
207
|
+
caption: { type: "string" },
|
|
208
|
+
},
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
name: "conversations_get_notes",
|
|
212
|
+
method: "GET",
|
|
213
|
+
path: "/whatsapp/conversations/:id/notes",
|
|
214
|
+
description: "Notas internas de la conversación completa (no de un mensaje puntual).",
|
|
215
|
+
scopes: ["chat.read"],
|
|
216
|
+
pathParams: { id: { type: "string" } },
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
name: "conversations_add_note",
|
|
220
|
+
method: "POST",
|
|
221
|
+
path: "/whatsapp/conversations/:id/notes",
|
|
222
|
+
description: "Agrega una nota interna a la conversación.",
|
|
223
|
+
scopes: ["chat.write"],
|
|
224
|
+
pathParams: { id: { type: "string" } },
|
|
225
|
+
body: { body: { type: "string", required: true } },
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
name: "conversations_return_to_agent",
|
|
229
|
+
method: "POST",
|
|
230
|
+
path: "/whatsapp/conversations/:id/return",
|
|
231
|
+
description: "Devuelve al agente automático un hilo que estaba en manos de una persona.",
|
|
232
|
+
scopes: ["chat.write"],
|
|
233
|
+
pathParams: { id: { type: "string" } },
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
name: "conversations_release",
|
|
237
|
+
method: "POST",
|
|
238
|
+
path: "/whatsapp/conversations/:id/release",
|
|
239
|
+
description: "Libera un hilo a la cola de \"sin asignar\". Complementa `conversations_return_to_agent`: " +
|
|
240
|
+
"este NO devuelve el hilo al bot, solo lo quita del dueño actual para que cualquier " +
|
|
241
|
+
"humano pueda tomarlo con `conversations_claim`.",
|
|
242
|
+
scopes: ["chat.write"],
|
|
243
|
+
pathParams: { id: { type: "string" } },
|
|
244
|
+
},
|
|
245
|
+
];
|
|
246
|
+
//# sourceMappingURL=conversations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversations.js","sourceRoot":"","sources":["../../src/registry/conversations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"customers.d.ts","sourceRoot":"","sources":["../../src/registry/customers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAa3C,eAAO,MAAM,cAAc,EAAE,QAAQ,EAwOpC,CAAC"}
|