Referencia de la API

Cumplimiento de pedidos

Los proveedores confirman órdenes y anuncian envíos; los compradores ven ambos en la orden.

Más sobre este recurso

Lo que dice un proveedor sobre una orden después de emitirse: si la acepta, cuándo llegará y qué ha enviado. El ERP de un proveedor envía lo mismo como cXML: haz POST de un ConfirmationRequest o un ShipNoticeRequest (DTD Fulfill de cXML 1.2.071) a /v1/cxml/fulfillment con la clave de API en X-Api-Key o como SharedSecret del Sender, y una credencial To con dominio PleaxyWorkspaceID que nombre al comprador; la respuesta es un Status de cXML, y un payloadID reenviado no cambia nada. Los proveedores que no tienen ninguno de los dos pueden responder por correo: cada orden enviada por correo a un proveedor tiene su propia dirección (ListPurchaseOrderEmails), donde una respuesta o un documento cXML queda guardado en la orden. Nada de esto modifica la orden: cancelar una orden rechazada le corresponde al comprador, y un envío nunca es una recepción. Se avisa al solicitante y al receptor del comprador, y el feed de sincronización y los webhooks del comprador reciben purchase_order.confirmed y purchase_order.shipped.

Obtener cumplimiento de orden de compra

Devuelve las confirmaciones y los envíos del proveedor para una orden.

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

Parámetros

  • poIdstringObligatorio

    El identificador de la orden de compra.

  • buyerstring

    Llamadores proveedores: el ID del espacio de trabajo del comprador, cuando dos compradores emitieron el mismo id.

Devuelve

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

Más detalles

Lo que dijo el proveedor sobre una orden: su confirmación más reciente (resultado accepted, backordered, changed, partial o rejected, línea por línea, con la decisión del comprador sobre los cambios), las anteriores y sus envíos (planned, shipped o canceled, con transportista y seguimiento). Cada envío lista las recepciones aprobadas registradas contra él. shippedByLine suma las cantidades enviadas; expectedDeliveryDate es la fecha de entrega más reciente que dio el proveedor. Un proveedor cuyos compradores comparten un id de orden de compra añade ?buyer=<ID del espacio de trabajo del comprador>.

Campos de la respuesta

  • confirmationOrderConfirmation

    La confirmación más reciente, ausente hasta que el proveedor responde. Su resultado es el de la orden.

  • shippedByLineArray

    Por línea, la cantidad en envíos shipped. Los planned y canceled no se cuentan.

Errores

  • 404 Not Found - Ninguna orden de compra con este id es tuya.
  • 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}/fulfillment
Solicitud
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/fulfillment" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Respuesta · 200 OK
{
   "confirmation": OrderConfirmation,
   "confirmations": [
      {
         "id": "string",
         "poId": "string",
         "outcome": "accepted" | "backordered" | "changed" | "partial" | "rejected",
         "confirmId": "string",
         "deliveryDate": "YYYY-MM-DD",
         "note": "string",
         "lines": [ { "lineNo": number, "status": "accept" | "backordered" | "change" | "reject", "qty": number, "unitPrice": number, "substitute": { "supplierPartId": "string", "name": "string", "catalogItemId": "string" }, "shipmentDate": "YYYY-MM-DD", "deliveryDate": "YYYY-MM-DD", "reason": "string" } ],
         "decision": { "decision": "applied" | "declined", "at": "string", "version": number, "reason": "string" },
         "source": "portal" | "api" | "cxml",
         "createdAt": "string"
      }
   ],
   "shipNotices": [
      {
         "shipmentId": "string",
         "status": "planned" | "shipped" | "canceled",
         "shipmentDate": "YYYY-MM-DD",
         "deliveryDate": "YYYY-MM-DD",
         "carrier": "string",
         "trackingNumber": "string",
         "trackingUrl": "string",
         "lines": [ { "lineNo": number, "qty": number } ],
         "source": "portal" | "api" | "cxml",
         "createdAt": "string",
         "updatedAt": "string",
         "receipts": [ { "id": "string", "receivedAt": "YYYY-MM-DD" } ]
      }
   ],
   "shippedByLine": [ { "lineNo": number, "qty": number } ],
   "expectedDeliveryDate": "YYYY-MM-DD"
}

Aplicar cambios de la confirmación

Incorpora a la orden las cantidades y los precios que cambió el proveedor.

POST/v1/workspaces/{regionId}/purchase-orders/{poId}/confirmations/{confirmationId}/apply

Parámetros

  • poIdstringObligatorio

    El identificador de la orden de compra.

  • confirmationIdstringObligatorio

    El id de la confirmación, de GetPurchaseOrderFulfillment.

Devuelve

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

Más detalles

Aplica a las líneas de la orden los cambios de la confirmación más reciente del proveedor (resultado changed). Es una edición de líneas normal, como la que hace UpdatePurchaseOrder: la orden obtiene una nueva versión, vuelve a aprobación cuando sus reglas lo indican y el proveedor recibe po_changed. Responde con { purchaseOrder, confirmation }, con la decisión aplicada y la versión de la orden resultante.

Errores

  • 404 Not Found - No existe esa orden, o código CONFIRMATION_NOT_FOUND.
  • 409 Conflict - Código CONFIRMATION_SUPERSEDED (el proveedor volvió a confirmar desde entonces), CONFIRMATION_DECIDED (ya aplicada o rechazada), NO_CHANGES u ORDER_NOT_OPEN.
  • 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}/confirmations/{confirmationId}/apply
Solicitud
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/confirmations/{confirmationId}/apply" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Respuesta · 200 OK
{
   "purchaseOrder": PurchaseOrder,
   "confirmation": OrderConfirmation
}

Rechazar cambios de la confirmación

Mantiene la orden tal como está en lugar de aplicar los cambios del proveedor.

POST/v1/workspaces/{regionId}/purchase-orders/{poId}/confirmations/{confirmationId}/decline

Parámetros

  • poIdstringObligatorio

    El identificador de la orden de compra.

  • confirmationIdstringObligatorio

    El id de la confirmación, de GetPurchaseOrderFulfillment.

Cuerpo

  • reasonstring

    Por qué, hasta 500 caracteres. El proveedor lo ve.

Devuelve

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

Más detalles

Rechaza los cambios de la confirmación más reciente del proveedor. La orden no cambia; se avisa al proveedor, con tu motivo si das uno. Responde con la confirmación y su decisión.

Errores

  • 404 Not Found - No existe esa orden, o código CONFIRMATION_NOT_FOUND.
  • 409 Conflict - Código CONFIRMATION_SUPERSEDED, CONFIRMATION_DECIDED o NO_CHANGES.
  • 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}/confirmations/{confirmationId}/decline
Solicitud
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/confirmations/{confirmationId}/decline" \
  -H "X-Api-Key: $PLEAXY_API_KEY" \
  -H "Content-Type: application/json" \
  -d @body.json
body.json
{
   "reason": "string"
}
Respuesta · 200 OK
OrderConfirmation

Listar correos de orden de compra

Devuelve la dirección de correo propia de una orden y los correos que llegaron a ella.

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

Parámetros

  • poIdstringObligatorio

    El identificador de la orden de compra.

  • buyerstring

    Proveedores: el ID del espacio de trabajo del comprador, cuando dos compradores emitieron el mismo id.

Devuelve

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

Más detalles

Cada orden enviada por correo a su proveedor recibe su propia dirección, como segundo Reply-To en el correo de la orden e impresa en el PDF. La respuesta de un proveedor, o un ConfirmationRequest o ShipNoticeRequest de cXML que su sistema envíe ahí, se guarda en la orden, del más reciente al más antiguo. Un documento cXML de un remitente verificado (el contacto del proveedor o el dominio de su empresa, comprobado con SPF, DKIM y DMARC) se registra de inmediato (outcome applied). Pleaxy Assistant lee un correo sin formato y lo convierte en un borrador de confirmación o de aviso de envío, y un documento de un remitente que Pleaxy no puede verificar queda retenido: ambos esperan a que alguien los registre con RecordPurchaseOrderEmail. address no aparece hasta que se emite la orden.

Errores

  • 404 Not Found - No existe esa orden de compra.
  • 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}/emails
Solicitud
curl "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/emails" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Respuesta · 200 OK
{
   "address": "string",
   "emails": [
      {
         "id": "string",
         "from": "string",
         "subject": "string",
         "receivedAt": "string",
         "trust": "verified" | "unverified",
         "kind": "cxml" | "text",
         "outcome": "applied" | "draft" | "held" | "noAction" | "test" | "failed" | "ignored",
         "reasonCode": "string",
         "summary": "string",
         "text": "string",
         "attachments": [ { "name": "string", "contentType": "string", "size": number } ],
         "draft": { "kind": "confirmation" | "shipNotice", "summary": "string", "confirmation": object, "shipNotice": object },
         "result": { "confirmationId": "string", "shipmentId": "string" },
         "decision": { "action": "recorded" | "dismissed", "by": "string", "at": "string" }
      }
   ]
}

Registrar correo de orden de compra

Registra el borrador de un correo como la confirmación o el aviso de envío del proveedor.

POST/v1/workspaces/{regionId}/purchase-orders/{poId}/emails/{emailId}/record

Parámetros

  • poIdstringObligatorio

    El identificador de la orden de compra.

  • emailIdstringObligatorio

    El id del correo, de ListPurchaseOrderEmails.

Devuelve

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

Más detalles

Registra el borrador de un correo con outcome draft o held como la confirmación de orden o el aviso de envío del proveedor, con el correo como origen, con las mismas comprobaciones que ConfirmPurchaseOrder y SendShipNotice. Responde al correo con su decisión. Un comprador necesita poder editar órdenes de compra.

Errores

  • 400 Bad Request - El borrador indica una línea desconocida o una línea que no se puede enviar.
  • 404 Not Found - No existe esa orden o ese correo.
  • 409 Conflict - Código EMAIL_DECIDED (ya registrado o descartado), NOTHING_TO_RECORD u ORDER_NOT_OPEN.
  • 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}/emails/{emailId}/record
Solicitud
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/emails/{emailId}/record" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Respuesta · 200 OK
InboundEmail

Descartar correo de orden de compra

Deja la orden como está en lugar de registrar lo que pide un correo.

POST/v1/workspaces/{regionId}/purchase-orders/{poId}/emails/{emailId}/dismiss

Parámetros

  • poIdstringObligatorio

    El identificador de la orden de compra.

  • emailIdstringObligatorio

    El id del correo, de ListPurchaseOrderEmails.

Devuelve

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

Más detalles

Marca un correo como descartado: no se registra nada. Responde al correo con su decisión.

Errores

  • 404 Not Found - No existe esa orden o ese correo.
  • 409 Conflict - Código EMAIL_DECIDED: ya registrado o descartado.
  • 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}/emails/{emailId}/dismiss
Solicitud
curl -X POST "$PLEAXY_API_BASE_URL/v1/workspaces/{regionId}/purchase-orders/{poId}/emails/{emailId}/dismiss" \
  -H "X-Api-Key: $PLEAXY_API_KEY"
Respuesta · 200 OK
InboundEmail
Habla con nosotros