---
title: "Endpoint to take in order and item information from a partner, and generated the best shipment plan based on their configured fulfillment network."
method: POST
path: "/api/v1/fe/plans"
tags: ["plans"]
---

# Endpoint to take in order and item information from a partner, and generated the best shipment plan based on their configured fulfillment network.

`POST /api/v1/fe/plans`

## Request

- Base URL: `https://api.shipium.com`
- URL: `https://api.shipium.com/api/v1/fe/plans`
- Auth: OAuth 2
  - Password
  - Token URL: `https://auth.shipium.com/oauth/token` scopes: `delivery-experience-service`
- TypeScript: <https://skmtc.dev/shipium/apis/shipium-api/docs/api/v1/fe/plans/post.ts> (a function with typed inputs; its response is checked against the schema)

## Request body

- PlannerParams: Parameters passed in from which a plan is generated.
  - `partnerPlanId` string: Optional Id which allows partners to set their own Id for looking up the plan after creation.
  - `asOfDateTime` string, date-time: Date used to re-create a plan as of a certain point in time. This parameter will prevent the use of caching for this request. The most common use case is to provide null which represents 'now'.
  - `orders` OrderParams[], required: List of orders to plan.
    - `partnerOrderId` string, required: Partner provided ID for this order.
    - `orderedDateTime` string, date-time: The timestamp for when the customer ordered the product. The timestamp must be a valid ISO 8601 timestamp.
    - `currencyCode` 'chf' | 'usd' | 'not_set' | 'unknown': The currency code, in ISO-4217 format, represents the currency the order was purchased in.
    - `desiredDeliveryDate` string: The string representation of either an ISO-8601 date or a LocalDate: yyyy-mm-dd. The date or datetime the package is intended to arrive to the customer. This will be used to determine the most appropriate service method when generating a label
    - `desiredDeliveryDateOptions` FEDesiredDeliveryDateOptions: Options for how the system will use the desiredDeliveryDate
      - `exactDateDelivery` boolean: This will restrict carrier selection to only use service methods that we have a high chance of making it there on time.
      - `guaranteedDateDelivery` boolean: Instructs the carrier deliver the package on the date provided in desiredDeliveryDate. This will restrict carrier selection to service methods that can support exactDateDelivery
      - `upgradeCostDeltaMax` number, float: The upgrade amount we should be strict about ddd and exactDateDelivery calculations.
      - `currencyCode` string: The currency code associated with monetary values in this code block. Default: USD. This default occurs in the code block to not have this form populated for non DDD shipments.
      - `fulfillmentPreference` 'OnTime' | 'Consolidate' | 'Unknown': Controls which fulfillment strategy is prioritized when trying to meet the desiredDeliveryDate
    - `businessDaysOfTransit` integer: Indicates the number of business days from the ship time by when the shipment needs to be delivered.
    - `shipOption` string: A high-level shipping option shown to or selected by a customer.
    - `shippedDateTime` string, date-time: The timestamp for when you (or your fulfillment partner) shipped the product from your (or their) warehouse. The timestamp must be a valid ISO 8601 timestamp.
    - `destinationAddress` Address, required: Ship to address for the order.
      - `name` string: The name associated with the address.
      - `company` string: The company name for the address.
      - `street1` string: The first address line.
      - `street2` string: The second address line.
      - `city` string: The name of the city for the address.
      - `region` string: The name of the state or region for the address.
      - `countryCode` string, required: The ISO 3166-1 country code for the address.
      - `postalCode` string, required: A countryCode-appropriate postal code for the address.
      - `addressType` 'commercial' | 'residential': The type of location for this address.
    - `orderItemQuantities` FEOrderItem[], required: List of ordered items.
      - `quantity` integer, required: The number of units of this product.
      - `productId` string, required: Product identifier
    - `orderParams` Criteria: Parameters for customizing the planning behavior for the order.
      - `mustShipComplete` boolean: True if all order items must be planned for shipment. Default is false.
    - `partnerReferenceIdentifier` string: Reference external identifier explicitly provided by the partner. Used for reporting purposes.
    - `partnerReferenceIdentifier2` string: Second reference external identifier explicitly provided by the partner. Used for reporting purposes.
    - `shipmentTags` string[]: Free-form list of shipment tags for this order. Passed through to the Carrier Selection API and evaluated against carrier-selection rules, which can affect the carrier and service method chosen for this order.
    - `packagingType` FEPackagingType: Default packaging type definition when no packaging information is available at the time of a FE planner run.
      - `packagingTypeId` string, required: Packing type identifier to a V2 packaging asset in carrier selection.
      - `packagingMaterial` 'box' | 'envelope' | 'flat_pack' | 'unknown', required: The shipment packaging material.
      - `linearDimensions` LinearDimensions, required: Dimensions describing the size of the packaging.
        - `linearUnit` 'in' | 'cm': The unit that linear dimensions are provided in, either in for inches or cm for centimeters.
        - `length` number, float: The longest linear dimension (e.g. the longest side of a box or envelope).
        - `width` number, float: The second longest linear dimension (e.g. the second-longest side of a box of envelope.
        - `height` number, float: The least long linear dimension (e.g. the shortest side of a box or envelope. Note on envelopes: This height should represent the highest product you would reasonably put in this envelope before losing more than 10% of the length of the envelope in other dimensions.
      - `weight` Weight, required: The weight of this type of packaging empty.
        - `weightUnit` 'g' | 'kg' | 'oz' | 'lb': The unit that weight values are provided in. g for grams kg for kilograms oz for ounces lb for pounds
        - `weight` number, float: The value of the weight.
      - `maxContentWeight` Weight: The weight of this type of packaging empty.
        - `weightUnit` 'g' | 'kg' | 'oz' | 'lb': The unit that weight values are provided in. g for grams kg for kilograms oz for ounces lb for pounds
        - `weight` number, float: The value of the weight.
      - `urn` string
      - `packagingSizeName` string: Partner provided name for the packaging type.
  - `productDetails` ProductDetail[]: Product details and inventory. May be omitted when assumeQuantityAvailableInfinite is true and no fulfillmentCenters scope is supplied (infinite inventory is then assumed for every ordered product in all of the partner's contexts).
    - `productId` string, required: Product SKU
    - `inventoryStatuses` ProductInventoryStatus[]: Per-fulfillment-center availability for this product. May be omitted when the product is assumed infinitely available (either assumeQuantityAvailableInfinite on this product or the request-level flag). Must be omitted when this product's assumeQuantityAvailableInfinite is true.
      - `fulfillmentCenterId` string: Unique identifier for the fulfillment center. Must correspond to a Shipium registered fulfillment center for the partner.
      - `fulfillmentContextId` string: Unique identifier for the fulfillment context. Must correspond to a Shipium registered fulfillment context for the partner. Either fulfillmentContextId or fulfillmentContext must be provided.
      - `fulfillmentContext` string: Alias for the fulfillment context. Must correspond to a Shipium registered fulfillment context for the partner. Either fulfillmentContextId or fulfillmentContext must be provided.
      - `quantityAvailable` integer: Quantity of the item available at the fulfillment center. Required unless assumeQuantityAvailableInfinite is true for this entry, in which case it must be omitted.
      - `assumeQuantityAvailableInfinite` boolean: When true, this fulfillment center is treated as having infinite inventory for the product and quantityAvailable must be omitted. Defaults to false/null.
      - `fulfillmentCostCurrencyCode` 'chf' | 'usd' | 'not_set' | 'unknown': Currency code of the fulfillment cost. Required if fulfillmentCostPerItem is provided.
      - `fulfillmentCostPerItem` number, float: Price of fulfilling one item from the fulfillment center.
    - `assumeQuantityAvailableInfinite` boolean: When true, this product is assumed infinitely available in the in-scope fulfillment contexts (the contexts referenced by plannerParams.fulfillmentCenters when non-empty, otherwise all of the partner's contexts). Product attributes (dimensions, weight, hazmat) are still honored. Mutually exclusive with supplying inventoryStatuses on this product. Defaults to false/null.
    - `linearDimensions` LinearDimensions: Dimensions describing the size of the packaging.
      - `linearUnit` 'in' | 'cm': The unit that linear dimensions are provided in, either in for inches or cm for centimeters.
      - `length` number, float: The longest linear dimension (e.g. the longest side of a box or envelope).
      - `width` number, float: The second longest linear dimension (e.g. the second-longest side of a box of envelope.
      - `height` number, float: The least long linear dimension (e.g. the shortest side of a box or envelope. Note on envelopes: This height should represent the highest product you would reasonably put in this envelope before losing more than 10% of the length of the envelope in other dimensions.
    - `weight` Weight: The weight of this type of packaging empty.
      - `weightUnit` 'g' | 'kg' | 'oz' | 'lb': The unit that weight values are provided in. g for grams kg for kilograms oz for ounces lb for pounds
      - `weight` number, float: The value of the weight.
    - `fulfillmentAttributes` string[], required: A list of attributes that may affect the shipping of the product.
    - `productDetails` string[], required: A list of properties that may affect the shipping of the product
    - `hazmat` boolean: Indicator that the item is hazmat. Defaults to false
    - `hazmatInfo` FEHazmatInfo: Contains hazmat information for this particular item.
      - `category` 'defined' | 'aerosols_flammable' | 'contains_lithium_ion' | 'packaged_lithium_ion' | 'lithium_ion_battery_only' | 'contains_lithium_metal' | 'packaged_lithium_metal' | 'lithium_metal_battery_only' | 'dry_ice', required: Hazmat category for this order item. Use 'defined' to specify detailed information
      - `quantity` number, float, required: The amount of quantityType material in quantityUnits
      - `quantityType` 'gross' | 'net', required: Determines whether the quantity includes the raw material (net) or also includes the material housing (gross)
      - `quantityUnits` 'g' | 'kg' | 'lb' | 'oz' | 'ml' | 'l' | 'gal', required: The units of measure for the quantity of hazardous materials specified
      - `containerType` 'fiberboard_box' | 'wooden_box' | 'plastic_jerrican' | 'metal_box' | 'steel_drum' | 'other' | 'plastic_box' | 'plastic_drum' | 'styrofoam_box' | 'cylinder' | 'envirotainer' | 'plywood_box' | 'aluminum_drum' | 'aluminum_cylinder' | 'plastic_pail' | 'plywood_drum' | 'fiber_drum' | 'steel_jerrican' | 'aluminum_jerrican' | 'steel_box' | 'carton' | 'aluminum_box', required: The material that the hazardous material is packaged in.
      - `hazmatId` string: The IATA or DOT regulatory identifier for the commodity as appropriate. Required if category is 'defined'
      - `properShippingName` string: Proper shipping name that is associated with the specified hazmatId. Required if category is 'defined'
      - `packingGroup` 'I' | 'II' | 'III': The packing group code for the hazardous material, as defined in column (5) of § 172.101. These indicate the degree of danger presented by the material: I=great, II=medium, III=minor. A material can have multiple packing groups, for determining the correct packing group see https://www.ecfr.gov/current/title-49/subtitle-B/chapter-I/subchapter-C/part-173/subpart-D/section-173.121
      - `transportMode` 'ground' | 'passenger_and_cargo_aircraft' | 'cargo_aircraft_only': Declares that a package was prepared according to ground, passenger aircraft, or cargo aircraft only. Required if category is 'defined'
      - `packingInstructionCode` string: The IATA packing instruction code used for air transport (e.g., PI965-PI970). Required for 'limited_quantity_air' and 'small_battery_exception_air'. Not applicable for 'small_battery_exception_ground' (49 CFR §173.185(c)(1)(iv) is a Special Provision, not a Packing Instruction).
      - `hazardClass` 'class_1_explosive' | 'class_2_flammable_gas' | 'class_3_flammable_liquid' | 'class_4_flammable_solid' | 'class_5_organic_peroxide' | 'class_6_poisonous_material' | 'class_7_radioactive' | 'class_8_corrosive_material' | 'class_9_miscellaneous' | 'forbidden' | 'other': See https://www.ecfr.gov/current/title-49/subtitle-B/chapter-I/subchapter-C/part-173
      - `subsidiaryClasses` string[]: The appropriate IATA/DOT subsidiary classes associated with the material and the hazard class.
      - `numberOfInnerPackagings` integer: Number of inner packagings within the outer packaging. Required for 'limited_quantity_air', 'small_battery_exception_air', and 'small_battery_exception_ground'
      - `innerPackagingType` string: Type of inner packaging (e.g., glass bottle, plastic receptacle). Required for 'limited_quantity_air', 'small_battery_exception_air', and 'small_battery_exception_ground'
      - `outerPackagingType` string: Type of outer packaging (e.g., fiberboard box, plywood drum). Required for 'limited_quantity_air', 'small_battery_exception_air', and 'small_battery_exception_ground'
      - `shipperDeclarationStatement` 'FDG' | 'LQ_air' | 'EQ' | 'small_battery_air' | 'small_battery_ground' | 'cargo_aircraft_only': The shipper's declaration statement type for dangerous goods shipments
      - `wattHours` number, float: Watt-hours rating for lithium batteries. Required for lithium battery hazmat IDs (UN3480, UN3481, UN3090, UN3091) under 'limited_quantity_air', 'small_battery_exception_air', or 'small_battery_exception_ground', if lithiumContent is not provided
      - `lithiumContent` number, float: Lithium content in grams. Required for lithium battery hazmat IDs (UN3480, UN3481, UN3090, UN3091) under 'limited_quantity_air', 'small_battery_exception_air', or 'small_battery_exception_ground', if wattHours is not provided
      - `numberOfCells` integer: Number of cells in the battery. For lithium battery hazmat IDs: required under 'limited_quantity_air'. Under 'small_battery_exception_air' or 'small_battery_exception_ground', at least one of numberOfCells/numberOfBatteries must be greater than 0 (a single loose cell is numberOfCells=1, numberOfBatteries=0)
      - `numberOfBatteries` integer: Number of batteries in the package. For lithium battery hazmat IDs: required under 'limited_quantity_air'. Under 'small_battery_exception_air' or 'small_battery_exception_ground', at least one of numberOfCells/numberOfBatteries must be greater than 0, and numberOfBatteries must be >= 1 when numberOfCells >= 2
      - `batteryConfiguration` 'contained_in_equipment' | 'packed_with_equipment' | 'standalone': Describes how a lithium battery is packaged relative to the equipment it powers
  - `assumeQuantityAvailableInfinite` boolean: When true, planning assumes infinite inventory. Scope is the fulfillment contexts referenced by fulfillmentCenters when that field is non-empty; otherwise all of the partner's contexts. In the all-contexts case omit productDetails — this flag already assumes every product is infinite everywhere; to supply per-product attributes (e.g. dimensions or weight) set assumeQuantityAvailableInfinite on each ProductDetail instead, which keeps those attributes. When a fulfillmentCenters scope is supplied, productDetails may still carry inventoryStatuses describing OTHER (non-scope) contexts. Defaults to false/null.
  - `packagingTypes` FEPackagingType[]: Packaging type overrides across all fulfillment centers. If provided will override all preconfigured packaging types for the planning activity.
    - `packagingTypeId` string, required: Packing type identifier to a V2 packaging asset in carrier selection.
    - `packagingMaterial` 'box' | 'envelope' | 'flat_pack' | 'unknown', required: The shipment packaging material.
    - `linearDimensions` LinearDimensions, required: Dimensions describing the size of the packaging.
      - `linearUnit` 'in' | 'cm': The unit that linear dimensions are provided in, either in for inches or cm for centimeters.
      - `length` number, float: The longest linear dimension (e.g. the longest side of a box or envelope).
      - `width` number, float: The second longest linear dimension (e.g. the second-longest side of a box of envelope.
      - `height` number, float: The least long linear dimension (e.g. the shortest side of a box or envelope. Note on envelopes: This height should represent the highest product you would reasonably put in this envelope before losing more than 10% of the length of the envelope in other dimensions.
    - `weight` Weight, required: The weight of this type of packaging empty.
      - `weightUnit` 'g' | 'kg' | 'oz' | 'lb': The unit that weight values are provided in. g for grams kg for kilograms oz for ounces lb for pounds
      - `weight` number, float: The value of the weight.
    - `maxContentWeight` Weight: The weight of this type of packaging empty.
      - `weightUnit` 'g' | 'kg' | 'oz' | 'lb': The unit that weight values are provided in. g for grams kg for kilograms oz for ounces lb for pounds
      - `weight` number, float: The value of the weight.
    - `urn` string
    - `packagingSizeName` string: Partner provided name for the packaging type.
  - `planDateTime` string, date-time: Future date to use as the starting date of the plan. A value of null conveys to use 'now' as the plan time.
  - `fulfillmentCenters` FulfillmentCenterData[]: Data overrides (e.g. packaging types) at the fulfillment center level. Each entry identifies the fulfillment context it applies to. When assumeQuantityAvailableInfinite (request-level or product-level) is true and this field is non-empty, the referenced contexts also define the scope in which infinite inventory is assumed.
    - `fulfillmentCenterId` string: Unique identifier for the fulfillment center. Must correspond to a Shipium registered fulfillment center for the partner.
    - `fulfillmentContextId` string: Unique identifier for the fulfillment context. Must correspond to a Shipium registered fulfillment context for the partner. Either fulfillmentContextId or fulfillmentContext must be provided.
    - `fulfillmentContext` string: Alias for the fulfillment context. Must correspond to a Shipium registered fulfillment context for the partner. Either fulfillmentContextId or fulfillmentContext must be provided.
    - `packagingTypes` FEPackagingType[]: Packaging type overrides for the fulfillment center. If provided will override preconfigured package types for the planning activity.
      - `packagingTypeId` string, required: Packing type identifier to a V2 packaging asset in carrier selection.
      - `packagingMaterial` 'box' | 'envelope' | 'flat_pack' | 'unknown', required: The shipment packaging material.
      - `linearDimensions` LinearDimensions, required: Dimensions describing the size of the packaging.
        - `linearUnit` 'in' | 'cm': The unit that linear dimensions are provided in, either in for inches or cm for centimeters.
        - `length` number, float: The longest linear dimension (e.g. the longest side of a box or envelope).
        - `width` number, float: The second longest linear dimension (e.g. the second-longest side of a box of envelope.
        - `height` number, float: The least long linear dimension (e.g. the shortest side of a box or envelope. Note on envelopes: This height should represent the highest product you would reasonably put in this envelope before losing more than 10% of the length of the envelope in other dimensions.
      - `weight` Weight, required: The weight of this type of packaging empty.
        - `weightUnit` 'g' | 'kg' | 'oz' | 'lb': The unit that weight values are provided in. g for grams kg for kilograms oz for ounces lb for pounds
        - `weight` number, float: The value of the weight.
      - `maxContentWeight` Weight: The weight of this type of packaging empty.
        - `weightUnit` 'g' | 'kg' | 'oz' | 'lb': The unit that weight values are provided in. g for grams kg for kilograms oz for ounces lb for pounds
        - `weight` number, float: The value of the weight.
      - `urn` string
      - `packagingSizeName` string: Partner provided name for the packaging type.
    - `processingTime` object: The amount of time it takes for the fulfillment center to process a shipment. The expected format is based on the ISO-8601 duration format: PnDTnHnMn.nS.
      - `seconds` integer
      - `zero` boolean
      - `nano` integer
      - `negative` boolean
      - `units` object[]
        - `durationEstimated` boolean
        - `duration` object
          - `seconds` integer
          - `zero` boolean
          - `nano` integer
          - `negative` boolean
        - `timeBased` boolean
        - `dateBased` boolean
    - `fulfillmentCost` FulfillmentCost: Costs applied to shipments and / or items this specific fulfillment center.
      - `currencyCode` 'chf' | 'usd' | 'not_set' | 'unknown': Currency code of the fulfillment costs.
      - `perItem` number, float: Additional processing cost added per item in a shipment.
      - `perPackage` number, float: Additional processing cost added per package in a shipment.
    - `rules` FulfillmentCenterRules: Rules specific to this FulfillmentCenter to apply during planning runs.
      - `splitSettings` SplitSettings: Defines how splits are configured within the fulfillment center.
        - `allowSplits` boolean: When set to true, this FulfillmentCenter will support splitting shipments based on types defined in the 'splitTypes' field.
        - `maxItemsPerPackage` integer: Max number of items allowed per package when planning runs generate shipments from order items. This values is used when unit_count is an entry in the splitTypes field list.
        - `maxPackagesPerOrder` integer: Max number of packages allowed per order for planning runs. This value is used when the max_shipments is an entry in the splitTypes field list.
        - `splitTypes` string[]: List defining the types of splits supported by this FulfillmentCenter.
  - `name` string: Optional short form name for the generated plan. Used to give the plans human readable attributes to help identify plans in UIs and spread sheets.
  - `description` string: Optional long form information for the generated plan.
  - `tenantId` string: Either the shipium tenant ID or the partner provided tenant ID. When present, this is used to indicate the tenant associated with the plan.

## Response `200`

Details on plan, shipment candidates calculated.

- Plan
  - `partnerId` string: Unique id of the partner.
  - `urn` string: The uniform resource name for identifying this fe asset. The format is `urn:fe:<asset-name>:<assetId>:<version>
  - `name` string: The human readable name describing this fe asset.
  - `description` string: Extra explanatory information about this fe asset.
  - `active` boolean: Indication of whether this fe asset is active.
  - `archived` boolean: Indication of whether this fe asset is archived.
  - `auditInfo` AuditInfo: Audit information used to track updates and changes to the asset.
    - `createdBy` string: Username of the last person / system who created the entity
    - `creationTimeStamp` string, date-time: ISO-8601 formatted date in UTC when the entity was initially created
    - `lastUpdatedBy` string: Username of the last person / system to update the entity
    - `lastUpdatedTimeStamp` string, date-time: ISO-8601 formatted date in UTC when the entity was last updated
    - `version` integer: If the owning document is journaled this field is a monotonically increasing number corresponding to each change. If the owning document is not journaled, this field will always be 1
  - `planId` string, required: Unique id of the plan generated by Shipium.
  - `partnerPlanId` string: Optional Id allowing partners to set their own Id for looking up plans.
  - `proposedShipments` ProposedShipment[], required: Proposed shipments.
    - `proposedShipmentId` string, required: Unique identifier of the shipment.
    - `fulfillmentCenterId` string: Fulfillment center to ship from.
    - `fulfillmentContextId` string, required: Fulfillment context to ship from.
    - `fulfillmentContext` string: Alias for the fulfillment context to ship from.
    - `cost` CostInfo: Carrier, service method, and cost of proposed shipment out of fulfillment center. This field is populated if the caller has the authorities: CARRIER_SELECTION_API or FULFILLMENT_ENGINE_COST_SHARING
      - `carrier` string: Proposed carrier to ship package out of fulfillment center
      - `serviceMethod` string: Proposed carrier service method to use shipping package out of fulfillment center
      - `cost` number, float: Estimated to ship package out of fulfillment center
      - `performance` Performance: Calculated performance of the proposed shipment if available.
        - `effectiveShipDateTime` string, date-time: Calculation for the effective ship date time that a shipment will ship out.
        - `estimatedDeliveryDate` string, date-time: The date and time by when the package is estimated to be delivered to the customer.
        - `estimatedDeliveryDateLocal` string: A ISO-8601 date-time without a time-zone
        - `destinationTimezoneId` string
    - `destinationAddress` Address, required: Ship to address for the order.
      - `name` string: The name associated with the address.
      - `company` string: The company name for the address.
      - `street1` string: The first address line.
      - `street2` string: The second address line.
      - `city` string: The name of the city for the address.
      - `region` string: The name of the state or region for the address.
      - `countryCode` string, required: The ISO 3166-1 country code for the address.
      - `postalCode` string, required: A countryCode-appropriate postal code for the address.
      - `addressType` 'commercial' | 'residential': The type of location for this address.
    - `packagingType` FEPackagingType, required: Default packaging type definition when no packaging information is available at the time of a FE planner run.
      - `packagingTypeId` string, required: Packing type identifier to a V2 packaging asset in carrier selection.
      - `packagingMaterial` 'box' | 'envelope' | 'flat_pack' | 'unknown', required: The shipment packaging material.
      - `linearDimensions` LinearDimensions, required: Dimensions describing the size of the packaging.
        - `linearUnit` 'in' | 'cm': The unit that linear dimensions are provided in, either in for inches or cm for centimeters.
        - `length` number, float: The longest linear dimension (e.g. the longest side of a box or envelope).
        - `width` number, float: The second longest linear dimension (e.g. the second-longest side of a box of envelope.
        - `height` number, float: The least long linear dimension (e.g. the shortest side of a box or envelope. Note on envelopes: This height should represent the highest product you would reasonably put in this envelope before losing more than 10% of the length of the envelope in other dimensions.
      - `weight` Weight, required: The weight of this type of packaging empty.
        - `weightUnit` 'g' | 'kg' | 'oz' | 'lb': The unit that weight values are provided in. g for grams kg for kilograms oz for ounces lb for pounds
        - `weight` number, float: The value of the weight.
      - `maxContentWeight` Weight: The weight of this type of packaging empty.
        - `weightUnit` 'g' | 'kg' | 'oz' | 'lb': The unit that weight values are provided in. g for grams kg for kilograms oz for ounces lb for pounds
        - `weight` number, float: The value of the weight.
      - `urn` string
      - `packagingSizeName` string: Partner provided name for the packaging type.
    - `shipmentItems` ShipmentItem[], required: Items to ship.
      - `productId` string, required: Product identifier
      - `partnerOrderId` string, required: Partner provided ID for the order.
      - `linearDimensions` LinearDimensions: Dimensions describing the size of the packaging.
        - `linearUnit` 'in' | 'cm': The unit that linear dimensions are provided in, either in for inches or cm for centimeters.
        - `length` number, float: The longest linear dimension (e.g. the longest side of a box or envelope).
        - `width` number, float: The second longest linear dimension (e.g. the second-longest side of a box of envelope.
        - `height` number, float: The least long linear dimension (e.g. the shortest side of a box or envelope. Note on envelopes: This height should represent the highest product you would reasonably put in this envelope before losing more than 10% of the length of the envelope in other dimensions.
      - `weight` Weight: The weight of this type of packaging empty.
        - `weightUnit` 'g' | 'kg' | 'oz' | 'lb': The unit that weight values are provided in. g for grams kg for kilograms oz for ounces lb for pounds
        - `weight` number, float: The value of the weight.
    - `totalWeight` Weight: The weight of this type of packaging empty.
      - `weightUnit` 'g' | 'kg' | 'oz' | 'lb': The unit that weight values are provided in. g for grams kg for kilograms oz for ounces lb for pounds
      - `weight` number, float: The value of the weight.
  - `resultingInventory` object, required: Status of inventory after inventory assigned for use in proposed shipments. productId -> ProductInventoryStatus
  - `unfulfillableItems` UnfulfillableItem[], required: Items that could not be shipped in the current plan.
    - `partnerOrderId` string, required: Partner provider order ID of the unfulfillable item.
    - `orderItem` FEOrderItem, required: List of ordered items.
      - `quantity` integer, required: The number of units of this product.
      - `productId` string, required: Product identifier
    - `reason` string, required: Reason the item could not be fulfilled.
    - `countUnfulfilled` integer, required
  - `requestTenantId` string: Either the shipium tenant ID or the partner provided tenant ID. When present, this is the tenant Id sent on the request.
  - `shipiumTenantId` string: The shipium generated tenant ID. When present, this is used to indicate the tenant associated with the plan.
  - `partnerTenantId` string: The partner provided tenant ID. When present, this is used to indicate the tenant associated with the plan.
  - `assumeQuantityAvailableInfinite` boolean: Echoes the request-level assumeQuantityAvailableInfinite when it was submitted as true. Purely diagnostic — it lets a plan be interpreted from its response alone. Mirrors the tenant echo.

## Other responses

- `400`: Invalid inputs were provided.

## Changes

- **2026-11-03** `3edfc3693c7b`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/shipium/apis/shipium-api/changes/api/v1/fe/plans/post.md)

---

[API](https://skmtc.dev/shipium/apis/shipium-api.md) - [All operations](https://skmtc.dev/shipium/apis/shipium-api/llms.txt) - [OpenAPI document](https://skmtc.dev/shipium/apis/shipium-api/revisions/3edfc3693c7b?raw)
