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": [ ]
}
]| Campo | Significado |
|---|---|
name | El nombre del método que se usa en la URL |
section | El área de Business Central a la que pertenece el método |
kind | read, write o posting |
needsWarehouseEmployee, needsSalesPerson | El método usa un código ERP; consulta Códigos ERP |
params | Los 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étodo | Scopes que debe tener la clave |
|---|---|
read | bc:read |
write | bc:read y bc:write |
posting | bc: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
- El método existe en el catálogo (si no,
404 invalid_method). - El método no es un borrado (
403, errorplure_1322). - La clave tiene el scope del tipo de método (
403, errorplure_1321). - Plur-e no ha desactivado el método (
503, códigotool_disabled). - 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:
CleanWarehouseBatchAPIy los tres métodos de los paquetes de envío cuyo nombre empieza porDelelete(una errata histórica):DeleleteAllPackagesShipmentByWhseDocument,DeleletePackageLineShipmentByKeyyDeleletePackageShipmentByKey.
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étodo | Se rechaza cuando |
|---|---|
UpdateItemClassification | Alguna línea tiene Action igual a Delete |
ConsolidatePhysicalInventory | DeleteSourceBatch 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 consulta | Significado |
|---|---|
filter | $filter de OData sobre propiedades de la entidad, hasta 1000 caracteres, sin rutas de navegación |
select | Nombres de propiedad separados por comas; pásalo siempre para respuestas pequeñas |
orderBy | Nombres de propiedad, cada uno con asc o desc opcional |
pageSize | De 1 a 200 (por defecto 50) |
cursor | El nextCursor de la página anterior; entonces filter, select y orderBy se ignoran |
count | true 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.
Claves de API
Crea y gestiona claves de API del tenant de Plur-e — los ocho scopes y lo que exige cada uno, los roles de Business Central y CRM, los códigos ERP y su precedencia, caducidad, el límite de 25 y la revocación.
API de Dynamics 365 CRM
Lee y escribe en Dynamics 365 CRM (Dataverse) con la API pública de Plur-e — las 13 operaciones con ejemplos curl, el select obligatorio, la paginación por cursor y cómo se acotan borrados y acciones.