Files
medusa-store/www/docs/content/modules/orders/fulfillments.md
Shahed Nasser 914d773d3a api-ref: custom API reference (#4770)
* initialized next.js project

* finished markdown sections

* added operation schema component

* change page metadata

* eslint fixes

* fixes related to deployment

* added response schema

* resolve max stack issue

* support for different property types

* added support for property types

* added loading for components

* added more loading

* type fixes

* added oneOf type

* removed console

* fix replace with push

* refactored everything

* use static content for description

* fixes and improvements

* added code examples section

* fix path name

* optimizations

* fixed tag navigation

* add support for admin and store references

* general enhancements

* optimizations and fixes

* fixes and enhancements

* added search bar

* loading enhancements

* added loading

* added code blocks

* added margin top

* add empty response text

* fixed oneOf parameters

* added path and query parameters

* general fixes

* added base path env variable

* small fix for arrays

* enhancements

* design enhancements

* general enhancements

* fix isRequired

* added enum values

* enhancements

* general fixes

* general fixes

* changed oas generation script

* additions to the introduction section

* added copy button for code + other enhancements

* fix response code block

* fix metadata

* formatted store introduction

* move sidebar logic to Tags component

* added test env variables

* fix code block bug

* added loading animation

* added expand param + loading

* enhance operation loading

* made responsive + improvements

* added loading provider

* fixed loading

* adjustments for small devices

* added sidebar label for endpoints

* added feedback component

* fixed analytics

* general fixes

* listen to scroll for other headings

* added sample env file

* update api ref files + support new fields

* fix for external docs link

* added new sections

* fix last item in sidebar not showing

* move docs content to www/docs

* change redirect url

* revert change

* resolve build errors

* configure rewrites

* changed to environment variable url

* revert changing environment variable name

* add environment variable for API path

* fix links

* fix tailwind settings

* remove vercel file

* reconfigured api route

* move api page under api

* fix page metadata

* fix external link in navigation bar

* update api spec

* updated api specs

* fixed google lint error

* add max-height on request samples

* add padding before loading

* fix for one of name

* fix undefined types

* general fixes

* remove response schema example

* redesigned navigation bar

* redesigned sidebar

* fixed up paddings

* added feedback component + report issue

* fixed up typography, padding, and general styling

* redesigned code blocks

* optimization

* added error timeout

* fixes

* added indexing with algolia + fixes

* fix errors with algolia script

* redesign operation sections

* fix heading scroll

* design fixes

* fix padding

* fix padding + scroll issues

* fix scroll issues

* improve scroll performance

* fixes for safari

* optimization and fixes

* fixes to docs + details animation

* padding fixes for code block

* added tab animation

* fixed incorrect link

* added selection styling

* fix lint errors

* redesigned details component

* added detailed feedback form

* api reference fixes

* fix tabs

* upgrade + fixes

* updated documentation links

* optimizations to sidebar items

* fix spacing in sidebar item

* optimizations and fixes

* fix endpoint path styling

* remove margin

* final fixes

* change margin on small devices

* generated OAS

* fixes for mobile

* added feedback modal

* optimize dark mode button

* fixed color mode useeffect

* minimize dom size

* use new style system

* radius and spacing design system

* design fixes

* fix eslint errors

* added meta files

* change cron schedule

* fix docusaurus configurations

* added operating system to feedback data

* change content directory name

* fixes to contribution guidelines

* revert renaming content

* added api-reference to documentation workflow

* fixes for search

* added dark mode + fixes

* oas fixes

* handle bugs

* added code examples for clients

* changed tooltip text

* change authentication to card

* change page title based on selected section

* redesigned mobile navbar

* fix icon colors

* fix key colors

* fix medusa-js installation command

* change external regex in algolia

* change changeset

* fix padding on mobile

* fix hydration error

* update depedencies
2023-08-15 18:07:54 +03:00

7.4 KiB
Raw Blame History

description
description
Learn about Fulfillments, how theyre used in your Medusa backend, and their relation to other entities.

Fulfillments Architecture Overview

In this document, youll learn about Fulfillments, how theyre used in your Medusa backend, and their relation to other entities.

Overview

Fulfillments are used to ship items, typically to a customer. Fulfillments can be used in orders, returns, swaps, and more.

Fulfillments are processed within Medusa by a fulfillment provider. The fulfillment provider handles creating, validating, and processing the fulfillment, among other functionalities. Typically, a fulfillment provider would be integrated with a third-party service that handles the actual shipping of the items.

When a fulfillment is created for one or more item, shipments can then be created for that fulfillment. These shipments can then be tracked using tracking numbers, providing customers and merchants accurate details about a shipment.


Fulfillment Entity Overview

Some of the Fulfillment entitys attributes include:

  • provider_id: a string indicating the ID of the fulfillment provider that processes this fulfillment. You can also access the provider by expanding the provider relation and accessing fulfillment.provider.
  • location_id: a string indicating where the fulfillment is being made from. When paired with the Stock Location module in the Medusa backend, this would be the ID of a StockLocation.
  • no_notification: a boolean value indicating whether the customer should receive notifications for fulfillment updates.
  • data: an object that can hold any data relevant for the fulfillment provider.
  • shipped_at: a date indicating when the fulfillment was shipped.
  • canceled_at: a date indicating when the fulfillment was canceled.

There are other important attributes discussed in later sections. Check out the full Fulfillment entity in the entities reference.


When a shipment is created from a fulfillment, it is represented by the TrackingLink entity. This entity has the following attributes:

  • tracking_number: a string indicating a tracking number that allows customers and merchants to track the status of the shipment. Typically, this would be a tracking number retrieved from a third-party fulfillment service.
  • url: an optional string indicating a URL that can be used to track the shipment.
  • fulfillment_id: The ID of the fulfillment this tracking link is associated with. You can also access the fulfillment by expanding the fulfillment relation and accessing tracking_link.fulfillment.

You can access the tracking numbers of a fulfillment in the tracking_numbers attribute. You can also access the tracking links by expanding the tracking_links relation and accessing fulfillment.tracking_link.


Fulfillments in Other Processes

This section explains how a fulfillment can play a role in processes related to other entities and flows.

Orders

A fulfillment is used to ship the items to the customer. Typically, the merchant would create a fulfillment, then create a shipment (tracking link) from that fulfillment.

If a fulfillment is created for an order, its associated with the order using the order_id attribute. You can also access the fulfillments order by expanding the order relation and accessing fulfillment.order.

A fulfillments status is stored in the Order entitys fulfillment_status attribute, which can be one of the following values:

  • not_fulfilled: no fulfillment has been created for the order.
  • partially_fulfilled: fulfillments have been created for some items in the order, but not all.
  • fulfilled: fulfillments have been created for all items in the order.
  • partially_shipped: shipments have been created for fulfillments, but not for all items in the order.
  • shipped: shipments have been created for fulfillments for all items in the order.
  • partially_returned: some items in the order have been returned.
  • returned: all items in the order have been returned.
  • canceled: the fulfillment has been canceled.
  • requires_action: a fulfillment has been created, but it requires some additional action.

You can learn more about how fulfillments are used in orders in the Orders Architecture documentation.

Returns

A fulfillment is used to return the item from the customer. Typically, the fulfillment process for returns would be automated, as the customer is expected to handle it.

If a fulfillment is created for a return, its associated with the order and not with the return. The orders fulfillment_status will be either partially_returned or returned, based on how many items were returned.

Swaps

A fulfillment is used to send customers new items as part of a swap. Typically, the merchant would create a fulfillment, then create a shipment (tracking link) from that fulfillment.

If a fulfillment is created for a swap, its associated with the swap using the swap_id attribute. You can also access the fulfillments swap by expanding the swap relation and accessing fulfillment.swap.

A fulfillments status is stored in the Swap entitys fulfillment_status attribute, which can be one of the following values:

  • not_fulfilled: no fulfillment has been created for the swap.
  • fulfilled: a fulfillment has been created for the swap.
  • partially_shipped: shipments have been created for fulfillments, but not for all items in the swap.
  • shipped: shipments have been created for the fulfillment for all items in the swap.
  • canceled: the fulfillment has been canceled.
  • requires_action: the fulfillment has been created, but it requires some additional action.

You can learn more about fulfillments are used in swaps in the Swaps Architecture documentation.

Claims

A fulfillment is used to send customers additional items as part of a claim. Typically, the merchant would create a fulfillment, then create a shipment (tracking link) from that fulfillment.

If a fulfillment is created for a claim, its associated with the claim using the claim_order_id attribute. You can also access the fulfillments claim by expanding the claim_order relation and accessing fulfillment.claim_order.

A fulfillments status is stored in the Claim entitys fulfillment_status attribute, which can be one of the following values:

  • not_fulfilled: no fulfillment has been created for the claim.
  • partially_fulfilled: fulfillments have been created for some items in the claim, but not all.
  • fulfilled: fulfillments have been created for all the items in the claim.
  • partially_shipped: shipments have been created for fulfillments, but not for all items in the claim.
  • shipped: shipments have been created for the fulfillment for all items in the claim.
  • canceled: the fulfillment has been canceled.
  • requires_action: the fulfillment has been created, but it requires some additional action.

You can learn more about fulfillments are used in claims in the Claims Architecture documentation.


See Also