Update a Product
Updates an existing product. This call does not currently support partial updates. The entire resource must be provided in the body of the request.
Requirements:
- You'll need a
productId
to make this API call.
- Find a list of products for this account (
productId
) by a List Products call.
Example Request
PUT /products/productId HTTP/1.1
Host: ssapi.shipstation.com
Authorization: __YOUR_AUTH_HERE__
Content-Type: application/json
{
"aliases": null,
"productId": 123456789,
"sku": "BEAU-000",
"name": "Beautiful",
"price": 0,
"defaultCost": null,
"length": null,
"width": null,
"height": null,
"weightOz": null,
"internalNotes": null,
"fulfillmentSku": null,
"active": true,
"productCategory": null,
"productType": null,
"warehouseLocation": null,
"defaultCarrierCode": null,
"defaultServiceCode": null,
"defaultPackageCode": null,
"defaultIntlCarrierCode": null,
"defaultIntlServiceCode": null,
"defaultIntlPackageCode": null,
"defaultConfirmation": null,
"defaultIntlConfirmation": null,
"customsDescription": null,
"customsValue": null,
"customsTariffNo": null,
"customsCountryCode": null,
"noCustoms": null,
"tags": null,
"upc": null,
"thumbnailURL": null
}
curl -iX PUT https://ssapi.shipstation.com/products/productId \
-H 'Authorization: __YOUR_AUTH_HERE__' \
-H 'Content-Type: application/json' \
-d '{
"aliases": null,
"productId": 123456789,
"sku": "BEAU-000",
"name": "Beautiful",
"price": 0,
"defaultCost": null,
"length": null,
"width": null,
"height": null,
"weightOz": null,
"internalNotes": null,
"fulfillmentSku": null,
"active": true,
"productCategory": null,
"productType": null,
"warehouseLocation": null,
"defaultCarrierCode": null,
"defaultServiceCode": null,
"defaultPackageCode": null,
"defaultIntlCarrierCode": null,
"defaultIntlServiceCode": null,
"defaultIntlPackageCode": null,
"defaultConfirmation": null,
"defaultIntlConfirmation": null,
"customsDescription": null,
"customsValue": null,
"customsTariffNo": null,
"customsCountryCode": null,
"noCustoms": null,
"tags": null,
"upc": null,
"thumbnailURL": null
}'
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Host", "ssapi.shipstation.com")
$headers.Add("Authorization", "__YOUR_AUTH_HERE__")
$headers.Add("Content-Type", "application/json")
$body = "{`n `"aliases`": null,`n `"productId`": 123456789,`n `"sku`": `"BEAU-000`",`n `"name`": `"Beautiful`",`n `"price`": 0,`n `"defaultCost`": null,`n `"length`": null,`n `"width`": null,`n `"height`": null,`n `"weightOz`": null,`n `"internalNotes`": null,`n `"fulfillmentSku`": null,`n `"active`": true,`n `"productCategory`": null,`n `"productType`": null,`n `"warehouseLocation`": null,`n `"defaultCarrierCode`": null,`n `"defaultServiceCode`": null,`n `"defaultPackageCode`": null,`n `"defaultIntlCarrierCode`": null,`n `"defaultIntlServiceCode`": null,`n `"defaultIntlPackageCode`": null,`n `"defaultConfirmation`": null,`n `"defaultIntlConfirmation`": null,`n `"customsDescription`": null,`n `"customsValue`": null,`n `"customsTariffNo`": null,`n `"customsCountryCode`": null,`n `"noCustoms`": null,`n `"tags`": null`n}"
$response = Invoke-RestMethod 'https://ssapi.shipstation.com/products/productId' -Method 'PUT' -Headers $headers -Body $body
$response | ConvertTo-Json
var myHeaders = new Headers();
myHeaders.append("Host", "ssapi.shipstation.com");
myHeaders.append("Authorization", "__YOUR_AUTH_HERE__");
myHeaders.append("Content-Type", "application/json");
var raw = JSON.stringify({"aliases":null,"productId":123456789,"sku":"BEAU-000","name":"Beautiful","price":0,"defaultCost":null,"length":null,"width":null,"height":null,"weightOz":null,"internalNotes":null,"fulfillmentSku":null,"active":true,"productCategory":null,"productType":null,"warehouseLocation":null,"defaultCarrierCode":null,"defaultServiceCode":null,"defaultPackageCode":null,"defaultIntlCarrierCode":null,"defaultIntlServiceCode":null,"defaultIntlPackageCode":null,"defaultConfirmation":null,"defaultIntlConfirmation":null,"customsDescription":null,"customsValue":null,"customsTariffNo":null,"customsCountryCode":null,"noCustoms":null,"tags":null});
var requestOptions = {
method: 'PUT',
headers: myHeaders,
body: raw,
redirect: 'follow'
};
fetch("https://ssapi.shipstation.com/products/productId", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));
var request = require('request');
var options = {
'method': 'PUT',
'url': 'https://ssapi.shipstation.com/products/productId',
'headers': {
'Host': 'ssapi.shipstation.com',
'Authorization': '__YOUR_AUTH_HERE__',
'Content-Type': 'application/json'
},
body: JSON.stringify({"aliases":null,"productId":123456789,"sku":"BEAU-000","name":"Beautiful","price":0,"defaultCost":null,"length":null,"width":null,"height":null,"weightOz":null,"internalNotes":null,"fulfillmentSku":null,"active":true,"productCategory":null,"productType":null,"warehouseLocation":null,"defaultCarrierCode":null,"defaultServiceCode":null,"defaultPackageCode":null,"defaultIntlCarrierCode":null,"defaultIntlServiceCode":null,"defaultIntlPackageCode":null,"defaultConfirmation":null,"defaultIntlConfirmation":null,"customsDescription":null,"customsValue":null,"customsTariffNo":null,"customsCountryCode":null,"noCustoms":null,"tags":null})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://ssapi.shipstation.com/products/productId",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS =>"{\n \"aliases\": null,\n \"productId\": 123456789,\n \"sku\": \"BEAU-000\",\n \"name\": \"Beautiful\",\n \"price\": 0,\n \"defaultCost\": null,\n \"length\": null,\n \"width\": null,\n \"height\": null,\n \"weightOz\": null,\n \"internalNotes\": null,\n \"fulfillmentSku\": null,\n \"active\": true,\n \"productCategory\": null,\n \"productType\": null,\n \"warehouseLocation\": null,\n \"defaultCarrierCode\": null,\n \"defaultServiceCode\": null,\n \"defaultPackageCode\": null,\n \"defaultIntlCarrierCode\": null,\n \"defaultIntlServiceCode\": null,\n \"defaultIntlPackageCode\": null,\n \"defaultConfirmation\": null,\n \"defaultIntlConfirmation\": null,\n \"customsDescription\": null,\n \"customsValue\": null,\n \"customsTariffNo\": null,\n \"customsCountryCode\": null,\n \"noCustoms\": null,\n \"tags\": null\n}",
CURLOPT_HTTPHEADER => array(
"Host: ssapi.shipstation.com",
"Authorization: __YOUR_AUTH_HERE__",
"Content-Type: application/json"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
import requests
url = "https://ssapi.shipstation.com/products/productId"
payload = "{\n \"aliases\": null,\n \"productId\": 123456789,\n \"sku\": \"BEAU-000\",\n \"name\": \"Beautiful\",\n \"price\": 0,\n \"defaultCost\": null,\n \"length\": null,\n \"width\": null,\n \"height\": null,\n \"weightOz\": null,\n \"internalNotes\": null,\n \"fulfillmentSku\": null,\n \"active\": true,\n \"productCategory\": null,\n \"productType\": null,\n \"warehouseLocation\": null,\n \"defaultCarrierCode\": null,\n \"defaultServiceCode\": null,\n \"defaultPackageCode\": null,\n \"defaultIntlCarrierCode\": null,\n \"defaultIntlServiceCode\": null,\n \"defaultIntlPackageCode\": null,\n \"defaultConfirmation\": null,\n \"defaultIntlConfirmation\": null,\n \"customsDescription\": null,\n \"customsValue\": null,\n \"customsTariffNo\": null,\n \"customsCountryCode\": null,\n \"noCustoms\": null,\n \"tags\": null\n}"
headers = {
'Host': 'ssapi.shipstation.com',
'Authorization': '__YOUR_AUTH_HERE__',
'Content-Type': 'application/json'
}
response = requests.request("PUT", url, headers=headers, data = payload)
print(response.text.encode('utf8'))
require "uri"
require "net/http"
url = URI("https://ssapi.shipstation.com/products/productId")
https = Net::HTTP.new(url.host, url.port);
https.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Host"] = "ssapi.shipstation.com"
request["Authorization"] = "__YOUR_AUTH_HERE__"
request["Content-Type"] = "application/json"
request.body = "{\n \"aliases\": null,\n \"productId\": 123456789,\n \"sku\": \"BEAU-000\",\n \"name\": \"Beautiful\",\n \"price\": 0,\n \"defaultCost\": null,\n \"length\": null,\n \"width\": null,\n \"height\": null,\n \"weightOz\": null,\n \"internalNotes\": null,\n \"fulfillmentSku\": null,\n \"active\": true,\n \"productCategory\": null,\n \"productType\": null,\n \"warehouseLocation\": null,\n \"defaultCarrierCode\": null,\n \"defaultServiceCode\": null,\n \"defaultPackageCode\": null,\n \"defaultIntlCarrierCode\": null,\n \"defaultIntlServiceCode\": null,\n \"defaultIntlPackageCode\": null,\n \"defaultConfirmation\": null,\n \"defaultIntlConfirmation\": null,\n \"customsDescription\": null,\n \"customsValue\": null,\n \"customsTariffNo\": null,\n \"customsCountryCode\": null,\n \"noCustoms\": null,\n \"tags\": null\n}"
response = https.request(request)
puts response.read_body
var client = new RestClient("https://ssapi.shipstation.com/products/productId");
client.Timeout = -1;
var request = new RestRequest(Method.PUT);
request.AddHeader("Host", "ssapi.shipstation.com");
request.AddHeader("Authorization", "__YOUR_AUTH_HERE__");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n \"aliases\": null,\n \"productId\": 123456789,\n \"sku\": \"BEAU-000\",\n \"name\": \"Beautiful\",\n \"price\": 0,\n \"defaultCost\": null,\n \"length\": null,\n \"width\": null,\n \"height\": null,\n \"weightOz\": null,\n \"internalNotes\": null,\n \"fulfillmentSku\": null,\n \"active\": true,\n \"productCategory\": null,\n \"productType\": null,\n \"warehouseLocation\": null,\n \"defaultCarrierCode\": null,\n \"defaultServiceCode\": null,\n \"defaultPackageCode\": null,\n \"defaultIntlCarrierCode\": null,\n \"defaultIntlServiceCode\": null,\n \"defaultIntlPackageCode\": null,\n \"defaultConfirmation\": null,\n \"defaultIntlConfirmation\": null,\n \"customsDescription\": null,\n \"customsValue\": null,\n \"customsTariffNo\": null,\n \"customsCountryCode\": null,\n \"noCustoms\": null,\n \"tags\": null\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"aliases\": null,\n \"productId\": 123456789,\n \"sku\": \"BEAU-000\",\n \"name\": \"Beautiful\",\n \"price\": 0,\n \"defaultCost\": null,\n \"length\": null,\n \"width\": null,\n \"height\": null,\n \"weightOz\": null,\n \"internalNotes\": null,\n \"fulfillmentSku\": null,\n \"active\": true,\n \"productCategory\": null,\n \"productType\": null,\n \"warehouseLocation\": null,\n \"defaultCarrierCode\": null,\n \"defaultServiceCode\": null,\n \"defaultPackageCode\": null,\n \"defaultIntlCarrierCode\": null,\n \"defaultIntlServiceCode\": null,\n \"defaultIntlPackageCode\": null,\n \"defaultConfirmation\": null,\n \"defaultIntlConfirmation\": null,\n \"customsDescription\": null,\n \"customsValue\": null,\n \"customsTariffNo\": null,\n \"customsCountryCode\": null,\n \"noCustoms\": null,\n \"tags\": null\n}");
Request request = new Request.Builder()
.url("https://ssapi.shipstation.com/products/productId")
.method("PUT", body)
.addHeader("Host", "ssapi.shipstation.com")
.addHeader("Authorization", "__YOUR_AUTH_HERE__")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://ssapi.shipstation.com/products/productId"
method := "PUT"
payload := strings.NewReader("{\n \"aliases\": null,\n \"productId\": 123456789,\n \"sku\": \"BEAU-000\",\n \"name\": \"Beautiful\",\n \"price\": 0,\n \"defaultCost\": null,\n \"length\": null,\n \"width\": null,\n \"height\": null,\n \"weightOz\": null,\n \"internalNotes\": null,\n \"fulfillmentSku\": null,\n \"active\": true,\n \"productCategory\": null,\n \"productType\": null,\n \"warehouseLocation\": null,\n \"defaultCarrierCode\": null,\n \"defaultServiceCode\": null,\n \"defaultPackageCode\": null,\n \"defaultIntlCarrierCode\": null,\n \"defaultIntlServiceCode\": null,\n \"defaultIntlPackageCode\": null,\n \"defaultConfirmation\": null,\n \"defaultIntlConfirmation\": null,\n \"customsDescription\": null,\n \"customsValue\": null,\n \"customsTariffNo\": null,\n \"customsCountryCode\": null,\n \"noCustoms\": null,\n \"tags\": null\n}")
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
}
req.Header.Add("Host", "ssapi.shipstation.com")
req.Header.Add("Authorization", "__YOUR_AUTH_HERE__")
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
defer res.Body.Close()
body, err := ioutil.ReadAll(res.Body)
fmt.Println(string(body))
}
#import <Foundation/Foundation.h>
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://ssapi.shipstation.com/products/productId"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
NSDictionary *headers = @{
@"Host": @"ssapi.shipstation.com",
@"Authorization": @"__YOUR_AUTH_HERE__",
@"Content-Type": @"application/json"
};
[request setAllHTTPHeaderFields:headers];
NSData *postData = [[NSData alloc] initWithData:[@"{\n \"aliases\": null,\n \"productId\": 123456789,\n \"sku\": \"BEAU-000\",\n \"name\": \"Beautiful\",\n \"price\": 0,\n \"defaultCost\": null,\n \"length\": null,\n \"width\": null,\n \"height\": null,\n \"weightOz\": null,\n \"internalNotes\": null,\n \"fulfillmentSku\": null,\n \"active\": true,\n \"productCategory\": null,\n \"productType\": null,\n \"warehouseLocation\": null,\n \"defaultCarrierCode\": null,\n \"defaultServiceCode\": null,\n \"defaultPackageCode\": null,\n \"defaultIntlCarrierCode\": null,\n \"defaultIntlServiceCode\": null,\n \"defaultIntlPackageCode\": null,\n \"defaultConfirmation\": null,\n \"defaultIntlConfirmation\": null,\n \"customsDescription\": null,\n \"customsValue\": null,\n \"customsTariffNo\": null,\n \"customsCountryCode\": null,\n \"noCustoms\": null,\n \"tags\": null\n}" dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:postData];
[request setHTTPMethod:@"PUT"];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSError *parseError = nil;
NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&parseError];
NSLog(@"%@",responseDictionary);
dispatch_semaphore_signal(sema);
}
}];
[dataTask resume];
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
import Foundation
var semaphore = DispatchSemaphore (value: 0)
let parameters = "{\n \"aliases\": null,\n \"productId\": 123456789,\n \"sku\": \"BEAU-000\",\n \"name\": \"Beautiful\",\n \"price\": 0,\n \"defaultCost\": null,\n \"length\": null,\n \"width\": null,\n \"height\": null,\n \"weightOz\": null,\n \"internalNotes\": null,\n \"fulfillmentSku\": null,\n \"active\": true,\n \"productCategory\": null,\n \"productType\": null,\n \"warehouseLocation\": null,\n \"defaultCarrierCode\": null,\n \"defaultServiceCode\": null,\n \"defaultPackageCode\": null,\n \"defaultIntlCarrierCode\": null,\n \"defaultIntlServiceCode\": null,\n \"defaultIntlPackageCode\": null,\n \"defaultConfirmation\": null,\n \"defaultIntlConfirmation\": null,\n \"customsDescription\": null,\n \"customsValue\": null,\n \"customsTariffNo\": null,\n \"customsCountryCode\": null,\n \"noCustoms\": null,\n \"tags\": null\n}"
let postData = parameters.data(using: .utf8)
var request = URLRequest(url: URL(string: "https://ssapi.shipstation.com/products/productId")!,timeoutInterval: Double.infinity)
request.addValue("ssapi.shipstation.com", forHTTPHeaderField: "Host")
request.addValue("__YOUR_AUTH_HERE__", forHTTPHeaderField: "Authorization")
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpMethod = "PUT"
request.httpBody = postData
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print(String(describing: error))
return
}
print(String(data: data, encoding: .utf8)!)
semaphore.signal()
}
task.resume()
semaphore.wait()
Example Response
{
"success": true,
"message": "The requested product has been updated"
}