# Create or update a subscription item

If an object with the same ID already exists, it will be overwritten.

Endpoint: PUT /subscriptions/{subscriptionID}/items/{subscriptionItemID}
Version: 1.0.450.36533
Security: OAuth2

## Path parameters:

  - `subscriptionID` (string, required)
    ID of the subscription.

  - `subscriptionItemID` (string, required)
    ID of the subscription item.

## Request fields (application/json):

  - `ProductID` (string, required)

  - `ID` (string)

  - `Quantity` (integer)

  - `UnitPrice` (number)
    Auto calculated price per quantity. Modification requires OverrideUnitPrice role.

  - `CostCenter` (string)
    For reference only, does not influence any OrderCloud behavior.

  - `DateNeeded` (string)
    Example: "2018-01-01T00:00:00-06:00"

  - `ShippingAccount` (string)
    For reference only, does not influence any OrderCloud behavior.

  - `ShippingAddressID` (string)

  - `ShipFromAddressID` (string)
    Marketplace owner or supplier AddressID where the product will be shipped from. Can be used to calculate shipping costs.

  - `InventoryRecordID` (string)
    InventoryRecordID of which product inventory location to use. Cannot be modified once an order is submitted.

  - `Specs` (array)
    Example: [{"SpecID":"","Name":"","OptionID":"","Value":"","PriceMarkupType":"NoMarkup","PriceMarkup":0}]

  - `Specs.SpecID` (string)

  - `Specs.OptionID` (string)

  - `Specs.Value` (string)

  - `Specs.PriceMarkupType` (string)
    Enum: "NoMarkup", "AmountPerQuantity", "AmountTotal", "Percentage"

  - `Specs.PriceMarkup` (number)

  - `xp` (object)
    Example: {}

## Response 200 fields (application/json):

  - `ID` (string)

  - `ProductID` (string)

  - `Quantity` (integer)

  - `BundleItemID` (string)
    The ID of the line item that represents the bundle. Signifies that the product is being purchased as part of a bundle.

  - `IsBundle` (boolean)
    When true, this item represents a bundle being purchased.

  - `DateAdded` (string)
    Example: "2018-01-01T00:00:00-06:00"

  - `QuantityShipped` (integer)
    Sum of QuantityShipped from all shipment items.

  - `UnitPrice` (number)
    Auto calculated price per quantity. Modification requires OverrideUnitPrice role.

  - `PromotionDiscount` (number)
    Sum of all line item level promotion discount amounts applied.

  - `BaseDiscount` (number)
    Discount amount from discount assignments applied to this line item.

  - `DiscountID` (string)
    ID of the discount applied to this line item.

  - `LineTotal` (number)
    LineSubtotal - BaseDiscount - PromotionDiscount

  - `LineSubtotal` (number)
    UnitPrice x Quantity

  - `CostCenter` (string)
    For reference only, does not influence any OrderCloud behavior.

  - `DateNeeded` (string)
    Example: "2018-01-01T00:00:00-06:00"

  - `ShippingAccount` (string)
    For reference only, does not influence any OrderCloud behavior.

  - `ShippingAddressID` (string)

  - `ShipFromAddressID` (string)
    Marketplace owner or supplier AddressID where the product will be shipped from. Can be used to calculate shipping costs.

  - `Product` (object)
    Example: {"ID":"","Name":"","Description":"","Returnable":false,"QuantityMultiplier":0,"ShipWeight":0,"ShipHeight":0,"ShipWidth":0,"ShipLength":0,"DefaultSupplierID":"","ParentID":"","xp":{}}

  - `Product.ID` (string)

  - `Product.Name` (string)

  - `Product.Description` (string)

  - `Product.Returnable` (boolean)

  - `Product.QuantityMultiplier` (integer)

  - `Product.ShipWeight` (number)

  - `Product.ShipHeight` (number)

  - `Product.ShipWidth` (number)

  - `Product.ShipLength` (number)

  - `Product.DefaultSupplierID` (string)

  - `Product.ParentID` (string)

  - `Product.xp` (object)
    Example: {}

  - `Variant` (object)
    Example: {"ID":"","Name":"","Description":"","ShipWeight":0,"ShipHeight":0,"ShipWidth":0,"ShipLength":0,"xp":{}}

  - `Variant.ID` (string)

  - `Variant.Name` (string)

  - `Variant.Description` (string)

  - `Variant.ShipWeight` (number)

  - `Variant.ShipHeight` (number)

  - `Variant.ShipWidth` (number)

  - `Variant.ShipLength` (number)

  - `Variant.xp` (object)
    Example: {}

  - `ShippingAddress` (object)
    Example: {"ID":"","DateCreated":"2018-01-01T00:00:00-06:00","CompanyName":"","FirstName":"","LastName":"","Street1":"","Street2":"","City":"","State":"","Zip":"","Country":"","Phone":"","AddressName":"","xp":{}}

  - `ShippingAddress.ID` (string)

  - `ShippingAddress.DateCreated` (string)
    Example: "2018-01-01T00:00:00-06:00"

  - `ShippingAddress.CompanyName` (string)

  - `ShippingAddress.FirstName` (string)

  - `ShippingAddress.LastName` (string)

  - `ShippingAddress.Street1` (string)

  - `ShippingAddress.Street2` (string)

  - `ShippingAddress.City` (string)

  - `ShippingAddress.State` (string)

  - `ShippingAddress.Zip` (string)

  - `ShippingAddress.Country` (string)

  - `ShippingAddress.Phone` (string)

  - `ShippingAddress.AddressName` (string)

  - `ShippingAddress.xp` (object)
    Example: {}

  - `ShipFromAddress` (object)
    Example: {"ID":"","DateCreated":"2018-01-01T00:00:00-06:00","CompanyName":"","FirstName":"","LastName":"","Street1":"","Street2":"","City":"","State":"","Zip":"","Country":"","Phone":"","AddressName":"","xp":{}}

  - `ShipFromAddress.ID` (string)

  - `ShipFromAddress.DateCreated` (string)
    Example: "2018-01-01T00:00:00-06:00"

  - `ShipFromAddress.CompanyName` (string)

  - `ShipFromAddress.FirstName` (string)

  - `ShipFromAddress.LastName` (string)

  - `ShipFromAddress.Street1` (string)

  - `ShipFromAddress.Street2` (string)

  - `ShipFromAddress.City` (string)

  - `ShipFromAddress.State` (string)

  - `ShipFromAddress.Zip` (string)

  - `ShipFromAddress.Country` (string)

  - `ShipFromAddress.Phone` (string)

  - `ShipFromAddress.AddressName` (string)

  - `ShipFromAddress.xp` (object)
    Example: {}

  - `SupplierID` (string)

  - `InventoryRecordID` (string)
    InventoryRecordID of which product inventory location to use. Cannot be modified once an order is submitted.

  - `PriceScheduleID` (string)
    PriceScheduleID used to determine unit price.

  - `IsOnSale` (boolean)
    True when the price schedule and price break has an active SalePrice.

  - `PriceOverridden` (boolean)
    If true, UnitPrice was overridden.

  - `Specs` (array)
    Example: [{"SpecID":"","Name":"","OptionID":"","Value":"","PriceMarkupType":"NoMarkup","PriceMarkup":0}]

  - `IncomingOrderID` (string)
    ID of the original order. Only returns a value for the marketplace owner.

  - `OutgoingOrderID` (string)
    ID of the split or forwarded order. Only returns a value for the marketplace owner.

  - `InvitationID` (string)

  - `xp` (object)
    Example: {}

## Response 4XX fields (application/json):

  - `StatusCode` (integer)
    Example: "404"

  - `ErrorCode` (string)
    Example: "NotFoundError"

  - `Message` (string)
    Example: "Object not found"

  - `Data` (object)
    Example: {"ObjectType":"","ObjectID":""}


