Referencia de la API externa de Uproc

Autenticación

Todas las peticiones autenticadas a la API externa requieren un token bearer de API key de usuario:

HeaderDescripciónEjemplo
AuthorizationToken bearer de API key de usuarioBearer xxx-xxx-xxx

El token resuelve el usuario autenticado, el ámbito de customer y el rol.

Valores por defecto del entorno

Usa estas variables de entorno en las peticiones:

  • UPROC_PROCESSES_API_URL: VALUE
  • USER_API_KEY: VALUE

URL base

https://api.uproc.io

Headers comunes

Authorization: Bearer your_user_api_key

Índice

Endpoints

GET /api/v1/external/data-management/transfer

Exporta entidades, columnas, filas y relaciones Data Management del customer admin autenticado como ZIP portable en base64. Lo usa uproc applications data-management export-transfer.

POST /api/v1/external/data-management/transfer/import

Previsualiza o reemplaza los datos Data Management del customer admin autenticado. Envia {"zip_base64":"...","confirm":false} para preview; usa confirm: true para reemplazar esquema y filas. Lo usa uproc applications data-management import-transfer.

GET /api/v1/external/modules

Lista todos los módulos disponibles.

Respuesta

{
  "success": true,
  "message": "",
  "data": [
    {"slug": "purchase-invoices", "title": "Invoice Ingest"}
  ]
}

Curl

curl -s \
  -H "x-api-key: $CUSTOMER_API_KEY" \
  -H "x-customer-domain: $CUSTOMER_DOMAIN" \
  -H "x-user-email: $CUSTOMER_USER_EMAIL" \
  "$UPROC_PROCESSES_API_URL/api/v1/external/modules"

GET /api/v1/external/install

Obtiene el plan de instalación combinado para el customer autenticado.

Este endpoint devuelve:

  • customer_config (el mismo contrato de configuración que /api/v1/external/config)
  • release (latest + history) desde docs/releases.json
  • install (mode, required_services, minimum_requirements, requirements_check y steps ordenados)

Parámetros de query

  • dry_run (opcional, por defecto true)

Respuesta

{
  "success": true,
  "message": "get.success",
  "data": {
    "customer_config": {
      "modules": ["purchase-invoices", "order-track"],
      "white_label": {"id": 10, "name": "Acme", "domain": "acme"},
      "users": []
    },
    "release": {
      "source": "docs/releases.json",
      "latest": {
        "release_id": "2026.03.21-1",
        "back_version": "0.1.72",
        "front_version": "0.1.63"
      },
      "history": []
    },
    "install": {
      "mode": "dry-run",
      "required_services": ["docker", "dokploy", "uproc-back", "uproc-front"],
      "minimum_requirements": {
        "vcpu_min": 4,
        "ram_gb_min": 16,
        "disk_gb_min": 200,
        "disk_type_required": "nvme"
      },
      "requirements_check": {
        "status": "unknown",
        "mode": "recommended",
        "checks": []
      },
      "steps": []
    }
  }
}

Curl

curl -s \
  -H "x-api-key: $CUSTOMER_API_KEY" \
  -H "x-customer-domain: $CUSTOMER_DOMAIN" \
  -H "x-user-email: $CUSTOMER_USER_EMAIL" \
  "$UPROC_PROCESSES_API_URL/api/v1/external/install?dry_run=true"

GET /api/v1/external/modules/{module_slug}

Obtiene los detalles de un módulo por slug.

Respuesta

{
  "success": true,
  "message": "",
  "data": {"slug": "purchase-invoices", "title": "Invoice Ingest"}
}

Curl

curl -s \
  -H "x-api-key: $CUSTOMER_API_KEY" \
  -H "x-customer-domain: $CUSTOMER_DOMAIN" \
  -H "x-user-email: $CUSTOMER_USER_EMAIL" \
  "$UPROC_PROCESSES_API_URL/api/v1/external/modules/purchase-invoices"

GET /api/v1/external/modules/{module_slug}/kpis

Obtiene los KPIs de un módulo.

Respuesta

{
  "success": true,
  "message": "",
  "data": {"series": [], "kpis": {}, "meta": {}}
}

Curl

curl -s \
  -H "x-api-key: $CUSTOMER_API_KEY" \
  -H "x-customer-domain: $CUSTOMER_DOMAIN" \
  -H "x-user-email: $CUSTOMER_USER_EMAIL" \
  "$UPROC_PROCESSES_API_URL/api/v1/external/modules/purchase-invoices/kpis"

GET /api/v1/external/modules/{module_slug}/collections

Obtiene las colecciones disponibles de un módulo.

Respuesta

{
  "success": true,
  "message": "",
  "data": {"collections": ["invoices", "uploads"]}
}

Curl

curl -s \
  -H "x-api-key: $CUSTOMER_API_KEY" \
  -H "x-customer-domain: $CUSTOMER_DOMAIN" \
  -H "x-user-email: $CUSTOMER_USER_EMAIL" \
  "$UPROC_PROCESSES_API_URL/api/v1/external/modules/purchase-invoices/collections"

GET /api/v1/external/modules/{module_slug}/collections/{collection_name}

Obtiene los datos de una colección de un módulo.

Respuesta

{
  "success": true,
  "message": "",
  "data": {
    "columns": [],
    "rows": [],
    "total_items": 0,
    "current_page": 1,
    "max_pages": 0
  }
}

Curl

curl -s \
  -H "x-api-key: $CUSTOMER_API_KEY" \
  -H "x-customer-domain: $CUSTOMER_DOMAIN" \
  -H "x-user-email: $CUSTOMER_USER_EMAIL" \
  "$UPROC_PROCESSES_API_URL/api/v1/external/modules/purchase-invoices/collections/invoices?page=1"

GET /api/v1/external/modules/{module_slug}/data/{collection_name}

Obtiene los datos del módulo desde el endpoint /data.

Parámetros de query

  • page (opcional, por defecto 1)
  • sort_field (opcional)
  • sort_order (opcional: asc o desc)
  • filter_field (opcional)
  • filter_value (opcional)

Nota de Data Management (solo lectura mediante endpoints genéricos)

  • Para module_slug=data-management, usa únicamente endpoints externos genéricos:
    • GET /api/v1/external/modules/data-management/collections
    • GET /api/v1/external/modules/data-management/data/{collection_name}
  • Las pestañas de configuración de solo lectura se exponen en la API externa:
    • GET /api/v1/external/modules/data-management/settings/tabs
    • GET /api/v1/external/modules/data-management/settings/tab/{tab_key}
  • filter_value debe incluir entity_id como JSON, por ejemplo:
    • {"entity_id":123}

Respuesta

{
  "success": true,
  "message": "",
  "data": {
    "columns": [],
    "rows": [],
    "total_items": 0,
    "current_page": 1,
    "max_pages": 0
  }
}

POST /api/v1/external/modules/{module_slug}/data/{collection_name}

Crea un elemento en una colección de módulo usando el endpoint genérico de datos externo.

Lista permitida actual:

  • lead-management/leads

Payload (lead-management/leads)

{
  "company": "Cliente X",
  "contact": "Laura Navarro",
  "email": "[email protected]",
  "phone": "+34 611 234 567",
  "industry": "Tecnologia",
  "status": "comercial",
  "estimated_value": 4200,
  "probability": 72,
  "source": "web",
  "notes": "Cliente interesado en instalar VPS + VPN."
}

Respuesta

{
  "success": true,
  "message": "common.messages.create.success",
  "data": {
    "id": 123
  }
}

GET /api/v1/external/modules/{module_slug}/data/{collection_name}/contract

Obtiene los metadatos del contrato de creación de una colección.

Parámetros de query

  • operation (opcional, por defecto create)

Respuesta (lead-management/leads)

{
  "success": true,
  "message": "",
  "data": {
    "module_slug": "lead-management",
    "collection_name": "leads",
    "operation": "create",
    "required_fields": ["company"],
    "recommended_fields": ["email", "contact", "notes"],
    "optional_fields": ["phone", "industry", "status", "estimated_value", "probability", "source", "assigned_to", "interactions"],
    "notes": [
      "status accepts aliases and is normalized",
      "assigned_to accepts user id or email from same customer"
    ],
    "example": {
      "company": "Cliente X",
      "contact": "Laura Navarro"
    }
  }
}

GET /api/v1/external/modules/{module_slug}/actions

Lista las acciones genéricas disponibles de un módulo junto con sus campos obligatorios.

Respuesta (lead-management)

{
  "success": true,
  "message": "",
  "data": {
    "module_slug": "lead-management",
    "actions": [
      {"key": "generate_lead_proposal", "required_fields": ["lead_id"], "optional_fields": ["template_id", "title", "description", "output_format"]},
      {"key": "send_lead_proposal", "required_fields": ["lead_id", "mailbox_id", "to_email", "subject", "body"], "optional_fields": ["proposal_url"]},
      {"key": "rerun_lead_intelligence", "required_fields": ["lead_id"], "optional_fields": []}
    ]
  }
}

POST /api/v1/external/modules/{module_slug}/actions/{action}

Ejecuta una acción genérica.

Ejemplo de payload (generate_lead_proposal)

{
  "lead_id": 123,
  "title": "Propuesta tecnica: VPS + VPN",
  "description": "Instalacion, hardening y puesta en marcha.",
  "output_format": "pdf"
}

Respuesta

{
  "success": true,
  "message": "lead_management.proposal.generate.success",
  "data": {
    "lead_id": 123,
    "proposal_url": "https://.../proposal.pdf"
  }
}

acciones de data-process (consumidas por la CLI uproc applications data-process execute|batch):

execute — en línea, sin límite diario de llamadas en línea (se aplican el saldo y el presupuesto diario):

{ "processor": "check-creditcard-checksum", "params": { "credit_card": "4024007151839544" } }

batch — encola una ejecución en segundo plano sobre una entidad de data-management:

{ "tool": "check-creditcard-checksum", "source_entity_id": 5, "output_name": "Results" }

Las tools de data-process migradas se sirven con la implementación nativa en Python; las no migradas vuelven automáticamente a la plataforma legacy (DATA_PROCESS_TOOLS_MODE=auto). Las respuestas de catálogo y ejecución incluyen execution_mode (native o legacy_bypass).

GET /api/v1/external/profile

Obtiene el perfil del usuario conectado (identificado mediante x-user-email). Consumido por la CLI uproc me get.

Respuesta

{
  "success": true,
  "message": "User data loaded OK",
  "data": { "id": 7, "first_name": "Jane", "last_name": "Doe", "email": "[email protected]", "language": "es", "default_app": "data-process" }
}

PUT /api/v1/external/profile

Actualiza el perfil del usuario conectado (consumido por la CLI uproc me update).

Ejemplo de payload

{ "first_name": "Jane", "language": "en", "default_app": "data-process" }

Respuesta

{ "success": true, "message": "update.success" }

GET /api/v1/external/modules/{module_slug}/tools

Busca en el catálogo de tools de data-process (solo lectura, sin coste). Consumido por la CLI uproc applications data-process search [query].

Respuesta

{
  "success": true,
  "data": {
    "rows": [ { "key": "get-company-by-name", "name": "by-name", "description": "Company by name", "params": [ { "name": "name", "required": true } ] } ],
    "total": 1
  }
}

GET /api/v1/external/modules/{module_slug}/tools/{tool_key}

Obtiene la especificación completa de una tool de data-process (params con accepted/format, output, cost, extended_description). Consumido por la CLI uproc applications data-process tool <key> y el MCP data-process.tool.

Respuesta

{
  "success": true,
  "data": {
    "key": "get-company-by-name",
    "name": "by-name",
    "description": "Company by name",
    "cost": 80,
    "params": [ { "name": "name", "required": true, "ok_sample": "Cyberclick S.L." }, { "name": "country", "required": false, "accepted": ["Afghanistan", "Albania", "..."] } ],
    "output": [ { "name": "name" }, { "name": "email" } ]
  }
}

PUT /api/v1/external/modules/{module_slug}/data/{collection_name}/{item_id}/status

Cambia el estado de un elemento de una colección de módulo. La transición la valida la facade del módulo (para purchase-invoices: received -> validated -> paid). Consumido por los comandos de CLI purchase-invoices validate|pay.

Ejemplo de payload (purchase-invoices)

{
  "status": "paid",
  "reason": "bank transfer"
}

Respuesta

{
  "success": true,
  "message": "common.messages.status.update.success",
  "data": {}
}

GET /api/v1/external/modules/{module_slug}/data_domains

Lista los data domains (canales) de un módulo con sus preguntas de ejemplo, localizadas al idioma del usuario. Consumido por el comando de CLI data-chatbot domains.

Respuesta

{
  "success": true,
  "message": "",
  "data": {
    "data_domains": [
      {
        "id": 1,
        "name": "Sales",
        "sample_queries": [
          {"category": "Leads", "type": "count", "text": "How many leads this week?"}
        ]
      }
    ]
  }
}

GET /api/v1/external/modules/{module_slug}/settings/tabs

Lista las pestañas de configuración disponibles de un módulo (solo lectura).

Respuesta

{
  "success": true,
  "message": "",
  "data": {
    "tabs": [
      {"key": "mailboxes", "source_key": "mailboxes_rows", "items_count": 2}
    ]
  }
}

Curl

curl -s \
  -H "x-api-key: $CUSTOMER_API_KEY" \
  -H "x-customer-domain: $CUSTOMER_DOMAIN" \
  -H "x-user-email: $CUSTOMER_USER_EMAIL" \
  "$UPROC_PROCESSES_API_URL/api/v1/external/modules/data-management/settings/tabs"

GET /api/v1/external/modules/{module_slug}/settings/tab/{tab_key}

Obtiene los valores de una pestaña de configuración (solo lectura).

Respuesta

{
  "success": true,
  "message": "",
  "data": {
    "key": "mailboxes",
    "source_key": "mailboxes_rows",
    "columns": [],
    "items": [],
    "items_count": 0
  }
}

Curl

curl -s \
  -H "x-api-key: $CUSTOMER_API_KEY" \
  -H "x-customer-domain: $CUSTOMER_DOMAIN" \
  -H "x-user-email: $CUSTOMER_USER_EMAIL" \
  "$UPROC_PROCESSES_API_URL/api/v1/external/modules/data-management/settings/tab/mailboxes"

Curl

curl -s \
  -H "x-api-key: $CUSTOMER_API_KEY" \
  -H "x-customer-domain: $CUSTOMER_DOMAIN" \
  -H "x-user-email: $CUSTOMER_USER_EMAIL" \
  "$UPROC_PROCESSES_API_URL/api/v1/external/modules/purchase-invoices/data/invoices?page=1"

POST /api/v1/external/modules/{module_slug}/collections/{collection_name}/inputs/file

Sube un archivo (contenido en Base64) a una colección de módulo.

Payload

{
  "file_name": "invoice.pdf",
  "content": "JVBERi0xLjQKJ..."
}

Respuesta

{
  "success": true,
  "message": "",
  "data": {}
}

Curl

curl -s -X POST \
  -H "Content-Type: application/json" \
  -H "x-api-key: $CUSTOMER_API_KEY" \
  -H "x-customer-domain: $CUSTOMER_DOMAIN" \
  -H "x-user-email: $CUSTOMER_USER_EMAIL" \
  -d '{"file_name":"invoice.pdf","content":"JVBERi0xLjQKJ..."}' \
  "$UPROC_PROCESSES_API_URL/api/v1/external/modules/purchase-invoices/collections/invoices/inputs/file"

POST /api/v1/external/modules/{module_slug}/collections/{collection_name}/inputs/webhook

Envía un webhook a una colección de módulo.

Payload

{
  "name": "Process Invoice",
  "message": "New invoice to process",
  "reply_callback": "https://example.com/callback",
  "raw": {"invoice_id": "INV-001"}
}

Respuesta

{
  "success": true,
  "message": "",
  "data": {"job_id": 123}
}

Curl

curl -s -X POST \
  -H "Content-Type: application/json" \
  -H "x-api-key: $CUSTOMER_API_KEY" \
  -H "x-customer-domain: $CUSTOMER_DOMAIN" \
  -H "x-user-email: $CUSTOMER_USER_EMAIL" \
  -d '{"name":"Process Invoice","message":"New invoice to process","reply_callback":"https://example.com/callback","raw":{"invoice_id":"INV-001"}}' \
  "$UPROC_PROCESSES_API_URL/api/v1/external/modules/purchase-invoices/collections/invoices/inputs/webhook"

POST /api/v1/external/public/modules/form-generator/forms/{customer_domain}/{form_slug}/submit

Envía el payload de un formulario público de Form Generator.

Este endpoint lo consume el comando de CLI:

  • uproc applications module submit-public-form <customer_domain> <form_slug> <payload_json>

Parámetros de ruta

  • customer_domain: identificador de slug/dominio del customer (por ejemplo demo)
  • form_slug: slug del formulario (por ejemplo contact-form)

Payload

{
  "payload": {
    "email": "[email protected]",
    "country": "ES"
  }
}

Respuesta (éxito)

{
  "success": true,
  "message": "common.messages.create.success",
  "data": {
    "submission_id": 99,
    "job_id": 321
  }
}

Respuesta (fallo de validación)

{
  "success": false,
  "message": "validation.failed",
  "data": {
    "errors": [
      {"field": "email", "reason": "required"},
      {"field": "country", "reason": "invalid_value"}
    ]
  }
}

Respuesta (límite de peticiones superado)

{
  "success": false,
  "message": "rate.limit.exceeded",
  "data": {
    "limit": 30,
    "window": "minute"
  }
}

El límite de peticiones se aplica por formulario y por IP del solicitante. El límite por defecto por IP es de 10 envíos por minuto (clave de configuración: rules.public_rate_limit_per_minute_per_ip).

Los motivos de validación devueltos en data.errors[*].reason pueden incluir:

  • required
  • invalid_type
  • invalid_format
  • invalid_value
  • unknown_field
  • max_length_exceeded
  • too_many_fields
  • payload_too_large

Curl

curl -s -X POST \
  -H "Content-Type: application/json" \
  -H "x-api-key: $CUSTOMER_API_KEY" \
  -H "x-customer-domain: $CUSTOMER_DOMAIN" \
  -H "x-user-email: $CUSTOMER_USER_EMAIL" \
  -d '{"payload":{"email":"[email protected]","country":"ES"}}' \
  "$UPROC_PROCESSES_API_URL/api/v1/external/public/modules/form-generator/forms/demo/contact-form/submit"

GET /api/v1/external/public/modules/form-generator/forms/{customer_domain}/{form_slug}

Obtiene el esquema del formulario público para renderizado externo.

Parámetros de ruta

  • customer_domain: identificador de slug/dominio del customer (por ejemplo demo)
  • form_slug: slug del formulario (por ejemplo contact-form)

Respuesta (éxito)

{
  "success": true,
  "message": "common.messages.item.found",
  "data": {
    "form": {
      "name": "Contact Form",
      "slug": "contact-form",
      "description": "Collect leads"
    },
    "fields": [
      {
        "key": "email",
        "label": "Email",
        "type": "email",
        "required": true,
        "position": 1,
        "placeholder": "[email protected]",
        "help_text": "",
        "config": {}
      },
      {
        "key": "country",
        "label": "Country",
        "type": "select",
        "required": false,
        "position": 2,
        "placeholder": "Select country",
        "help_text": "Choose your country",
        "config": {
          "allowed_values": ["ES", "FR", "IT"],
          "max_length": 20
        }
      }
    ]
  }
}

Flujo de integración externo (renderizado + envío)

async function loadPublicForm(baseUrl, customerDomain, formSlug, headers) {
  const response = await fetch(
    `${baseUrl}/api/v1/external/public/modules/form-generator/forms/${customerDomain}/${formSlug}`,
    { headers },
  )
  const data = await response.json()
  if (!data.success) throw new Error(data.message)
  return data.data
}

async function submitPublicForm(baseUrl, customerDomain, formSlug, payload, headers) {
  const response = await fetch(
    `${baseUrl}/api/v1/external/public/modules/form-generator/forms/${customerDomain}/${formSlug}/submit`,
    {
      method: 'POST',
      headers: { 'Content-Type': 'application/json', ...headers },
      body: JSON.stringify({ payload }),
    },
  )
  const data = await response.json()
  if (!data.success && data.message === 'validation.failed') {
    return { ok: false, fieldErrors: data.data?.errors || [] }
  }
  return { ok: data.success, data: data.data, message: data.message }
}

Respuesta (formulario no disponible)

{
  "success": false,
  "message": "form.public.disabled",
  "data": {}
}

Curl

curl -s \
  -H "x-api-key: $CUSTOMER_API_KEY" \
  -H "x-customer-domain: $CUSTOMER_DOMAIN" \
  -H "x-user-email: $CUSTOMER_USER_EMAIL" \
  "$UPROC_PROCESSES_API_URL/api/v1/external/public/modules/form-generator/forms/demo/contact-form"

My Data API

Endpoints para que usuarios externos (proveedores, clientes, candidatos) consulten sus propios datos. La autenticación es mediante API key de usuario (x-user-api-key), no la key de cliente.

Autenticación

HeaderDescripciónEjemplo
x-user-api-keyAPI key del usuario (generada por el admin)abc-123-def

Cada usuario ve solo los registros que el admin ha configurado en users.filters. Sin configuración de filtros, el endpoint devuelve resultados vacíos.

GET /api/v1/my-data/invoices

Consulta facturas de proveedor de purchase-invoices. Filtradas por el NIF del usuario cuando users.filters está configurado con reglas de purchase-invoices.

Curl

curl -s \
  -H "x-user-api-key: $USER_API_KEY" \
  "$UPROC_PROCESSES_API_URL/api/v1/my-data/invoices"

GET /api/v1/my-data/my-invoices

Consulta facturas de cliente de sales-invoices. Filtradas por el NIF del usuario cuando users.filters está configurado con reglas de sales-invoices.

Curl

curl -s \
  -H "x-user-api-key: $USER_API_KEY" \
  "$UPROC_PROCESSES_API_URL/api/v1/my-data/my-invoices"

GET /api/v1/my-data/processes

Consulta registros de process-visibility. Filtrados por el NIF del usuario cuando users.filters está configurado con reglas de process-visibility.

Curl

curl -s \
  -H "x-user-api-key: $USER_API_KEY" \
  "$UPROC_PROCESSES_API_URL/api/v1/my-data/processes"

GET /api/v1/my-data/tickets

Consulta tickets de customer-care. Filtrados por el email del usuario cuando users.filters está configurado con reglas de customer-care.

Curl

curl -s \
  -H "x-user-api-key: $USER_API_KEY" \
  "$UPROC_PROCESSES_API_URL/api/v1/my-data/tickets"

GET /api/v1/my-data/contracts

Consulta contratos de contract-lifecycle. Filtrados por el NIF del usuario cuando users.filters está configurado con reglas de contract-lifecycle.

Curl

curl -s \
  -H "x-user-api-key: $USER_API_KEY" \
  "$UPROC_PROCESSES_API_URL/api/v1/my-data/contracts"

GET /api/v1/my-data/debts

Consulta deudas de debt-track. Filtradas por el NIF del usuario cuando users.filters está configurado con reglas de debt-track.

Curl

curl -s \
  -H "x-user-api-key: $USER_API_KEY" \
  "$UPROC_PROCESSES_API_URL/api/v1/my-data/debts"

GET /api/v1/my-data/orders

Consulta pedidos de order-track. Filtrados por el NIF del usuario cuando users.filters está configurado con reglas de order-track.

Curl

curl -s \
  -H "x-user-api-key: $USER_API_KEY" \
  "$UPROC_PROCESSES_API_URL/api/v1/my-data/orders"

GET /api/v1/my-data/signing-requests

Consulta solicitudes de firma de document-signing. Filtradas por el email del usuario cuando users.filters está configurado con reglas de document-signing.

Curl

curl -s \
  -H "x-user-api-key: $USER_API_KEY" \
  "$UPROC_PROCESSES_API_URL/api/v1/my-data/signing-requests"

GET /api/v1/my-data/cases

Consulta casos de case-lifecycle. Filtrados por el NIF del usuario cuando users.filters está configurado con reglas de case-lifecycle.

Curl

curl -s \
  -H "x-user-api-key: $USER_API_KEY" \
  "$UPROC_PROCESSES_API_URL/api/v1/my-data/cases"

GET /api/v1/my-data/candidates

Consulta candidaturas de candidate-evaluation. Filtradas por el email del usuario cuando users.filters está configurado con reglas de candidate-evaluation.

Curl

curl -s \
  -H "x-user-api-key: $USER_API_KEY" \
  "$UPROC_PROCESSES_API_URL/api/v1/my-data/candidates"

GET /api/v1/my-data/approvals

Consulta solicitudes de approval-management. Filtradas por el email del usuario cuando users.filters está configurado con reglas de approval-management.

Curl

curl -s \
  -H "x-user-api-key: $USER_API_KEY" \
  "$UPROC_PROCESSES_API_URL/api/v1/my-data/approvals"

ERP sync y VeriFactu (external)

POST /api/v1/external/modules/data-sync/actions/push_to_erp

Escribe un registro en un ERP usando una credencial ERP almacenada. Consumido por uproc applications sync push-to-erp.

curl -X POST "$UPROC_PROCESSES_API_URL/api/v1/external/modules/data-sync/actions/push_to_erp" \
  -H "x-api-key: $CUSTOMER_API_KEY" \
  -H "x-customer-domain: $CUSTOMER_DOMAIN" \
  -H "x-user-email: $CUSTOMER_USER_EMAIL" \
  -H "Content-Type: application/json" \
  -d '{"credential_id":3,"resource":"invoices","operation":"create","item":{"number":"H-1","total":121}}'

POST /api/v1/external/modules/sales-invoices/actions/resubmit_verifactu

Reintenta el registro VeriFactu de una factura. Consumido por uproc applications sales-invoices verifactu resubmit.

POST /api/v1/external/modules/sales-invoices/actions/backfill_verifactu

Registra facturas ya emitidas en la cadena VeriFactu. Consumido por uproc applications sales-invoices verifactu backfill.

GET /api/v1/external/modules/sales-invoices/data/invoices/{invoice_id}/verifactu_xml

Descarga el XML AEAT SF v1.1 generado para una factura. Consumido por uproc applications sales-invoices verifactu xml.

Sesiones de data chatbot

GET /api/v1/external/modules/data-chatbot/sessions

Lista las sesiones del usuario conectado (filtro por source web/cli/mcp y/o channel). Consumido por uproc applications data-chatbot sessions.

curl "$UPROC_PROCESSES_API_URL/api/v1/external/modules/data-chatbot/sessions?source=cli" \
  -H "x-api-key: $CUSTOMER_API_KEY" \
  -H "x-customer-domain: $CUSTOMER_DOMAIN" \
  -H "x-user-email: $CUSTOMER_USER_EMAIL"

Ejecutar workflow de VeriFactu

POST /api/v1/external/modules/sales-invoices/actions/run_verifactu

Ejecuta ahora el workflow de VeriFactu AEAT. Consumido por uproc applications sales-invoices verifactu run.

curl -X POST "$UPROC_PROCESSES_API_URL/api/v1/external/modules/sales-invoices/actions/run_verifactu" \
  -H "x-api-key: $CUSTOMER_API_KEY" \
  -H "x-customer-domain: $CUSTOMER_DOMAIN" \
  -H "x-user-email: $CUSTOMER_USER_EMAIL" \
  -H "Content-Type: application/json" \
  -d '{}'

FileSync

POST /api/v1/external/modules/file-sync/actions/run_transfer

Ejecuta una transferencia FileSync ahora (copia ficheros con sobrescritura). Consumido por uproc applications file-sync run.

curl -X POST "$UPROC_PROCESSES_API_URL/api/v1/external/modules/file-sync/actions/run_transfer" \
  -H "x-api-key: $CUSTOMER_API_KEY" \
  -H "x-customer-domain: $CUSTOMER_DOMAIN" \
  -H "x-user-email: $CUSTOMER_USER_EMAIL" \
  -H "Content-Type: application/json" \
  -d '{"transfer_id":1}'