Referencia de la API

Órdenes de compra

Órdenes que un comprador emite a un proveedor: sus líneas, importes, estado y aprobación.

Más sobre este recurso

Una orden de compra compromete a un comprador con uno o más artículos de línea con un proveedor. Crearla inicia una cadena de aprobación; una vez aprobada, se puede convertir en factura. Todos los importes están en la moneda de la región (la moneda de un espacio de trabajo es la de su región, definida en el perfil de la empresa) y Pleaxy no convierte monedas.

Listar órdenes de compra

Lista las órdenes de compra del espacio de trabajo, opcionalmente dentro de un rango de fechas.

GET/v1/workspaces/{regionId}/purchase-orders

Parámetros

  • fromstring

    Fecha/marca de tiempo ISO 8601: solo se devuelven los elementos creados en esta fecha o después.

  • tostring

    Fecha/marca de tiempo ISO 8601: solo se devuelven los elementos creados en esta fecha o antes.

Devuelve

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

Más detalles

Lista todas las órdenes de compra del espacio de trabajo, sin un orden concreto. Opcionalmente se limita a un rango de createdAt mediante from/to: pasa los límites de un mes natural para obtener una vista mensual. Un llamador proveedor recibe una vista reducida de cada orden de compra (consulta GetPurchaseOrder): se ocultan la contabilidad interna del comprador y el flujo de aprobación completo.

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}/purchase-orders
Solicitud
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Respuesta · 200 OK
[
   {
      "id": "string",
      "buyerOrgId": "string",
      "supplierOrgId": "string",
      "supplier": "string",
      "amount": number,
      "currency": "string",
      "status": "draft" | "pending_approval" | "rejected" | "awaiting_fulfillment" | "invoiced" | "paid" | "canceled" | "closed" | "expired",
      "invoiceId": "string",
      "provider": "aws" | "gcp" | "azure" | "oci",
      "payerAccounts": [
         { "id": "string", "label": "string", "detail": "string" }
      ],
      "billToParty": {
         "source": "company_profile" | "custom",
         "companyName": "string",
         "address": { "line1": "string", "line2": "string", "city": "string", "region": "string", "postalCode": "string", "country": "string" },
         "addressText": "string",
         "taxId": "string"
      },
      "costCenter": "string",
      "costCenterChanges": [ { "from": "string", "to": "string", "reason": "string", "by": "string", "byName": "string", "at": "string" } ],
      "budgetOwner": "string",
      "buyerName": "string",
      "supplierSite": "string",
      "notes": "string",
      "requestId": "string",
      "lineItems": [
         {
         "lineNo": number,
         "scopeType": "sku" | "service" | "account" | "custom",
         "scopeId": "string" | null,
         "name": "string",
         "ruleType": "quantity" | "amount",
         "unit": "string",
         "unitPrice": number,
         "qty": number,
         "nteAmount": number,
         "lineType": "goods" | "service",
         "currency": "string",
         "paymentTerms": "string",
         "validFrom": "string",
         "validUntil": "string",
         "consumed": number,
         "customerLineNo": "string",
         "supplierSku": "string",
         "priceSource": "contract" | "list" | "manual"
       }
      ],
      "approval": {
         "requester": "string",
         "requesterEmployeeKey": "string",
         "groups": [
           {
             "id": "string",
             "mode": "sequential" | "parallel",
             "label": "string",
             "status": "pending" | "approved" | "rejected",
             "stages": [
               { "id": "string", "label": "string", "approverEmployeeKey": "string", "approverName": "string", "status": "pending" | "approved" | "rejected" }
             ]
           }
         ],
         "groupIndex": number,
         "status": "pending" | "approved" | "rejected",
         "history": [
           { "stage": "string", "by": "string", "at": "string", "action": "approved" | "rejected" | "limit_exceeded" | "reassigned" | "skipped" }
         ],
         "autonomy": boolean,
         "selfApproved": boolean
       },
      "supplierEmail": { "to": "string", "at": "string" },
      "priorInvoiced": { "amount": number, "currency": "string", "basis": "invoiced" | "remaining", "sourceSystem": "sap_ariba" | "coupa" | "oracle", "importId": "string", "fileName": "string", "importedAt": "string", "importedBy": "string" },
      "createdAt": "string"
   }
]

Obtener orden de compra

Recupera una orden de compra.

GET/v1/workspaces/{regionId}/purchase-orders/{poId}

Parámetros

  • poIdstringObligatorio

    El identificador de la orden de compra.

  • buyerstring

    Solo para llamadores proveedores, y solo necesario después de un 409 *_ID_AMBIGUOUS: el ID del espacio de trabajo del comprador (que termina en .buyer) o el id de región, de la lista buyers del 409. Solo se considera el documento de ese comprador; si no hay ninguno allí, es un 404. Un ID del espacio de trabajo .supplier da 400 BUYER_QUALIFIER_INVALID ("The buyer parameter must be one buyer's Workspace ID (ending in .buyer), from the buyers list in the 409 response."). Se ignora para un llamador comprador.

Devuelve

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

Más detalles

Obtiene una sola orden de compra por su id. Para un llamador comprador, regionId es el propio espacio de trabajo de la orden de compra. Para un llamador proveedor, regionId es el propio espacio de trabajo del proveedor y la orden de compra se busca entre las órdenes de compra entrantes de la organización, sin importar qué espacio de trabajo de comprador la emitió.

Campos de la respuesta

  • priorInvoicedobject

    Solo en una orden de compra creada por una importación de lista que traía un importe que el sistema anterior del comprador ya había facturado. amount (en la moneda de la orden de compra) cuenta para el total facturado de la orden, de modo que su saldo pendiente es correcto. basis indica si el archivo daba el importe facturado o el saldo pendiente a partir del cual se calculó, y sourceSystem, como qué exportación se leyó la lista. importId, fileName e importedBy solo se devuelven al comprador.

  • billToPartyobject

    A quién factura el proveedor: companyName, la dirección en campos separados (address) o, para una dirección de una sola línea, addressText, y taxId. Es una copia, no un vínculo: source "company_profile" son los datos de facturación del perfil de la empresa del comprador tal como estaban al crear la orden, así que la orden conserva la dirección con la que se emitió aunque el perfil cambie después; "custom" se introdujo en la orden. Una factura contra la orden toma de aquí los datos del comprador. No aparece en órdenes creadas antes de que existiera, que tienen en su lugar el campo de texto libre billTo.

  • supplierEmailobject

    Cuándo se envió por correo al proveedor la orden emitida como PDF, y a qué dirección. Se define una sola vez; no aparece si no se envió por correo (no hay correo de contacto, es un proveedor de nube o la orden aún no se ha emitido).

  • costCenterChangesArray

    Solo comprador. Cada cambio de costCenter hecho después de que la orden finalizara, del más antiguo al más reciente: from (ausente si no tenía ninguno), to, reason, quién (by, byName) y cuándo. Consulta ChangeFinishedPurchaseOrderCostCenter.

Errores

  • 404 Not Found - No existe ninguna orden de compra con este id en el espacio de trabajo del llamador.
  • 409 Conflict - Solo para llamadores proveedores. Código PO_ID_AMBIGUOUS: más de uno de tus compradores ha emitido una orden de compra con este id (los ids solo son únicos dentro de un comprador), así que Pleaxy no adivina a cuál te refieres. No se lee ni se cambia nada. El campo buyers del cuerpo lista el ID del espacio de trabajo y el nombre de cada comprador: repite la llamada con ?buyer=<ese ID del espacio de trabajo>.
  • 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}/purchase-orders/{poId}
Solicitud
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Respuesta · 200 OK
{
   "id": "string",
   "buyerOrgId": "string",
   "supplierOrgId": "string",
   "supplier": "string",
   "amount": number,
   "currency": "string",
   "status": "draft" | "pending_approval" | "rejected" | "awaiting_fulfillment" | "invoiced" | "paid" | "canceled" | "closed" | "expired",
   "invoiceId": "string",
   "provider": "aws" | "gcp" | "azure" | "oci",
   "payerAccounts": [
      { "id": "string", "label": "string", "detail": "string" }
   ],
   "billToParty": {
      "source": "company_profile" | "custom",
      "companyName": "string",
      "address": { "line1": "string", "line2": "string", "city": "string", "region": "string", "postalCode": "string", "country": "string" },
      "addressText": "string",
      "taxId": "string"
   },
   "costCenter": "string",
   "costCenterChanges": [ { "from": "string", "to": "string", "reason": "string", "by": "string", "byName": "string", "at": "string" } ],
   "budgetOwner": "string",
   "buyerName": "string",
   "supplierSite": "string",
   "notes": "string",
   "requestId": "string",
   "lineItems": [
      {
      "lineNo": number,
      "scopeType": "sku" | "service" | "account" | "custom",
      "scopeId": "string" | null,
      "name": "string",
      "ruleType": "quantity" | "amount",
      "unit": "string",
      "unitPrice": number,
      "qty": number,
      "nteAmount": number,
      "lineType": "goods" | "service",
      "currency": "string",
      "paymentTerms": "string",
      "validFrom": "string",
      "validUntil": "string",
      "consumed": number,
      "customerLineNo": "string",
      "supplierSku": "string",
      "priceSource": "contract" | "list" | "manual"
    }
   ],
   "approval": {
      "requester": "string",
      "requesterEmployeeKey": "string",
      "groups": [
        {
          "id": "string",
          "mode": "sequential" | "parallel",
          "label": "string",
          "status": "pending" | "approved" | "rejected",
          "stages": [
            { "id": "string", "label": "string", "approverEmployeeKey": "string", "approverName": "string", "status": "pending" | "approved" | "rejected" }
          ]
        }
      ],
      "groupIndex": number,
      "status": "pending" | "approved" | "rejected",
      "history": [
        { "stage": "string", "by": "string", "at": "string", "action": "approved" | "rejected" | "limit_exceeded" | "reassigned" | "skipped" }
      ],
      "autonomy": boolean,
      "selfApproved": boolean
    },
   "supplierEmail": { "to": "string", "at": "string" },
   "priorInvoiced": { "amount": number, "currency": "string", "basis": "invoiced" | "remaining", "sourceSystem": "sap_ariba" | "coupa" | "oracle", "importId": "string", "fileName": "string", "importedAt": "string", "importedBy": "string" },
   "createdAt": "string"
}

Obtener PDF de orden de compra

Descarga una orden de compra en PDF.

GET/v1/workspaces/{regionId}/purchase-orders/{poId}/pdf

Parámetros

  • poIdstringObligatorio

    El identificador de la orden de compra.

  • buyerstring

    Solo para llamadores proveedores, y solo necesario después de un 409 *_ID_AMBIGUOUS: el ID del espacio de trabajo del comprador (que termina en .buyer) o el id de región, de la lista buyers del 409. Solo se considera el documento de ese comprador; si no hay ninguno allí, es un 404. Un ID del espacio de trabajo .supplier da 400 BUYER_QUALIFIER_INVALID ("The buyer parameter must be one buyer's Workspace ID (ending in .buyer), from the buyers list in the 409 response."). Se ignora para un llamador comprador.

Devuelve

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

Más detalles

La orden de compra en PDF, para descargarla, imprimirla o reenviarla: tu logotipo, el destinatario de la factura (billToParty, con su dirección y su identificación fiscal), el proveedor, la fecha de la orden, la moneda, las condiciones de pago, el número de presupuesto del proveedor, las líneas y el total, y cómo facturarla. Es la copia del proveedor la pida quien la pida (sin centro de costo, responsable del presupuesto, notas ni aprobaciones), y una orden en borrador, pendiente, rechazada o cancelada indica claramente que no debe cumplirse. El mismo PDF se adjunta al correo que recibe el proveedor cuando se emite la orden. Envía Accept: application/pdf o el cuerpo vuelve codificado en base64.

Errores

  • 404 Not Found - No existe ninguna orden de compra con este id en el espacio de trabajo del llamador.
  • 409 Conflict - Solo para llamadores proveedores. Código PO_ID_AMBIGUOUS: más de uno de tus compradores ha emitido una orden de compra con este id (los ids solo son únicos dentro de un comprador), así que Pleaxy no adivina a cuál te refieres. No se lee ni se cambia nada. El campo buyers del cuerpo lista el ID del espacio de trabajo y el nombre de cada comprador: repite la llamada con ?buyer=<ese ID del espacio de trabajo>.
  • 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}/purchase-orders/{poId}/pdf
Solicitud
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/pdf" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Respuesta · 200 OK
application/pdf

Crear orden de compra

Crea una orden de compra o la guarda como borrador.

POST/v1/workspaces/{regionId}/purchase-orders

Cuerpo

  • poNumberstring

    Tu propio número de orden de compra para usar como id en lugar de uno generado, p. ej. PO-2026-0042. Letras, números, '.', '_' y '-', hasta 40 caracteres, único dentro de la región.

  • supplierstringObligatorio

    Nombre visible del proveedor o contraparte.

  • supplierRegionIdstring

    regionId de la organización proveedora incorporada a la que se emite esta orden de compra, si se conoce. Debes tener una conexión de proveedor aprobada con ella; cualquier otra región se rechaza. Vincula la orden de compra al espacio de trabajo real de ese proveedor en lugar de solo a un nombre en texto libre.

  • currencystring

    ISO 4217: la moneda en la que se cotiza la orden. Para un proveedor en Pleaxy (supplierRegionId), una de las monedas en las que cotiza su región, por defecto su moneda principal (si no, 400 PO_CURRENCY_NOT_OFFERED). Para un proveedor de nube o un proveedor que no está en Pleaxy, cualquier código; por defecto, la moneda de "Factura en" que definiste para ese proveedor (SetSupplierCurrencies) o, si no, la de tu espacio de trabajo. Todas las líneas están en ella. Una orden en una moneda distinta de la de tu espacio de trabajo pasa por todos los pasos de aprobación y nunca se aprueba automáticamente, porque los límites de aprobación están en la moneda de tu espacio de trabajo.

  • supplierContactEmailstring

    Solo para un proveedor que no está en Pleaxy (sin supplierRegionId ni provider): su correo de contacto. Cuando se envía la orden de compra, ahora o al enviar un borrador, Pleaxy lo invita o vincula el proveedor que este espacio de trabajo ya tiene.

  • provider"aws" | "gcp" | "azure" | "oci"

    Proveedor de nube que cubre esta orden de compra, si lo hay.

  • payerAccountsArray<{ id, label, detail }>

    Solo con provider: las conexiones de nube de ese proveedor en esta región a las que se aplica la orden de compra, por id. Una conexión que aún se está configurando se rechaza. La orden de compra guarda la etiqueta y el detalle propios de cada conexión; los que envíes se ignoran, pero deben ser cadenas.

  • billToParty{ companyName?, address, taxId? }

    A quién factura el proveedor, cuando no son los datos de facturación del perfil de tu empresa. companyName (hasta 200 caracteres) toma por defecto el nombre de tu empresa; address admite los mismos campos y las mismas reglas por país que billingAddressParts de UpdateOrgProfile; taxId tiene hasta 64 caracteres. Si se omite, la orden copia el nombre, la dirección de facturación y la identificación fiscal del perfil de tu empresa tal como están ahora.

  • billTostring

    Obsoleto: usa billToParty. Una dirección de facturación de una sola línea para tu empresa, de hasta 500 caracteres, guardada tal como se escribió. Se ignora cuando se envía billToParty.

  • costCenterstring

    Código interno de centro de costo.

  • budgetOwnerstring

    Nombre del responsable del presupuesto.

  • buyerNamestring

    Nombre del contacto del comprador; también se usa como solicitante de la cadena de aprobación si se define.

  • supplierSitestring

    Identificador del sitio o la ubicación del proveedor.

  • notesstring

    Notas en texto libre.

  • contractIdstring

    Tu contrato activo con este proveedor al que pertenece la orden. Las líneas sin paymentTerms toman sus condiciones de pago predeterminadas, y las facturas contra la orden se verifican con él.

  • draftboolean

    Guardar como borrador en lugar de enviar a aprobación. Envíalo más tarde con SubmitPurchaseOrderDraft.

  • lineItemsArray<LineItem>Obligatorio

    Al menos un artículo de línea. Cada artículo: scopeType ("sku" | "service" | "account" | "custom"), scopeId, name, ruleType ("quantity" | "amount"), unit, unitPrice, qty, nteAmount, currency (opcional), paymentTerms (opcional, hasta 40 caracteres: si se omite, la línea toma las condiciones de pago predeterminadas del contrato del que se tomó su precio o del que la orden indica en contractId, si no las del artículo del catálogo y, si no, "Net 30"), validFrom, validUntil, customerLineNo (opcional: tu propio número para la línea, hasta 40 caracteres, que se muestra junto al lineNo del servidor), lineType (opcional: "goods", bienes que se envían y se reciben con una entrada de mercancías, o "service", trabajo como soporte o formación, que se confirma con una hoja de entrada de servicios y nunca se envía; si se omite, la línea toma el tipo de su artículo del catálogo y, si no, es un servicio cuando su unidad es de tiempo, como hr, day o month, y bienes en los demás casos). Todas las líneas están en la moneda de la región, que escribe el servidor: omite currency o envía la moneda de la región (en mayúsculas o minúsculas). Pleaxy no convierte monedas, así que cualquier otra moneda se rechaza.

  • lineItems[].ai{ invoicer, vendor, model, meter, region? }

    Una línea de IA (controles de gasto en IA): quién la factura, el proveedor del modelo, el id del modelo tal como se factura, el medidor (input_tokens, output_tokens, cached_input_tokens, batch_input_tokens, gpu_hours, ..., o prepaid_credit para una compra de crédito prepagado) y la región, cuando el precio depende de la región. Una línea por cantidad en la unidad del medidor (millones de tokens, horas). Las líneas de IA de una factura se asocian a estas por alcance, nunca por descripción. SuggestAiPoLines las rellena por ti.

Devuelve

201 Created con el objeto que se muestra en la respuesta.

Más detalles

Crea una orden de compra a partir de uno o más artículos de línea, o la guarda como borrador. El importe total es la suma del importe de cada línea (qty × unitPrice para una línea con regla de cantidad, o nteAmount para una línea con regla de importe). Salvo que sea un borrador, su cadena de aprobación se construye de inmediato a partir del flujo de aprobación de órdenes de compra de la región, la configuración de autonomía, las reglas de automatización y los límites de gasto. Si se aprueba automáticamente, la orden de compra se crea directamente en estado awaiting_fulfillment en lugar de pending_approval. Cuando se emite una orden de compra (awaiting_fulfillment, ahora o en su aprobación final), se notifica al proveedor y, salvo que sea un proveedor de nube, se le envía la orden en PDF por correo (consulta GetPurchaseOrderPdf), a supplierContactEmail o, si no, al contacto de tu registro de proveedor, con el solicitante como Reply-To. Se envía una vez por orden y queda registrado como supplierEmail; un correo fallido nunca hace fallar la orden.

Campos de la respuesta

  • idstring

    Identificador de la orden de compra, p. ej. "PO-AB12CD34".

  • statusstring

    "pending_approval", o "awaiting_fulfillment" si el importe se aprobó automáticamente.

  • amountnumber

    Suma de los importes de todos los artículos de línea.

  • currencystring

    Código ISO 4217 de la orden de compra y de todas sus líneas: la moneda de la región, definida por el servidor.

  • approvalApprovalChain

    La cadena de aprobación construida para esta orden de compra.

  • lineItemsArray<LineItem>

    Cada artículo de línea tal como se guardó, más lineNo y consumed (empieza en 0).

Errores

  • 400 Bad Request - La validación falló (incluida una dirección de billToParty a la que le falta una parte que exige su país), la moneda de un artículo de línea no es la moneda de la región ("Line items must be in this region's currency (EUR). Pleaxy doesn't convert currencies."), o el plan de la región alcanzó su límite de órdenes de compra en 30 días móviles (plan Free: 10 cada 30 días móviles).
  • 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.
POST /v1/workspaces/{regionId}/purchase-orders
Solicitud
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/reg_01k5x8p9j3q7vn2mhb4tzc6rde.buyer/purchase-orders" \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "supplier": "Amazon Web Services",
    "provider": "aws",
    "lineItems": [
      {
        "scopeType": "sku",
        "scopeId": "AWS-EC2-M5LG",
        "name": "EC2 m5.large",
        "ruleType": "quantity",
        "unit": "hr",
        "unitPrice": 0.096,
        "qty": 5000,
        "nteAmount": 0,
        "paymentTerms": "Net 30",
        "validFrom": "2026-01-01",
        "validUntil": "2026-12-31"
      }
    ]
  }'
Respuesta · 201 Created
{
  "id": "PO-AB12CD34",
  "buyerOrgId": "org_buyer_us-east-1",
  "supplier": "Amazon Web Services",
  "amount": 480,
  "currency": "USD",
  "status": "pending_approval",
  "provider": "aws",
  "lineItems": [
    {
      "lineNo": 1,
      "scopeType": "sku",
      "scopeId": "AWS-EC2-M5LG",
      "name": "EC2 m5.large",
      "ruleType": "quantity",
      "unit": "hr",
      "unitPrice": 0.096,
      "qty": 5000,
      "nteAmount": 0,
      "currency": "USD",
      "paymentTerms": "Net 30",
      "validFrom": "2026-01-01",
      "validUntil": "2026-12-31",
      "consumed": 0
    }
  ],
  "approval": {
    "requester": "Amazon Web Services",
    "groups": [
      {
        "id": "g1",
        "mode": "sequential",
        "status": "pending",
        "stages": [
          { "id": "cost-owner", "label": "Cost owner", "approverEmployeeKey": "us-east-1a2b3c4d", "approverName": "Jamie Rivera", "status": "pending" }
        ]
      },
      {
        "id": "g2",
        "mode": "sequential",
        "status": "pending",
        "stages": [
          { "id": "finance", "label": "Finance", "approverEmployeeKey": "us-east-1e5f6g7h", "approverName": "Priya Nair", "status": "pending" }
        ]
      }
    ],
    "groupIndex": 0,
    "status": "pending",
    "history": []
  },
  "createdAt": "2026-01-15T18:04:22.000Z"
}

Actualizar orden de compra

Actualiza los datos o los artículos de línea de una orden de compra.

PATCH/v1/workspaces/{regionId}/purchase-orders/{poId}

Parámetros

  • poIdstringObligatorio

    El identificador de la orden de compra.

Cuerpo

  • lineItemsArray<LineItem>

    Reemplaza todos los artículos de línea, con la misma forma que en CreatePurchaseOrder. Al menos uno.

  • billToParty{ companyName?, address, taxId? } | null

    A quién factura el proveedor, como en CreatePurchaseOrder. null copia los datos de facturación del perfil de tu empresa tal como están ahora. Es un dato contable: nunca devuelve la orden de compra a aprobación.

  • billTostring

    Obsoleto: usa billToParty. Una dirección de facturación de una sola línea, de hasta 500 caracteres; una cadena vacía copia la del perfil de la empresa. Se ignora cuando se envía billToParty.

  • costCenterstring

    Código interno de centro de costo.

  • budgetOwnerstring

    Nombre del responsable del presupuesto.

  • buyerNamestring

    Nombre del contacto del comprador.

  • notesstring

    Notas en texto libre.

Devuelve

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

Más detalles

Actualiza los campos contables de una orden de compra o reemplaza sus artículos de línea. No se permite una vez cerrada, cancelada o pagada. Enviar lineItems reemplaza el conjunto completo, recalcula el importe y reconstruye la cadena de aprobación desde cero, descartando las aprobaciones ya obtenidas: un borrador sigue siendo un borrador; si no, la orden de compra pasa a awaiting_fulfillment si la nueva cadena se aprueba automáticamente, o a pending_approval si necesita a una persona. Así, aumentar el total de una orden de compra aprobada puede devolverla a aprobación. Los límites de gasto se comprueban tanto para el solicitante de la orden como para quien la edita. Para reasignar una orden de compra cerrada, cancelada o pagada a otro centro de costo, usa ChangeFinishedPurchaseOrderCostCenter.

Errores

  • 400 Bad Request - La validación falló; la orden de compra está cerrada, cancelada o pagada ("PO '{poId}' can't be edited once it's {status}"); o la moneda de una línea no es la moneda de la región.
  • 404 Not Found - No existe ninguna orden de compra con este id en el espacio de trabajo.
  • 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}/purchase-orders/{poId}
Solicitud
curl -X PATCH "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Respuesta · 200 OK
{
   "id": "string",
   "buyerOrgId": "string",
   "supplierOrgId": "string",
   "supplier": "string",
   "amount": number,
   "currency": "string",
   "status": "draft" | "pending_approval" | "rejected" | "awaiting_fulfillment" | "invoiced" | "paid" | "canceled" | "closed" | "expired",
   "invoiceId": "string",
   "provider": "aws" | "gcp" | "azure" | "oci",
   "payerAccounts": [
      { "id": "string", "label": "string", "detail": "string" }
   ],
   "billToParty": {
      "source": "company_profile" | "custom",
      "companyName": "string",
      "address": { "line1": "string", "line2": "string", "city": "string", "region": "string", "postalCode": "string", "country": "string" },
      "addressText": "string",
      "taxId": "string"
   },
   "costCenter": "string",
   "costCenterChanges": [ { "from": "string", "to": "string", "reason": "string", "by": "string", "byName": "string", "at": "string" } ],
   "budgetOwner": "string",
   "buyerName": "string",
   "supplierSite": "string",
   "notes": "string",
   "requestId": "string",
   "lineItems": [
      {
      "lineNo": number,
      "scopeType": "sku" | "service" | "account" | "custom",
      "scopeId": "string" | null,
      "name": "string",
      "ruleType": "quantity" | "amount",
      "unit": "string",
      "unitPrice": number,
      "qty": number,
      "nteAmount": number,
      "lineType": "goods" | "service",
      "currency": "string",
      "paymentTerms": "string",
      "validFrom": "string",
      "validUntil": "string",
      "consumed": number,
      "customerLineNo": "string",
      "supplierSku": "string",
      "priceSource": "contract" | "list" | "manual"
    }
   ],
   "approval": {
      "requester": "string",
      "requesterEmployeeKey": "string",
      "groups": [
        {
          "id": "string",
          "mode": "sequential" | "parallel",
          "label": "string",
          "status": "pending" | "approved" | "rejected",
          "stages": [
            { "id": "string", "label": "string", "approverEmployeeKey": "string", "approverName": "string", "status": "pending" | "approved" | "rejected" }
          ]
        }
      ],
      "groupIndex": number,
      "status": "pending" | "approved" | "rejected",
      "history": [
        { "stage": "string", "by": "string", "at": "string", "action": "approved" | "rejected" | "limit_exceeded" | "reassigned" | "skipped" }
      ],
      "autonomy": boolean,
      "selfApproved": boolean
    },
   "supplierEmail": { "to": "string", "at": "string" },
   "priorInvoiced": { "amount": number, "currency": "string", "basis": "invoiced" | "remaining", "sourceSystem": "sap_ariba" | "coupa" | "oracle", "importId": "string", "fileName": "string", "importedAt": "string", "importedBy": "string" },
   "createdAt": "string"
}

Enviar borrador de orden de compra

Envía a aprobación un borrador de orden de compra.

POST/v1/workspaces/{regionId}/purchase-orders/{poId}/submit

Parámetros

  • poIdstringObligatorio

    El identificador de la orden de compra.

Devuelve

201 Created con el objeto que se muestra en la respuesta.

Más detalles

Envía un borrador a aprobación. La cadena de aprobación se construye ahora, a partir del flujo de aprobación, la configuración de autonomía y los límites de gasto actuales, no los vigentes cuando se guardó el borrador, y las líneas toman la moneda actual de la región. Los límites de gasto se comprueban tanto para el solicitante del borrador como para quien lo envía. Un proveedor que no está en Pleaxy y tiene supplierContactEmail se invita en este momento. No lleva cuerpo.

Errores

  • 400 Bad Request - La orden de compra no es un borrador ("PO '{poId}' isn't a draft"), o supera un límite de gasto que nombra como aprobador a quien la envía, lo que dejaría a nadie en condiciones de aprobarla ("Not submitted. This draft is over a spend limit that names you as its approver…").
  • 404 Not Found - No existe ninguna orden de compra con este id en el espacio de trabajo.
  • 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.
POST /v1/workspaces/{regionId}/purchase-orders/{poId}/submit
Solicitud
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/submit" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Respuesta · 201 Created
{
   "id": "string",
   "buyerOrgId": "string",
   "supplierOrgId": "string",
   "supplier": "string",
   "amount": number,
   "currency": "string",
   "status": "draft" | "pending_approval" | "rejected" | "awaiting_fulfillment" | "invoiced" | "paid" | "canceled" | "closed" | "expired",
   "invoiceId": "string",
   "provider": "aws" | "gcp" | "azure" | "oci",
   "payerAccounts": [
      { "id": "string", "label": "string", "detail": "string" }
   ],
   "billToParty": {
      "source": "company_profile" | "custom",
      "companyName": "string",
      "address": { "line1": "string", "line2": "string", "city": "string", "region": "string", "postalCode": "string", "country": "string" },
      "addressText": "string",
      "taxId": "string"
   },
   "costCenter": "string",
   "costCenterChanges": [ { "from": "string", "to": "string", "reason": "string", "by": "string", "byName": "string", "at": "string" } ],
   "budgetOwner": "string",
   "buyerName": "string",
   "supplierSite": "string",
   "notes": "string",
   "requestId": "string",
   "lineItems": [
      {
      "lineNo": number,
      "scopeType": "sku" | "service" | "account" | "custom",
      "scopeId": "string" | null,
      "name": "string",
      "ruleType": "quantity" | "amount",
      "unit": "string",
      "unitPrice": number,
      "qty": number,
      "nteAmount": number,
      "lineType": "goods" | "service",
      "currency": "string",
      "paymentTerms": "string",
      "validFrom": "string",
      "validUntil": "string",
      "consumed": number,
      "customerLineNo": "string",
      "supplierSku": "string",
      "priceSource": "contract" | "list" | "manual"
    }
   ],
   "approval": {
      "requester": "string",
      "requesterEmployeeKey": "string",
      "groups": [
        {
          "id": "string",
          "mode": "sequential" | "parallel",
          "label": "string",
          "status": "pending" | "approved" | "rejected",
          "stages": [
            { "id": "string", "label": "string", "approverEmployeeKey": "string", "approverName": "string", "status": "pending" | "approved" | "rejected" }
          ]
        }
      ],
      "groupIndex": number,
      "status": "pending" | "approved" | "rejected",
      "history": [
        { "stage": "string", "by": "string", "at": "string", "action": "approved" | "rejected" | "limit_exceeded" | "reassigned" | "skipped" }
      ],
      "autonomy": boolean,
      "selfApproved": boolean
    },
   "supplierEmail": { "to": "string", "at": "string" },
   "priorInvoiced": { "amount": number, "currency": "string", "basis": "invoiced" | "remaining", "sourceSystem": "sap_ariba" | "coupa" | "oracle", "importId": "string", "fileName": "string", "importedAt": "string", "importedBy": "string" },
   "createdAt": "string"
}

Cancelar orden de compra

Cancela una orden de compra que no se ha cumplido.

POST/v1/workspaces/{regionId}/purchase-orders/{poId}/cancel

Parámetros

  • poIdstringObligatorio

    El identificador de la orden de compra.

Cuerpo

  • reasonstring

    Hasta 500 caracteres. El proveedor lo ve exactamente como se escribió.

Devuelve

201 Created con el objeto que se muestra en la respuesta.

Más detalles

Cancela una orden de compra que está en borrador, pendiente de aprobación, pendiente de cumplimiento o vencida. Es el comprador quien detiene la orden, no un aprobador que la rechaza. Se avisa al proveedor, con tu motivo si lo indicas.

Errores

  • 400 Bad Request - La orden de compra está en un estado que no se puede cancelar ("PO '{poId}' can't be canceled once it's {status}"), o reason supera los 500 caracteres.
  • 404 Not Found - No existe ninguna orden de compra con este id en el espacio de trabajo.
  • 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.
POST /v1/workspaces/{regionId}/purchase-orders/{poId}/cancel
Solicitud
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/cancel" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{
   "reason": "string"
}
Respuesta · 201 Created
{
   "id": "string",
   "buyerOrgId": "string",
   "supplierOrgId": "string",
   "supplier": "string",
   "amount": number,
   "currency": "string",
   "status": "draft" | "pending_approval" | "rejected" | "awaiting_fulfillment" | "invoiced" | "paid" | "canceled" | "closed" | "expired",
   "invoiceId": "string",
   "provider": "aws" | "gcp" | "azure" | "oci",
   "payerAccounts": [
      { "id": "string", "label": "string", "detail": "string" }
   ],
   "billToParty": {
      "source": "company_profile" | "custom",
      "companyName": "string",
      "address": { "line1": "string", "line2": "string", "city": "string", "region": "string", "postalCode": "string", "country": "string" },
      "addressText": "string",
      "taxId": "string"
   },
   "costCenter": "string",
   "costCenterChanges": [ { "from": "string", "to": "string", "reason": "string", "by": "string", "byName": "string", "at": "string" } ],
   "budgetOwner": "string",
   "buyerName": "string",
   "supplierSite": "string",
   "notes": "string",
   "requestId": "string",
   "lineItems": [
      {
      "lineNo": number,
      "scopeType": "sku" | "service" | "account" | "custom",
      "scopeId": "string" | null,
      "name": "string",
      "ruleType": "quantity" | "amount",
      "unit": "string",
      "unitPrice": number,
      "qty": number,
      "nteAmount": number,
      "lineType": "goods" | "service",
      "currency": "string",
      "paymentTerms": "string",
      "validFrom": "string",
      "validUntil": "string",
      "consumed": number,
      "customerLineNo": "string",
      "supplierSku": "string",
      "priceSource": "contract" | "list" | "manual"
    }
   ],
   "approval": {
      "requester": "string",
      "requesterEmployeeKey": "string",
      "groups": [
        {
          "id": "string",
          "mode": "sequential" | "parallel",
          "label": "string",
          "status": "pending" | "approved" | "rejected",
          "stages": [
            { "id": "string", "label": "string", "approverEmployeeKey": "string", "approverName": "string", "status": "pending" | "approved" | "rejected" }
          ]
        }
      ],
      "groupIndex": number,
      "status": "pending" | "approved" | "rejected",
      "history": [
        { "stage": "string", "by": "string", "at": "string", "action": "approved" | "rejected" | "limit_exceeded" | "reassigned" | "skipped" }
      ],
      "autonomy": boolean,
      "selfApproved": boolean
    },
   "supplierEmail": { "to": "string", "at": "string" },
   "priorInvoiced": { "amount": number, "currency": "string", "basis": "invoiced" | "remaining", "sourceSystem": "sap_ariba" | "coupa" | "oracle", "importId": "string", "fileName": "string", "importedAt": "string", "importedBy": "string" },
   "createdAt": "string"
}

Cerrar orden de compra

Cierra una orden de compra a la que no le queda nada por facturar.

POST/v1/workspaces/{regionId}/purchase-orders/{poId}/close

Parámetros

  • poIdstringObligatorio

    El identificador de la orden de compra.

Devuelve

201 Created con el objeto que se muestra en la respuesta.

Más detalles

Cierra una orden de compra pendiente de cumplimiento, facturada, pagada o vencida, por ejemplo una que se usó por completo y no tiene nada pendiente de facturar. Una orden de compra cerrada no se puede editar. No lleva cuerpo.

Errores

  • 400 Bad Request - La orden de compra está en un estado que no se puede cerrar ("PO '{poId}' can't be closed while it's {status}").
  • 404 Not Found - No existe ninguna orden de compra con este id en el espacio de trabajo.
  • 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.
POST /v1/workspaces/{regionId}/purchase-orders/{poId}/close
Solicitud
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/close" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Respuesta · 201 Created
{
   "id": "string",
   "buyerOrgId": "string",
   "supplierOrgId": "string",
   "supplier": "string",
   "amount": number,
   "currency": "string",
   "status": "draft" | "pending_approval" | "rejected" | "awaiting_fulfillment" | "invoiced" | "paid" | "canceled" | "closed" | "expired",
   "invoiceId": "string",
   "provider": "aws" | "gcp" | "azure" | "oci",
   "payerAccounts": [
      { "id": "string", "label": "string", "detail": "string" }
   ],
   "billToParty": {
      "source": "company_profile" | "custom",
      "companyName": "string",
      "address": { "line1": "string", "line2": "string", "city": "string", "region": "string", "postalCode": "string", "country": "string" },
      "addressText": "string",
      "taxId": "string"
   },
   "costCenter": "string",
   "costCenterChanges": [ { "from": "string", "to": "string", "reason": "string", "by": "string", "byName": "string", "at": "string" } ],
   "budgetOwner": "string",
   "buyerName": "string",
   "supplierSite": "string",
   "notes": "string",
   "requestId": "string",
   "lineItems": [
      {
      "lineNo": number,
      "scopeType": "sku" | "service" | "account" | "custom",
      "scopeId": "string" | null,
      "name": "string",
      "ruleType": "quantity" | "amount",
      "unit": "string",
      "unitPrice": number,
      "qty": number,
      "nteAmount": number,
      "lineType": "goods" | "service",
      "currency": "string",
      "paymentTerms": "string",
      "validFrom": "string",
      "validUntil": "string",
      "consumed": number,
      "customerLineNo": "string",
      "supplierSku": "string",
      "priceSource": "contract" | "list" | "manual"
    }
   ],
   "approval": {
      "requester": "string",
      "requesterEmployeeKey": "string",
      "groups": [
        {
          "id": "string",
          "mode": "sequential" | "parallel",
          "label": "string",
          "status": "pending" | "approved" | "rejected",
          "stages": [
            { "id": "string", "label": "string", "approverEmployeeKey": "string", "approverName": "string", "status": "pending" | "approved" | "rejected" }
          ]
        }
      ],
      "groupIndex": number,
      "status": "pending" | "approved" | "rejected",
      "history": [
        { "stage": "string", "by": "string", "at": "string", "action": "approved" | "rejected" | "limit_exceeded" | "reassigned" | "skipped" }
      ],
      "autonomy": boolean,
      "selfApproved": boolean
    },
   "supplierEmail": { "to": "string", "at": "string" },
   "priorInvoiced": { "amount": number, "currency": "string", "basis": "invoiced" | "remaining", "sourceSystem": "sap_ariba" | "coupa" | "oracle", "importId": "string", "fileName": "string", "importedAt": "string", "importedBy": "string" },
   "createdAt": "string"
}

Cambiar el centro de costo de una orden de compra finalizada

Mueve una orden de compra finalizada a otro centro de costo.

POST/v1/workspaces/{regionId}/purchase-orders/{poId}/cost-center

Parámetros

  • poIdstringObligatorio

    El identificador de la orden de compra.

Cuerpo

  • costCenterstringObligatorio

    El centro de costo al que se imputa la orden, hasta 100 caracteres. Se compara con la lista del espacio de trabajo sin distinguir mayúsculas y se guarda tal como lo escribe la lista.

  • reasonstringObligatorio

    Por qué se mueve, hasta 500 caracteres. Se guarda en la orden.

Devuelve

201 Created con el objeto que se muestra en la respuesta.

Más detalles

Reasigna una orden de compra cerrada, cancelada o pagada a otro centro de costo, con un motivo; por ejemplo, tras una reorganización o al detectar una elección errónea al cierre de mes. Solo cambia costCenter: las líneas, el importe y las aprobaciones quedan como se aprobaron y nada vuelve a aprobación. El cambio queda en la orden en costCenterChanges, con quién lo hizo y cuándo. Cuando el espacio de trabajo mantiene una lista de centros de costo, el nuevo debe ser uno activo de esa lista. Una orden de compra abierta cambia su centro de costo con UpdatePurchaseOrder.

Solo un administrador del espacio de trabajo: un administrador con sesión iniciada o una clave de API creada con el rol de administrador.

Campos de la respuesta

  • costCenterChangesArray

    Cada cambio hecho de esta forma, del más antiguo al más reciente: { from?, to, reason, by, byName, at }.

Errores

  • 400 Bad Request - No hay motivo ("Say why the cost center is changing."); la orden de compra sigue abierta ("PO '{poId}' is still open. Change its cost center by editing the order."); el centro de costo no es uno activo de la lista del espacio de trabajo ("'{costCenter}' isn't an active cost center in this workspace. Pick one from the cost centers list."); es el que la orden de compra ya tiene; o un campo no supera la validación.
  • 403 Forbidden - El llamador no es administrador de este espacio de trabajo de comprador ("Only an administrator of this workspace can add or change cost centers.").
  • 404 Not Found - No existe ninguna orden de compra con este id en el espacio de trabajo.
  • 409 Conflict - La orden de compra cambió mientras se guardaba esto ("PO '{poId}' changed while you were editing it. Refresh and try again.").
  • 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.
POST /v1/workspaces/{regionId}/purchase-orders/{poId}/cost-center
Solicitud
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/cost-center" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{
   "costCenter": "string",
   "reason": "string"
}
Respuesta · 201 Created
{
   "id": "string",
   "buyerOrgId": "string",
   "supplierOrgId": "string",
   "supplier": "string",
   "amount": number,
   "currency": "string",
   "status": "draft" | "pending_approval" | "rejected" | "awaiting_fulfillment" | "invoiced" | "paid" | "canceled" | "closed" | "expired",
   "invoiceId": "string",
   "provider": "aws" | "gcp" | "azure" | "oci",
   "payerAccounts": [
      { "id": "string", "label": "string", "detail": "string" }
   ],
   "billToParty": {
      "source": "company_profile" | "custom",
      "companyName": "string",
      "address": { "line1": "string", "line2": "string", "city": "string", "region": "string", "postalCode": "string", "country": "string" },
      "addressText": "string",
      "taxId": "string"
   },
   "costCenter": "string",
   "costCenterChanges": [ { "from": "string", "to": "string", "reason": "string", "by": "string", "byName": "string", "at": "string" } ],
   "budgetOwner": "string",
   "buyerName": "string",
   "supplierSite": "string",
   "notes": "string",
   "requestId": "string",
   "lineItems": [
      {
      "lineNo": number,
      "scopeType": "sku" | "service" | "account" | "custom",
      "scopeId": "string" | null,
      "name": "string",
      "ruleType": "quantity" | "amount",
      "unit": "string",
      "unitPrice": number,
      "qty": number,
      "nteAmount": number,
      "lineType": "goods" | "service",
      "currency": "string",
      "paymentTerms": "string",
      "validFrom": "string",
      "validUntil": "string",
      "consumed": number,
      "customerLineNo": "string",
      "supplierSku": "string",
      "priceSource": "contract" | "list" | "manual"
    }
   ],
   "approval": {
      "requester": "string",
      "requesterEmployeeKey": "string",
      "groups": [
        {
          "id": "string",
          "mode": "sequential" | "parallel",
          "label": "string",
          "status": "pending" | "approved" | "rejected",
          "stages": [
            { "id": "string", "label": "string", "approverEmployeeKey": "string", "approverName": "string", "status": "pending" | "approved" | "rejected" }
          ]
        }
      ],
      "groupIndex": number,
      "status": "pending" | "approved" | "rejected",
      "history": [
        { "stage": "string", "by": "string", "at": "string", "action": "approved" | "rejected" | "limit_exceeded" | "reassigned" | "skipped" }
      ],
      "autonomy": boolean,
      "selfApproved": boolean
    },
   "supplierEmail": { "to": "string", "at": "string" },
   "priorInvoiced": { "amount": number, "currency": "string", "basis": "invoiced" | "remaining", "sourceSystem": "sap_ariba" | "coupa" | "oracle", "importId": "string", "fileName": "string", "importedAt": "string", "importedBy": "string" },
   "createdAt": "string"
}

Aprobar orden de compra

Aprueba el paso de aprobación actual de una orden de compra.

POST/v1/workspaces/{regionId}/purchase-orders/{poId}/approve

Parámetros

  • poIdstringObligatorio

    El identificador de la orden de compra.

Devuelve

201 Created con el objeto que se muestra en la respuesta.

Más detalles

Hace avanzar una etapa la cadena de aprobación de la orden de compra. Solo puede llamarlo el empleado que indica el paso actual: ningún rol, permiso ni derecho de administrador sustituye a estar nombrado, y una clave de API nunca puede estar nombrada. Cuando aprueba la etapa final, el estado de la orden de compra pasa a awaiting_fulfillment, se envía al proveedor una notificación po_approved y se le envía la orden en PDF por correo (consulta CreatePurchaseOrder). No lleva cuerpo y actúa como el llamador autenticado (una clave de API actúa como apikey:<keyId>).

Solo sesión iniciada. Cualquier otro llamador, incluida una clave de API, recibe 403 HUMAN_APPROVAL_REQUIRED antes de que se lea nada.

Errores

  • 400 Bad Request - La cadena de aprobación de la orden de compra no tiene ninguna etapa pendiente (ya se aprobó o rechazó).
  • 403 Forbidden - Código HUMAN_APPROVAL_REQUIRED. El llamador es una clave de API. Los pasos de aprobación nombran a un empleado concreto y una clave nunca puede serlo, así que una clave no puede aprobar ni rechazar un paso. Pide al empleado que indica el paso que actúe sobre él en Pleaxy.
  • 403 Forbidden - Código APPROVER_NOT_ASSIGNED. El paso actual no tiene aprobador asignado, así que nadie puede actuar sobre él. Un administrador debe asignar uno antes con ReassignPurchaseOrderApprovalStage / ReassignInvoiceApprovalStage.
  • 403 Forbidden - El llamador no es el empleado que indica el paso actual. Solo ese empleado puede aprobarlo o rechazarlo: ningún rol ni permiso sustituye a estar nombrado.
  • 404 Not Found - No existe ninguna orden de compra con este id en el espacio de trabajo.
  • 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.
POST /v1/workspaces/{regionId}/purchase-orders/{poId}/approve
Solicitud
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/approve" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Respuesta · 201 Created
{
   "id": "string",
   "buyerOrgId": "string",
   "supplierOrgId": "string",
   "supplier": "string",
   "amount": number,
   "currency": "string",
   "status": "draft" | "pending_approval" | "rejected" | "awaiting_fulfillment" | "invoiced" | "paid" | "canceled" | "closed" | "expired",
   "invoiceId": "string",
   "provider": "aws" | "gcp" | "azure" | "oci",
   "payerAccounts": [
      { "id": "string", "label": "string", "detail": "string" }
   ],
   "billToParty": {
      "source": "company_profile" | "custom",
      "companyName": "string",
      "address": { "line1": "string", "line2": "string", "city": "string", "region": "string", "postalCode": "string", "country": "string" },
      "addressText": "string",
      "taxId": "string"
   },
   "costCenter": "string",
   "costCenterChanges": [ { "from": "string", "to": "string", "reason": "string", "by": "string", "byName": "string", "at": "string" } ],
   "budgetOwner": "string",
   "buyerName": "string",
   "supplierSite": "string",
   "notes": "string",
   "requestId": "string",
   "lineItems": [
      {
      "lineNo": number,
      "scopeType": "sku" | "service" | "account" | "custom",
      "scopeId": "string" | null,
      "name": "string",
      "ruleType": "quantity" | "amount",
      "unit": "string",
      "unitPrice": number,
      "qty": number,
      "nteAmount": number,
      "lineType": "goods" | "service",
      "currency": "string",
      "paymentTerms": "string",
      "validFrom": "string",
      "validUntil": "string",
      "consumed": number,
      "customerLineNo": "string",
      "supplierSku": "string",
      "priceSource": "contract" | "list" | "manual"
    }
   ],
   "approval": {
      "requester": "string",
      "requesterEmployeeKey": "string",
      "groups": [
        {
          "id": "string",
          "mode": "sequential" | "parallel",
          "label": "string",
          "status": "pending" | "approved" | "rejected",
          "stages": [
            { "id": "string", "label": "string", "approverEmployeeKey": "string", "approverName": "string", "status": "pending" | "approved" | "rejected" }
          ]
        }
      ],
      "groupIndex": number,
      "status": "pending" | "approved" | "rejected",
      "history": [
        { "stage": "string", "by": "string", "at": "string", "action": "approved" | "rejected" | "limit_exceeded" | "reassigned" | "skipped" }
      ],
      "autonomy": boolean,
      "selfApproved": boolean
    },
   "supplierEmail": { "to": "string", "at": "string" },
   "priorInvoiced": { "amount": number, "currency": "string", "basis": "invoiced" | "remaining", "sourceSystem": "sap_ariba" | "coupa" | "oracle", "importId": "string", "fileName": "string", "importedAt": "string", "importedBy": "string" },
   "createdAt": "string"
}

Rechazar orden de compra

Rechaza una orden de compra en su paso de aprobación actual.

POST/v1/workspaces/{regionId}/purchase-orders/{poId}/reject

Parámetros

  • poIdstringObligatorio

    El identificador de la orden de compra.

Devuelve

201 Created con el objeto que se muestra en la respuesta.

Más detalles

Rechaza la orden de compra en su etapa de aprobación actual. Solo puede llamarlo el empleado que indica el paso actual: rechazar sigue la misma regla que aprobar. El estado pasa a rejected y se envía al proveedor una notificación po_rejected. Es definitivo: una orden de compra rechazada no se puede volver a enviar. No lleva cuerpo y actúa como el llamador autenticado (una clave de API actúa como apikey:<keyId>).

Errores

  • 400 Bad Request - La cadena de aprobación de la orden de compra no tiene ninguna etapa pendiente.
  • 403 Forbidden - Código HUMAN_APPROVAL_REQUIRED. El llamador es una clave de API. Los pasos de aprobación nombran a un empleado concreto y una clave nunca puede serlo, así que una clave no puede aprobar ni rechazar un paso. Pide al empleado que indica el paso que actúe sobre él en Pleaxy.
  • 403 Forbidden - Código APPROVER_NOT_ASSIGNED. El paso actual no tiene aprobador asignado, así que nadie puede actuar sobre él. Un administrador debe asignar uno antes con ReassignPurchaseOrderApprovalStage / ReassignInvoiceApprovalStage.
  • 403 Forbidden - El llamador no es el empleado que indica el paso actual. Solo ese empleado puede aprobarlo o rechazarlo: ningún rol ni permiso sustituye a estar nombrado.
  • 404 Not Found - No existe ninguna orden de compra con este id en el espacio de trabajo.
  • 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.
POST /v1/workspaces/{regionId}/purchase-orders/{poId}/reject
Solicitud
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/reject" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Respuesta · 201 Created
{
   "id": "string",
   "buyerOrgId": "string",
   "supplierOrgId": "string",
   "supplier": "string",
   "amount": number,
   "currency": "string",
   "status": "draft" | "pending_approval" | "rejected" | "awaiting_fulfillment" | "invoiced" | "paid" | "canceled" | "closed" | "expired",
   "invoiceId": "string",
   "provider": "aws" | "gcp" | "azure" | "oci",
   "payerAccounts": [
      { "id": "string", "label": "string", "detail": "string" }
   ],
   "billToParty": {
      "source": "company_profile" | "custom",
      "companyName": "string",
      "address": { "line1": "string", "line2": "string", "city": "string", "region": "string", "postalCode": "string", "country": "string" },
      "addressText": "string",
      "taxId": "string"
   },
   "costCenter": "string",
   "costCenterChanges": [ { "from": "string", "to": "string", "reason": "string", "by": "string", "byName": "string", "at": "string" } ],
   "budgetOwner": "string",
   "buyerName": "string",
   "supplierSite": "string",
   "notes": "string",
   "requestId": "string",
   "lineItems": [
      {
      "lineNo": number,
      "scopeType": "sku" | "service" | "account" | "custom",
      "scopeId": "string" | null,
      "name": "string",
      "ruleType": "quantity" | "amount",
      "unit": "string",
      "unitPrice": number,
      "qty": number,
      "nteAmount": number,
      "lineType": "goods" | "service",
      "currency": "string",
      "paymentTerms": "string",
      "validFrom": "string",
      "validUntil": "string",
      "consumed": number,
      "customerLineNo": "string",
      "supplierSku": "string",
      "priceSource": "contract" | "list" | "manual"
    }
   ],
   "approval": {
      "requester": "string",
      "requesterEmployeeKey": "string",
      "groups": [
        {
          "id": "string",
          "mode": "sequential" | "parallel",
          "label": "string",
          "status": "pending" | "approved" | "rejected",
          "stages": [
            { "id": "string", "label": "string", "approverEmployeeKey": "string", "approverName": "string", "status": "pending" | "approved" | "rejected" }
          ]
        }
      ],
      "groupIndex": number,
      "status": "pending" | "approved" | "rejected",
      "history": [
        { "stage": "string", "by": "string", "at": "string", "action": "approved" | "rejected" | "limit_exceeded" | "reassigned" | "skipped" }
      ],
      "autonomy": boolean,
      "selfApproved": boolean
    },
   "supplierEmail": { "to": "string", "at": "string" },
   "priorInvoiced": { "amount": number, "currency": "string", "basis": "invoiced" | "remaining", "sourceSystem": "sap_ariba" | "coupa" | "oracle", "importId": "string", "fileName": "string", "importedAt": "string", "importedBy": "string" },
   "createdAt": "string"
}

Reasignar etapa de aprobación de orden de compra

Asigna un paso de aprobación pendiente a otra persona.

POST/v1/workspaces/{regionId}/purchase-orders/{poId}/approval/reassign

Parámetros

  • poIdstringObligatorio

    El identificador de la orden de compra.

Cuerpo

  • stageIdstringObligatorio

    Id del paso pendiente que se reasigna. Puede estar en cualquier grupo de la cadena, no solo en el actual.

  • approverEmployeeKeystringObligatorio

    Clave de empleado (sub de Cognito) del nuevo aprobador. Debe ser un miembro comprador de este espacio de trabajo y no el administrador que actúa.

  • reasonstring

    Por qué se reasignó el paso, hasta 280 caracteres. Se muestra en el historial de aprobación.

Devuelve

201 Created con el objeto que se muestra en la respuesta.

Más detalles

Hace que un paso pendiente de la cadena de aprobación de esta orden apunte a otro empleado nombrado. Solo para administradores (approvalSettings:edit) y solo con sesión iniciada. Como un paso solo puede gestionarlo el empleado que nombra, esta es la única forma de mover un paso cuyo aprobador se fue o nunca se asignó: no hay ningún actor alternativo. Solo cambia la cadena de este documento: la cadena configurada de la organización en Configuración no se toca, y el cambio queda registrado en el historial de aprobación como una entrada reassigned.

Errores

  • 400 Bad Request - La cadena ya está aprobada o rechazada; el paso ya se aprobó o rechazó; el nuevo aprobador no es empleado de este espacio de trabajo; el nuevo aprobador creó la orden o registró la factura, está excluido por separación de funciones, ya superó el límite de gasto con su propia autoridad o ya ocupa otro puesto en el mismo paso; o el paso es la revisión del límite de gasto, cuyo aprobador es un hecho de auditoría fijo (cámbialo en Configuración › Límites de gasto).
  • 403 Forbidden - El llamador no tiene approvalSettings:edit (administrador) o se nombró a sí mismo como nuevo aprobador: asignarte un paso activo convierte a una sola persona en toda la cadena sin rastro de política. Código HUMAN_APPROVAL_REQUIRED cuando el llamador es una clave de API: solo un administrador con sesión iniciada puede reasignar un paso de aprobación.
  • 404 Not Found - No existe ningún documento con este id en el espacio de trabajo, o la cadena no tiene ningún paso con este stageId.
  • 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.
POST /v1/workspaces/{regionId}/purchase-orders/{poId}/approval/reassign
Solicitud
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/approval/reassign" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{
   "stageId": "string",
   "approverEmployeeKey": "string",
   "reason": "string"
}
Respuesta · 201 Created
{
   "id": "string",
   "buyerOrgId": "string",
   "supplierOrgId": "string",
   "supplier": "string",
   "amount": number,
   "currency": "string",
   "status": "draft" | "pending_approval" | "rejected" | "awaiting_fulfillment" | "invoiced" | "paid" | "canceled" | "closed" | "expired",
   "invoiceId": "string",
   "provider": "aws" | "gcp" | "azure" | "oci",
   "payerAccounts": [
      { "id": "string", "label": "string", "detail": "string" }
   ],
   "billToParty": {
      "source": "company_profile" | "custom",
      "companyName": "string",
      "address": { "line1": "string", "line2": "string", "city": "string", "region": "string", "postalCode": "string", "country": "string" },
      "addressText": "string",
      "taxId": "string"
   },
   "costCenter": "string",
   "costCenterChanges": [ { "from": "string", "to": "string", "reason": "string", "by": "string", "byName": "string", "at": "string" } ],
   "budgetOwner": "string",
   "buyerName": "string",
   "supplierSite": "string",
   "notes": "string",
   "requestId": "string",
   "lineItems": [
      {
      "lineNo": number,
      "scopeType": "sku" | "service" | "account" | "custom",
      "scopeId": "string" | null,
      "name": "string",
      "ruleType": "quantity" | "amount",
      "unit": "string",
      "unitPrice": number,
      "qty": number,
      "nteAmount": number,
      "lineType": "goods" | "service",
      "currency": "string",
      "paymentTerms": "string",
      "validFrom": "string",
      "validUntil": "string",
      "consumed": number,
      "customerLineNo": "string",
      "supplierSku": "string",
      "priceSource": "contract" | "list" | "manual"
    }
   ],
   "approval": {
      "requester": "string",
      "requesterEmployeeKey": "string",
      "groups": [
        {
          "id": "string",
          "mode": "sequential" | "parallel",
          "label": "string",
          "status": "pending" | "approved" | "rejected",
          "stages": [
            { "id": "string", "label": "string", "approverEmployeeKey": "string", "approverName": "string", "status": "pending" | "approved" | "rejected" }
          ]
        }
      ],
      "groupIndex": number,
      "status": "pending" | "approved" | "rejected",
      "history": [
        { "stage": "string", "by": "string", "at": "string", "action": "approved" | "rejected" | "limit_exceeded" | "reassigned" | "skipped" }
      ],
      "autonomy": boolean,
      "selfApproved": boolean
    },
   "supplierEmail": { "to": "string", "at": "string" },
   "priorInvoiced": { "amount": number, "currency": "string", "basis": "invoiced" | "remaining", "sourceSystem": "sap_ariba" | "coupa" | "oracle", "importId": "string", "fileName": "string", "importedAt": "string", "importedBy": "string" },
   "createdAt": "string"
}

Listar comentarios de orden de compra

Lista los comentarios de una orden de compra.

GET/v1/workspaces/{regionId}/purchase-orders/{poId}/comments

Parámetros

  • poIdstringObligatorio

    El identificador de la orden de compra.

  • buyerstring

    Solo para llamadores proveedores, y solo necesario después de un 409 *_ID_AMBIGUOUS: el ID del espacio de trabajo del comprador (que termina en .buyer) o el id de región, de la lista buyers del 409. Solo se considera el documento de ese comprador; si no hay ninguno allí, es un 404. Un ID del espacio de trabajo .supplier da 400 BUYER_QUALIFIER_INVALID ("The buyer parameter must be one buyer's Workspace ID (ending in .buyer), from the buyers list in the 409 response."). Se ignora para un llamador comprador.

Devuelve

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

Más detalles

Los comentarios de una orden de compra, del más antiguo al más reciente: los internos de tu propio lado y todos los compartidos. Un comentario que su autor eliminó permanece en el hilo con el cuerpo vacío, para que siga constando que se dijo algo y cuándo. Misma búsqueda que GetPurchaseOrder, así que un proveedor accede a las órdenes de compra que se le emitieron.

Campos de la respuesta

  • visibilitystring

    internal: solo el lado del autor. shared: lo leen tanto el comprador como el proveedor.

  • authorKey, mentionsstring, Array

    Solo en los comentarios de tu propio lado: quién lo escribió, por clave de empleado, y a quién mencionó. El otro lado ve authorName y authorOrgName.

  • bodystring

    Texto plano con sus saltos de línea. Vacío si el autor lo eliminó; deletedAt indica entonces cuándo.

  • viewerIsAuthorboolean

    Si lo escribió el llamador y, por tanto, puede eliminarlo. Siempre false para una clave de API.

Errores

  • 404 Not Found - No existe ninguna orden de compra con este id en el espacio de trabajo del llamador.
  • 409 Conflict - Solo para llamadores proveedores. Código PO_ID_AMBIGUOUS: más de uno de tus compradores ha emitido una orden de compra con este id (los ids solo son únicos dentro de un comprador), así que Pleaxy no adivina a cuál te refieres. No se lee ni se cambia nada. El campo buyers del cuerpo lista el ID del espacio de trabajo y el nombre de cada comprador: repite la llamada con ?buyer=<ese ID del espacio de trabajo>.
  • 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}/purchase-orders/{poId}/comments
Solicitud
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/comments" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Respuesta · 200 OK
{
   "comments": [
      {
         "id": "string",
         "documentKind": "invoice" | "purchase_order",
         "documentId": "string",
         "body": "string",
         "visibility": "internal" | "shared",
         "authorSide": "buyer" | "supplier",
         "authorKey": "string",
         "authorName": "string",
         "authorOrgName": "string",
         "mentions": [ { "employeeKey": "string", "name": "string" } ],
         "createdAt": "string",
         "deletedAt": "string",
         "viewerIsAuthor": boolean
      }
   ]
}

Agregar comentario a orden de compra

Agrega un comentario a una orden de compra.

POST/v1/workspaces/{regionId}/purchase-orders/{poId}/comments

Parámetros

  • poIdstringObligatorio

    El identificador de la orden de compra.

  • buyerstring

    Solo para llamadores proveedores, y solo necesario después de un 409 *_ID_AMBIGUOUS: el ID del espacio de trabajo del comprador (que termina en .buyer) o el id de región, de la lista buyers del 409. Solo se considera el documento de ese comprador; si no hay ninguno allí, es un 404. Un ID del espacio de trabajo .supplier da 400 BUYER_QUALIFIER_INVALID ("The buyer parameter must be one buyer's Workspace ID (ending in .buyer), from the buyers list in the 409 response."). Se ignora para un llamador comprador.

Cuerpo

  • bodystringObligatorio

    Texto plano, hasta 2000 caracteres. Se conservan los saltos de línea; se eliminan los caracteres de control, de texto bidireccional e invisibles.

  • visibility"internal" | "shared"Obligatorio

    internal: solo tu propio equipo. shared: el otro lado también lo lee y responde. Los comentarios de un proveedor siempre son compartidos.

  • mentionsstring[]

    Hasta 10 claves de empleado de personas de tu propio espacio de trabajo a las que notificar (consulta ListEmployees). La notificación nunca incluye el texto del comentario.

Devuelve

201 Created con el objeto que se muestra en la respuesta.

Más detalles

Comenta una orden de compra: de forma interna para tu equipo o compartida con el otro lado. Los comentarios nunca se editan. Se notifica (po_comment) a las personas que mencionas, a quienes comentaron antes desde tu lado y, en un comentario compartido, al otro lado; la notificación nunca incluye el texto.

Solo sesión iniciada. Una clave de API recibe 403 HUMAN_SESSION_REQUIRED.

Errores

  • 400 Bad Request - Un cuerpo vacío ("Write something before you post the comment."), más de 2000 caracteres, más de 10 menciones, una mención de alguien que no está en tu espacio de trabajo, una visibilidad distinta de internal o shared, un comentario interno de un proveedor ("A supplier's comments are always shared with the buyer.") o un comentario compartido en un documento cuyo proveedor no está en Pleaxy (publícalo como internal).
  • 403 Forbidden - Código HUMAN_SESSION_REQUIRED: el llamador es una clave de API ("Comments are written by people. Sign in to Pleaxy to post one.").
  • 404 Not Found - No existe ninguna orden de compra con este id en el espacio de trabajo del llamador.
  • 409 Conflict - Solo para llamadores proveedores. Código PO_ID_AMBIGUOUS: más de uno de tus compradores ha emitido una orden de compra con este id (los ids solo son únicos dentro de un comprador), así que Pleaxy no adivina a cuál te refieres. No se lee ni se cambia nada. El campo buyers del cuerpo lista el ID del espacio de trabajo y el nombre de cada comprador: repite la llamada con ?buyer=<ese ID del espacio de trabajo>.
  • 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.
POST /v1/workspaces/{regionId}/purchase-orders/{poId}/comments
Solicitud
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/comments" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{
   "body": "string",
   "visibility": "internal" | "shared",
   "mentions": [ "string" ]
}
Respuesta · 201 Created
{
   "id": "string",
   "documentKind": "invoice" | "purchase_order",
   "documentId": "string",
   "body": "string",
   "visibility": "internal" | "shared",
   "authorSide": "buyer" | "supplier",
   "authorKey": "string",
   "authorName": "string",
   "authorOrgName": "string",
   "mentions": [ { "employeeKey": "string", "name": "string" } ],
   "createdAt": "string",
   "deletedAt": "string",
   "viewerIsAuthor": boolean
}

Eliminar comentario de orden de compra

Elimina uno de tus comentarios en una orden de compra.

DELETE/v1/workspaces/{regionId}/purchase-orders/{poId}/comments/{commentId}

Parámetros

  • poIdstringObligatorio

    El identificador de la orden de compra.

  • commentIdstringObligatorio

    El comentario, p. ej. "CMT-1760313600000-3f9a1c2e".

  • buyerstring

    Solo para llamadores proveedores, y solo necesario después de un 409 *_ID_AMBIGUOUS: el ID del espacio de trabajo del comprador (que termina en .buyer) o el id de región, de la lista buyers del 409. Solo se considera el documento de ese comprador; si no hay ninguno allí, es un 404. Un ID del espacio de trabajo .supplier da 400 BUYER_QUALIFIER_INVALID ("The buyer parameter must be one buyer's Workspace ID (ending in .buyer), from the buyers list in the 409 response."). Se ignora para un llamador comprador.

Devuelve

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

Más detalles

Retira tu propio comentario: se elimina su texto y el hilo conserva que se hizo un comentario. Eliminarlo de nuevo no cambia nada.

Solo sesión iniciada. Una clave de API recibe 403 HUMAN_SESSION_REQUIRED.

Errores

  • 403 Forbidden - Código HUMAN_SESSION_REQUIRED: el llamador es una clave de API ("Comments are written by people. Sign in to Pleaxy to post one.").
  • 403 Forbidden - El comentario no es tuyo ("Only the person who wrote a comment can delete it.").
  • 404 Not Found - No hay ningún comentario con este id que puedas ver en este documento ("Comment {commentId} not found."), o no existe ese documento.
  • 409 Conflict - Solo para llamadores proveedores. Código PO_ID_AMBIGUOUS: más de uno de tus compradores ha emitido una orden de compra con este id (los ids solo son únicos dentro de un comprador), así que Pleaxy no adivina a cuál te refieres. No se lee ni se cambia nada. El campo buyers del cuerpo lista el ID del espacio de trabajo y el nombre de cada comprador: repite la llamada con ?buyer=<ese ID del espacio de trabajo>.
  • 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.
DELETE /v1/workspaces/{regionId}/purchase-orders/{poId}/comments/{commentId}
Solicitud
curl -X DELETE "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/comments/{commentId}" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Respuesta · 200 OK
{
   "id": "string",
   "documentKind": "invoice" | "purchase_order",
   "documentId": "string",
   "body": "string",
   "visibility": "internal" | "shared",
   "authorSide": "buyer" | "supplier",
   "authorKey": "string",
   "authorName": "string",
   "authorOrgName": "string",
   "mentions": [ { "employeeKey": "string", "name": "string" } ],
   "createdAt": "string",
   "deletedAt": "string",
   "viewerIsAuthor": boolean
}
Habla con nosotros