post https://api.fastspring.com/products
Create and edit products. If you are creating products in bulk, you can add up to 300 at a time.
{
"products": [
{
"product": "product-one",
// Required. Must be a valid product path/ID: alphanumeric, all lower-case, no special characters except dash "-", must be greater than two characters in length
"display": {
// Required at least in English
"en": "String"
},
"description": {
"summary": {
"en": "String"
// This field also supports Markdown.
},
"action": {
"en": "String"
},
"full": {
"en": "String"
// This field also supports Markdown.
}
},
"fulfillment": {
"instructions":{
// Optional Post Order Instructions (e.g., for a 'thank you message' and directions on how to register the product)
"en":"String",
// This field also supports Markdown.
"es":"String"
// This field also supports Markdown.
}
},
"fulfillments": [
{
"type":"file",
// Required.
"url":"http://somedomain.net/files/8675309/filename.exe"",
// Required when uploading a new fulfillment file; specify external file URL for FastSpring to retrieve
"display":"filename.exe",
// Required fulfillment file name; extension must match file specified in URL
"applicability":"ALWAYS",
// Or "BASE", "CONFIGURATION", "REBILL_ONLY", "NON_REBILL_ONLY",
"behavior":"CURRENT"
// Or "PREFER_EXPLICIT";
}
],
"image": "http://somedomain.net/images/8675309/filename.jpg"",
// Product icon image
"format": "digital",
// Or "physical" or "digital-and-physical"
"sku": "string",
"taxcode": "DC020502",
// Optional SKU ID string
"attributes": {
// Strings. Custom key / value attributes that will be passed back once this product is purchased (aggregate limit of approximately 4,000 characters total).
"key1": "value1",
"key2": "value2",
...
},
"pricing": {
"trial": 2,
// Days, only needed if you are creating a subscription
"interval": "month",
// Or "adhoc", "day", "week", "year", only needed if you are creating a subscription
"intervalLength": 1,
// Required if "interval" is specified and is not "adhoc"
"quantityBehavior": "allow",
// Or "lock" or "hide"
"quantityDefault": 1,
"price": {
"USD": 14.95,
// Currency must be enabled in the Store Settings
"EUR": 10.99
},
"setupFee": {
// Optional one-time setup fee for subscriptions; if set, this cannot be removed from the order. The amount will not be included in future rebills.
"title":{"en":"Setup fee title"},
// Optional description of the one-time setup fee, format "language code":"string"
"price":{"USD":10}
// Amount of the one-time setup fee, format "currency":amount
},
"quantityDiscounts": {
// "Volume Discounts". Support percentage or "amount off". Mixed values are not supported.
10: 25.00,
// Quantity: percentage off. Everything more than 10 units will be discounted by 25%.
30: {"USD": 25.00, "EUR": 15}
// Quantity: amount off in each supported currency. This value will be subtracted from the product price.
},
"discountReason": {
"en": "The Reason"
},
"discountDuration": 1,
"dateLimitsEnabled": true,
// Pass "true" if you want to limit product discount availability by date range (for subscriptions, this only applies to the initial order).
"dateLimits": {
"start": "2020-06-05 12:00",
// Beginning date for the discount availability. YYYY-MM-DD 00:00 GMT, or pass the date in milliseconds.
"end": "2020-07-04 19:33"
// Expiration date for the discount. YYYY-MM-DD 00:00 GMT, or pass the date in milliseconds.
}
}
},
{
...next product definition...
}
]
}
{
"errors": [
{
"product": "product-id",
"error": {
"product": "product is required",
// "product" is required when creating a new product
"display": "display is required",
// "display" is required when creating a new product
"interval": "intervalLength must be specified",
// "intervalLength" is required if "interval" is specified
"intervalLength": "interval must be specified",
// "interval" is required if "intervalLength" is specified
"renew": "interval must be specified",
// or "intervalLength must be specified" or "interval and intervalLength must be specified"
"trial": "interval must be specified",
// or "intervalLength must be specified" or "interval and intervalLength must be specified"
"discountDuration": "interval must be specified",
// or "intervalLength must be specified" or "interval and intervalLength must be specified"
"discountDuration": "quantityDiscounts must be specified",
"discountReason": "quantityDiscounts must be specified"
}
}
]
}