Rutas de la API
Las rutas de /gestion exigen sesión del panel (y las de vendedor, además, que la sesión sea la de un vendedor).
Generado por
scripts/generar-referencia.mjs. No editar a mano.
Las rutas de /gestion exigen sesión del panel (y las de vendedor, además,
que la sesión sea la de un vendedor). Las de /tienda piden la clave
publicable del canal de venta en la cabecera x-pcc-clave, y las de la cuenta
del cliente, además, su sesión. Las demás tienen su propia política: avisos de
pasarelas y proveedores, licencias, instalación, salud.
Panel de gestión (/gestion)
| Ruta | Métodos | Acceso | Qué hace |
|---|---|---|---|
/gestion/ai | GET, POST | sesión del panel | GET: ajustes de IA, qué claves de proveedor hay puestas y el catálogo de modelos; POST: valida y guarda los ajustes de IA |
/gestion/ai/contenido | POST | sesión del panel | Redacta con IA textos de un producto (tarea: ficha, alt o traducir) y los devuelve como propuesta; no guarda nada y anota el coste |
/gestion/ai/copiloto | POST | sesión del panel | Responde una pregunta sobre la tienda consultando sus datos; las acciones de escritura vuelven como propuestas y no se ejecutan |
/gestion/ai/copiloto/aplicar | POST | sesión del panel | Aplica una propuesta del copiloto que una persona ha aprobado: cambiar el precio en EUR de una variante o moderar una reseña |
/gestion/ai/indice | GET, POST | sesión del panel | GET: estado del índice de búsqueda semántica; POST: reindexa todos los productos publicados y devuelve el coste (400 sin pgvector) |
/gestion/ai/mcp | GET, POST | sesión del panel | GET: si la conexión para agentes de IA está encendida y qué falta para encenderla; POST: encenderla o apagarla (exige una clave de IA) |
/gestion/ai/probar | POST | sesión del panel | Hace una llamada real de prueba al proveedor de chat configurado, con los ajustes guardados |
/gestion/ai/uso | GET | sesión del panel | Gasto en IA de los últimos dias días (30 por defecto): totales, desglose por tarea y las 20 últimas llamadas |
/gestion/autores/solicitudes | GET | sesión del panel | Lista las solicitudes para ser autor, con filtro opcional por estado |
/gestion/autores/solicitudes/{id} | POST | sesión del panel | Decide sobre una solicitud de autor (aceptada, rechazada o revisando); aceptarla crea el vendedor y le envía el enlace para poner contraseña |
/gestion/avisos | GET | sesión del panel | Lo que hay que mirar hoy, como lista de avisos; si viene vacía, es buena señal |
/gestion/boletin | GET | sesión del panel | Lista los suscriptores del boletín que han confirmado su correo |
/gestion/boletin-conector | GET | sesión del panel | GET: los servicios de correo con los que se puede sincronizar el boletín, cuál está conectado, cómo fue la última sincronización y cuántas direcciones no conoce todavía el servicio |
/gestion/boletin-conector/{nombre} | DELETE, POST | sesión del panel | POST: guarda las llaves de ese servicio y lo conecta o, con accion, prueba la conexión o fuerza un repaso ahora; DELETE: borra sus llaves (la lista de la tienda no se toca). Sólo Administrador: son llaves de un tercero |
/gestion/boletin/{id}/baja | POST | sesión del panel | Da de baja a esa persona desde el panel, sin necesitar su enlace |
/gestion/boletin/csv | GET | sesión del panel | La misma lista en un CSV, con la prueba del consentimiento dentro |
/gestion/boletin/suscritos | GET | sesión del panel | La lista del boletín con la prueba del consentimiento de cada persona: el texto exacto que se enseñó, su versión, la IP, el navegador y la fecha de confirmación |
/gestion/capabilities | GET | sesión del panel | Secciones extra del panel en esta instalación (indicadores y entradas de menú), como el marketplace si está activado |
/gestion/cart-recovery | GET | sesión del panel | Carritos abandonados de los últimos 30 días (con correo y 30 minutos parados) y estadísticas de recuperación |
/gestion/cart-recovery/{id}/resend | POST | sesión del panel | Envía a mano el recordatorio de recuperación de un carrito y lo marca como enviado; 400 si no tiene correo o ya es un pedido |
/gestion/categorias | GET, PATCH, POST | sesión del panel | GET: la lista plana de categorías con su madre; POST: crea una; PATCH: las reordena, siendo la posición en la lista el orden |
/gestion/categorias/{id} | DELETE, POST | sesión del panel | POST: cambia el nombre, el handle, la descripción, el orden, la madre o la visibilidad de una categoría; DELETE: la da de baja, sus hijas suben y sus productos se sueltan |
/gestion/clave-tienda | GET | sesión del panel | Devuelve la clave publicable del canal de venta que envían los escaparates |
/gestion/clientes | GET | sesión del panel | Lista los clientes, con búsqueda por texto (q) y paginación |
/gestion/clientes/{id} | GET, PATCH | sesión del panel | GET: un cliente; PATCH: cambia sus datos con If-Match (412 si hay conflicto); el correo no se cambia aquí (422) |
/gestion/cobros/pagos/{id} | POST | sesión del panel | Cierra a mano un pago programado a un autor: lo confirma con una referencia o lo marca fallido con accion: fallido |
/gestion/cobros/pagos/{id}/enviar | POST | sesión del panel | Envía un pago programado a un autor por el carril de pagos configurado; el id del pago es la referencia, así que reintentar es seguro |
/gestion/cobros/por-pagar | GET | sesión del panel | Autores a los que toca pagar en esta vuelta, para una moneda (moneda, eur por defecto) |
/gestion/cobros/vendedores/{id}/bloquear | POST | sesión del panel | Bloquea los cobros de un autor con un motivo (se le avisa por correo) o los desbloquea con accion: desbloquear |
/gestion/cobros/vendedores/{id}/pagar | POST | sesión del panel | Programa un pago a un autor para un periodo (todo lo disponible salvo que se indique importe); 400 si aún no se le puede pagar |
/gestion/cobros/vendedores/{id}/pagos | GET | sesión del panel | Los pagos programados de un autor, vistos desde la tienda; el destino es la pista guardada, nunca la cuenta |
/gestion/codigos/lotes/{lote}/revocar | POST | sesión del panel | Revoca un lote de claves digitales, con motivo obligatorio |
/gestion/collections | GET, POST | sesión del panel | GET: las colecciones de la tienda con cuántos productos tiene cada una; POST: crea una |
/gestion/collections/{id} | DELETE, POST | sesión del panel | POST: renombra una colección o le cambia el handle; DELETE: la da de baja y suelta sus productos |
/gestion/create-staff | POST | sesión del panel | Da de alta una cuenta del equipo en el panel; 409 si el correo ya existe, 400 si la contraseña es floja |
/gestion/customer-stats | GET | sesión del panel | Número de pedidos, gasto en la moneda principal y fecha del último pedido de los clientes de ids (200 como máximo) |
/gestion/desistimientos | GET | sesión del panel | Lista las solicitudes de desistimiento que han enviado los compradores |
/gestion/desistimientos/{id}/atender | POST | sesión del panel | Marca una solicitud de desistimiento como atendida, con una nota opcional |
/gestion/envios | GET | sesión del panel | La configuración de envíos: zonas, tarifas, clases de envío y transportistas disponibles |
/gestion/envios/clases | POST | sesión del panel | Crea una clase de envío; 422 si no es válida |
/gestion/envios/clases/{id} | DELETE, PATCH | sesión del panel | PATCH: cambia una clase de envío (422 si no es válida); DELETE: la borra (404 si no existe) |
/gestion/envios/clases/{id}/productos | GET, POST | sesión del panel | GET: productos de esta clase de envío; POST: asigna la clase a los productos indicados |
/gestion/envios/tarifas | POST | sesión del panel | Crea una tarifa de envío en una zona, con sus condiciones; 422 si no es válida |
/gestion/envios/tarifas/{id} | DELETE, PATCH | sesión del panel | PATCH: cambia una tarifa de envío (422 si no es válida); DELETE: la borra (404 si no existe) |
/gestion/envios/zonas | POST | sesión del panel | Crea una zona de envío; 422 si no es válida |
/gestion/envios/zonas/{id} | DELETE, PATCH | sesión del panel | PATCH: cambia una zona de envío (422 si no es válida); DELETE: la borra (404 si no existe) |
/gestion/facturas-manuales | GET, POST | sesión del panel | GET: lista las facturas manuales; POST: crea una factura manual en borrador (422 si no se puede crear) |
/gestion/facturas-manuales/{id} | DELETE, GET, PATCH | sesión del panel | GET: una factura manual; PATCH: edita el borrador o la marca pagada (pagada); DELETE: borra el borrador; 409 si ya no es editable |
/gestion/facturas-manuales/{id}/emitir | POST | sesión del panel | Emite una factura manual: le da número y la congela con el NIF de la tienda; 409 si no se puede emitir |
/gestion/facturas-manuales/{id}/rectificar | POST | sesión del panel | Crea una factura rectificativa de una factura manual emitida, con motivo; 409 si no se permite |
/gestion/idiomas | DELETE, GET, POST | sesión del panel | GET: idiomas de la tienda y cuánto falta por traducir; POST: añade un idioma (codigo, p. ej. fr o pt-BR); DELETE: quita uno (?codigo=, no el base) |
/gestion/idiomas/traducir | POST | sesión del panel | Traduce con IA lo que falte de un tipo de entidad (tipo) a un idioma; rehacer vuelve a hacer las traducciones existentes |
/gestion/impuestos | GET | sesión del panel | Regiones y tipos de impuesto, qué monedas llevan el impuesto dentro del precio y cómo muestra los precios el escaparate |
/gestion/impuestos/csv | GET, POST | sesión del panel | GET: exporta todos los tipos de impuesto en CSV; POST: importa tipos desde texto CSV (reemplazar los sustituye); 422 con errores por fila |
/gestion/impuestos/oss | GET | sesión del panel | Informe de IVA de la ventanilla única (OSS) entre desde y hasta (AAAA-MM-DD), en JSON o en CSV con formato=csv |
/gestion/impuestos/precios-con-impuesto | POST | sesión del panel | Indica si los precios de una moneda ya llevan el impuesto dentro (moneda, dentro) |
/gestion/impuestos/precios-escaparate | POST | sesión del panel | Indica si el escaparate enseña los precios con o sin impuestos (muestra) |
/gestion/impuestos/referencias | GET | sesión del panel | Tipos de producto y opciones de envío entre los que elegir al escribir reglas de impuestos |
/gestion/impuestos/regiones/{id} | DELETE | sesión del panel | Borra una región de impuestos |
/gestion/impuestos/tasas | POST | sesión del panel | Crea un tipo de impuesto; 422 si no es válido |
/gestion/impuestos/tasas/{id} | DELETE, PATCH | sesión del panel | PATCH: cambia un tipo de impuesto (422 si no es válido); DELETE: lo borra |
/gestion/impuestos/ue | GET, POST | sesión del panel | GET: los ajustes de IVA de la UE de la tienda; POST: los guarda (422 si no son válidos) |
/gestion/impuestos/ue/tipos | POST | sesión del panel | Carga los tipos de IVA de los países de la UE; solo los que falten salvo reemplazar: true |
/gestion/inventario | POST | sesión del panel | Fija el stock de una variante en una ubicación (variant_id, location_id, stocked_quantity), anotando quién y por qué |
/gestion/inventario/{id}/niveles | GET, POST | sesión del panel | GET: existencias de un artículo de inventario en cada ubicación; POST: fija su nivel en una ubicación, creándolo si no existe |
/gestion/legal | GET, POST | sesión del panel | GET: ajustes legales, países con perfil legal y qué se aplica; POST: guarda país, reglas de personalizados y de consentimiento digital |
/gestion/marketplace/mi-cuenta | GET | sesión de vendedor | Lo que ve un vendedor de sí mismo: ficha, saldos, movimientos, subpedidos y productos; 403 si no es un vendedor activo |
/gestion/marketplace/vendedores | GET, POST | sesión del panel | GET: vendedores con sus saldos; POST: da de alta un vendedor y le envía el enlace para poner contraseña (409 si está repetido) |
/gestion/marketplace/vendedores/{id} | GET, POST | sesión del panel | GET: ficha, saldos, movimientos y subpedidos de un vendedor; POST: cambia sus datos, estado o comisión (el slug no cambia) |
/gestion/marketplace/vendedores/{id}/envios | GET, POST | sesión del panel | GET: opciones de envío propias del vendedor y las de la tienda que hereda; POST: fija las suyas (option_ids) |
/gestion/marketplace/vendedores/{id}/liquidar | POST | sesión del panel | Anota una liquidación pagada a un vendedor (importe en céntimos, referencia obligatoria); no puede superar lo que se le debe |
/gestion/mercado/cobros | GET, POST | sesión de vendedor | GET: perfil de cobro del autor, saldo en espera y disponible, e historial de pagos; POST: guarda su perfil de cobro |
/gestion/mercado/cobros/alta | POST | sesión de vendedor | Da de alta al autor en el proveedor de pagos y devuelve el enlace de verificación de identidad (KYC) |
/gestion/mercado/cobros/cancelar | POST | sesión de vendedor | POST: el autor cancela su propia retirada mientras no haya salido (pago). Solo la suya y solo mientras esté «previsto» |
/gestion/mercado/cobros/informe | GET | sesión de vendedor | Extracto del autor entre desde y hasta: cada apunte del libro el día en que se movió el dinero, así que un reembolso cae en el mes en que se devolvió. En CSV con formato=csv (para=excel para Excel) |
/gestion/mercado/cobros/refrescar | POST | sesión de vendedor | Vuelve a preguntar al proveedor de pagos cómo va la verificación del autor |
/gestion/mercado/cobros/retirar | POST | sesión de vendedor | El autor retira su saldo disponible (o importe); mismas comprobaciones que un pago programado, un doble clic no paga dos veces |
/gestion/mercado/cola | GET | sesión del panel | Cola de revisión: piezas de autores esperando a que la tienda las revise |
/gestion/mercado/licencias | GET | sesión de vendedor | Licencias vendidas de las piezas del autor, con búsqueda por busca |
/gestion/mercado/licencias/soltar | POST | sesión de vendedor | POST: el autor libera una activación de una licencia de una pieza SUYA (clave, instancia), para que quien compró pueda mudarse de dominio. Con límite por licencia y por autor |
/gestion/mercado/operador/licencias | GET | sesión del panel | Todas las licencias del mercado, para quien lo lleva; se filtra con autor y se busca con busca. El correo del comprador sale tapado: buscar por el correo entero sigue encontrándola |
/gestion/mercado/operador/piezas/{id} | GET | sesión del panel | Una pieza entera para quien lleva el mercado, sin ser su autor: datos, versiones, historial de revisiones y capturas. Del autor solo lo que ya es público (su nombre y su dirección en el mercado), nunca su correo ni sus datos de cobro |
/gestion/mercado/perfil | GET, POST | sesión de vendedor | GET: ficha pública del autor y su reputación en soporte; POST: guarda la ficha |
/gestion/mercado/piezas | GET, POST | sesión de vendedor | GET: las piezas del autor (temas y extensiones); POST: crea una pieza nueva |
/gestion/mercado/piezas/{id} | GET, POST | sesión de vendedor | GET: una pieza del autor; POST: guarda cambios, o accion revisar para mandarla a revisión o retirar para retirarla |
/gestion/mercado/piezas/{id}/capturas | POST | sesión de vendedor | Sube capturas de una pieza (multipart); los ficheros se comprueban por su contenido y se rechazan los SVG con scripts |
/gestion/mercado/piezas/{id}/capturas/{captura} | DELETE | sesión de vendedor | Quita una captura de una pieza |
/gestion/mercado/piezas/{id}/capturas/orden | POST | sesión de vendedor | Reordena las capturas de una pieza (ids en el orden nuevo) |
/gestion/mercado/piezas/{id}/revision | POST | sesión del panel | La decisión de la tienda sobre una pieza revisada: publicada, cambios o rechazada, con notas |
/gestion/mercado/piezas/{id}/version | POST | sesión de vendedor | Sube el paquete de una versión nueva de la pieza (multipart: el fichero, version y notas) |
/gestion/mercado/resumen | GET | sesión de vendedor | Resumen del panel del autor: cifras de sus piezas, su saldo partido en disponible y en espera, y cuántos hilos de soporte esperan su respuesta |
/gestion/mercado/soporte | GET | sesión de vendedor | La bandeja de soporte del autor, con filtro por estado |
/gestion/mercado/soporte/{id} | GET, POST | sesión de vendedor | GET: una conversación de soporte del autor; POST: responde (texto) o la cierra (cerrar) |
/gestion/mercado/ventas | GET | sesión de vendedor | Las ventas del autor, una a una y por pieza, entre desde y hasta. Cada venta lleva lo que se devolvió de ella, sea cuando sea, y el país de facturación de quien compró (nada más de esa persona). En CSV con formato=csv (para=excel para Excel) |
/gestion/migracion/analizar | POST | sesión del panel | Ensayo de una importación CSV (productos o clientes, origen detectado): cuenta qué pasaría y no cambia nada |
/gestion/migracion/importar | POST | sesión del panel | Importa productos o clientes desde un CSV; 422 si el análisis encuentra errores, salvo con forzar |
/gestion/migracion/redirecciones | POST | sesión del panel | Genera las redirecciones de las URL antiguas a las nuevas desde un CSV, en nginx, apache, json o csv (?formato=) |
/gestion/mudanzas | GET, POST | sesión del panel | GET: las 20 últimas mudanzas de tienda; POST: empieza una desde Shopify o WooCommerce por API, comprobando antes las credenciales (422) |
/gestion/mudanzas/{id} | GET, POST | sesión del panel | GET: cómo va una mudanza por etapas y sus problemas; POST: accion pausar, seguir o deshacer |
/gestion/order-origin | GET | sesión del panel | De dónde salió cada uno de los pedidos que se piden (ids): el canal de venta del escaparate, el panel o la mudanza que lo trajo |
/gestion/orders/{id}/notify-confirmed | POST | sesión del panel | Envía al cliente el correo de pedido confirmado, con la factura en PDF adjunta si la hay |
/gestion/paginas | GET, POST | sesión del panel | GET: todas las páginas de contenido, borradores incluidos; POST: crea una (422 sin titulo) |
/gestion/paginas/{id} | DELETE, POST | sesión del panel | POST: cambia una página; DELETE: la borra de forma recuperable |
/gestion/paginas/{id}/traducciones | DELETE, GET, PUT | sesión del panel | GET: lo escrito en cada idioma; PUT: guarda uno (idioma más titulo, extracto, contenido, seo; un campo en blanco cae al idioma base); DELETE ?idioma=: vuelve al idioma base |
/gestion/pagos-ajustes | GET, POST | sesión del panel | GET: proveedores de pago, regiones con sus proveedores y textos de cada forma de pago; POST: fija los de una región y/o textos y recargos |
/gestion/pasarelas | GET | sesión del panel | Pasarelas de pago configuradas desde el panel, su estado y sus URL de aviso; 404 si se gestionan fuera del panel |
/gestion/pasarelas/{nombre} | DELETE, POST | sesión del panel | POST: guarda las credenciales de una pasarela, la activa o desactiva o cambia el modo pruebas; DELETE: olvida su configuración; ambos devuelven la lista |
/gestion/pedidos | GET, POST | sesión del panel | GET: lista los pedidos, con búsqueda por texto (q) y paginación; POST: da de alta a mano un pedido en borrador con su cliente, sus líneas (precios en céntimos) y sus totales |
/gestion/pedidos/{id} | GET | sesión del panel | Un pedido con todo lo que el panel enseña de él |
/gestion/pedidos/{id}/cancelar | POST | sesión del panel | Cancela un pedido con un motivo; 409 si no se puede, p. ej. si ya está cobrado y no se envía permitir_con_cobro |
/gestion/pedidos/{id}/cobrar | POST | sesión del panel | Captura los pagos autorizados del pedido y los marca como cobrados |
/gestion/pedidos/{id}/completar | POST | sesión del panel | Marca un pedido como completado; 409 si aún no está listo, salvo con forzar |
/gestion/pedidos/{id}/envios/{envio}/entregado | POST | sesión del panel | Marca uno de los envíos del pedido como entregado; 409 si no se puede |
/gestion/pedidos/{id}/envios/{envio}/enviado | POST | sesión del panel | Marca uno de los envíos del pedido como enviado y avisa al cliente por correo de que va en camino; los números de seguimiento van en seguimiento; repetirlo no manda nada |
/gestion/pedidos/{id}/preparar | POST | sesión del panel | Prepara el pedido sacando del almacén todo o los items indicados de una ubicación; 200 si ya estaba hecho, 201 si es nuevo |
/gestion/pedidos/{id}/rectificar | POST | sesión del panel | Emite una factura rectificativa de un pedido, con motivo; 409 si no se permite |
/gestion/pedidos/{id}/reembolsos | GET, POST | sesión del panel | GET: qué se puede devolver aún y qué se ha devuelto; POST: reembolsa (importe, pago, reponer stock); enviar Idempotency-Key, 409 si no es válido |
/gestion/plugins | GET, POST | sesión del panel | GET: plugins instalados con su estado, permisos, rutas y último error; POST: recarga todos los plugins |
/gestion/plugins/{id} | GET | sesión del panel | Las 200 últimas líneas del registro de un plugin |
/gestion/plugins/{id}/ajustes | GET, PUT | sesión del panel | GET: campos y valores de ajustes de un plugin, sin enseñar secretos; PUT: los valida y guarda (422 si no valen; hay que recargar) |
/gestion/posts | GET, POST | sesión del panel | GET: entradas del blog, borradores incluidos; POST: crea una entrada (el handle sale del título si no se indica) |
/gestion/posts/{id} | DELETE, GET, POST | sesión del panel | GET: una entrada del blog; POST: la cambia; DELETE: la borra |
/gestion/productos | GET, POST | sesión del panel | GET: productos con búsqueda, filtro por estado y paginación; POST: crea un producto (admite Idempotency-Key, 200 si se repite) |
/gestion/productos/{id} | DELETE, GET, POST | sesión del panel | GET: la ficha completa; POST: la cambia con If-Match (412 si hay conflicto); DELETE: la borra |
/gestion/productos/{id}/editor-variantes | GET | sesión del panel | Datos para el editor de variantes: opciones, valores y variantes del producto |
/gestion/productos/{id}/historial | GET | sesión del panel | El historial de cambios del producto: quién cambió qué y cuándo |
/gestion/productos/{id}/historial-stock | GET | sesión del panel | Los movimientos de stock de las variantes del producto: quién los cambió, cuándo, en qué almacén y de cuánto a cuánto |
/gestion/productos/{id}/opciones | POST | sesión del panel | Guarda las opciones del producto y, salvo generar: false, crea las variantes que falten |
/gestion/productos/{id}/opciones/vista-previa | POST | sesión del panel | Enseña qué variantes crearían o quitarían las opciones indicadas, sin guardar nada |
/gestion/productos/{id}/personalizacion | GET, POST | sesión del panel | GET: los campos de personalización que rellena el comprador; POST: los guarda (400 indicando el field que falla) |
/gestion/productos/{id}/precios-por-cantidad | DELETE, GET, POST | sesión del panel | GET: la regla de precios por cantidad del producto; POST: la guarda; DELETE: la quita |
/gestion/productos/{id}/variantes | POST | sesión del panel | Crea una variante a partir de sus valores de opción |
/gestion/productos/{id}/variantes-lote | POST | sesión del panel | Aplica los mismos cambios a varias variantes (ids) |
/gestion/productos/{id}/variantes-orden | POST | sesión del panel | Fija el orden en que se enseñan las variantes (ids) |
/gestion/productos/{id}/variantes/{variante} | POST | sesión del panel | Cambia una variante y su precio con If-Match (412 si hay conflicto) |
/gestion/productos/{id}/variantes/{variante}/codigos | GET, POST | sesión del panel | GET: lotes de claves de la variante con libres y entregadas, y sus ajustes; POST: importa claves desde texto como un lote nuevo |
/gestion/productos/{id}/variantes/{variante}/codigos/ajustes | POST | sesión del panel | Guarda los ajustes de claves digitales de la variante y recalcula su stock con las claves libres |
/gestion/productos/{id}/variantes/{variante}/detalle | POST | sesión del panel | Cambia los datos de una variante desde el editor de variantes |
/gestion/productos/{id}/variantes/{variante}/digital | GET, POST | sesión del panel | GET: ficheros descargables de la variante y sus ajustes; POST: sube un fichero (multipart) |
/gestion/productos/{id}/variantes/{variante}/digital/{fichero} | DELETE | sesión del panel | Borra uno de los ficheros descargables de la variante |
/gestion/productos/{id}/variantes/{variante}/digital/ajustes | POST | sesión del panel | Guarda los ajustes de descarga de la variante y la marca como digital |
/gestion/productos/{id}/variantes/{variante}/pack | DELETE, GET, POST | sesión del panel | GET: de qué se compone la variante pack; POST: guarda su composición; DELETE: deja de ser pack |
/gestion/products/visibility | POST | sesión del panel | Visibilidad en lote (action): show-all publica todo, hide-all pasa todo a borrador, limit publica solo los count primeros |
/gestion/promociones | GET, POST | sesión del panel | GET: las promociones y cupones de la tienda con sus reglas; POST: crea una |
/gestion/promociones/{id} | DELETE, GET, POST | sesión del panel | GET: la promoción completa con sus condiciones, destinos y reglas de compra; POST: la reescribe entera; DELETE: la da de baja sin tocar los pedidos que ya la usaron |
/gestion/proveedores-pago | GET | sesión del panel | Lista los proveedores de pago |
/gestion/puntos | GET | sesión del panel | Resumen del programa de puntos: ajustes, lo que se debe, rotura, movimientos de dias días y clientes por saldo |
/gestion/puntos/ajustes | GET, POST | sesión del panel | GET: ajustes del programa de puntos y sus valores por defecto; POST: los cambia (solo claves conocidas; 400 si no hay nada) |
/gestion/puntos/clientes/{id} | GET, POST | sesión del panel | GET: el libro de puntos de un cliente con sus lotes vivos; POST: ajuste a mano con nota obligatoria |
/gestion/quien-soy | GET | sesión del panel | El usuario del panel con la sesión abierta; 403 si la sesión no es del panel |
/gestion/regiones | GET | sesión del panel | Lista las regiones |
/gestion/regiones/{id} | PATCH | sesión del panel | Cambia una región con If-Match (412 si hay conflicto); 409 si se cambia la moneda y hay pedidos que la usan |
/gestion/reviews | GET | sesión del panel | Reseñas por moderar, con filtro por status (200 como máximo) |
/gestion/reviews/{id} | DELETE, POST | sesión del panel | POST: cambia el estado de una reseña (pending, approved o rejected); DELETE: la borra |
/gestion/saldo | GET | sesión del panel | Lo que se debe en saldo y la lista de saldos (tarjetas regalo y saldo de clientes), con filtro por tipo y paginada |
/gestion/saldo/{id} | DELETE, GET | sesión del panel | GET: un saldo con sus movimientos; DELETE: lo desactiva |
/gestion/saldo/clientes | POST | sesión del panel | Abona o retira saldo de tienda a un cliente (importe en unidades, nota obligatoria); 409 si quedaría en negativo |
/gestion/saldo/tarjetas | POST | sesión del panel | Emite una tarjeta regalo a mano; el código se devuelve una sola vez y se envía al destinatario si se indica |
/gestion/scan | GET | sesión del panel | Busca una variante por barcode exacto, o por SKU, código de barras o título (q), con su stock en location_id (el primer almacén si no se dice) y el total entre almacenes en stock_all_locations; 404 si ese almacén no existe |
/gestion/scan/adjust | POST | sesión del panel | Suma, resta o fija el stock de una variante en location_id (mode: add, sub o set); sin decirlo, el primer almacén. 404 si ese almacén no existe, 409 si no hay ninguno y 400 si la variante no gestiona inventario allí |
/gestion/scan/bind | POST | sesión del panel | Asigna un código de barras a una variante; 409 si ya lo tiene otra |
/gestion/scan/count-apply | POST | sesión del panel | Aplica un recuento completo: fija cada variante de la lista a la cantidad contada e informa de las que se saltan |
/gestion/send-invoice | POST | sesión del panel | Manda por correo el PDF de una factura, por la cola de avisos. Hay que decir de qué factura se trata (pedido o factura); el destinatario tiene que ser su cliente o una dirección de PCC_FACTURA_DESTINOS, y el envío queda frenado y anotado |
/gestion/soporte | GET | sesión del panel | La bandeja de soporte de la tienda (100 como máximo), lo que más espera primero, con filtro por estado |
/gestion/soporte/{id} | DELETE, GET, POST | sesión del panel | GET: la conversación entera; POST: cambia su estado (abierta, esperando o resuelta); DELETE: la borra con sus mensajes |
/gestion/soporte/{id}/borrador | POST | sesión del panel | Redacta con IA una respuesta a partir de la conversación y los pedidos del cliente; la guarda como borrador sin enviarla |
/gestion/soporte/{id}/responder | POST | sesión del panel | Envía la respuesta al cliente por correo, descarta los borradores y deja la conversación esperando |
/gestion/soporte/borrar | GET, POST | sesión del panel | GET: el plazo de conservación en meses; POST: borra ya lo que pasa del plazo o todo lo de un email |
/gestion/tema-activo | GET, POST | sesión del panel | GET: el tema activo, los instalados y cuáles tienen ajustes; POST: pone otro tema (tema) |
/gestion/temas-ajustes | GET, POST | sesión del panel | GET: los ajustes de diseño de un tema (?tema=); POST: los guarda, fusionando o sustituyendo con reemplazar |
/gestion/temas-demo | GET, POST | sesión del panel | GET: qué trae el contenido de ejemplo de un tema, sin importarlo; POST: lo importa (409 si la tienda no está recién instalada) |
/gestion/tienda | GET, PATCH | sesión del panel | GET: la tienda y sus ajustes, con ETag; PATCH: fusiona ajustes en metadata (y name) con If-Match (412) |
/gestion/tokens | GET, POST | sesión del panel | GET: los tokens de servicio de la tienda y el catálogo de áreas que se les puede dar; POST: crea uno y lo devuelve la única vez que se enseña |
/gestion/tokens/{id} | DELETE | sesión del panel | Revoca un token de servicio; deja de valer en su siguiente petición y la fila se conserva para saber qué alcanzaba |
/gestion/ubicaciones | GET | sesión del panel | Lista las ubicaciones de stock (almacenes) |
/gestion/uploads | POST | sesión del panel | Sube imágenes (multipart, 16 MB) y devuelve sus URL; los ficheros se comprueban por su contenido y se listan los rechazados |
/gestion/usuarios | GET | sesión del panel | Lista el personal de la tienda, con búsqueda y paginación |
/gestion/usuarios/{id} | DELETE, GET, PATCH | sesión del panel | GET: un usuario del equipo; PATCH: lo cambia con If-Match (412); DELETE: lo borra y cierra sus sesiones (409 si es el último administrador) |
/gestion/wishlist | GET | sesión del panel | Los productos más deseados en las listas de deseos de los clientes, con totales |
Tienda (/tienda)
| Ruta | Métodos | Acceso | Qué hace |
|---|---|---|---|
/tienda/autores/{slug} | GET | pública, con clave publicable | La ficha pública de un autor con sus piezas a la venta en esta tienda, a precio de catálogo, y su reputación en soporte |
/tienda/autores/solicitudes | POST | pública, con clave publicable | Envía una solicitud para ser autor en el mercado de la tienda |
/tienda/boletin | POST | pública, con clave publicable | Alta en el boletín guardando el consentimiento dado; envía un enlace de confirmación (doble confirmación) |
/tienda/boletin/baja | POST | pública, con clave publicable | Da de baja del boletín con el token del correo |
/tienda/boletin/confirmar | POST | pública, con clave publicable | Confirma la suscripción al boletín con el token del correo (de un solo uso y con caducidad) |
/tienda/buscar | GET | pública, con clave publicable | Buscador de la tienda (q), semántico si está disponible; en caché 10 minutos y por palabras si se supera el límite |
/tienda/carritos | POST | pública, con clave publicable | Crea un carrito (moneda, región, idioma) y lo devuelve con 201 |
/tienda/carritos/{id} | GET | pública, con clave publicable | Un carrito con sus líneas y totales |
/tienda/carritos/{id}/completar | POST | pública, con clave publicable | Convierte el carrito en pedido tras comprobar el pago; idempotente (201 nuevo, 200 ya hecho); 409 si el pago no está confirmado |
/tienda/carritos/{id}/consentimiento-digital | POST | pública, con clave publicable | Guarda el consentimiento del comprador a la entrega digital inmediata, con el texto legal y la versión que vio |
/tienda/carritos/{id}/cupon | POST | pública, con clave publicable | Aplica un código de descuento; devuelve si se ha aplicado y, si no, por qué |
/tienda/carritos/{id}/cupon/{codigo} | DELETE | pública, con clave publicable | Quita un código de descuento del carrito |
/tienda/carritos/{id}/datos | POST | pública, con clave publicable | Pone el correo y las direcciones de envío y facturación del carrito |
/tienda/carritos/{id}/envios | GET, POST | pública, con clave publicable | GET: opciones de envío del carrito; POST: las elige, una por grupo en carritos del marketplace |
/tienda/carritos/{id}/lineas | POST | pública, con clave publicable | Añade una variante con cantidad, personalización y elección de pack; 400 con código si se salta una regla de cantidad |
/tienda/carritos/{id}/lineas/{linea} | DELETE, POST | pública, con clave publicable | POST: cambia la cantidad de una línea; DELETE: quita la línea |
/tienda/carritos/{id}/nif-iva | POST | pública, con clave publicable | Pone o quita el NIF-IVA intracomunitario del comprador para compras de empresa |
/tienda/carritos/{id}/pago | POST | pública, con clave publicable | Elige la forma de pago entre las disponibles para el carrito |
/tienda/carritos/{id}/pagos | GET | pública, con clave publicable | Formas de pago disponibles para el carrito |
/tienda/carritos/{id}/puntos | DELETE, POST | sesión de cliente | POST: canjea puntos del cliente en su propio carrito; DELETE: quita los puntos canjeados |
/tienda/carritos/{id}/saldo | POST | pública, con clave publicable | Aplica una tarjeta regalo por codigo, o el saldo del cliente con sesión si no se envía código |
/tienda/carritos/{id}/saldo/{saldoId} | DELETE | pública, con clave publicable | Quita del carrito una tarjeta regalo o saldo aplicado |
/tienda/categorias | GET | pública, con clave publicable | Las categorías de navegación de la tienda, o una por handle |
/tienda/contact | POST | pública, con clave publicable | Formulario de contacto: envía el mensaje a la tienda por correo; limitado por IP, 503 si no hay destinatario configurado |
/tienda/cuenta | GET, POST | sesión de cliente | GET: la ficha del cliente con sesión; POST: la cambia |
/tienda/cuenta/confirmar | POST | sesión de cliente | Confirma el correo del cliente con el token y le asigna los pedidos que hizo como invitado |
/tienda/cuenta/entrar | POST | pública, con clave publicable | Entrada del cliente que devuelve un token de sesión; limitada por cuenta e IP; vincula el carrito cart_id si se envía |
/tienda/cuenta/licencias | GET | sesión de cliente | Las licencias del cliente identificado, cada una con los sitios donde está activa ahora mismo |
/tienda/cuenta/licencias/soltar | POST | sesión de cliente | Desactiva uno de los sitios del propio cliente para devolverle la plaza; con tope por licencia y por cliente |
/tienda/cuenta/pedidos | GET | sesión de cliente | Los pedidos del cliente con sesión, paginados |
/tienda/cuenta/pedidos/{id} | GET | sesión de cliente | Un pedido del cliente con sesión; 404 si no es suyo |
/tienda/cuenta/registrar | POST | pública, con clave publicable | Registra una cuenta de cliente; limitada por IP; indica cuántos pedidos de invitado esperan a que confirme el correo |
/tienda/cuenta/salir | POST | pública | Cierra la sesión actual del cliente |
/tienda/descargas/{id} | GET | pública | Descarga un fichero comprado con su enlace firmado (firma); 403 si el enlace caducó, 410 si ya no está disponible |
/tienda/idiomas | GET | pública | Los idiomas de la tienda, el principal y el elegido a partir de locale o Accept-Language |
/tienda/marketplace/envios | GET, POST | pública, con clave publicable | GET: opciones de envío por paquete de vendedor para cart_id; POST: elige una opción para cada paquete |
/tienda/mi-saldo | GET | sesión de cliente | El saldo de tienda del cliente con sesión y sus movimientos |
/tienda/mis-puntos | GET | sesión de cliente | Los puntos del cliente, las reglas del programa, la próxima caducidad y los 50 últimos movimientos |
/tienda/paginas | GET | pública, con clave publicable | Páginas de contenido publicadas (handle, título y orden), sin su contenido |
/tienda/paginas/{handle} | GET | pública, con clave publicable | Una página publicada con su contenido saneado y sus campos SEO |
/tienda/pagos/recargo | POST | pública, con clave publicable | Pone en el carrito el recargo de la forma de pago elegida (cart_id, provider_id) |
/tienda/pedidos/{id} | GET | pública, con clave publicable | Un pedido tal como lo enseña el escaparate. Sin la prueba de acceso (cabecera x-pcc-pedido) sale sin el correo ni la dirección; con PCC_PEDIDO_ABIERTO=1 vuelve a salir entero |
/tienda/pedidos/{id}/acceso | POST | pública, con clave publicable | Cambia el id del pedido más el correo del comprador (por POST, nunca en la URL) por una prueba de acceso firmada y con caducidad; con freno por pedido y por IP |
/tienda/pedidos/{id}/codigos | GET | pública, con clave publicable | Las claves digitales de un pedido con su estado, sin la clave en sí; hace falta la prueba de acceso de ese pedido |
/tienda/pedidos/{id}/codigos/{codigo}/revelar | POST | pública, con clave publicable | Destapa una clave entregada y lo anota como prueba de entrega; hace falta la prueba de acceso de ese pedido. 409 si no está entregada, está retirada o es de otro pedido |
/tienda/pedidos/{id}/descargas | GET | pública, con clave publicable | Los ficheros descargables de un pedido, con enlaces firmados; hace falta la prueba de acceso de ese pedido |
/tienda/pedidos/{id}/desistimiento | GET, POST | pública, con clave publicable | GET: qué líneas del pedido admiten desistimiento y hasta cuándo; POST: solicita desistir de líneas, con motivo y correo |
/tienda/pedidos/{id}/factura | GET | pública, con clave publicable | La factura de un pedido del cliente con sesión, en PDF |
/tienda/pedidos/{id}/licencias | GET | pública, con clave publicable | Las licencias emitidas para un pedido, con su clave entera; hace falta la prueba de acceso de ese pedido |
/tienda/personalizacion/ficheros | POST | pública, con clave publicable | Sube el fichero que adjunta el comprador para personalizar un producto (multipart, un fichero) |
/tienda/personalizacion/ficheros/{id} | GET | pública | Descarga un fichero de personalización con su enlace firmado; 403 si la firma no vale |
/tienda/posts | GET | pública, con clave publicable | Entradas publicadas del blog con el HTML saneado, o una por handle |
/tienda/producto-extras | GET | pública, con clave publicable | Extras de IA para la ficha de un producto (product_id): productos parecidos y resumen de sus reseñas |
/tienda/productos | GET | pública, con clave publicable | Listado del catálogo, traducido, con filtro por categoría, texto, tipo o ids, orden y paginación |
/tienda/productos/{handle} | GET | pública, con clave publicable | La ficha de un producto por handle; las piezas del mercado traen además capturas, demo e historial de versiones |
/tienda/products-by-price | GET | pública, con clave publicable | Ids de producto ordenados por su precio base más bajo, con filtro por texto y categoría, paginados |
/tienda/provincias | GET | pública, con clave publicable | Provincias o estados de un país (pais) para los formularios de dirección |
/tienda/regiones | GET | pública, con clave publicable | Regiones con su moneda e impuestos por país |
/tienda/reviews | GET, POST | pública, con clave publicable | GET: reseñas aprobadas de un producto con la nota media; POST: deja una reseña, pendiente de moderar |
/tienda/soporte | POST | pública, con clave publicable | Abre una consulta de soporte con el autor de una pieza usando la clave de licencia; al autor le llega un correo |
/tienda/soporte/{id} | POST | pública, con clave publicable | El lado del comprador en una consulta al autor, identificado por el correo del hilo: leerla, responder (texto) o valorarla (resuelto) |
/tienda/soporte/chat | POST | pública, con clave publicable | Asistente de IA que responde solo con el catálogo; limitado, avisa cuando hace falta una persona y lo guarda en soporte si llega email |
/tienda/stock-map | GET | pública, con clave publicable | Stock disponible por variante con tope de 10 (9999 si no se controla o admite reservas); en caché un minuto |
/tienda/tienda | GET | pública, con clave publicable | Datos públicos de la tienda: razón social, NIF, dirección, contacto, país, cómo se muestran los precios y avisos legales |
/tienda/wishlist | DELETE, GET, POST | pública, con clave publicable | GET: la lista de deseos del cliente con sesión; POST: añade un producto o fusiona una lista; DELETE: quita un producto (?product_id=) |
Otras
| Ruta | Métodos | Acceso | Qué hace |
|---|---|---|---|
/auth-propia/entrar | POST | pública | Entrada al panel que devuelve un token de sesión; limitada por cuenta y por IP |
/auth-propia/restablecer/confirmar | POST | pública | Pone una contraseña nueva con el token de restablecimiento y cierra las sesiones abiertas del usuario |
/auth-propia/restablecer/pedir | POST | pública | Pide el correo para restablecer la contraseña; responde siempre lo mismo para no delatar cuentas; limitada |
/auth-propia/salir | POST | pública | Cierra la sesión actual del panel |
/auth-propia/yo | DELETE, GET | sesión de vendedor | GET: de quién es la sesión (su ficha y las sesiones que tiene abiertas); DELETE: cierra todas las sesiones de ese usuario |
/carriles/{carril}/avisos | GET, POST | pública | Aviso del proveedor de pagos a autores (POST para Stripe, GET para Mangopay); se verifica antes de tocar el pago |
/hooks/boletin/{servicio} | GET, POST | pública | POST: los avisos de baja, rebote duro y queja de spam del servicio de correo; la dirección lleva su propia clave y, donde el servicio firma, se comprueba la firma. GET: contesta para que el servicio acepte la dirección |
/hooks/sendcloud | POST | pública | Aviso de Sendcloud verificado por firma HMAC; de momento solo anota los cambios de estado del paquete |
/licencias/activar | POST | pública | Activa una clave de licencia en un sitio, la llama el tema o extensión instalado; 409 si no se puede activar |
/licencias/comprobar | POST | pública | Comprueba si una clave de licencia (y, opcionalmente, una activación) es válida; 404 si no existe |
/licencias/soltar | POST | pública | Libera una activación de una clave de licencia para usarla en otro sitio |
/listo | GET | pública | Comprobación de que puede atender: 503 durante el cierre o si algún plugin no ha cargado |
/mcp | GET, POST | pública | Servidor MCP (JSON-RPC 2.0) para agentes de IA: buscar productos, detalle de producto e información de la tienda; GET: resumen y herramientas |
/pagos/aviso/{proveedor} | POST | pública | Aviso de una pasarela de pago, verificado por cada proveedor; 401 si no vale, los repetidos se aceptan sin efecto (idempotente) |
/payment-config | GET | pública | Formas de pago a enseñar en el checkout con sus textos y recargos, filtradas por los plugins (cart_id opcional) |
/salud | GET | pública | Comprobación de vida: el proceso responde |
/setup | GET | pública | Estado de la instalación y las comprobaciones que enseña el asistente; 409 en cuanto la tienda está instalada o si se instala sola desde su configuración, 503 si no se puede comprobar |
/setup/database | GET | pública | Estado de la conexión a la base de datos y de las migraciones; 409 en cuanto la tienda está instalada, 503 si no se puede comprobar |
/setup/database/migrate | POST | pública | Ejecuta las migraciones y va enviando la salida como eventos (SSE); 409 si ya está instalada o ya en marcha |
/setup/demo | POST | pública | Importa el contenido de ejemplo del tema activo, enviando el avance como eventos (SSE); 409 si ya está instalada o en marcha |
/setup/finish | POST | pública | Crea el primer administrador, pone el nombre de la tienda y cierra la instalación; 409 si ya está instalada o hay administrador |
/site-status | GET | pública | Si la tienda está en mantenimiento y qué mensaje enseñar |
/static/{fichero} | GET | pública | Sirve un fichero de imagen estático con caché larga; los SVG llevan una política de seguridad de contenido restrictiva |
/telegram/webhook | POST | pública | Bot de Telegram: responde con IA, solo lectura, a las preguntas de chats autorizados sobre la tienda; siempre contesta 200 |