(ctx: RequestContext, orders: Order[], lines: OrderLineInput[], handler: ConfigurableOperationInput) => Promise<Fulfillment | InvalidFulfillmentHandlerError | CreateFulfillmentError>Creates a new Fulfillment for the given Orders and OrderItems, using the specified FulfillmentHandler.
(ctx: RequestContext, id: ID) => Promise<FulfillmentLine[]>Loads the FulfillmentLines of a Fulfillment by id with no Channel check. Fulfillment is not ChannelAware, so its only Channel boundary is the parent Order, and a caller must load that Order in the current Channel first.
This is safe for the core callers, the Fulfillment.lines and Fulfillment.summary field
resolvers, because neither takes an id from the client: a Fulfillment is reachable only
through Order.fulfillments or FulfillmentLine.fulfillment, and neither API has a root
Fulfillment query. Scoping the read was considered and rejected, because it adds a joined
Order query per Fulfillment per request on both APIs to guard a path no client can reach.
Add the check here if a root Fulfillment query is introduced.
(ctx: RequestContext, orderLineId: ID, relations: RelationPaths<FulfillmentLine> = []) => Promise<FulfillmentLine[]>(ctx: RequestContext, fulfillmentId: ID, state: FulfillmentState) => Promise< | { fulfillment: Fulfillment; orders: Order[]; fromState: FulfillmentState; toState: FulfillmentState; } | FulfillmentStateTransitionError >Transitions the specified Fulfillment to a new state and upon successful transition publishes a FulfillmentStateTransitionEvent.
(fulfillment: Fulfillment) => readonly FulfillmentState[]Returns an array of the next valid states for the Fulfillment.
Architecture reviews, custom plugin work, migrations, ongoing support. Get a hand from the team that builds Vendure.
Talk to the team