Referencia de la API

Cadenas de aprobación

Quién aprueba las órdenes de compra y los pagos de facturas.

Más sobre este recurso

Configura quién aprueba las órdenes de compra y los pagos de facturas, aparte de la configuración de autonomía de Liquidación, que controla si hace falta una persona y no qué persona. Cada uno de los dos procesos (purchase_order, invoice_payment) tiene un flujo de aprobación, en Flujos de trabajo en Pleaxy, o está vinculado para compartir el flujo del otro proceso. Un flujo es una lista ordenada de grupos que se ejecutan uno tras otro. Un grupo secuencial es un paso con un aprobador; un grupo paralelo son varios pasos que deben aprobarse todos, en cualquier orden, por personas distintas. Un grupo con condiciones solo se ejecuta cuando todas las condiciones coinciden con el documento (importe, proveedor o solicitante); un paso marcado como highValueOnly solo se ejecuta cuando el importe supera el approvalThreshold de Liquidación. Cada paso nombra a un empleado concreto, y solo ese empleado puede actuar sobre él. Una región nueva empieza con un paso, 'Region administrator'. Cuando se crea una orden de compra o una factura, su cadena es una instantánea del flujo en ese momento, así que editar el flujo después no cambia los documentos que ya esperan.

Obtener configuración de cadena de aprobación

Devuelve el flujo de aprobación de un proceso.

GET/v1/workspaces/{regionId}/approval-chains/{process}

Parámetros

  • process"purchase_order" | "invoice_payment"Obligatorio

    De qué flujo se obtiene la cadena de aprobación.

Devuelve

200 OK con el objeto que se muestra en la respuesta.

Más detalles

Devuelve el flujo de aprobación de un proceso, o { process, groups: [] } si el proceso nunca ha tenido uno. Acepta una clave de API de comprador.

Campos de la respuesta

  • linkedTo"purchase_order" | "invoice_payment"

    Cuando se define, este proceso usa el flujo del otro proceso (un vínculo activo, no una copia) y groups se ignora.

  • groups[].mode"sequential" | "parallel"

    sequential: exactamente un paso. parallel: todos los pasos deben aprobarse, en cualquier orden, cada uno por un empleado distinto.

  • groups[].conditionsarray

    Si está presente, el grupo solo se ejecuta si todas las condiciones coinciden. amount usa gt, gte, lt o lte con un número en la moneda de la región; supplier usa is o is_not con el ID del espacio de trabajo de un proveedor (que termina en .supplier); requester usa is o is_not con una clave de empleado. Un documento en una moneda distinta de la de la región cumple todas las condiciones de importe.

  • groups[].stages[].approverEmployeeKeystring

    El único empleado que puede actuar sobre el paso. '' significa que el paso aún no tiene aprobador: necesita que se le asigne uno antes de que nadie pueda actuar sobre él. Solo puede tenerlo un flujo guardado antes de que se exigieran aprobadores nombrados.

  • groups[].stages[].highValueOnlyboolean

    El paso solo se ejecuta cuando el importe supera el approvalThreshold de Liquidación (el umbral de alto valor).

  • source"default"

    Presente cuando Pleaxy escribió este flujo como el predeterminado de la región. Cualquier otro guardado lo elimina.

  • defaultApproverIsAdminboolean

    Solo con source "default": si el aprobador del paso predeterminado sigue siendo administrador de la región.

  • requesterRule.eligibleApproverCountnumber

    Cuántos miembros compradores pueden aprobar los documentos de este proceso. Un solicitante solo puede aprobar su propio documento cuando nadie más podría.

Errores

  • 401 Unauthorized - No se presentó ninguna credencial, o el token Bearer o el valor de X-Api-Key falta, no es válido, caducó o fue revocado.
  • 403 Forbidden - El token Bearer o la clave de API del llamador no da acceso a este espacio de trabajo (regionId), o no tiene el rol requerido.
GET /v1/workspaces/{regionId}/approval-chains/{process}
Solicitud
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/approval-chains/{process}" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Respuesta · 200 OK
{
   "process": "purchase_order" | "invoice_payment",
   "linkedTo": "purchase_order" | "invoice_payment",
   "groups": [
      {
         "id": "string",
         "mode": "sequential" | "parallel",
         "label": "string",
         "stages": [
            {
               "id": "string",
               "label": "string",
               "approverEmployeeKey": "string",
               "approverName": "string",
               "approverEmail": "string",
               "highValueOnly": boolean
            }
         ],
         "conditions": [
            { "field": "amount" | "supplier" | "requester", "operator": "gt" | "gte" | "lt" | "lte" | "is" | "is_not", "value": number | "string" }
         ]
      }
   ],
   "source": "default",
   "defaultApproverIsAdmin": boolean,
   "requesterRule": { "eligibleApproverCount": number }
}

Actualizar configuración de cadena de aprobación

Reemplaza el flujo de aprobación de un proceso.

PATCH/v1/workspaces/{regionId}/approval-chains/{process}

Parámetros

  • process"purchase_order" | "invoice_payment"Obligatorio

    De qué flujo se actualiza la cadena de aprobación.

Cuerpo

  • groupsarray

    El nuevo flujo, en orden. Cada uno { id, mode, label?, stages, conditions? }. stages son { id, label, approverEmployeeKey, highValueOnly? }: un grupo secuencial tiene exactamente uno y un grupo paralelo al menos uno, con ids únicos y aprobadores distintos. Hasta 10 condiciones por grupo. Al menos un grupo.

  • linkedTo"purchase_order" | "invoice_payment"

    Usar el flujo del otro proceso en lugar del propio.

  • useDefaulttrue

    Restablecer al predeterminado de la región: un paso, 'Region administrator', que nombra al administrador propietario de la región o, si no, al primer administrador por nombre. No se puede combinar con groups, stages ni linkedTo.

  • stagesarray

    Forma plana heredada, un paso secuencial por entrada, { id, label, approverEmployeeKey, highValueOnly? }. Se guarda como los grupos equivalentes.

Devuelve

200 OK con el objeto que se muestra en la respuesta.

Más detalles

Reemplaza el flujo de un proceso con groups, lo vincula al flujo del otro proceso con linkedTo, o lo restablece al predeterminado de la región con useDefault: true. Enviar groups elimina cualquier linkedTo; enviar linkedTo conserva los grupos actuales registrados pero inactivos mientras dure el vínculo. Cada approverEmployeeKey se comprueba con los empleados del espacio de trabajo. El flujo debe conservar al menos un grupo sin condiciones que se ejecute para importes ordinarios, para que todo documento llegue a una persona. stages, una lista plana de grupos de un solo paso, se sigue aceptando para clientes antiguos; es preferible groups.

Cambiado el 2026-09-27, una corrección de seguridad dentro de v1: solo sesión iniciada, para todos los procesos: una cadena de aprobación decide quién aprueba el gasto, así que una clave de API recibe 403 HUMAN_SESSION_REQUIRED sea cual sea su rol de compras.

Errores

  • 400 Bad Request - Un paso no tiene aprobador ("'{label}' has no approver - every approval step must name a specific employee.") o nombra a alguien que no es empleado del espacio de trabajo; un grupo paralelo nombra dos veces al mismo aprobador; un grupo secuencial no tiene exactamente un paso; una condición está mal formada; el flujo no tiene ningún grupo sin condiciones que se ejecute para importes ordinarios ("A chain needs at least one approval step with no conditions that applies to ordinary purchase amounts…"); groups o stages está vacío; linkedTo nombra este proceso, o un proceso que ya está vinculado de vuelta a él; o useDefault se combina con groups, stages o linkedTo.
  • 409 Conflict - Código NO_REGION_ADMIN, con useDefault: "This region has no administrator to route approvals to. Make someone an administrator first."
  • 403 Forbidden - Código HUMAN_SESSION_REQUIRED. El llamador no es una persona con sesión iniciada (por ejemplo, una clave de API), para cualquier proceso ("Approval chains can only be changed by a signed-in person. Change them in Pleaxy."). No se guarda nada.
  • 401 Unauthorized - No se presentó ninguna credencial, o el token Bearer o el valor de X-Api-Key falta, no es válido, caducó o fue revocado.
  • 403 Forbidden - El token Bearer o la clave de API del llamador no da acceso a este espacio de trabajo (regionId), o no tiene el rol requerido.
PATCH /v1/workspaces/{regionId}/approval-chains/{process}
Solicitud
curl -X PATCH "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/approval-chains/{process}" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{
   "groups": [
      {
         "id": "string",
         "mode": "sequential" | "parallel",
         "label": "string",
         "stages": [
            { "id": "string", "label": "string", "approverEmployeeKey": "string", "highValueOnly": boolean }
         ],
         "conditions": [
            { "field": "amount" | "supplier" | "requester", "operator": "gt" | "gte" | "lt" | "lte" | "is" | "is_not", "value": number | "string" }
         ]
      }
   ]
}
Respuesta · 200 OK
{
   "process": "purchase_order" | "invoice_payment",
   "linkedTo": "purchase_order" | "invoice_payment",
   "groups": [
      {
         "id": "string",
         "mode": "sequential" | "parallel",
         "label": "string",
         "stages": [
            {
               "id": "string",
               "label": "string",
               "approverEmployeeKey": "string",
               "approverName": "string",
               "approverEmail": "string",
               "highValueOnly": boolean
            }
         ],
         "conditions": [
            { "field": "amount" | "supplier" | "requester", "operator": "gt" | "gte" | "lt" | "lte" | "is" | "is_not", "value": number | "string" }
         ]
      }
   ],
   "source": "default",
   "defaultApproverIsAdmin": boolean,
   "requesterRule": { "eligibleApproverCount": number }
}
Habla con nosotros