Skip to main content

What’s new at Endless

Developer changelog

API changes, deprecations, and important updates for your integrations.

improvement

Migrate deprecated warehouse connection operations

warehouseAddExternalRelation, warehouseUpdateExternalRelation, and warehouseRemoveExternalRelation are deprecated. Migrate to buildingIntegrationConnectionsCreate, buildingIntegrationConnectionsUpdate, and buildingIntegrationConnectionsRemove. The old operations still work.

The warehouseExternal query and Warehouse.externalData are also deprecated. Read buildingIntegrationConnections on Warehouse or Integration instead. Create takes buildingId and integrationId; update and remove take connectionId. A building can have only one active connection to an integration.

improvement

Inventory receipt dates now use actual receipt

Inventory receivedAt and the landed cost date now use a supply shipment’s actualReceivedDate, falling back to the delivered date when receipt is unknown. Previously they used the delivered date. Reports or integrations that treated warehouse delivery as inventory receipt must account for the distinction.

Advancing a shipment to In Transit, Delivered, or Received records the corresponding date. Pass statusDate when recording a historical transition so it uses the intended date.

improvement

Fulfillment location inputs now enforce validation

createDraftFulfillment now rejects a location that does not exist, belongs to another building, or is not active and pickable. This applies to the new typed items argument and the deprecated JSON fulfillmentItems argument. Such locations were previously accepted and ignored.

The JSON argument still works and stores a location without restricting allocation. Migrating to typed items changes that behavior: the location becomes a binding restriction, and insufficient stock there returns an error. Do not send both arguments in one request.

improvement

`echoDeleteData` Replaces The Three ECHO Delete Mutations

echoDeleteData deletes ECHO order history, shipment history, or inventory snapshot records. Each request selects one dataset and either a list of IDs or the same filters the list queries accept. The three earlier delete mutations, one per dataset, are removed. Update any caller to the new name.

Deleting by IDs finishes in the request and returns deletedCount. Deleting by filters runs in the background across all pages and returns a processId. Filtered deletion skips records changed after the request. The mutation requires the new echo:delete_data permission, which company operators and operations integrations do not hold. Records created automatically are never deleted.

improvement

Combined inventory exports and process access have changed

Inventory exports using COMBINED grouping now include every matching item instead of stopping at a row limit. Location filters are rejected for this grouping; use warehouse or location grouping when a location filter is required. Those groupings keep their existing row limit.

Export process polling and subscriptions now require the requesting identity to own the process, including API clients. Use the same identity that requested the export to retrieve its status and download metadata.

improvement

Migrate deprecated ECHO export mutations

The three dataset-specific ECHO export mutations are deprecated in favor of echoExportData. They still work, and their schema deprecation messages identify the replacement.

When migrating, pass exactly one of demand, shipments, inventory, or inventoryChanges under input.export, with filters nested inside that selection. Missing, null, or multiple selections are rejected. An empty object for the selected dataset exports without filters.