C
Cotizera Docs

API de Plantillas

API de Plantillas

Las plantillas son cotizaciones pre-configuradas que puedes reutilizar para crear cotizaciones nuevas al instante. Cada plantilla incluye productos, notas, costo de envío y moneda.

Lectura: cualquier usuario autenticado con tenant. Escritura: requiere plan PRO y permiso config:manage (solo Owner).


Listar Plantillas

GET /api/templates

Lista todas las plantillas activas del tenant, incluyendo el nombre del creador.

Respuesta 200 OK:

[
  {
    "id": "clxyz...",
    "tenantId": "...",
    "name": "Paquete Premium",
    "description": "Cotización estándar para clientes premium",
    "items": [
      {
        "productName": "Servicio de consultoría",
        "unitPrice": 5000,
        "quantity": 1,
        "discountPct": 0
      }
    ],
    "notes": "Incluye soporte prioritario",
    "shippingCost": 0,
    "currency": "MXN",
    "isActive": true,
    "createdAt": "2026-04-01T10:00:00.000Z",
    "updatedAt": "2026-04-01T10:00:00.000Z",
    "creator": {
      "name": "Juan García"
    }
  }
]

Crear Plantilla

POST /api/templates

Permiso: config:manage | Plan: PRO

Crea una nueva plantilla de cotización.

Cuerpo de la solicitud:

{
  "name": "Paquete Premium",
  "description": "Cotización estándar para clientes premium",
  "items": [
    {
      "productName": "Servicio de consultoría",
      "unitPrice": 5000,
      "quantity": 1,
      "discountPct": 0
    }
  ],
  "notes": "Incluye soporte prioritario",
  "shippingCost": 150,
  "currency": "MXN"
}
Campo Tipo Requerido Descripción
name string Nombre de la plantilla (1-100 caracteres)
description string No Descripción (máximo 500 caracteres)
items array Al menos un producto
notes string No Notas de la cotización (máximo 2,000 caracteres)
shippingCost number No Costo de envío (predeterminado: 0)
currency string No Código de moneda (predeterminado: "MXN", máximo 10 caracteres)

Respuesta 201 Created: Devuelve la plantilla creada.

Errores:

Status Error Cuando
400 Mensaje de validación Datos inválidos o faltantes
403 "Sin permisos" El usuario no tiene permiso config:manage
403 "Función disponible en plan PRO" El tenant tiene plan FREE

Obtener una Plantilla

GET /api/templates/:id

Obtiene una plantilla individual con el nombre del creador.

Respuesta 200 OK: Devuelve el objeto de plantilla.

Errores:

Status Error Cuando
404 "Plantilla no encontrada" No se encontró la plantilla en el tenant

Actualizar Plantilla

PATCH /api/templates/:id

Permiso: config:manage | Plan: PRO

Actualiza una plantilla existente. Todos los campos son opcionales.

Cuerpo de la solicitud:

{
  "name": "Paquete Premium v2",
  "items": [
    {
      "productName": "Servicio de consultoría",
      "unitPrice": 6000,
      "quantity": 1,
      "discountPct": 10
    }
  ]
}

Respuesta 200 OK: Devuelve la plantilla actualizada.


Eliminar Plantilla

DELETE /api/templates/:id

Permiso: config:manage

Desactiva una plantilla (eliminación lógica — establece isActive en false). La plantilla deja de aparecer en las listas pero no se elimina de la base de datos.

Respuesta 200 OK:

{
  "ok": true
}

Uso con Zapier

Las plantillas se integran con Zapier a través de dos endpoints adicionales:

  • Crear cotización desde plantilla: POST /api/zapier/actions/create-from-template — crea una cotización usando los productos y configuración de una plantilla
  • Listar plantillas: GET /api/zapier/actions/list-templates — devuelve las plantillas disponibles para el dropdown dinámico en Zapier

Consulta la guía de Zapier para más detalles.

© 2026 Cotizera. All rights reserved.