Referencia de recursos
Las 80 operaciones de la API, por módulo. Sale del mismo registro que usan la API y el MCP, así que siempre coincide con lo que responde el servidor.
Cómo se llama una operación
Todas las rutas van después de https://panel.kaptativa.app/api/v1 y llevan el token en Authorization: Bearer.
- Por su recurso, con el método y la ruta que figuran en cada ficha. Los campos marcados «En la ruta» reemplazan a las llaves, los de un
GETvan en la consulta y los demás en el cuerpo JSON. Responde el objeto tal cual; un listado,{ datos, paginacion }. - Por su nombre, con
POST /v1/herramientas/<nombre>y todos los campos en el cuerpo JSON. Sirve para cualquier operación. Responde lo mismo, pero dentro deresultado.
Si salió bien, la respuesta es siempre 200, también al crear. Si no, un error con su código. Un método que la ruta no admite responde 405 con el encabezado Allow.
Cada ficha dice el alcance que tiene que tener el token y el permiso que tiene que tener su persona en el panel. Para saber cuáles puede usar un token en particular, pedí GET /v1/herramientas.
La misma información, para generar un cliente o importarla en otra herramienta, está en openapi.json (OpenAPI 3.1).
Generales
/v1La cuenta y el token con el que se llama, con sus alcances. Sirve para probar la conexión.
/v1/herramientasLas operaciones que puede usar este token hoy, con el esquema JSON de su entrada y el método y la ruta de su recurso.
/v1/openapi.jsonLa referencia en OpenAPI 3.1. Es pública: no pide token.
curl "https://panel.kaptativa.app/api/v1/herramientas" \
-H "Authorization: Bearer TU_TOKEN"Gestión
15 operaciones. Alcances: gestion:lectura y gestion:escritura.
- gestion.ticket.listar
- gestion.ticket.ver
- gestion.ticket.abrir
- gestion.ticket.responder
- gestion.ticket.verificar
- gestion.ticket.reabrir
- gestion.ticket.calificar
- gestion.cliente.buscar
- gestion.cliente.ver
- gestion.cliente.crear
- gestion.proveedor.buscar
- gestion.proveedor.ver
- gestion.tarjeta.buscar
- gestion.tarjeta.crear
- gestion.importacion.listar
gestion.ticket.listar
GET/v1/gestion/ticketsLista los tickets de soporte de la cuenta con su estado, por grupo (abiertos, nuevos, resueltos, cerrados) y tipo.
- Tipo
- Consulta
- Alcance
gestion:lectura- Permiso de la persona
gestion-tickets.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
grupo | "todos" | "nuevos" | "abiertos" | "resueltos" | "cerrados" | En la consulta | Qué tickets: abiertos por defecto |
tipo | "error" | "mejora" | "consulta" | "urgente" | "tarea" | En la consulta |
curl "https://panel.kaptativa.app/api/v1/gestion/tickets?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/gestion.ticket.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"grupo": {
"description": "Qué tickets: abiertos por defecto",
"type": "string",
"enum": [
"todos",
"nuevos",
"abiertos",
"resueltos",
"cerrados"
]
},
"tipo": {
"type": "string",
"enum": [
"error",
"mejora",
"consulta",
"urgente",
"tarea"
]
}
}
}gestion.ticket.ver
GET/v1/gestion/tickets/{numero}Muestra un ticket de soporte con su estado y la conversación con el equipo de Kaptativa.
- Tipo
- Consulta
- Alcance
gestion:lectura- Permiso de la persona
gestion-tickets.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
numeroobligatorio | entero | En la ruta | El número del ticket: 2 para TIC-00002 |
curl "https://panel.kaptativa.app/api/v1/gestion/tickets/1" \
-H "Authorization: Bearer TU_TOKEN"También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/gestion.ticket.ver.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"numero": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "El número del ticket: 2 para TIC-00002"
}
},
"required": [
"numero"
]
}gestion.ticket.abrir
POST/v1/gestion/ticketsAbre un ticket de soporte para el equipo de Kaptativa: un error, una mejora, una consulta.
- Tipo
- Acción irreversible
- Alcance
gestion:escritura- Permiso de la persona
gestion-tickets.crear
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
asuntoobligatorio | texto, hasta 120 caracteres | En el cuerpo | |
tipoobligatorio | "error" | "mejora" | "consulta" | "urgente" | "tarea" | En el cuerpo | |
modulo | texto | En el cuerpo | El módulo afectado, por ejemplo Sitio o Inmobiliaria |
descripcionobligatorio | texto, hasta 4000 caracteres | En el cuerpo |
curl -X POST "https://panel.kaptativa.app/api/v1/gestion/tickets" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"asunto":"No puedo cargar una foto","tipo":"error","descripcion":"Al subir una foto a la propiedad, la página queda cargando y no termina."}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/gestion.ticket.abrir.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"asunto": {
"type": "string",
"minLength": 3,
"maxLength": 120
},
"tipo": {
"type": "string",
"enum": [
"error",
"mejora",
"consulta",
"urgente",
"tarea"
]
},
"modulo": {
"description": "El módulo afectado, por ejemplo Sitio o Inmobiliaria",
"type": "string"
},
"descripcion": {
"type": "string",
"minLength": 10,
"maxLength": 4000
}
},
"required": [
"asunto",
"tipo",
"descripcion"
]
}gestion.ticket.responder
POST/v1/gestion/tickets/{numero}/mensajesLe escribe al equipo de Kaptativa en la conversación de un ticket.
- Tipo
- Acción irreversible
- Alcance
gestion:escritura- Permiso de la persona
gestion-tickets.crear
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
numeroobligatorio | entero | En la ruta | El número del ticket: 2 para TIC-00002 |
textoobligatorio | texto, hasta 4000 caracteres | En el cuerpo |
curl -X POST "https://panel.kaptativa.app/api/v1/gestion/tickets/1/mensajes" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"texto":"Hola, Ana. Te escribo por la consulta de ayer."}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/gestion.ticket.responder.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"numero": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "El número del ticket: 2 para TIC-00002"
},
"texto": {
"type": "string",
"minLength": 2,
"maxLength": 4000
}
},
"required": [
"numero",
"texto"
]
}gestion.ticket.verificar
POST/v1/gestion/tickets/{numero}/verificarConfirma que un ticket resuelto quedó bien: pasa a Verificado y se cierra.
- Tipo
- Cambio de estado
- Alcance
gestion:escritura- Permiso de la persona
gestion-tickets.editar
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
numeroobligatorio | entero | En la ruta | El número del ticket: 2 para TIC-00002 |
curl -X POST "https://panel.kaptativa.app/api/v1/gestion/tickets/1/verificar" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/gestion.ticket.verificar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"numero": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "El número del ticket: 2 para TIC-00002"
}
},
"required": [
"numero"
]
}gestion.ticket.reabrir
POST/v1/gestion/tickets/{numero}/reabrirReabre un ticket resuelto porque el problema sigue, con un mensaje para el equipo.
- Tipo
- Cambio de estado
- Alcance
gestion:escritura- Permiso de la persona
gestion-tickets.editar
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
numeroobligatorio | entero | En la ruta | El número del ticket: 2 para TIC-00002 |
textoobligatorio | texto, hasta 4000 caracteres | En el cuerpo |
curl -X POST "https://panel.kaptativa.app/api/v1/gestion/tickets/1/reabrir" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"texto":"Hola, Ana. Te escribo por la consulta de ayer."}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/gestion.ticket.reabrir.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"numero": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "El número del ticket: 2 para TIC-00002"
},
"texto": {
"type": "string",
"minLength": 2,
"maxLength": 4000
}
},
"required": [
"numero",
"texto"
]
}gestion.ticket.calificar
POST/v1/gestion/tickets/{numero}/calificacionCalifica la atención de un ticket resuelto con pulgar arriba o abajo.
- Tipo
- Acción reversible
- Alcance
gestion:escritura- Permiso de la persona
gestion-tickets.editar
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
numeroobligatorio | entero | En la ruta | El número del ticket: 2 para TIC-00002 |
calificacionobligatorio | "arriba" | "abajo" | En el cuerpo |
curl -X POST "https://panel.kaptativa.app/api/v1/gestion/tickets/1/calificacion" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"calificacion":"arriba"}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/gestion.ticket.calificar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"numero": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991,
"description": "El número del ticket: 2 para TIC-00002"
},
"calificacion": {
"type": "string",
"enum": [
"arriba",
"abajo"
]
}
},
"required": [
"numero",
"calificacion"
]
}gestion.cliente.buscar
GET/v1/gestion/clientesBusca clientes por nombre, email o documento y muestra su tipo, contacto y vendedor; sin texto, los más recientes.
- Tipo
- Consulta
- Alcance
gestion:lectura- Permiso de la persona
gestion-clientes.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
buscar | texto, hasta 80 caracteres | En la consulta | |
sinVerificar | verdadero o falso | En la consulta | Solo los No clientes con el email sin verificar, para fusionar |
curl "https://panel.kaptativa.app/api/v1/gestion/clientes?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/gestion.cliente.buscar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"buscar": {
"type": "string",
"maxLength": 80
},
"sinVerificar": {
"description": "Solo los No clientes con el email sin verificar, para fusionar",
"type": "boolean"
}
}
}gestion.cliente.ver
GET/v1/gestion/clientes/{id}Muestra la ficha de un cliente: datos personales y comerciales, campos propios y direcciones.
- Tipo
- Consulta
- Alcance
gestion:lectura- Permiso de la persona
gestion-clientes.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
idobligatorio | texto (uuid) | En la ruta | El id que devuelve gestion.cliente.buscar |
curl "https://panel.kaptativa.app/api/v1/gestion/clientes/c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e" \
-H "Authorization: Bearer TU_TOKEN"También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/gestion.cliente.ver.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id que devuelve gestion.cliente.buscar"
}
},
"required": [
"id"
]
}gestion.cliente.crear
POST/v1/gestion/clientesDa de alta un cliente con nombre y, si se sabe, apellido, email y teléfono; queda con el tipo Cliente.
- Tipo
- Acción reversible
- Alcance
gestion:escritura- Permiso de la persona
gestion-clientes.crear
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
nombreobligatorio | texto, hasta 120 caracteres | En el cuerpo | |
apellido | texto, hasta 120 caracteres | En el cuerpo | |
email | texto (email) | En el cuerpo | |
telefono | texto, hasta 40 caracteres | En el cuerpo |
curl -X POST "https://panel.kaptativa.app/api/v1/gestion/clientes" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"nombre":"Ana"}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/gestion.cliente.crear.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"nombre": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"apellido": {
"type": "string",
"maxLength": 120
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"telefono": {
"type": "string",
"maxLength": 40
}
},
"required": [
"nombre"
]
}gestion.proveedor.buscar
GET/v1/gestion/proveedoresBusca proveedores por nombre, razón social o CUIT y muestra su rubro, contacto y horario de atención.
- Tipo
- Consulta
- Alcance
gestion:lectura- Permiso de la persona
gestion-proveedores.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
buscar | texto, hasta 80 caracteres | En la consulta |
curl "https://panel.kaptativa.app/api/v1/gestion/proveedores?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/gestion.proveedor.buscar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"buscar": {
"type": "string",
"maxLength": 80
}
}
}gestion.proveedor.ver
GET/v1/gestion/proveedores/{id}Muestra la ficha de un proveedor: datos impositivos, contacto, dirección, horarios y archivos.
- Tipo
- Consulta
- Alcance
gestion:lectura- Permiso de la persona
gestion-proveedores.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
idobligatorio | texto (uuid) | En la ruta | El id que devuelve gestion.proveedor.buscar |
curl "https://panel.kaptativa.app/api/v1/gestion/proveedores/c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e" \
-H "Authorization: Bearer TU_TOKEN"También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/gestion.proveedor.ver.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id que devuelve gestion.proveedor.buscar"
}
},
"required": [
"id"
]
}gestion.tarjeta.buscar
GET/v1/gestion/tarjetasBusca tarjetas por título o descripción en todos los tableros que la persona ve, con su tablero, columna, estado, prioridad y vencimiento.
- Tipo
- Consulta
- Alcance
gestion:lectura- Permiso de la persona
gestion-tableros.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
buscarobligatorio | texto, hasta 80 caracteres | En la consulta |
curl "https://panel.kaptativa.app/api/v1/gestion/tarjetas?limite=25&buscar=ana" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/gestion.tarjeta.buscar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"buscar": {
"type": "string",
"minLength": 2,
"maxLength": 80
}
},
"required": [
"buscar"
]
}gestion.tarjeta.crear
POST/v1/gestion/tarjetasAgrega una tarjeta al pie de una columna de un tablero, con vencimiento si se lo dicen.
- Tipo
- Acción reversible
- Alcance
gestion:escritura- Permiso de la persona
gestion-tableros.editar
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
tableroobligatorio | texto, hasta 80 caracteres | En el cuerpo | El nombre del tablero |
columna | texto, hasta 60 caracteres | En el cuerpo | El nombre de la columna; sin decirla, la primera |
tituloobligatorio | texto, hasta 200 caracteres | En el cuerpo | |
vence | texto | En el cuerpo | La fecha de vencimiento, como 2026-10-30 |
curl -X POST "https://panel.kaptativa.app/api/v1/gestion/tarjetas" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"tablero":"Ventas","titulo":"Llamar a Ana García"}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/gestion.tarjeta.crear.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"tablero": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "El nombre del tablero"
},
"columna": {
"description": "El nombre de la columna; sin decirla, la primera",
"type": "string",
"maxLength": 60
},
"titulo": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"vence": {
"description": "La fecha de vencimiento, como 2026-10-30",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"tablero",
"titulo"
]
}gestion.importacion.listar
GET/v1/gestion/importacionesLista las últimas importaciones de clientes y proveedores con su estado y cuántos registros creó, actualizó o tuvieron error.
- Tipo
- Consulta
- Alcance
gestion:lectura- Permiso de la persona
gestion-importaciones.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
curl "https://panel.kaptativa.app/api/v1/gestion/importaciones?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/gestion.importacion.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
}
}
}Administración
6 operaciones. Alcances: administracion:lectura y administracion:escritura.
administracion.usuario.listar
GET/v1/administracion/usuariosLista el equipo de la cuenta: nombre, apodo, tipo de usuario, email y si está habilitado.
- Tipo
- Consulta
- Alcance
administracion:lectura- Permiso de la persona
administracion-usuarios.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
buscar | texto, hasta 60 caracteres | En la consulta | |
habilitado | "si" | "no" | En la consulta |
curl "https://panel.kaptativa.app/api/v1/administracion/usuarios?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/administracion.usuario.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"buscar": {
"type": "string",
"maxLength": 60
},
"habilitado": {
"type": "string",
"enum": [
"si",
"no"
]
}
}
}administracion.notificacion.listar
GET/v1/administracion/notificacionesLista los avisos de quien pregunta en la cuenta: los sin leer o todos.
- Tipo
- Consulta
- Alcance
administracion:lectura- Permiso de la persona
administracion-notificaciones.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
soloSinLeer | verdadero o falso | En la consulta |
curl "https://panel.kaptativa.app/api/v1/administracion/notificaciones?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/administracion.notificacion.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"soloSinLeer": {
"type": "boolean"
}
}
}administracion.notificacion.marcar_leidas
POST/v1/administracion/notificaciones/leidasMarca como leídos todos los avisos de quien pregunta.
- Tipo
- Cambio de estado
- Alcance
administracion:escritura- Permiso de la persona
administracion-notificaciones.ver
No lleva campos.
curl -X POST "https://panel.kaptativa.app/api/v1/administracion/notificaciones/leidas" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/administracion.notificacion.marcar_leidas.
Esquema JSON de la entrada
{
"type": "object",
"properties": {}
}administracion.plan.ver
GET/v1/administracion/planMuestra lo contratado con su precio, el consumo del mes de cada medidor y los abonos.
- Tipo
- Consulta
- Alcance
administracion:lectura- Permiso de la persona
administracion-plan-consumo.ver
No lleva campos.
curl "https://panel.kaptativa.app/api/v1/administracion/plan" \
-H "Authorization: Bearer TU_TOKEN"También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/administracion.plan.ver.
Esquema JSON de la entrada
{
"type": "object",
"properties": {}
}administracion.perfil.listar
GET/v1/administracion/perfilesLista los tipos de usuario de la cuenta con cuántas personas tiene cada uno y su alcance.
- Tipo
- Consulta
- Alcance
administracion:lectura- Permiso de la persona
administracion-perfiles.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
curl "https://panel.kaptativa.app/api/v1/administracion/perfiles?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/administracion.perfil.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
}
}
}administracion.actividad.buscar
GET/v1/administracion/actividadBusca en la actividad de la cuenta quién hizo qué, sobre qué y cuándo.
- Tipo
- Consulta
- Alcance
administracion:lectura- Permiso de la persona
administracion-actividad.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
buscar | texto, hasta 80 caracteres | En la consulta | |
desde | texto | En la consulta | |
hasta | texto | En la consulta | |
modulo | texto | En la consulta |
curl "https://panel.kaptativa.app/api/v1/administracion/actividad?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/administracion.actividad.buscar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"buscar": {
"type": "string",
"maxLength": 80
},
"desde": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"hasta": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"modulo": {
"type": "string"
}
}
}Configuración
8 operaciones. Alcances: configuracion:lectura y configuracion:escritura.
configuracion.ajuste_propiedades.ver
GET/v1/configuracion/ajustes-propiedadesMuestra los parámetros de Inmobiliaria > Configuración: prefijos de código, cintas, fotos recomendadas, tipos y más.
- Tipo
- Consulta
- Alcance
configuracion:lectura- Permiso de la persona
configuracion-propiedades.ver
No lleva campos.
curl "https://panel.kaptativa.app/api/v1/configuracion/ajustes-propiedades" \
-H "Authorization: Bearer TU_TOKEN"También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/configuracion.ajuste_propiedades.ver.
Esquema JSON de la entrada
{
"type": "object",
"properties": {}
}configuracion.ajuste_propiedades.cambiar
PATCH/v1/configuracion/ajustes-propiedades/{clave}Cambia un parámetro de Inmobiliaria > Configuración. Queda en el historial y se puede deshacer.
- Tipo
- Acción reversible
- Alcance
configuracion:escritura- Permiso de la persona
configuracion-propiedades.editar
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
claveobligatorio | "prefijoVenta" | "prefijoAlquiler" | "advertirIncompletas" | "bloquearIncompletas" | "fotosRecomendadas" | "cintaReservada" | "diasCintaVendida" | "diasCintaAlquilada" | "marcaPosicion" | "marcaOpacidad" | "marcaTamano" | "umbralBajaPrecio" | "mensajeWhatsapp" | "tiempoRespuesta" | "ventanaAgrupacion" | "motivosCierre" | "brochureConDatos" | "mostrarDesarrollista" | "margenBusqueda" | "topeDiario" | En la ruta | |
valorobligatorio | texto o número o verdadero o falso o lista de texto | En el cuerpo |
curl -X PATCH "https://panel.kaptativa.app/api/v1/configuracion/ajustes-propiedades/prefijoVenta" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"valor":"texto"}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/configuracion.ajuste_propiedades.cambiar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"clave": {
"type": "string",
"enum": [
"prefijoVenta",
"prefijoAlquiler",
"advertirIncompletas",
"bloquearIncompletas",
"fotosRecomendadas",
"cintaReservada",
"diasCintaVendida",
"diasCintaAlquilada",
"marcaPosicion",
"marcaOpacidad",
"marcaTamano",
"umbralBajaPrecio",
"mensajeWhatsapp",
"tiempoRespuesta",
"ventanaAgrupacion",
"motivosCierre",
"brochureConDatos",
"mostrarDesarrollista",
"margenBusqueda",
"topeDiario"
]
},
"valor": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
}
},
"required": [
"clave",
"valor"
]
}configuracion.archivo.buscar
GET/v1/configuracion/archivosBusca imágenes o documentos subidos a la cuenta por nombre.
- Tipo
- Consulta
- Alcance
configuracion:lectura- Permiso de la persona
configuracion-archivos.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
espacioobligatorio | "imagenes" | "archivos" | En la consulta | |
buscarobligatorio | texto, hasta 80 caracteres | En la consulta |
curl "https://panel.kaptativa.app/api/v1/configuracion/archivos?limite=25&espacio=imagenes&buscar=ana" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/configuracion.archivo.buscar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"espacio": {
"type": "string",
"enum": [
"imagenes",
"archivos"
]
},
"buscar": {
"type": "string",
"minLength": 1,
"maxLength": 80
}
},
"required": [
"espacio",
"buscar"
]
}configuracion.resguardo.ver
GET/v1/configuracion/resguardoMuestra el último respaldo, el respaldo automático programado y los últimos respaldos con su estado.
- Tipo
- Consulta
- Alcance
configuracion:lectura- Permiso de la persona
configuracion-resguardo.ver
No lleva campos.
curl "https://panel.kaptativa.app/api/v1/configuracion/resguardo" \
-H "Authorization: Bearer TU_TOKEN"También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/configuracion.resguardo.ver.
Esquema JSON de la entrada
{
"type": "object",
"properties": {}
}configuracion.resguardo.respaldar
POST/v1/configuracion/resguardo/respaldosPide un respaldo de la base de datos y los archivos de la cuenta. Lo arma el sistema en unos minutos.
- Tipo
- Acción reversible
- Alcance
configuracion:escritura- Permiso de la persona
configuracion-resguardo.crear
No lleva campos.
curl -X POST "https://panel.kaptativa.app/api/v1/configuracion/resguardo/respaldos" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/configuracion.resguardo.respaldar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {}
}configuracion.dominio.listar
GET/v1/configuracion/dominiosLista los dominios de la cuenta con su estado, cuál es el principal, el certificado y el vencimiento.
- Tipo
- Consulta
- Alcance
configuracion:lectura- Permiso de la persona
configuracion-dominio-correo.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
curl "https://panel.kaptativa.app/api/v1/configuracion/dominios?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/configuracion.dominio.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
}
}
}configuracion.dominio.verificar
POST/v1/configuracion/dominios/{dominio}/verificarVerifica un dominio propio pendiente: busca el registro TXT y, si está, lo activa.
- Tipo
- Cambio de estado
- Alcance
configuracion:escritura- Permiso de la persona
configuracion-dominio-correo.editar
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
dominioobligatorio | texto, hasta 253 caracteres | En la ruta |
curl -X POST "https://panel.kaptativa.app/api/v1/configuracion/dominios/tu-dominio.com/verificar" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/configuracion.dominio.verificar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"dominio": {
"type": "string",
"minLength": 4,
"maxLength": 253
}
},
"required": [
"dominio"
]
}configuracion.casilla.listar
GET/v1/configuracion/casillasLista las casillas de correo con el dominio de la cuenta, con su responsable, espacio y estado.
- Tipo
- Consulta
- Alcance
configuracion:lectura- Permiso de la persona
configuracion-dominio-correo.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
curl "https://panel.kaptativa.app/api/v1/configuracion/casillas?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/configuracion.casilla.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
}
}
}Inmobiliaria
15 operaciones. Alcances: inmobiliaria:lectura y inmobiliaria:escritura.
- inmobiliaria.venta.listar
- inmobiliaria.venta.ver
- inmobiliaria.venta.publicar
- inmobiliaria.venta.cambiar_estado
- inmobiliaria.venta.cambiar_precio
- inmobiliaria.alquiler.listar
- inmobiliaria.alquiler.ver
- inmobiliaria.alquiler.publicar
- inmobiliaria.alquiler.cambiar_estado
- inmobiliaria.alquiler.cambiar_precio
- inmobiliaria.consulta.listar
- inmobiliaria.consulta.registrar
- inmobiliaria.interesado.listar
- inmobiliaria.emprendimiento.listar
- inmobiliaria.emprendimiento.ver
inmobiliaria.venta.listar
GET/v1/inmobiliaria/ventasLista las propiedades en venta con código, estado, precio, zona y si están publicadas; filtra por texto, estado y fichas incompletas.
- Tipo
- Consulta
- Alcance
inmobiliaria:lectura- Permiso de la persona
inmobiliaria-venta.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
buscar | texto, hasta 80 caracteres | En la consulta | |
estado | "disponible" | "reservada" | "vendida" | "suspendida" | En la consulta | |
incompletas | verdadero o falso | En la consulta |
curl "https://panel.kaptativa.app/api/v1/inmobiliaria/ventas?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/inmobiliaria.venta.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"buscar": {
"type": "string",
"maxLength": 80
},
"estado": {
"type": "string",
"enum": [
"disponible",
"reservada",
"vendida",
"suspendida"
]
},
"incompletas": {
"type": "boolean"
}
}
}inmobiliaria.venta.ver
GET/v1/inmobiliaria/ventas/{codigo}Muestra la ficha de una propiedad en venta: datos, precio, ubicación, estado, fotos y lo que le falta.
- Tipo
- Consulta
- Alcance
inmobiliaria:lectura- Permiso de la persona
inmobiliaria-venta.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
codigoobligatorio | texto, hasta 20 caracteres | En la ruta | El código de la propiedad, como VEN-0042 |
curl "https://panel.kaptativa.app/api/v1/inmobiliaria/ventas/VEN-0042" \
-H "Authorization: Bearer TU_TOKEN"También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/inmobiliaria.venta.ver.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"codigo": {
"type": "string",
"minLength": 3,
"maxLength": 20,
"description": "El código de la propiedad, como VEN-0042"
}
},
"required": [
"codigo"
]
}inmobiliaria.venta.publicar
PATCH/v1/inmobiliaria/ventas/{codigo}/publicacionPublica en el sitio o pausa una propiedad en venta. Pausada no se ve y queda guardada.
- Tipo
- Cambio de estado
- Alcance
inmobiliaria:escritura- Permiso de la persona
inmobiliaria-venta.publicar
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
codigoobligatorio | texto, hasta 20 caracteres | En la ruta | El código de la propiedad, como VEN-0042 |
publicadaobligatorio | verdadero o falso | En el cuerpo |
curl -X PATCH "https://panel.kaptativa.app/api/v1/inmobiliaria/ventas/VEN-0042/publicacion" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"publicada":true}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/inmobiliaria.venta.publicar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"codigo": {
"type": "string",
"minLength": 3,
"maxLength": 20,
"description": "El código de la propiedad, como VEN-0042"
},
"publicada": {
"type": "boolean"
}
},
"required": [
"codigo",
"publicada"
]
}inmobiliaria.venta.cambiar_estado
PATCH/v1/inmobiliaria/ventas/{codigo}/estadoCambia el estado comercial de una propiedad en venta. Para cerrarla hacen falta el precio y la fecha de cierre.
- Tipo
- Cambio de estado
- Alcance
inmobiliaria:escritura- Permiso de la persona
inmobiliaria-venta.cambiar_estado
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
codigoobligatorio | texto, hasta 20 caracteres | En la ruta | El código de la propiedad, como VEN-0042 |
estadoobligatorio | "disponible" | "reservada" | "vendida" | "suspendida" | En el cuerpo | |
cierre | objeto | En el cuerpo | Precio (en la moneda, sin centavos) y fecha del cierre |
curl -X PATCH "https://panel.kaptativa.app/api/v1/inmobiliaria/ventas/VEN-0042/estado" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"estado":"disponible"}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/inmobiliaria.venta.cambiar_estado.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"codigo": {
"type": "string",
"minLength": 3,
"maxLength": 20,
"description": "El código de la propiedad, como VEN-0042"
},
"estado": {
"type": "string",
"enum": [
"disponible",
"reservada",
"vendida",
"suspendida"
]
},
"cierre": {
"description": "Precio (en la moneda, sin centavos) y fecha del cierre",
"type": "object",
"properties": {
"importe": {
"type": "number",
"exclusiveMinimum": 0
},
"moneda": {
"type": "string",
"enum": [
"ARS",
"USD"
]
},
"fecha": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"importe",
"moneda",
"fecha"
]
}
},
"required": [
"codigo",
"estado"
]
}inmobiliaria.venta.cambiar_precio
PATCH/v1/inmobiliaria/ventas/{codigo}/precioCambia el precio de una propiedad en venta, en dólares, en pesos o los dos. Queda en el historial de precios.
- Tipo
- Acción reversible
- Alcance
inmobiliaria:escritura- Permiso de la persona
inmobiliaria-venta.editar
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
codigoobligatorio | texto, hasta 20 caracteres | En la ruta | El código de la propiedad, como VEN-0042 |
precioUsd | número o nulo | En el cuerpo | |
precioArs | número o nulo | En el cuerpo |
curl -X PATCH "https://panel.kaptativa.app/api/v1/inmobiliaria/ventas/VEN-0042/precio" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"precioUsd":185000}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/inmobiliaria.venta.cambiar_precio.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"codigo": {
"type": "string",
"minLength": 3,
"maxLength": 20,
"description": "El código de la propiedad, como VEN-0042"
},
"precioUsd": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
},
"precioArs": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
}
},
"required": [
"codigo"
]
}inmobiliaria.alquiler.listar
GET/v1/inmobiliaria/alquileresLista las propiedades en alquiler con código, estado, precio, zona y si están publicadas; filtra por texto, estado y fichas incompletas.
- Tipo
- Consulta
- Alcance
inmobiliaria:lectura- Permiso de la persona
inmobiliaria-alquiler.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
buscar | texto, hasta 80 caracteres | En la consulta | |
estado | "disponible" | "reservada" | "alquilada" | "suspendida" | En la consulta | |
incompletas | verdadero o falso | En la consulta |
curl "https://panel.kaptativa.app/api/v1/inmobiliaria/alquileres?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/inmobiliaria.alquiler.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"buscar": {
"type": "string",
"maxLength": 80
},
"estado": {
"type": "string",
"enum": [
"disponible",
"reservada",
"alquilada",
"suspendida"
]
},
"incompletas": {
"type": "boolean"
}
}
}inmobiliaria.alquiler.ver
GET/v1/inmobiliaria/alquileres/{codigo}Muestra la ficha de una propiedad en alquiler: datos, precio, ubicación, estado, fotos y lo que le falta.
- Tipo
- Consulta
- Alcance
inmobiliaria:lectura- Permiso de la persona
inmobiliaria-alquiler.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
codigoobligatorio | texto, hasta 20 caracteres | En la ruta | El código de la propiedad, como VEN-0042 |
curl "https://panel.kaptativa.app/api/v1/inmobiliaria/alquileres/VEN-0042" \
-H "Authorization: Bearer TU_TOKEN"También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/inmobiliaria.alquiler.ver.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"codigo": {
"type": "string",
"minLength": 3,
"maxLength": 20,
"description": "El código de la propiedad, como VEN-0042"
}
},
"required": [
"codigo"
]
}inmobiliaria.alquiler.publicar
PATCH/v1/inmobiliaria/alquileres/{codigo}/publicacionPublica en el sitio o pausa una propiedad en alquiler. Pausada no se ve y queda guardada.
- Tipo
- Cambio de estado
- Alcance
inmobiliaria:escritura- Permiso de la persona
inmobiliaria-alquiler.publicar
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
codigoobligatorio | texto, hasta 20 caracteres | En la ruta | El código de la propiedad, como VEN-0042 |
publicadaobligatorio | verdadero o falso | En el cuerpo |
curl -X PATCH "https://panel.kaptativa.app/api/v1/inmobiliaria/alquileres/VEN-0042/publicacion" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"publicada":true}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/inmobiliaria.alquiler.publicar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"codigo": {
"type": "string",
"minLength": 3,
"maxLength": 20,
"description": "El código de la propiedad, como VEN-0042"
},
"publicada": {
"type": "boolean"
}
},
"required": [
"codigo",
"publicada"
]
}inmobiliaria.alquiler.cambiar_estado
PATCH/v1/inmobiliaria/alquileres/{codigo}/estadoCambia el estado comercial de una propiedad en alquiler. Para cerrarla hacen falta el precio y la fecha de cierre.
- Tipo
- Cambio de estado
- Alcance
inmobiliaria:escritura- Permiso de la persona
inmobiliaria-alquiler.cambiar_estado
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
codigoobligatorio | texto, hasta 20 caracteres | En la ruta | El código de la propiedad, como VEN-0042 |
estadoobligatorio | "disponible" | "reservada" | "alquilada" | "suspendida" | En el cuerpo | |
cierre | objeto | En el cuerpo | Precio (en la moneda, sin centavos) y fecha del cierre |
curl -X PATCH "https://panel.kaptativa.app/api/v1/inmobiliaria/alquileres/VEN-0042/estado" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"estado":"disponible"}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/inmobiliaria.alquiler.cambiar_estado.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"codigo": {
"type": "string",
"minLength": 3,
"maxLength": 20,
"description": "El código de la propiedad, como VEN-0042"
},
"estado": {
"type": "string",
"enum": [
"disponible",
"reservada",
"alquilada",
"suspendida"
]
},
"cierre": {
"description": "Precio (en la moneda, sin centavos) y fecha del cierre",
"type": "object",
"properties": {
"importe": {
"type": "number",
"exclusiveMinimum": 0
},
"moneda": {
"type": "string",
"enum": [
"ARS",
"USD"
]
},
"fecha": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
}
},
"required": [
"importe",
"moneda",
"fecha"
]
}
},
"required": [
"codigo",
"estado"
]
}inmobiliaria.alquiler.cambiar_precio
PATCH/v1/inmobiliaria/alquileres/{codigo}/precioCambia el precio de una propiedad en alquiler, en dólares, en pesos o los dos. Queda en el historial de precios.
- Tipo
- Acción reversible
- Alcance
inmobiliaria:escritura- Permiso de la persona
inmobiliaria-alquiler.editar
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
codigoobligatorio | texto, hasta 20 caracteres | En la ruta | El código de la propiedad, como VEN-0042 |
precioUsd | número o nulo | En el cuerpo | |
precioArs | número o nulo | En el cuerpo |
curl -X PATCH "https://panel.kaptativa.app/api/v1/inmobiliaria/alquileres/VEN-0042/precio" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"precioUsd":185000}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/inmobiliaria.alquiler.cambiar_precio.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"codigo": {
"type": "string",
"minLength": 3,
"maxLength": 20,
"description": "El código de la propiedad, como VEN-0042"
},
"precioUsd": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
},
"precioArs": {
"anyOf": [
{
"type": "number",
"minimum": 0
},
{
"type": "null"
}
]
}
},
"required": [
"codigo"
]
}inmobiliaria.consulta.listar
GET/v1/inmobiliaria/consultasLista las consultas por propiedades: las de hoy, las abiertas o por estado, con la persona, la propiedad, el canal, el asesor y si está demorada.
- Tipo
- Consulta
- Alcance
inmobiliaria:lectura- Permiso de la persona
inmobiliaria-consultas.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
hoy | verdadero o falso | En la consulta | Solo las que entraron hoy |
estado | "abiertas" | "nueva" | "respondida" | "visita_agendada" | "visito" | "cerrada" | En la consulta | |
propiedad | texto, hasta 20 caracteres | En la consulta | El código, como VEN-0042 |
curl "https://panel.kaptativa.app/api/v1/inmobiliaria/consultas?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/inmobiliaria.consulta.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"hoy": {
"description": "Solo las que entraron hoy",
"type": "boolean"
},
"estado": {
"type": "string",
"enum": [
"abiertas",
"nueva",
"respondida",
"visita_agendada",
"visito",
"cerrada"
]
},
"propiedad": {
"description": "El código, como VEN-0042",
"type": "string",
"maxLength": 20
}
}
}inmobiliaria.consulta.registrar
POST/v1/inmobiliaria/consultasRegistra una consulta que llegó por teléfono o en la oficina, por una propiedad (con su código) o una tasación, con el nombre y el contacto de la persona.
- Tipo
- Acción reversible
- Alcance
inmobiliaria:escritura- Permiso de la persona
inmobiliaria-consultas.crear
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
propiedad | texto, hasta 20 caracteres | En el cuerpo | El código; sin código es una tasación |
nombreobligatorio | texto, hasta 120 caracteres | En el cuerpo | |
telefono | texto, hasta 40 caracteres | En el cuerpo | |
email | texto (email) | En el cuerpo | |
mensaje | texto, hasta 2000 caracteres | En el cuerpo | |
canal | "telefono" | "oficina" | En el cuerpo |
curl -X POST "https://panel.kaptativa.app/api/v1/inmobiliaria/consultas" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"nombre":"Ana"}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/inmobiliaria.consulta.registrar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"propiedad": {
"description": "El código; sin código es una tasación",
"type": "string",
"maxLength": 20
},
"nombre": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"telefono": {
"type": "string",
"maxLength": 40
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"mensaje": {
"type": "string",
"maxLength": 2000
},
"canal": {
"type": "string",
"enum": [
"telefono",
"oficina"
]
}
},
"required": [
"nombre"
]
}inmobiliaria.interesado.listar
GET/v1/inmobiliaria/interesadosLista quién busca qué: cada búsqueda activa con la persona, lo que busca y cuántas propiedades nuevas coinciden.
- Tipo
- Consulta
- Alcance
inmobiliaria:lectura- Permiso de la persona
inmobiliaria-interesados.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
buscar | texto, hasta 80 caracteres | En la consulta | |
conNuevas | verdadero o falso | En la consulta | Solo las que tienen coincidencias sin mandar |
curl "https://panel.kaptativa.app/api/v1/inmobiliaria/interesados?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/inmobiliaria.interesado.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"buscar": {
"type": "string",
"maxLength": 80
},
"conNuevas": {
"description": "Solo las que tienen coincidencias sin mandar",
"type": "boolean"
}
}
}inmobiliaria.emprendimiento.listar
GET/v1/inmobiliaria/emprendimientosLista los emprendimientos con su estado de obra, avance, entrega, unidades disponibles y precio desde.
- Tipo
- Consulta
- Alcance
inmobiliaria:lectura- Permiso de la persona
inmobiliaria-emprendimientos.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
buscar | texto, hasta 80 caracteres | En la consulta |
curl "https://panel.kaptativa.app/api/v1/inmobiliaria/emprendimientos?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/inmobiliaria.emprendimiento.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"buscar": {
"type": "string",
"maxLength": 80
}
}
}inmobiliaria.emprendimiento.ver
GET/v1/inmobiliaria/emprendimientos/{nombre}Muestra la disponibilidad de un emprendimiento por tipología y unidad, con el estado de cada una.
- Tipo
- Consulta
- Alcance
inmobiliaria:lectura- Permiso de la persona
inmobiliaria-emprendimientos.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
nombreobligatorio | texto, hasta 120 caracteres | En la ruta | El nombre o parte del nombre |
curl "https://panel.kaptativa.app/api/v1/inmobiliaria/emprendimientos/Ana" \
-H "Authorization: Bearer TU_TOKEN"También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/inmobiliaria.emprendimiento.ver.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"nombre": {
"type": "string",
"minLength": 2,
"maxLength": 120,
"description": "El nombre o parte del nombre"
}
},
"required": [
"nombre"
]
}Bandeja
3 operaciones. Alcances: bandeja:lectura y bandeja:escritura.
bandeja.conversacion.sin_contestar
GET/v1/bandeja/conversaciones/sin-contestarLista las conversaciones de WhatsApp que esperan respuesta en las líneas que la persona ve, con el contacto, la línea, quién la tiene y el último mensaje.
- Tipo
- Consulta
- Alcance
bandeja:lectura- Permiso de la persona
bandeja-whatsapp.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
mias | verdadero o falso | En la consulta | Solo las asignadas a la persona |
curl "https://panel.kaptativa.app/api/v1/bandeja/conversaciones/sin-contestar?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/bandeja.conversacion.sin_contestar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"mias": {
"description": "Solo las asignadas a la persona",
"type": "boolean"
}
}
}bandeja.envio.programar
POST/v1/bandeja/enviosPrograma un mensaje de WhatsApp para una conversación que ya existe, a una fecha y hora. Se puede cancelar hasta que sale.
- Tipo
- Acción reversible
- Alcance
bandeja:escritura- Permiso de la persona
bandeja-whatsapp.crear
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
contactoobligatorio | texto, hasta 80 caracteres | En el cuerpo | El nombre o el teléfono del contacto |
textoobligatorio | texto, hasta 4096 caracteres | En el cuerpo | |
cuandoobligatorio | texto | En el cuerpo | La fecha y hora en Buenos Aires, como 2026-10-30T10:00 |
curl -X POST "https://panel.kaptativa.app/api/v1/bandeja/envios" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"contacto":"Ana García","texto":"Hola, Ana. Te escribo por la consulta de ayer.","cuando":"2026-10-30T10:00"}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/bandeja.envio.programar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"contacto": {
"type": "string",
"minLength": 2,
"maxLength": 80,
"description": "El nombre o el teléfono del contacto"
},
"texto": {
"type": "string",
"minLength": 1,
"maxLength": 4096
},
"cuando": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
"description": "La fecha y hora en Buenos Aires, como 2026-10-30T10:00"
}
},
"required": [
"contacto",
"texto",
"cuando"
]
}bandeja.respuesta.buscar
GET/v1/bandeja/respuestasBusca entre las respuestas rápidas que la persona ve (las compartidas y las suyas) por atajo, título o texto, para partir de ellas al preparar un borrador.
- Tipo
- Consulta
- Alcance
bandeja:lectura- Permiso de la persona
bandeja-respuestas.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
buscar | texto, hasta 80 caracteres | En la consulta |
curl "https://panel.kaptativa.app/api/v1/bandeja/respuestas?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/bandeja.respuesta.buscar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"buscar": {
"type": "string",
"maxLength": 80
}
}
}Tienda
16 operaciones. Alcances: tienda:lectura y tienda:escritura.
- tienda.producto.listar
- tienda.producto.ver
- tienda.producto.crear
- tienda.producto.editar
- tienda.categoria.listar
- tienda.marca.listar
- tienda.stock.ver
- tienda.deposito.listar
- tienda.stock.ajustar
- tienda.movimiento_stock.registrar
- tienda.movimiento_stock.listar
- tienda.pedido.listar
- tienda.pedido.ver
- tienda.pedido.cambiar_estado
- tienda.pedido.cancelar
- tienda.pedido.cambiar_entrega
tienda.producto.listar
GET/v1/tienda/productosLista los productos del catálogo con su categoría, marca, precio, stock total y si se ven en el sitio; filtra por texto (título, SKU o código de barras), categoría, marca, ocultos y archivados.
- Tipo
- Consulta
- Alcance
tienda:lectura- Permiso de la persona
tienda-productos.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
buscar | texto, hasta 80 caracteres | En la consulta | |
categoriaId | texto (uuid) | En la consulta | |
marcaId | texto (uuid) | En la consulta | |
ocultos | verdadero o falso | En la consulta | Solo los que no se ven en el sitio |
archivados | verdadero o falso | En la consulta | Los archivados en lugar de los vigentes |
curl "https://panel.kaptativa.app/api/v1/tienda/productos?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/tienda.producto.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"buscar": {
"type": "string",
"maxLength": 80
},
"categoriaId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"marcaId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"ocultos": {
"description": "Solo los que no se ven en el sitio",
"type": "boolean"
},
"archivados": {
"description": "Los archivados en lugar de los vigentes",
"type": "boolean"
}
}
}tienda.producto.ver
GET/v1/tienda/productos/{id}Muestra la ficha de un producto: textos, categoría, marca, moneda, visibilidad y sus variantes con precio, SKU, código de barras y peso.
- Tipo
- Consulta
- Alcance
tienda:lectura- Permiso de la persona
tienda-productos.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
idobligatorio | texto (uuid) | En la ruta | El id que devuelve tienda.producto.listar |
curl "https://panel.kaptativa.app/api/v1/tienda/productos/c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e" \
-H "Authorization: Bearer TU_TOKEN"También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/tienda.producto.ver.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id que devuelve tienda.producto.listar"
}
},
"required": [
"id"
]
}tienda.producto.crear
POST/v1/tienda/productosDa de alta un producto simple, sin variantes: título, textos, categoría, marca, moneda, precio, SKU, código de barras y peso. Las variantes, las fotos y el resto se cargan desde el panel.
- Tipo
- Acción reversible
- Alcance
tienda:escritura- Permiso de la persona
tienda-productos.crear
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
tituloobligatorio | texto, hasta 120 caracteres | En el cuerpo | |
subtitulo | texto, hasta 160 caracteres o nulo | En el cuerpo | |
descripcionCorta | texto, hasta 400 caracteres o nulo | En el cuerpo | |
descripcion | texto, hasta 20000 caracteres o nulo | En el cuerpo | |
categoriaId | texto (uuid) o nulo | En el cuerpo | El id que devuelve tienda.categoria.listar. Sin categoría el producto no se ve en el sitio |
marcaId | texto (uuid) o nulo | En el cuerpo | El id que devuelve tienda.marca.listar |
visibleMinoristas | verdadero o falso | En el cuerpo | |
visibleMayoristas | verdadero o falso | En el cuerpo | |
destacado | verdadero o falso | En el cuerpo | |
precio | número, de 0 a 10000000000 o nulo | En el cuerpo | El precio de venta, en la moneda del producto |
precioAnterior | número, de 0 a 10000000000 o nulo | En el cuerpo | El precio tachado |
sku | texto, hasta 60 caracteres o nulo | En el cuerpo | |
codigoBarras | texto, hasta 40 caracteres o nulo | En el cuerpo | |
pesoGramos | entero, de 0 a 10000000 o nulo | En el cuerpo | Las tarifas de envío van por rango de peso |
moneda | "ARS" | "USD" | En el cuerpo | |
alicuotaIva | "0" | "21" | "27" | "10.5" | "exento" | "no_gravado" | En el cuerpo |
curl -X POST "https://panel.kaptativa.app/api/v1/tienda/productos" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"titulo":"Llamar a Ana García"}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/tienda.producto.crear.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"titulo": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"subtitulo": {
"anyOf": [
{
"type": "string",
"maxLength": 160
},
{
"type": "null"
}
]
},
"descripcionCorta": {
"anyOf": [
{
"type": "string",
"maxLength": 400
},
{
"type": "null"
}
]
},
"descripcion": {
"anyOf": [
{
"type": "string",
"maxLength": 20000
},
{
"type": "null"
}
]
},
"categoriaId": {
"description": "El id que devuelve tienda.categoria.listar. Sin categoría el producto no se ve en el sitio",
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"marcaId": {
"description": "El id que devuelve tienda.marca.listar",
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"visibleMinoristas": {
"type": "boolean"
},
"visibleMayoristas": {
"type": "boolean"
},
"destacado": {
"type": "boolean"
},
"precio": {
"description": "El precio de venta, en la moneda del producto",
"anyOf": [
{
"type": "number",
"minimum": 0,
"maximum": 10000000000
},
{
"type": "null"
}
]
},
"precioAnterior": {
"description": "El precio tachado",
"anyOf": [
{
"type": "number",
"minimum": 0,
"maximum": 10000000000
},
{
"type": "null"
}
]
},
"sku": {
"anyOf": [
{
"type": "string",
"maxLength": 60
},
{
"type": "null"
}
]
},
"codigoBarras": {
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
]
},
"pesoGramos": {
"description": "Las tarifas de envío van por rango de peso",
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
{
"type": "null"
}
]
},
"moneda": {
"type": "string",
"enum": [
"ARS",
"USD"
]
},
"alicuotaIva": {
"type": "string",
"enum": [
"0",
"21",
"27",
"10.5",
"exento",
"no_gravado"
]
}
},
"required": [
"titulo"
]
}tienda.producto.editar
PATCH/v1/tienda/productos/{id}Cambia los datos básicos de un producto: título, textos, categoría, marca y visibilidad; en un producto sin variantes, también el precio, el SKU, el código de barras y el peso. Lo que no se manda queda como está.
- Tipo
- Acción reversible
- Alcance
tienda:escritura- Permiso de la persona
tienda-productos.editar
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
idobligatorio | texto (uuid) | En la ruta | El id que devuelve tienda.producto.listar |
titulo | texto, hasta 120 caracteres | En el cuerpo | |
subtitulo | texto, hasta 160 caracteres o nulo | En el cuerpo | |
descripcionCorta | texto, hasta 400 caracteres o nulo | En el cuerpo | |
descripcion | texto, hasta 20000 caracteres o nulo | En el cuerpo | |
categoriaId | texto (uuid) o nulo | En el cuerpo | El id que devuelve tienda.categoria.listar. Sin categoría el producto no se ve en el sitio |
marcaId | texto (uuid) o nulo | En el cuerpo | El id que devuelve tienda.marca.listar |
visibleMinoristas | verdadero o falso | En el cuerpo | |
visibleMayoristas | verdadero o falso | En el cuerpo | |
destacado | verdadero o falso | En el cuerpo | |
precio | número, de 0 a 10000000000 o nulo | En el cuerpo | El precio de venta, en la moneda del producto |
precioAnterior | número, de 0 a 10000000000 o nulo | En el cuerpo | El precio tachado |
sku | texto, hasta 60 caracteres o nulo | En el cuerpo | |
codigoBarras | texto, hasta 40 caracteres o nulo | En el cuerpo | |
pesoGramos | entero, de 0 a 10000000 o nulo | En el cuerpo | Las tarifas de envío van por rango de peso |
curl -X PATCH "https://panel.kaptativa.app/api/v1/tienda/productos/c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"titulo":"Llamar a Ana García"}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/tienda.producto.editar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id que devuelve tienda.producto.listar"
},
"titulo": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"subtitulo": {
"anyOf": [
{
"type": "string",
"maxLength": 160
},
{
"type": "null"
}
]
},
"descripcionCorta": {
"anyOf": [
{
"type": "string",
"maxLength": 400
},
{
"type": "null"
}
]
},
"descripcion": {
"anyOf": [
{
"type": "string",
"maxLength": 20000
},
{
"type": "null"
}
]
},
"categoriaId": {
"description": "El id que devuelve tienda.categoria.listar. Sin categoría el producto no se ve en el sitio",
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"marcaId": {
"description": "El id que devuelve tienda.marca.listar",
"anyOf": [
{
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
{
"type": "null"
}
]
},
"visibleMinoristas": {
"type": "boolean"
},
"visibleMayoristas": {
"type": "boolean"
},
"destacado": {
"type": "boolean"
},
"precio": {
"description": "El precio de venta, en la moneda del producto",
"anyOf": [
{
"type": "number",
"minimum": 0,
"maximum": 10000000000
},
{
"type": "null"
}
]
},
"precioAnterior": {
"description": "El precio tachado",
"anyOf": [
{
"type": "number",
"minimum": 0,
"maximum": 10000000000
},
{
"type": "null"
}
]
},
"sku": {
"anyOf": [
{
"type": "string",
"maxLength": 60
},
{
"type": "null"
}
]
},
"codigoBarras": {
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "null"
}
]
},
"pesoGramos": {
"description": "Las tarifas de envío van por rango de peso",
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 10000000
},
{
"type": "null"
}
]
}
},
"required": [
"id"
]
}tienda.categoria.listar
GET/v1/tienda/categoriasLista las categorías y subcategorías del catálogo con su id, su tipo (de productos o de servicios), si están visibles y cuántos productos tienen.
- Tipo
- Consulta
- Alcance
tienda:lectura- Permiso de la persona
tienda-categorias.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
curl "https://panel.kaptativa.app/api/v1/tienda/categorias?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/tienda.categoria.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
}
}
}tienda.marca.listar
GET/v1/tienda/marcasLista las marcas del catálogo con su id, si están visibles y cuántos productos tienen.
- Tipo
- Consulta
- Alcance
tienda:lectura- Permiso de la persona
tienda-marcas.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
curl "https://panel.kaptativa.app/api/v1/tienda/marcas?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/tienda.marca.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
}
}
}tienda.stock.ver
GET/v1/tienda/productos/{id}/stockMuestra el stock de un producto: cada variante con su id, su total y cuánto hay en cada depósito.
- Tipo
- Consulta
- Alcance
tienda:lectura- Permiso de la persona
tienda-stock.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
idobligatorio | texto (uuid) | En la ruta | El id del producto, el que devuelve tienda.producto.listar |
curl "https://panel.kaptativa.app/api/v1/tienda/productos/c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e/stock" \
-H "Authorization: Bearer TU_TOKEN"También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/tienda.stock.ver.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id del producto, el que devuelve tienda.producto.listar"
}
},
"required": [
"id"
]
}tienda.deposito.listar
GET/v1/tienda/depositosLista los depósitos con su id, si están disponibles, cuál es el del sitio y cuántos productos tienen stock ahí.
- Tipo
- Consulta
- Alcance
tienda:lectura- Permiso de la persona
tienda-stock.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
curl "https://panel.kaptativa.app/api/v1/tienda/depositos?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/tienda.deposito.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
}
}
}tienda.stock.ajustar
POST/v1/tienda/stock/ajustesAjusta el stock de una variante en un depósito al número contado: registra la diferencia como un movimiento de ajuste en el libro de stock.
- Tipo
- Acción reversible
- Alcance
tienda:escritura- Permiso de la persona
tienda-stock.ajustar
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
varianteIdobligatorio | texto (uuid) | En el cuerpo | El id de la variante, el que devuelve tienda.stock.ver |
depositoIdobligatorio | texto (uuid) | En el cuerpo | El id que devuelve tienda.deposito.listar |
stockRealobligatorio | número, de 0 a 1000000000 | En el cuerpo | Lo que se contó, en unidades |
motivo | "Inventario físico" | "Otros" | En el cuerpo | Sin esto, Inventario físico |
observaciones | texto, hasta 500 caracteres | En el cuerpo | |
clave | texto, hasta 80 caracteres | En el cuerpo | Una clave propia de quien llama, como alta-2026-0001: repetir el pedido con la misma clave no mueve el stock dos veces |
curl -X POST "https://panel.kaptativa.app/api/v1/tienda/stock/ajustes" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"varianteId":"c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e","depositoId":"c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e","stockReal":1}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/tienda.stock.ajustar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"varianteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id de la variante, el que devuelve tienda.stock.ver"
},
"depositoId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id que devuelve tienda.deposito.listar"
},
"stockReal": {
"type": "number",
"minimum": 0,
"maximum": 1000000000,
"description": "Lo que se contó, en unidades"
},
"motivo": {
"description": "Sin esto, Inventario físico",
"type": "string",
"enum": [
"Inventario físico",
"Otros"
]
},
"observaciones": {
"type": "string",
"maxLength": 500
},
"clave": {
"type": "string",
"minLength": 8,
"maxLength": 80,
"description": "Una clave propia de quien llama, como alta-2026-0001: repetir el pedido con la misma clave no mueve el stock dos veces"
}
},
"required": [
"varianteId",
"depositoId",
"stockReal"
]
}tienda.movimiento_stock.registrar
POST/v1/tienda/stock/movimientosRegistra un ingreso, un egreso o una transferencia entre depósitos de una variante. Un egreso mayor que el stock del depósito no se registra.
- Tipo
- Acción reversible
- Alcance
tienda:escritura- Permiso de la persona
tienda-stock.crear
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
tipoobligatorio | "ingreso" | "egreso" | "transferencia" | En el cuerpo | |
varianteIdobligatorio | texto (uuid) | En el cuerpo | El id de la variante, el que devuelve tienda.stock.ver |
depositoIdobligatorio | texto (uuid) | En el cuerpo | El depósito donde entra o de donde sale |
destinoId | texto (uuid) | En el cuerpo | En una transferencia, el depósito que recibe |
cantidadobligatorio | número | En el cuerpo | En unidades |
motivoobligatorio | texto, hasta 120 caracteres | En el cuerpo | Por ejemplo Compra a proveedor, Producto dañado o Reposición |
numero | texto, hasta 60 caracteres | En el cuerpo | El número del comprobante, si hay |
observaciones | texto, hasta 500 caracteres | En el cuerpo | |
clave | texto, hasta 80 caracteres | En el cuerpo | Una clave propia de quien llama, como alta-2026-0001: repetir el pedido con la misma clave no mueve el stock dos veces |
curl -X POST "https://panel.kaptativa.app/api/v1/tienda/stock/movimientos" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"tipo":"ingreso","varianteId":"c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e","depositoId":"c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e","cantidad":1,"motivo":"texto"}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/tienda.movimiento_stock.registrar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"tipo": {
"type": "string",
"enum": [
"ingreso",
"egreso",
"transferencia"
]
},
"varianteId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id de la variante, el que devuelve tienda.stock.ver"
},
"depositoId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El depósito donde entra o de donde sale"
},
"destinoId": {
"description": "En una transferencia, el depósito que recibe",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"cantidad": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000000,
"description": "En unidades"
},
"motivo": {
"type": "string",
"minLength": 1,
"maxLength": 120,
"description": "Por ejemplo Compra a proveedor, Producto dañado o Reposición"
},
"numero": {
"description": "El número del comprobante, si hay",
"type": "string",
"maxLength": 60
},
"observaciones": {
"type": "string",
"maxLength": 500
},
"clave": {
"type": "string",
"minLength": 8,
"maxLength": 80,
"description": "Una clave propia de quien llama, como alta-2026-0001: repetir el pedido con la misma clave no mueve el stock dos veces"
}
},
"required": [
"tipo",
"varianteId",
"depositoId",
"cantidad",
"motivo"
]
}tienda.movimiento_stock.listar
GET/v1/tienda/stock/movimientosLista el libro de stock, del movimiento más nuevo al más viejo: producto, depósito, tipo, cantidad, stock anterior y nuevo, motivo y quién lo hizo; filtra por texto y por fechas.
- Tipo
- Consulta
- Alcance
tienda:lectura- Permiso de la persona
tienda-stock.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
buscar | texto, hasta 80 caracteres | En la consulta | Por título o SKU |
desde | texto | En la consulta | Una fecha, como 2026-11-30 |
hasta | texto | En la consulta | Una fecha, como 2026-11-30 |
curl "https://panel.kaptativa.app/api/v1/tienda/stock/movimientos?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/tienda.movimiento_stock.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"buscar": {
"description": "Por título o SKU",
"type": "string",
"maxLength": 80
},
"desde": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Una fecha, como 2026-11-30"
},
"hasta": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Una fecha, como 2026-11-30"
}
}
}tienda.pedido.listar
GET/v1/tienda/pedidosLista los pedidos, del más nuevo al más viejo, con su código, cliente, total y los tres estados (pedido, pago y entrega); filtra por texto (código o cliente), por cada estado y por canal.
- Tipo
- Consulta
- Alcance
tienda:lectura- Permiso de la persona
tienda-pedidos.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
buscar | texto, hasta 80 caracteres | En la consulta | |
estado | "borrador" | "pendiente" | "finalizado" | "aprobado" | "cancelado" | "arrepentido" | En la consulta | |
estadoPago | "pendiente" | "realizado" | "aprobado" | "rechazado" | "anulado" | "reembolsado" | "cuenta_corriente" | En la consulta | |
estadoEntrega | "sin_preparar" | "empaquetada" | "preparada" | "en_camino" | "enviada" | "retirada" | En la consulta | |
canal | "sitio" | "sistema" | "mercado_libre" | "local" | "instagram" | "whatsapp" | En la consulta |
curl "https://panel.kaptativa.app/api/v1/tienda/pedidos?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/tienda.pedido.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"buscar": {
"type": "string",
"maxLength": 80
},
"estado": {
"type": "string",
"enum": [
"borrador",
"pendiente",
"finalizado",
"aprobado",
"cancelado",
"arrepentido"
]
},
"estadoPago": {
"type": "string",
"enum": [
"pendiente",
"realizado",
"aprobado",
"rechazado",
"anulado",
"reembolsado",
"cuenta_corriente"
]
},
"estadoEntrega": {
"type": "string",
"enum": [
"sin_preparar",
"empaquetada",
"preparada",
"en_camino",
"enviada",
"retirada"
]
},
"canal": {
"type": "string",
"enum": [
"sitio",
"sistema",
"mercado_libre",
"local",
"instagram",
"whatsapp"
]
}
}
}tienda.pedido.ver
GET/v1/tienda/pedidos/{id}Muestra un pedido: el comprador, los productos, los importes, lo pagado y el saldo, la entrega con su transporte y seguimiento, y a qué estados puede pasar.
- Tipo
- Consulta
- Alcance
tienda:lectura- Permiso de la persona
tienda-pedidos.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
idobligatorio | texto (uuid) | En la ruta | El id que devuelve tienda.pedido.listar |
curl "https://panel.kaptativa.app/api/v1/tienda/pedidos/c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e" \
-H "Authorization: Bearer TU_TOKEN"También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/tienda.pedido.ver.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id que devuelve tienda.pedido.listar"
}
},
"required": [
"id"
]
}tienda.pedido.cambiar_estado
PATCH/v1/tienda/pedidos/{id}/estadoPasa un pedido a Pendiente, Aprobado o Finalizado, según lo que permitan su pago y su entrega. Reabrir uno cancelado pide el motivo. Para cancelarlo está tienda.pedido.cancelar.
- Tipo
- Cambio de estado
- Alcance
tienda:escritura- Permiso de la persona
tienda-pedidos.editar
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
idobligatorio | texto (uuid) | En la ruta | El id que devuelve tienda.pedido.listar |
estadoobligatorio | "pendiente" | "aprobado" | "finalizado" | En el cuerpo | |
motivo | texto, hasta 500 caracteres | En el cuerpo |
curl -X PATCH "https://panel.kaptativa.app/api/v1/tienda/pedidos/c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e/estado" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"estado":"pendiente"}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/tienda.pedido.cambiar_estado.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id que devuelve tienda.pedido.listar"
},
"estado": {
"type": "string",
"enum": [
"pendiente",
"aprobado",
"finalizado"
]
},
"motivo": {
"type": "string",
"maxLength": 500
}
},
"required": [
"id",
"estado"
]
}tienda.pedido.cancelar
POST/v1/tienda/pedidos/{id}/cancelacionCancela un pedido con su motivo, o lo marca Arrepentido si el comprador usó su derecho de arrepentimiento. No toca el pago: si estaba pagado queda la alerta Cancelado con pago para resolverla en el panel.
- Tipo
- Cambio de estado
- Alcance
tienda:escritura- Permiso de la persona
tienda-pedidos.cancelar
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
idobligatorio | texto (uuid) | En la ruta | El id que devuelve tienda.pedido.listar |
motivoobligatorio | texto, hasta 500 caracteres | En el cuerpo | |
arrepentimiento | verdadero o falso | En el cuerpo | El comprador se arrepintió de la compra |
curl -X POST "https://panel.kaptativa.app/api/v1/tienda/pedidos/c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e/cancelacion" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"motivo":"texto"}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/tienda.pedido.cancelar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id que devuelve tienda.pedido.listar"
},
"motivo": {
"type": "string",
"minLength": 2,
"maxLength": 500
},
"arrepentimiento": {
"description": "El comprador se arrepintió de la compra",
"type": "boolean"
}
},
"required": [
"id",
"motivo"
]
}tienda.pedido.cambiar_entrega
PATCH/v1/tienda/pedidos/{id}/entregaAvanza la entrega de un pedido (empaquetada, preparada, en camino, enviada o retirada), con el transporte y el número de seguimiento si los hay. Si la cuenta avisa los cambios por correo, el comprador recibe el aviso que ya manda el panel.
- Tipo
- Cambio de estado
- Alcance
tienda:escritura- Permiso de la persona
tienda-pedidos.cambiar_entrega
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
idobligatorio | texto (uuid) | En la ruta | El id que devuelve tienda.pedido.listar |
estadoobligatorio | "sin_preparar" | "empaquetada" | "preparada" | "en_camino" | "enviada" | "retirada" | En el cuerpo | |
transporte | texto, hasta 120 caracteres | En el cuerpo | |
tracking | texto, hasta 120 caracteres | En el cuerpo | El número de seguimiento del envío |
curl -X PATCH "https://panel.kaptativa.app/api/v1/tienda/pedidos/c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e/entrega" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"estado":"sin_preparar"}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/tienda.pedido.cambiar_entrega.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id que devuelve tienda.pedido.listar"
},
"estado": {
"type": "string",
"enum": [
"sin_preparar",
"empaquetada",
"preparada",
"en_camino",
"enviada",
"retirada"
]
},
"transporte": {
"type": "string",
"maxLength": 120
},
"tracking": {
"description": "El número de seguimiento del envío",
"type": "string",
"maxLength": 120
}
},
"required": [
"id",
"estado"
]
}Alquileres
7 operaciones. Alcances: alquileres:lectura y alquileres:escritura.
alquileres.contrato.listar
GET/v1/alquileres/contratosLista los contratos de alquiler, del más nuevo al más viejo, con el inmueble, el inquilino titular, el estado, las fechas, el alquiler vigente y la deuda vencida; filtra por estado, por texto y por los que vencen en 60 días.
- Tipo
- Consulta
- Alcance
alquileres:lectura- Permiso de la persona
alq-contratos.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
estado | "borrador" | "vigente" | "finalizado" | "rescindido" | En la consulta | |
buscar | texto, hasta 80 caracteres | En la consulta | Por inmueble, número de contrato o inquilino |
porVencer | verdadero o falso | En la consulta | Solo los vigentes que terminan en los próximos 60 días |
curl "https://panel.kaptativa.app/api/v1/alquileres/contratos?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/alquileres.contrato.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"estado": {
"type": "string",
"enum": [
"borrador",
"vigente",
"finalizado",
"rescindido"
]
},
"buscar": {
"description": "Por inmueble, número de contrato o inquilino",
"type": "string",
"maxLength": 80
},
"porVencer": {
"description": "Solo los vigentes que terminan en los próximos 60 días",
"type": "boolean"
}
}
}alquileres.contrato.ver
GET/v1/alquileres/contratos/{id}Muestra un contrato de alquiler: inmueble, inquilinos, fechas, alquiler vigente, cómo se ajusta y cuándo es el próximo ajuste, la deuda vencida con punitorios y el saldo a favor.
- Tipo
- Consulta
- Alcance
alquileres:lectura- Permiso de la persona
alq-contratos.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
idobligatorio | texto (uuid) | En la ruta | El id que devuelve alquileres.contrato.listar |
curl "https://panel.kaptativa.app/api/v1/alquileres/contratos/c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e" \
-H "Authorization: Bearer TU_TOKEN"También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/alquileres.contrato.ver.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id que devuelve alquileres.contrato.listar"
}
},
"required": [
"id"
]
}alquileres.contrato.listar_mensualidades
GET/v1/alquileres/contratos/{id}/mensualidadesLista las mensualidades de un contrato, de la más vieja a la más nueva, con su vencimiento, total, pagado, saldo, punitorios al día y estado.
- Tipo
- Consulta
- Alcance
alquileres:lectura- Permiso de la persona
alq-contratos.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
idobligatorio | texto (uuid) | En la ruta | El id que devuelve alquileres.contrato.listar |
curl "https://panel.kaptativa.app/api/v1/alquileres/contratos/c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e/mensualidades?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/alquileres.contrato.listar_mensualidades.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id que devuelve alquileres.contrato.listar"
}
},
"required": [
"id"
]
}alquileres.mensualidad.listar
GET/v1/alquileres/mensualidadesLista las mensualidades de un mes de todos los contratos, con el inquilino, el inmueble, el saldo y los punitorios al día; filtra por estado y por texto. Sin período, el mes en curso.
- Tipo
- Consulta
- Alcance
alquileres:lectura- Permiso de la persona
alq-mensualidades.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
periodo | texto | En la consulta | El mes, como 2026-11 |
estado | "pendiente" | "vencida" | "parcial" | "pagada" | "anulada" | En la consulta | |
buscar | texto, hasta 80 caracteres | En la consulta | Por inquilino, inmueble o número de contrato |
curl "https://panel.kaptativa.app/api/v1/alquileres/mensualidades?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/alquileres.mensualidad.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"periodo": {
"description": "El mes, como 2026-11",
"type": "string",
"pattern": "^\\d{4}-\\d{2}$"
},
"estado": {
"type": "string",
"enum": [
"pendiente",
"vencida",
"parcial",
"pagada",
"anulada"
]
},
"buscar": {
"description": "Por inquilino, inmueble o número de contrato",
"type": "string",
"maxLength": 80
}
}
}alquileres.pago.listar
GET/v1/alquileres/pagosLista los pagos de alquiler registrados entre dos fechas, del más nuevo al más viejo, con el recibo, el contrato, el inquilino, el medio y el importe. Sin fechas, los del mes en curso.
- Tipo
- Consulta
- Alcance
alquileres:lectura- Permiso de la persona
alq-cobranzas.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
desde | texto | En la consulta | Una fecha, como 2026-11-30 |
hasta | texto | En la consulta | Una fecha, como 2026-11-30 |
medio | "efectivo" | "transferencia" | "mercado_pago" | "debito" | "red_cobranza" | "deposito" | "otro" | En la consulta | |
buscar | texto, hasta 80 caracteres | En la consulta | Por inquilino, inmueble o número de recibo |
curl "https://panel.kaptativa.app/api/v1/alquileres/pagos?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/alquileres.pago.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"desde": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Una fecha, como 2026-11-30"
},
"hasta": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Una fecha, como 2026-11-30"
},
"medio": {
"type": "string",
"enum": [
"efectivo",
"transferencia",
"mercado_pago",
"debito",
"red_cobranza",
"deposito",
"otro"
]
},
"buscar": {
"description": "Por inquilino, inmueble o número de recibo",
"type": "string",
"maxLength": 80
}
}
}alquileres.pago.registrar
POST/v1/alquileres/contratos/{id}/pagosRegistra un pago que ya se recibió de un contrato: lo reparte de la mensualidad más vieja a la más nueva, congela los punitorios a la fecha y deja el recibo. No manda el recibo por correo: ese aviso sale solo cuando el pago se carga desde el panel, desde donde también se puede reenviar. Sin monto toma lo adeudado a esa fecha. Con la misma clave no se registra dos veces: devuelve el recibo que ya hizo.
- Tipo
- Cobro
- Alcance
alquileres:escritura- Permiso de la persona
alq-cobranzas.crear
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
idobligatorio | texto (uuid) | En la ruta | El id que devuelve alquileres.contrato.listar |
fechaobligatorio | texto | En el cuerpo | El día en que se recibió el pago, como 2026-11-10; no puede ser futura |
medioobligatorio | "efectivo" | "transferencia" | "mercado_pago" | "debito" | "red_cobranza" | "deposito" | "otro" | En el cuerpo | |
monto | número | En el cuerpo | En la moneda del contrato. Sin esto, lo adeudado a la fecha |
referencia | texto, hasta 120 caracteres | En el cuerpo | El número de la transferencia o del comprobante |
quienPago | "inquilino" | "garante" | "tercero" | En el cuerpo | Sin esto, el inquilino |
notas | texto, hasta 500 caracteres | En el cuerpo | |
clave | texto, hasta 80 caracteres | En el cuerpo | Una clave propia de quien llama, como cobro-2026-11-0001: repetir el pedido con la misma clave no registra el pago dos veces |
curl -X POST "https://panel.kaptativa.app/api/v1/alquileres/contratos/c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e/pagos" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"fecha":"2026-11-10","medio":"efectivo"}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/alquileres.pago.registrar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id que devuelve alquileres.contrato.listar"
},
"fecha": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "El día en que se recibió el pago, como 2026-11-10; no puede ser futura"
},
"medio": {
"type": "string",
"enum": [
"efectivo",
"transferencia",
"mercado_pago",
"debito",
"red_cobranza",
"deposito",
"otro"
]
},
"monto": {
"description": "En la moneda del contrato. Sin esto, lo adeudado a la fecha",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000000000
},
"referencia": {
"description": "El número de la transferencia o del comprobante",
"type": "string",
"maxLength": 120
},
"quienPago": {
"description": "Sin esto, el inquilino",
"type": "string",
"enum": [
"inquilino",
"garante",
"tercero"
]
},
"notas": {
"type": "string",
"maxLength": 500
},
"clave": {
"description": "Una clave propia de quien llama, como cobro-2026-11-0001: repetir el pedido con la misma clave no registra el pago dos veces",
"type": "string",
"minLength": 8,
"maxLength": 80
}
},
"required": [
"id",
"fecha",
"medio"
]
}alquileres.moroso.listar
GET/v1/alquileres/morososLista los contratos con mensualidades vencidas pasados los días de gracia: inquilino, inmueble, cuántos períodos debe y desde cuándo, capital, punitorios al día, último pago y en qué está la gestión.
- Tipo
- Consulta
- Alcance
alquileres:lectura- Permiso de la persona
alq-morosos.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
minimo | entero, de 1 a 60 | En la consulta | Solo los que deben al menos esta cantidad de períodos |
curl "https://panel.kaptativa.app/api/v1/alquileres/morosos?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/alquileres.moroso.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"minimo": {
"description": "Solo los que deben al menos esta cantidad de períodos",
"type": "integer",
"minimum": 1,
"maximum": 60
}
}
}Turnos
10 operaciones. Alcances: turnos:lectura y turnos:escritura.
turnos.servicio.listar
GET/v1/turnos/serviciosLista los servicios para los que se puede cargar un turno, con su id y cuántas sesiones trae cada uno.
- Tipo
- Consulta
- Alcance
turnos:lectura- Permiso de la persona
turnos-calendario.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
curl "https://panel.kaptativa.app/api/v1/turnos/servicios?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/turnos.servicio.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
}
}
}turnos.sucursal.listar
GET/v1/turnos/sucursalesLista las sucursales de la cuenta con su id, la principal primero.
- Tipo
- Consulta
- Alcance
turnos:lectura- Permiso de la persona
turnos-calendario.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
curl "https://panel.kaptativa.app/api/v1/turnos/sucursales?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/turnos.sucursal.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
}
}
}turnos.profesional.listar
GET/v1/turnos/profesionalesLista los profesionales que atienden turnos, con su id y si están activos.
- Tipo
- Consulta
- Alcance
turnos:lectura- Permiso de la persona
turnos-calendario.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
curl "https://panel.kaptativa.app/api/v1/turnos/profesionales?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/turnos.profesional.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
}
}
}turnos.programacion.listar
GET/v1/turnos/programacionesLista las programaciones (las agendas): el servicio y la sucursal, entre qué fechas y horas se atiende, qué días, cuánto dura cada turno, el cupo y los profesionales asignados.
- Tipo
- Consulta
- Alcance
turnos:lectura- Permiso de la persona
turnos-programaciones.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
archivadas | verdadero o falso | En la consulta | Las archivadas en lugar de las vigentes |
curl "https://panel.kaptativa.app/api/v1/turnos/programaciones?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/turnos.programacion.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"archivadas": {
"description": "Las archivadas en lugar de las vigentes",
"type": "boolean"
}
}
}turnos.disponibilidad.consultar
GET/v1/turnos/disponibilidadConsulta los horarios de un servicio en una sucursal y un día: cada uno con su franjaId, la hora, cuántos lugares le quedan y qué profesionales están libres. sinProgramacion avisa que ese día el servicio no se atiende ahí.
- Tipo
- Consulta
- Alcance
turnos:lectura- Permiso de la persona
turnos-calendario.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
servicioIdobligatorio | texto (uuid) | En la consulta | El id que devuelve turnos.servicio.listar |
sucursalIdobligatorio | texto (uuid) | En la consulta | El id que devuelve turnos.sucursal.listar |
fechaobligatorio | texto | En la consulta | Una fecha, como 2026-11-30 |
curl "https://panel.kaptativa.app/api/v1/turnos/disponibilidad?limite=25&servicioId=c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e&sucursalId=c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e&fecha=2026-11-30" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/turnos.disponibilidad.consultar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"servicioId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id que devuelve turnos.servicio.listar"
},
"sucursalId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id que devuelve turnos.sucursal.listar"
},
"fecha": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Una fecha, como 2026-11-30"
}
},
"required": [
"servicioId",
"sucursalId",
"fecha"
]
}turnos.sesion.listar
GET/v1/turnos/sesionesLista las sesiones de los turnos, por horario (las que todavía no tienen horario van primero), con el cliente, el servicio, el profesional, el estado y qué se puede hacer con cada una; filtra por fechas, estado, servicio, sucursal, profesional y texto.
- Tipo
- Consulta
- Alcance
turnos:lectura- Permiso de la persona
turnos-seguimiento.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
limite | entero, de 1 a 100 | En la consulta | Cuántos trae, de 1 a 100. Sin esto, 25. |
cursor | texto, hasta 200 caracteres | En la consulta | El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue. |
desde | texto | En la consulta | Una fecha, como 2026-11-30 |
hasta | texto | En la consulta | Una fecha, como 2026-11-30 |
estado | "sin_asignar" | "pendiente" | "confirmado" | "finalizado" | "cancelado" | "en_espera" | "atendido" | "ausente" | En la consulta | El estado de la sesión o el de sala |
servicioId | texto (uuid) | En la consulta | El id que devuelve turnos.servicio.listar |
sucursalId | texto (uuid) | En la consulta | El id que devuelve turnos.sucursal.listar |
profesionalId | texto (uuid) | En la consulta | El id que devuelve turnos.profesional.listar |
buscar | texto, hasta 80 caracteres | En la consulta | Por cliente, email o código del turno |
curl "https://panel.kaptativa.app/api/v1/turnos/sesiones?limite=25" \
-H "Authorization: Bearer TU_TOKEN"Devuelve una página: mirá Paginación. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/turnos.sesion.listar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"limite": {
"description": "Cuántos trae, de 1 a 100. Sin esto, 25.",
"type": "integer",
"minimum": 1,
"maximum": 100
},
"cursor": {
"description": "El valor de paginacion.siguiente de la respuesta anterior, para traer la página que sigue.",
"type": "string",
"maxLength": 200
},
"desde": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Una fecha, como 2026-11-30"
},
"hasta": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Una fecha, como 2026-11-30"
},
"estado": {
"description": "El estado de la sesión o el de sala",
"type": "string",
"enum": [
"sin_asignar",
"pendiente",
"confirmado",
"finalizado",
"cancelado",
"en_espera",
"atendido",
"ausente"
]
},
"servicioId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id que devuelve turnos.servicio.listar"
},
"sucursalId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id que devuelve turnos.sucursal.listar"
},
"profesionalId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id que devuelve turnos.profesional.listar"
},
"buscar": {
"description": "Por cliente, email o código del turno",
"type": "string",
"maxLength": 80
}
}
}turnos.turno.ver
GET/v1/turnos/turnos/{id}Muestra un turno: el cliente, el servicio, la sucursal y cada una de sus sesiones con su fecha, hora, profesional y estado.
- Tipo
- Consulta
- Alcance
turnos:lectura- Permiso de la persona
turnos-calendario.ver
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
idobligatorio | texto (uuid) | En la ruta | El id del turno, el que devuelven turnos.turno.crear y turnos.sesion.listar (turnoId) |
curl "https://panel.kaptativa.app/api/v1/turnos/turnos/c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e" \
-H "Authorization: Bearer TU_TOKEN"También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/turnos.turno.ver.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id del turno, el que devuelven turnos.turno.crear y turnos.sesion.listar (turnoId)"
}
},
"required": [
"id"
]
}turnos.turno.crear
POST/v1/turnos/turnosCarga un turno para un cliente que ya existe (clienteId) o uno nuevo (nuevo), de un servicio en una sucursal. Las sesiones que traen horario nacen confirmadas; las demás quedan por agendar. El turno nace sin cobro.
- Tipo
- Acción reversible
- Alcance
turnos:escritura- Permiso de la persona
turnos-calendario.crear
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
servicioIdobligatorio | texto (uuid) | En el cuerpo | El id que devuelve turnos.servicio.listar |
sucursalIdobligatorio | texto (uuid) | En el cuerpo | El id que devuelve turnos.sucursal.listar |
clienteId | texto (uuid) | En el cuerpo | El id que devuelve gestion.cliente.buscar |
nuevo | objeto | En el cuerpo | Los datos de un cliente nuevo, si no se manda clienteId |
sesiones | lista de objeto | En el cuerpo | Un horario por sesión; sin ninguno, el turno queda por agendar |
notas | texto, hasta 2000 caracteres | En el cuerpo |
curl -X POST "https://panel.kaptativa.app/api/v1/turnos/turnos" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"servicioId":"c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e","sucursalId":"c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e"}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/turnos.turno.crear.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"servicioId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id que devuelve turnos.servicio.listar"
},
"sucursalId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id que devuelve turnos.sucursal.listar"
},
"clienteId": {
"description": "El id que devuelve gestion.cliente.buscar",
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"nuevo": {
"description": "Los datos de un cliente nuevo, si no se manda clienteId",
"type": "object",
"properties": {
"nombre": {
"type": "string",
"minLength": 1,
"maxLength": 120
},
"apellido": {
"type": "string",
"maxLength": 120
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"telefono": {
"type": "string",
"maxLength": 40
}
},
"required": [
"nombre"
]
},
"sesiones": {
"description": "Un horario por sesión; sin ninguno, el turno queda por agendar",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"franjaId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El franjaId del horario elegido, el que devuelve turnos.disponibilidad.consultar"
},
"profesionalId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id que devuelve turnos.profesional.listar"
}
},
"required": [
"franjaId"
]
}
},
"notas": {
"type": "string",
"maxLength": 2000
}
},
"required": [
"servicioId",
"sucursalId"
]
}turnos.sesion.reprogramar
PATCH/v1/turnos/sesiones/{id}/horarioLe da horario a una sesión que estaba por agendar o la pasa a otro: libera el lugar anterior y toma el nuevo. Una sesión finalizada, cancelada o marcada ausente no se reprograma.
- Tipo
- Acción reversible
- Alcance
turnos:escritura- Permiso de la persona
turnos-calendario.editar
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
idobligatorio | texto (uuid) | En la ruta | El id de la sesión, el que devuelven turnos.sesion.listar y turnos.turno.ver |
franjaIdobligatorio | texto (uuid) | En el cuerpo | El franjaId del horario elegido, el que devuelve turnos.disponibilidad.consultar |
profesionalId | texto (uuid) | En el cuerpo | El id que devuelve turnos.profesional.listar |
curl -X PATCH "https://panel.kaptativa.app/api/v1/turnos/sesiones/c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e/horario" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"franjaId":"c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e"}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/turnos.sesion.reprogramar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id de la sesión, el que devuelven turnos.sesion.listar y turnos.turno.ver"
},
"franjaId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El franjaId del horario elegido, el que devuelve turnos.disponibilidad.consultar"
},
"profesionalId": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id que devuelve turnos.profesional.listar"
}
},
"required": [
"id",
"franjaId"
]
}turnos.sesion.cancelar
POST/v1/turnos/sesiones/{id}/cancelacionCancela una sesión pendiente, confirmada o por agendar y devuelve su lugar a la agenda. Si hay lista de espera para ese horario, el lugar que se libera se le ofrece al primero de la lista. Se puede reabrir desde el panel.
- Tipo
- Cambio de estado
- Alcance
turnos:escritura- Permiso de la persona
turnos-seguimiento.cancelar
| Campo | Tipo | Va | Descripción |
|---|---|---|---|
idobligatorio | texto (uuid) | En la ruta | El id de la sesión, el que devuelven turnos.sesion.listar y turnos.turno.ver |
motivo | texto, hasta 200 caracteres | En el cuerpo |
curl -X POST "https://panel.kaptativa.app/api/v1/turnos/sesiones/c0a8012e-7b1f-4c3a-9d2e-5f6a7b8c9d0e/cancelacion" \
-H "Authorization: Bearer TU_TOKEN" \
-H "Idempotency-Key: 8b1f6c1e-2d0a-4a53-9c0b-0c4e3d7a9f21" \
-H "Content-Type: application/json" \
-d '{"motivo":"texto"}'Acepta Idempotency-Key. También se puede llamar por nombre, con todos los campos en el cuerpo: POST /v1/herramientas/turnos.sesion.cancelar.
Esquema JSON de la entrada
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "El id de la sesión, el que devuelven turnos.sesion.listar y turnos.turno.ver"
},
"motivo": {
"type": "string",
"maxLength": 200
}
},
"required": [
"id"
]
}