Cotizaciones

Referencia de 17 endpoints generados desde mosend-wb-backend/src/modules/cotizaciones/cotizaciones.controller.ts.

Base path: /organizations/:orgId/cotizaciones·17 endpoints·Source: mosend-wb-backend/src/modules/cotizaciones/cotizaciones.controller.ts
GET/organizations/:orgId/cotizaciones/disponibilidad
bearer

Si el plan incluye cotizaciones y si el PDF sale sin la marca de agua.

Path params

  • orgIdstringrequerido

Respuestas

  • 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/cotizaciones/disponibilidad' \
  -H 'X-Api-Key: mk_live_<prefix>.<secret>'
Response · 200
{
  "data": {
    "id": "00000000-0000-0000-0000-000000000000",
    "createdAt": "2026-05-01T03:42:18.123Z"
  },
  "timestamp": "2026-05-01T03:42:18.123Z"
}
GET/organizations/:orgId/cotizaciones/empresas
bearer

Empresas con las que puede salir una cotización (la organización y cada marca), si ya tienen datos de emisor y cuál se propone para la conversación.

Path params

  • orgIdstringrequerido

Query params

  • conversationIdstring
  • contactIdstring

Respuestas

  • 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/cotizaciones/empresas' \
  -H 'X-Api-Key: mk_live_<prefix>.<secret>'
Response · 200
{
  "data": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "createdAt": "2026-05-01T03:42:18.123Z"
    }
  ],
  "timestamp": "2026-05-01T03:42:18.123Z"
}
GET/organizations/:orgId/cotizaciones
bearer

Cotizaciones de la organización, de un contacto o de una conversación.

Path params

  • orgIdstringrequerido

Query params

  • contactIdstring
  • conversationIdstring
  • estadostring
    BORRADORENVIADAACEPTADARECHAZADAVENCIDACONVERTIDA
  • empresastring

    Empresa que emitió: su id, u `ORGANIZACION` para las que salieron sin empresa (los datos de la organización).

Respuestas

  • 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/cotizaciones' \
  -H 'X-Api-Key: mk_live_<prefix>.<secret>'
Response · 200
{
  "data": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "createdAt": "2026-05-01T03:42:18.123Z"
    }
  ],
  "timestamp": "2026-05-01T03:42:18.123Z"
}
POST/organizations/:orgId/cotizaciones
bearer

Crea una cotización en borrador.

Path params

  • orgIdstringrequerido

Body (JSON)

  • contactIdstring · uuid
  • conversationIdstring · uuid
  • billingProfileIdstring · uuid

    Perfil de facturación del cliente («facturar a»), si lo hay.

  • perfilDeCobroIdstring · uuid

    Empresa que emite (una marca de la organización). `null` = los datos de la organización. Sin el campo: al crear, la marca del número de la conversación; al editar, la que ya tenía.

  • empresaIdstring · uuid

    Empresa que emite (Configuración → Empresas). Manda sobre `perfilDeCobroId`. `null` = los datos de la organización. Sin ninguno de los dos: al crear, la de la marca del número o la predeterminada; al editar, la que ya tenía.

  • monedastring
    COPUSDMXN
  • vigenciaDiasnumber

    Días de vigencia; null o 0 = sin vigencia.

  • clienteNombrestring
  • clienteDocumentostring
  • clienteCorreostring · email
  • clienteTelefonostring
  • clienteDireccionstring
  • formasDePagostring
  • condicionesstring
  • notasstring
  • lineasLineaDeCotizacionDto[]requerido

Respuestas

  • 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/cotizaciones' \
  -H 'X-Api-Key: mk_live_<prefix>.<secret>' \
  -H 'Content-Type: application/json' \
  -d '{"contactId": "00000000-0000-0000-0000-000000000000","conversationId": "00000000-0000-0000-0000-000000000000","billingProfileId": "00000000-0000-0000-0000-000000000000","perfilDeCobroId": "00000000-0000-0000-0000-000000000000","empresaId": "00000000-0000-0000-0000-000000000000","moneda": "COP","vigenciaDias": 0,"clienteNombre": "<clienteNombre>","clienteDocumento": "<clienteDocumento>","clienteCorreo": "persona@empresa.com","clienteTelefono": "<clienteTelefono>","clienteDireccion": "<clienteDireccion>","formasDePago": "<formasDePago>","condiciones": "<condiciones>","notas": "<notas>","lineas": []}'
Response · 200
{
  "data": {
    "id": "00000000-0000-0000-0000-000000000000",
    "name": "string",
    "description": "string"
  },
  "timestamp": "2026-05-01T03:42:18.123Z"
}
GET/organizations/:orgId/cotizaciones/:id
bearer

Una cotización con sus líneas.

Path params

  • orgIdstringrequerido
  • idstringrequerido

Respuestas

  • 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/cotizaciones/00000000-0000-0000-0000-000000000000' \
  -H 'X-Api-Key: mk_live_<prefix>.<secret>'
Response · 200
{
  "data": {
    "id": "00000000-0000-0000-0000-000000000000",
    "createdAt": "2026-05-01T03:42:18.123Z"
  },
  "timestamp": "2026-05-01T03:42:18.123Z"
}
PUT/organizations/:orgId/cotizaciones/:id
bearer

Edita un borrador (una cotización enviada se duplica).

Path params

  • orgIdstringrequerido
  • idstringrequerido

Body (JSON)

  • contactIdstring · uuid
  • conversationIdstring · uuid
  • billingProfileIdstring · uuid

    Perfil de facturación del cliente («facturar a»), si lo hay.

  • perfilDeCobroIdstring · uuid

    Empresa que emite (una marca de la organización). `null` = los datos de la organización. Sin el campo: al crear, la marca del número de la conversación; al editar, la que ya tenía.

  • empresaIdstring · uuid

    Empresa que emite (Configuración → Empresas). Manda sobre `perfilDeCobroId`. `null` = los datos de la organización. Sin ninguno de los dos: al crear, la de la marca del número o la predeterminada; al editar, la que ya tenía.

  • monedastring
    COPUSDMXN
  • vigenciaDiasnumber

    Días de vigencia; null o 0 = sin vigencia.

  • clienteNombrestring
  • clienteDocumentostring
  • clienteCorreostring · email
  • clienteTelefonostring
  • clienteDireccionstring
  • formasDePagostring
  • condicionesstring
  • notasstring
  • lineasLineaDeCotizacionDto[]requerido

Respuestas

  • 200
curl -X PUT 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/cotizaciones/00000000-0000-0000-0000-000000000000' \
  -H 'X-Api-Key: mk_live_<prefix>.<secret>' \
  -H 'Content-Type: application/json' \
  -d '{"contactId": "00000000-0000-0000-0000-000000000000","conversationId": "00000000-0000-0000-0000-000000000000","billingProfileId": "00000000-0000-0000-0000-000000000000","perfilDeCobroId": "00000000-0000-0000-0000-000000000000","empresaId": "00000000-0000-0000-0000-000000000000","moneda": "COP","vigenciaDias": 0,"clienteNombre": "<clienteNombre>","clienteDocumento": "<clienteDocumento>","clienteCorreo": "persona@empresa.com","clienteTelefono": "<clienteTelefono>","clienteDireccion": "<clienteDireccion>","formasDePago": "<formasDePago>","condiciones": "<condiciones>","notas": "<notas>","lineas": []}'
Response · 200
{
  "data": {
    "id": "00000000-0000-0000-0000-000000000000",
    "name": "string",
    "description": "string"
  },
  "timestamp": "2026-05-01T03:42:18.123Z"
}
DELETE/organizations/:orgId/cotizaciones/:id
bearer

Borra un borrador.

Path params

  • orgIdstringrequerido
  • idstringrequerido

Respuestas

  • 200
curl -X DELETE 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/cotizaciones/00000000-0000-0000-0000-000000000000' \
  -H 'X-Api-Key: mk_live_<prefix>.<secret>'
Response · 200
{
  "data": {
    "id": "00000000-0000-0000-0000-000000000000",
    "createdAt": "2026-05-01T03:42:18.123Z"
  },
  "timestamp": "2026-05-01T03:42:18.123Z"
}
GET/organizations/:orgId/cotizaciones/:id/pdf
bearer

Descarga el PDF de la cotización.

Path params

  • orgIdstringrequerido
  • idstringrequerido

Respuestas

  • 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/cotizaciones/00000000-0000-0000-0000-000000000000/pdf' \
  -H 'X-Api-Key: mk_live_<prefix>.<secret>'
Response · 200
{
  "data": {
    "id": "00000000-0000-0000-0000-000000000000",
    "createdAt": "2026-05-01T03:42:18.123Z"
  },
  "timestamp": "2026-05-01T03:42:18.123Z"
}
GET/organizations/:orgId/cotizaciones/:id/enlace
bearer

Enlace firmado (10 minutos) para ver o descargar el PDF desde cualquier navegador, también el del celular.

Path params

  • orgIdstringrequerido
  • idstringrequerido

Respuestas

  • 200
curl -X GET 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/cotizaciones/00000000-0000-0000-0000-000000000000/enlace' \
  -H 'X-Api-Key: mk_live_<prefix>.<secret>'
Response · 200
{
  "data": {
    "id": "00000000-0000-0000-0000-000000000000",
    "createdAt": "2026-05-01T03:42:18.123Z"
  },
  "timestamp": "2026-05-01T03:42:18.123Z"
}
POST/organizations/:orgId/cotizaciones/:id/enviar
bearer

Envía la cotización por la conversación del cliente (WhatsApp y chat web como documento; Instagram como enlace).

Path params

  • orgIdstringrequerido
  • idstringrequerido

Body (JSON)

  • mensajestring

    Texto que acompaña al PDF; si no, uno con el número y el total.

Respuestas

  • 200
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/cotizaciones/00000000-0000-0000-0000-000000000000/enviar' \
  -H 'X-Api-Key: mk_live_<prefix>.<secret>' \
  -H 'Content-Type: application/json' \
  -d '{"mensaje": "<mensaje>"}'
Response · 200
{
  "data": {
    "id": "00000000-0000-0000-0000-000000000000",
    "name": "string",
    "description": "string"
  },
  "timestamp": "2026-05-01T03:42:18.123Z"
}
POST/organizations/:orgId/cotizaciones/:id/duplicar
bearer

Crea un borrador nuevo con las mismas líneas.

Path params

  • orgIdstringrequerido
  • idstringrequerido

Respuestas

  • 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/cotizaciones/00000000-0000-0000-0000-000000000000/duplicar' \
  -H 'X-Api-Key: mk_live_<prefix>.<secret>'
Response · 200
{
  "data": {
    "id": "00000000-0000-0000-0000-000000000000",
    "createdAt": "2026-05-01T03:42:18.123Z"
  },
  "timestamp": "2026-05-01T03:42:18.123Z"
}
PATCH/organizations/:orgId/cotizaciones/:id/estado
bearer

Marca la cotización como aceptada o rechazada.

Path params

  • orgIdstringrequerido
  • idstringrequerido

Body (JSON)

  • estadostringrequerido
    ACEPTADARECHAZADA

Respuestas

  • 200
curl -X PATCH 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/cotizaciones/00000000-0000-0000-0000-000000000000/estado' \
  -H 'X-Api-Key: mk_live_<prefix>.<secret>' \
  -H 'Content-Type: application/json' \
  -d '{"estado": "ACEPTADA"}'
Response · 200
{
  "data": {
    "id": "00000000-0000-0000-0000-000000000000",
    "name": "string",
    "description": "string"
  },
  "timestamp": "2026-05-01T03:42:18.123Z"
}
POST/organizations/:orgId/cotizaciones/:id/convertir
bearer

Convierte la cotización en un pedido de Ventas (necesita el módulo de Ventas).

Path params

  • orgIdstringrequerido
  • idstringrequerido

Respuestas

  • 201
curl -X POST 'https://api.mosend.dev/organizations/a1b2c3d4-1234-5678-9abc-def012345678/cotizaciones/00000000-0000-0000-0000-000000000000/convertir' \
  -H 'X-Api-Key: mk_live_<prefix>.<secret>'
Response · 200
{
  "data": {
    "id": "00000000-0000-0000-0000-000000000000",
    "createdAt": "2026-05-01T03:42:18.123Z"
  },
  "timestamp": "2026-05-01T03:42:18.123Z"
}
GET/organizations/:orgId/cotizaciones/cotizaciones/vista/:token
público

Sirve el PDF por un enlace de vista firmado y de corta duración (público).

Path params

  • tokenstringrequerido

Query params

  • descargarstring | undefined
curl -X GET 'https://api.mosend.dev/organizations/:orgId/cotizaciones/cotizaciones/vista/<token>'
Response · 200
{
  "data": [
    {
      "id": "00000000-0000-0000-0000-000000000000",
      "createdAt": "2026-05-01T03:42:18.123Z"
    }
  ],
  "timestamp": "2026-05-01T03:42:18.123Z"
}
GET/organizations/:orgId/cotizaciones/cotizaciones/pdf/:token
público

Sirve el PDF de una cotización enviada, por token (público).

Path params

  • tokenstringrequerido
curl -X GET 'https://api.mosend.dev/organizations/:orgId/cotizaciones/cotizaciones/pdf/<token>'
Response · 200
{
  "data": {
    "id": "00000000-0000-0000-0000-000000000000",
    "createdAt": "2026-05-01T03:42:18.123Z"
  },
  "timestamp": "2026-05-01T03:42:18.123Z"
}