You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ofbiz.apache.org by "Anil K Patel (Jira)" <ji...@apache.org> on 2026/06/16 09:03:00 UTC
[jira] [Assigned] (OFBIZ-13441) New plugin: fulfillment-api — merchant-facing fulfillment REST API for OFBiz-run 3PL warehouses
[ https://issues.apache.org/jira/browse/OFBIZ-13441?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Anil K Patel reassigned OFBIZ-13441:
------------------------------------
Assignee: Anil K Patel
> New plugin: fulfillment-api — merchant-facing fulfillment REST API for OFBiz-run 3PL warehouses
> -----------------------------------------------------------------------------------------------
>
> Key: OFBIZ-13441
> URL: https://issues.apache.org/jira/browse/OFBIZ-13441
> Project: OFBiz
> Issue Type: New Feature
> Components: product/facility
> Reporter: Anil K Patel
> Assignee: Anil K Patel
> Priority: Minor
>
>
> {{Warehouse operators (3PLs) can run OFBiz as a complete WMS, but cannot hand their
> merchant customers an API. Commercial 3PL platforms treat the merchant-facing API as
> the product's front door; OFBiz has the machinery (rest-api plugin: JWT, declarative
> DSL, OpenAPI) but no fulfillment domain endpoints.
> This issue adds a new plugin, fulfillment-api, providing a merchant-facing REST API
> for the order fulfillment lifecycle:
> * GET /rest/fulfillment/stores — discovery (stores granted to the caller)
> * POST /rest/fulfillment/stores/\{productStoreId}/orders — order intake (idempotent via externalId)
> * GET /rest/fulfillment/stores/\{productStoreId}/orders?modifiedSince=… — incremental, shipment/tracking-aware polling
> * GET /rest/fulfillment/stores/\{productStoreId}/orders/\{orderId} — detail incl. tracking numbers
> * POST /rest/fulfillment/stores/\{productStoreId}/orders/\{orderId}/cancel — cancellation request (pre-fulfillment window)
> Design principles: OFBiz-native contract (raw status ids, OFBiz naming — no vendor API
> cloning); stock data model only (merchant = PartyGroup, account = ProductStore with
> payToPartyId, access = effective-dated ProductStoreRole grant with seeded role type
> FULFILL_API_CLIENT, isolation = OrderHeader.productStoreId); two layers (testable domain
> services + declarative *.rest.xml binding); multi-merchant from day one; no screens, no
> workflow changes. The plugin adds one view-entity and seed data — zero new tenancy
> entities, zero framework changes.
> v1 scope is the order lifecycle core only. Item master, inventory endpoints,
> receiving/ASN, returns, and webhooks are deferred follow-ups.
> Built on the rest-api component; note the in-flight relocation of rest-api into the
> framework (OFBIZ-13415) — fulfillment-api depends on rest-api by component name and is
> unaffected by where it physically lives. A separate, backward-compatible rest-api
> improvement (differentiated HTTP status codes for service errors) will be proposed
> independently and is NOT a dependency of v1, which ships against the current 422 behavior.}}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)