Plur-e
Desarrolladores

API de Business Central

Llama a Business Central con la API pública de Plur-e — listar y ejecutar métodos catalogados, consultas OData de solo lectura, el scope de cada llamada y los borrados que la API rechaza siempre.

Respuesta rápida

GET /bc/methods lista los métodos de Business Central que tu clave puede ejecutar; POST /bc/methods/{method} ejecuta uno con un cuerpo parameters; GET /bc/query/{entity} ejecuta una consulta OData de solo lectura. Leer exige bc:read, escribir además bc:write y contabilizar además bc:post. La API usa el entorno y la compañía de Business Central configurados en Developers → AI & MCP → Settings y nunca borra: cualquier método que borre o retire datos responde 403.

URL base: https://api.plur-e.com/api/public/v1. Todas las llamadas necesitan al menos bc:read y se ejecutan con los roles de Business Central de la clave (consulta Claves de API).

Listar los métodos

curl -s "https://api.plur-e.com/api/public/v1/bc/methods" \
  -H "Authorization: Bearer <YOUR_API_KEY>"

La respuesta es un array, ordenado por section y name, solo con los métodos que permiten tus roles y scopes y que no son borrados:

[
  {
    "name": "GetSalesOrders",
    "section": "bc_sales",
    "kind": "read",
    "needsWarehouseEmployee": false,
    "needsSalesPerson": false,
    "params": [ ]
  }
]
CampoSignificado
nameEl nombre del método que se usa en la URL
sectionEl área de Business Central a la que pertenece el método
kindread, write o posting
needsWarehouseEmployee, needsSalesPersonEl método usa un código ERP; consulta Códigos ERP
paramsLos parámetros que acepta el método

Ejecutar un método

curl -s -X POST "https://api.plur-e.com/api/public/v1/bc/methods/GetSalesOrders" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{ "parameters": [ { "type": "Order", "pageSize": "", "position": "", "salesPerson": "" } ] }'

El cuerpo tiene una propiedad, parameters: un objeto, un array de objetos, o null si el método no recibe ninguno. Toma los nombres de los parámetros de params en la lista anterior; el ejemplo es ilustrativo. La respuesta es:

{ "method": "GetSalesOrders", "result": { } }

result es lo que devuelve el método. Business Central puede tardar varios segundos, así que usa un timeout de cliente generoso. Si no responde a tiempo, la API devuelve 504 con el código plure_timeout.

Qué scope necesita cada método

Tipo de métodoScopes que debe tener la clave
readbc:read
writebc:read y bc:write
postingbc:read y bc:post

Un scope ausente responde 403 con el error plure_1321. Un método que no está en el catálogo responde 404 con el código invalid_method. Las contabilizaciones se ejecutan al instante y no se pueden deshacer: describe el efecto a tus usuarios antes de llamarlas.

Orden de las comprobaciones

  1. El método existe en el catálogo (si no, 404 invalid_method).
  2. El método no es un borrado (403, error plure_1322).
  3. La clave tiene el scope del tipo de método (403, error plure_1321).
  4. Plur-e no ha desactivado el método (503, código tool_disabled).
  5. Los roles lo permiten y la llamada se ejecuta en Business Central.

Los borrados no están disponibles

Business Central nunca borra por la API, sean cuales sean los scopes o los roles. Una llamada que borraría responde 403 con el error plure_1322: Business Central method '…' is not available through the API: deletions are not allowed. La llamada se rechaza antes de contactar con Business Central y el método no aparece en GET /bc/methods.

Métodos rechazados:

  • Cualquier método cuyo nombre contenga delete o remove, con cualquier combinación de mayúsculas. Los métodos que se añadan después con ese nombre se rechazan automáticamente. La única excepción es BintoBininWhsePhysicalToRemove, que mueve existencias entre ubicaciones y no borra nada.
  • Estos métodos, que borran datos con otros nombres: CleanWarehouseBatchAPI y los tres métodos de los paquetes de envío cuyo nombre empieza por Delelete (una errata histórica): DeleleteAllPackagesShipmentByWhseDocument, DeleletePackageLineShipmentByKey y DeleletePackageShipmentByKey.

Métodos de borrado conocidos: DeleteDocument, DeleteItemChildFromWarehouseReceipt, DeleteItemTrackingSpecificationOpenV2, DeleteLPChildFromWarehouseReceipt, DeleteLPFromWarehouseReceiptLine, DeleteLPSingle_FromWarehouseReceiptLine, DeletePurchaseOrderTracking, DeleteSalesLines, DeleteTimeSheetComment, DeleteTransferLines, DeleteTransferOrderTracking, Delete_ItemChild_to_LP_Pallet_From_WR2, Delete_LPChild_to_LP_Pallet_From_WRV2, Delete_LPPallet_FromWarehouseReceiptLine, Delete_LP_FromWarehouseReceiptLineV2, Delete_SalesOrderTracking, Delete_WarehouseInvPhysicalCount y RemoveLPFromWarehousePick.

Dos métodos se permiten en general, pero se rechazan cuando el payload pide un borrado. Se comprueba cada objeto de un payload en array:

MétodoSe rechaza cuando
UpdateItemClassificationAlguna línea tiene Action igual a Delete
ConsolidatePhysicalInventoryDeleteSourceBatch es cualquier valor distinto de false

Consultar entidades

bc/query lee Business Central por su API estándar y, donde esté instalada, una API de análisis, con una lista cerrada de entidades. Es de solo lectura y necesita bc:read más la línea query.<entity> en el rol de Business Central de la clave (consulta Herramientas de Business Central para la lista de entidades).

curl -s "https://api.plur-e.com/api/public/v1/bc/query" \
  -H "Authorization: Bearer <YOUR_API_KEY>"

devuelve las entidades que la clave puede leer:

[ { "entity": "purchaseInvoices", "permissionEntity": "query.purchaseInvoices", "source": "standard" } ]

source es standard o analysis. Después consulta una de ellas:

curl -s -G "https://api.plur-e.com/api/public/v1/bc/query/purchaseInvoices" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  --data-urlencode "filter=postingDate ge 2026-01-01" \
  --data-urlencode "select=number,vendorName,totalAmountIncludingTax" \
  --data-urlencode "orderBy=postingDate desc" \
  --data-urlencode "pageSize=50" \
  --data-urlencode "count=true"
Parámetro de consultaSignificado
filter$filter de OData sobre propiedades de la entidad, hasta 1000 caracteres, sin rutas de navegación
selectNombres de propiedad separados por comas; pásalo siempre para respuestas pequeñas
orderByNombres de propiedad, cada uno con asc o desc opcional
pageSizeDe 1 a 200 (por defecto 50)
cursorEl nextCursor de la página anterior; entonces filter, select y orderBy se ignoran
counttrue añade totalCount, el número de filas que cumplen el filtro
{ "items": [ ], "nextCursor": "…", "totalCount": 128, "note": null }

Sigue nextCursor hasta que venga vacío. Un argumento inválido responde 400 con el código bc_query_invalid, un cursor de otra entidad o compañía responde 400 con bc_cursor_invalid, y un rol sin la línea query.<entity> responde 403 con el código scope_denied.

Entorno y compañía

La API llama al entorno y la compañía de Business Central configurados en Developers → AI & MCP → Settings. Si no hay ninguno configurado, la llamada responde 409 con el código environment_not_configured. Para trabajar con otra compañía, cambia esa configuración; una petición no puede elegirla.

¿Te ha sido útil esta página?

On this page