Requirements Overview Authentication Sending Request Reading Response Code Example Products PriceTiers Customers Orders Invoices Payments API Explorer Blast Ramp FAQ Aims360 FAQ
Brandboom API Documentation v. 2.0.0
  • Brandboom Unlimited Yearly Subscription.
  • Ability to make RESTful calls to the Brandboom API.
  • Your static IPs must be whitelisted to use the sandbox environment.
  • Any extra custom work/modifications that you would like Brandboom to do will be billed out at a rate of $200/hr.
  • Contact Brandboom customer service to enable account integration and provide us with your static IPs. While the production environment is open to the public, our sandbox/testing environment is behind a firewall. The sandbox is a self-contained environment where you can set up and test your data as you wish.

    One easy way to check what IP address your server has is to run the following command in your server’s terminal:

    curl icanhazip.com or curl -s 'http://checkip.dyndns.org'

    Once Brandboom has enabled your account for integration, you'll see all the information you need for integration on your Account page. Your Public Key, Secret Key, Account ID, etc, should now be listed under the section "Integration".

    Log into the sandbox environment manage.brandboom.net to configure your sandbox and load it with data as needed. You can import data by using import templates.

    Below are sample templates. These files in Excel format can be used via both the API or the front end functionality located on the Product/Customer page. It is recommended however that you use the CSV files to call the API since they are much more compact and quicker to process.

    Sample Products Import Templates:

    Sample Customers Import Template:

    Use the API Test Page to experiment with the various API calls without coding:

    You can pick the function you want to try out from the "API/function" dropdown. Paste in your API keys and choose one of the functions and click "Go" to see the query in action. The RESTful query issued will be printed on screen. The result will be printed at the bottom of the page. Please note that the API Test Page cannot be opened in the same browser that you have the sandbox site open, as the two would log each others' sessions out.

    When you are testing with the sandbox environment, you might get an HTTPS certificate warning. Just make sure you disable certificate validation (for cUrl, it is the CURLOPT_SSL_VERIFYPEER flag). Once you’ve finished and tested in the sandbox, you can test with sample orders on production and resolve any remaining issues.

    Brandboom's API is based on a REST implementation. API entry points are divided by models/actions. For example, the orders API is located at http://manage.brandboom.com/api/v2/orders while the line sheets API is located at http://manage.brandboom.com/api/v2/linesheets.

    An API request URL looks like this:

    http://manage.brandboom.com/api/v2/{model}/{method}/{id}?{name}={value}&...

    Each API call requires the following parameters minimum:

    credentials
    We recommend that you embed your publicKey / timestamp / signature as the HTTP headers X-Auth-Key / X-Auth-Timestamp / X-Auth-Signature respectively. Alternatively, you can list them as query string parameters.
    responseType: (optional)
    The format of the response message. "json" is the default and the only supported format from V2 onwards. "xml" and "text" are deprecated but will be maintained for V1 functions.
    jsonp: (json only, optional)
    JavaScript to be prepended to the parenthesized payload object (refer to JSONP - JSON with Padding).

    Brandboom uses a pair of 128-bit MD5 public and secret keys; each key is a 32-digit long hexadecimal string.

    Instead of sending out the secret key, authentication is based on unique and ephemeral signatures generated using the secret key before submission upon every request. Notice that:

    Your account comes with:

    Public Key
    Tied to your account and it is used to identify you
    Secret Key
    Used to sign API requests (explained below). You should never share or expose your Secret Key to anyone

    Each API request must be signed to ensure its authenticity. A signature can be generated by taking the uppercase MD5 sum of the concatenation of your Public Key, your Secret Key, and the request timestamp (Unix-epoch timestamp) in the following fashion:

    signature = strtoupper(MD5("PUBLIC"+PublicKey+"SECRET"+SecretKey+"TIMESTAMP"+timestamp))

    When making your request, make sure you include your credentials as HTTP headers:

    X-Auth-Key:
    The API Public Key given to your account
    X-Auth-Timestamp:
    The Unix-epoch timestamp when the signature was generated
    X-Auth-Signature:
    The signature generated

    APIs requests are sent over the http protocol. Brandboom supports TLS encryption to protect data from being intercepted while in transit. You can enable TLS by simply accessing the Brandboom API address through https instead of http. Please note that Brandboom no longer supports SSL encryption as security loop holes have been identified.

    Assuming your Public Key is 5D41402ABC4B2A76B9719D911017C592, and the signature generated with your Secret Key and the current timestamp 1278031982 is 1F3870BE274F6C49B3E31A0C6728957F.

    Here is an example of what a request to retrieve orders will look like:

    Request Method
    GET
    Request URL
    https://manage.brandboom.com/api/v2/orders/search
    X-Auth-Key
    5D41402ABC4B2A76B9719D911017C592
    X-Auth-Timestamp
    1278031982
    X-Auth-Signature
    1F3870BE274F6C49B3E31A0C6728957F

    *It's recommend that you use a secured (https) connection if the content of the data is sensitive.

    The Brandboom API follows the RESTful design. GET requests imply "search". POST requests imply "create". PUT requests imply "update". DELETE requests imply "delete". When making a request, if you choose to omit the {method} in the URL, Brandboom will assume the method based on the request type. For example,

    GET
    http://manage.brandboom.com/api/v2/orders -> "search" method of orders
    PUT
    http://manage.brandboom.com/api/v2/orders -> "create" method of orders
    POST
    http://manage.brandboom.com/api/v2/orders/431 -> "update" method on Order 431
    DELETE
    http://manage.brandboom.com/api/v2/orders/431 -> "delete" method on Order 431

    Unless otherwise documented, the response message will be in json. While still supported for V1 functions, xml and text (plain text) have been deprecated since V2. The response format can be specified by using the responseType parameter when sending a request. The response message contains the following attributes:

    method
    the name of the method that was requested
    status
    "true" if succeeded, "false" or "error" if failed
    value
    the payload of the request if successful/applicable; the error messages if failed
    type
    the format of the response message
    JSON
    {
    	method": "search",
    	status": "error",
    	value": "Permission Denied",
    	jsonp": "MyApp.foo",
    	type": "json"
    }
    
    XML (deprecated since V2)
    <response>
    	<method> search</method>
    	<status>error</status>
    	<value>Permission Denied</value>
    	<type>xml</type>
    </response>
    
    TEXT (deprecated since V2)
    error|||Permission Denied
    
    PHP
    <?php
    function calculateSignature($publicKey, $secretKey, $timestamp){
    	return strtoupper(MD5("PUBLIC".$publicKey."SECRET".$secretKey."TIMESTAMP".$timestamp));
    }
    
    function fetch($approach, $url, $fields, $file=null){
    	$timestamp = time();
    	$publicKey = "5AEE3AF949C8383DD321D352433CDC0C";
    	$secretKey = "25320587CF6D4F206F68B517F0878408";
    	$signature = calculateSignature($publicKey, $secretKey, $timestamp);
    
    	//Approach 1 - Use pecl_http functions
    	//NOTE: this is the preferred method
    	if($approach==1){
    		$options = array(
    			'headers'=>array(
    				"X-Auth-Key" => $publicKey,
    				"X-Auth-Timestamp" => $timestamp,
    				"X-Auth-Signature" => $signature
    			),
    			'ssl'=>array(
    				/* needed for sandbox manage.brandboom.net environment*/
    				'verifypeer'=>false
    			)
    		);
    		$rawResult = http_post_fields($url, $fields, $file? array($file) : null, $options);
    		$parsedResult = http_parse_message($rawResult);
    		return $parsedResult->body;
    	}
    	//Approach 2 - Use curl functions
    	else if($approach==2){
    		//write to a file called orders.xml in the tmp dir
    		$tmpFile = "/tmp/orders.xml";
    		$fp = fopen($tmpFile, "w");
    
    		//if there are files to be attached
    		if($file){
    				//if PHP version >= 5.5
    				if(function_exists("curl_file_create")){
    					$cFile = curl_file_create($file["file"], $file["type"], $file["name"]);
    					$fields['data'] = $cFile;
    				}
    				//PHP < 5.6
    				else{
    					$fields['data'] = '@'.$file["file"];
    				}
    			}
    
    		//set the url, number of POST vars, POST data
    		$ch = curl_init();
    		curl_setopt($ch,CURLOPT_URL, $url);
    		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    		curl_setopt($ch,CURLOPT_HEADER, true);
    		curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
    		/* needed for sandbox manage.brandboom.net environment*/
    		curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, 2);
    
    		$headers = array(
    			"X-Auth-Key: ".$publicKey,
    			"X-Auth-Timestamp: ".$timestamp,
    			"X-Auth-Signature: ".$signature
    		);
    		curl_setopt($ch,CURLOPT_HTTPHEADER, $headers);
    
    		curl_setopt($ch,CURLOPT_POST, count($fields));
    		curl_setopt($ch,CURLOPT_POSTFIELDS, $fields);
    		curl_setopt($ch,CURLOPT_FILE, $fp);
    		curl_setopt($ch,CURLOPT_HEADER, 0);
    
    		//execute post
    		$status = curl_exec($ch);
    		if(curl_errno($ch))
    			print curl_error($ch);
    		else
    			curl_close($ch);
    
    		//close connection
    		fclose($fp);
    
    		return file_get_contents($tmpFile);
    	}
    }
    
    //#################################################
    /*        Retrieving orders from brandboom       */
    //#################################################
    $url = "https://manage.brandboom.net/api/v2/orders/search";
    $fields = array(
    	"status" => "export",
    	"numResults" => 0
    );
    $result = fetch(1, $url, $fields);
    echo $result;
    
    //#################################################
    /*         Posting products to brandboom         */
    //#################################################
    $url = "https://manage.brandboom.com/api/v2/products/import";
    $fields = array(
    	"brandID" => "34",
    	"showroomID" => "161",
    	"mode" => "COMBINE"
    );
    $importFile = array(
    	'name' => 'data',
    	'type' => 'text/csv',
    	'file' => "/tmp/product_import_template.csv",
    );
    $result = fetch(2, $url, $fields, $importFile);
    echo $result;
    

    Use this method to retrieve products. There's a maximum of 300 results per request.

    URL
    GET http://manage.brandboom.com/api/v2/products/{productID} , or
    http://manage.brandboom.com/api/v2/products/search
    Parameters
    brandID Brand ID. Please refer to your account page.
    showroomID Showroom ID. You can locate the showroomID in the Showroom Settings popup.
    priceTierID The numeric Price Tier ID. Unless you've specified a groupName (in which case the priceTierID will be pulled from the group), you must specify the price tier you want to use for the products. Please refer to the Price Tiers to see how to retreive a full list.
    language The two-letter code of the language that products descriptions should be retrieved in. The langguage you pick must correspond to language of a valid existing showroom. Default is en for English.
    productID (optional) Comma-separated list of Brandboom Product IDs.
    keywords (optional) Caret-separated (^) list of keywords to search by.
    groupName (optional) Show products that are inside of the presentation by this name.
    styleNumbers (optional) Caret-separated (^) list of style numbers that these products should have. Ex: "MKG-231^MKG233"
    types (optional) Comma-separated list of types that these products have been tagged with. Ex: "Mens, Womens"
    seasons (optional) Comma-separated list of seasons that these products have been tagged with. Ex: "Fall 15, Summer 16"
    categories (optional) Comma-separated list of categories that these products have been tagged with. Ex: "Shorts, Tees"
    sizes (optional) Comma-separated list of sizes that these products contain. Ex: "S, "M"
    numResults (optional) The number of results that you want your request to limit to. The maximum and default are 300 results per request (100 if format is xml).
    resultOffset (optional) The result offset that you want your request to start from. The default is 0 (the beginning).

    Return
    Response Payload The response is an object with a totolNumResults attribute, and array of Product objects loaded with descriptions in the specified language and prices in the specified price tier.

    Product Object

    The structure of a Product object is as follow:
    {
    	"id": 1497120,
    	"accountID": 912,
    	"brandID": 1244,
    	"statusLock": 0,
    	"styleNumber": "GrayTank",					//style number
    	"options": ["GRY"],						//array of option codes
    	"sizes": ["S"],								//array of sizes
    	"optionAvailableCounts": {					//availability of each option
    		"GRY": {
    			"count": "",						//aggregate inventory count of this option across all sizes
    			"hasInfinite": true 					//true if unlimited
    		}
    	},
    	"prepacks": [],
    	"category": [
    		"Tops",
    		"Jacket"
    	],
    	"types": [
    		"Womens",
    		"Mens"
    	],
    	"imageIDs": [
    		"00000297051B19A6",
    		"0000029705004438",
    		"00000297049D9424"
    	],
    	"referenceName": "Gray Tank 23",			//product name
    	"referenceDate": "2014-03-26",				//ship date
    	"dateCreated": "2015-03-02 12:47:04",
    	"dateModified": "2015-03-02 12:47:04",
    	"status": 0,								//0: active, 1:suspended, 2:deleted
    	"minQTY": 3,								//minimum quantity required when ordering
    	"imageReference": "",
    	"description": {							//ProductDescription for the specified language
    		"id": 1497120,
    		"language": "en",						//2-letter language code
    		"name": "Gray Tank 23",				//product name in this specific language
    		"description": "Loose Gray Tank Top",		//description in this specific language
    		"season": ["Fall"],						//seasons
    		"sizeRange": "S",						//string description of the size range. ex: "S-XL"
    		"options": ["GRY"],
    		"optionsTranslation": {"GRY": "Gray"}, 	//option-code to option-name translations in thie specific language 
    		"type": "I"							//I: index; T: translation
    	},
    	"price": {									//ProductPrice for the specified price tier
    		"id": 1497120,
    		"priceTierID": 1548,
    		"currency": "USD",
    		"MSRP": 30,
    		"price": 15,
    		"discount": 0,
    		"priceRange": [						//array of one or two elements, specifying the min/max 
    			10								//prices across all the skus of this product
    		],
    		"currentClass": "ProductPrice"
    	},
    	"skus": [									//all the skus of this product
    		{
    			"id": 7696290,
    			"styleNumber": "GrayTank",
    			"option": "GRY",
    			"size": "S",
    			"skuNumber": "",
    			"UPC": "",
    			"description": "",
    
    			"processingCount": 0,				//quantities tied in at-once orders with the status of "processing"
    			"completeCount": 0,				//quantities tied in at-once orders with the status of "complete"
    			"pickAndPackCount": 0,				//quantities tied in at-once orders with the status of "export"
    			"shippedCount": 0,					//quantities tied in at-once orders with the status of "shipped"
    			"pendingCount": 0,					//quantities tied in all at-once orders whose referenced inventory numbers haven't been updated since
    			"exportedCount": 0,				//quantities tied in at-once orders with the status of "exported"
    			"inventoryCount": null,				//AvailableToSell = inventoryCount - "comleted" - "exported"
    											//NOTE: null == unlimited; 0 == sold-out
    			"futureProcessingCount": 0,				//quantities tied in future orders with the status of "processing"
    			"futureCompleteCount": 0,
    			"futurePickAndPackCount": 0,
    			"futureShippedCount": 0,
    			"futurePendingCount": 0,
    			"futureExportedCount": 0,
    			"futureInventoryCount": null,
    			"futureInventoryDate": null,
    
    			"accountID": -1,
    			"brandID": 1244,
    			"objectID": null,
    			"warehouseID": -1,
    			"dateCreated": "2015-03-02 12:47:04",
    			"dateModified": "2015-03-02 12:47:04",
    			"dateInventoryModified": "2015-03-02 12:47:04", 	//date the inventoryCount attribute was changed
    			"importing": 0,
    			"isDeleted": false,
    			"isActive": true
    		}
    	],
    	"reference": "",
    	"statusSR": 0,
    	"currentClass": "Product",
    	"showroomStatuses": []
    }
    

    This method is called when you want to import a list of skus and/or their inventory either directly inline or via an Excel file or CSV file attachment. If you choose to use an attachment file, you must conform to the layout of the sample templates listed below.


    If you only need to import new inventory counts, make sure you set the import mode to inventory. This will let the API know that you're only updating numbers but not product information. It will allow the API to process much faster.

    On the other hand, if you set the mode to split or combine, the API will scan through every single column/attribute of each row/object and overwrite any of the current product information. If you do not wish to overwrite specific columns/attributes, simply don't include them in your requests.

    You will need to provide at least the Style Number, Option Code, Size or the SKU Number minimum.

    • Your HTTP Post must include enctype="multipart/form-data" for file uploading to work (RFC-186). Otherwise, the file will not be picked up.
    • It’s strongly recommended that you test out importing with a couple lines of data first.
    Parameters
    mode split - import products info and inventory counts; styles with multiple options will be split into multiple products with 1 option per product
    combine - import products info and inventory counts; styles with multiple options will be kept as a single product with multiple options
    inventory - only import the inventory counts; use this when you just want to update the inventory counts
    bypassDiff By default, in order to conserve processing power, only rows that weren’t included in the last immediate API import would be processed. Behind the scene, the server runs a diff command between the current data and the last-uploaded data. Setting this to “true” will force the server to process the data uploaded regardless.
    data An array of objects, each with information pertaining to each SKU. Assuming your showroom has a price tier of the currency "USD" and it's named "WHL", an object in your array might look like the following:

    [
    	{
    		"styleNumber": "MKD1233", 	//mandatory; style ID
    		"optionCode":"GRY", 			//mandatory; standardized manufacutring option/color code
    		"optionName":"Gray", 			//human-readable option/color name
    		"size":"S", 					//mandatory: standardized manufacturing size name
    		"skuNumber": "MKD1233-GRY-S",	//sku number
    										//must be unique across ALL styles/colors/sizes
    		"UPC": "1231232213",
    		"name": "Gray Tank",			//product name
    		"description" "Gray Tank Top made out of 100% Cotton.", //product description
    		"type": "Mens",				//product type
    		"category": "Tanks",			//product category
    		"season": "Fall 2014",			//product season
    		"priceTierName": "USD WHL",	//required if wholesale/retail prices are provided
    		"wholesale": "11",
    		"retail": "22",
    		"inventoryCount": "100",
    		"deliveryDate": "2016-02-12",	//product ship date
    		"minimumQuantity": "5"		//product order minimum quantity
    	},
    	...
    ]

    Alternatively, attach a file in the POST request (RFC-1867) under the parameter data. If you do choose to use an attachment file, columns should correspond to those provided in the sample product template. Supported formats: xls (Excel 97), xlsx (Excel 2000), csv
    brandID The Brandboom brand ID. You can find this on your account settings page.
    showroomID The Brandboom showroom ID. You can locate the showroomID in the Showroom Settings popup.
    template (optional) auto - detect the template format based on your account. If your account has a custom template, that will be used; if you're account is integrated with a Brandboom-supported backend system, the format of that system will be used. Otherwise, the default is used.
    default - use the default template

    Return
    Response Payload On success, an information object will be returned containing various statistics including the number of entries added and the number of entries deleted.

    On error, a list of errors will be returned.

    {
    	"expTime": "",
    	"controller": "ProductsApiController",
    	"method": "import",
    	"status": "true",
    	"value": {
    		"errors": [],
    		"stats": {
    			"numSkusAdded": 0,
    			"numSkusUpdated": 14,
    			"numSkusDeleted": 0,
    			"numProductsAdded": 0,
    			"numProductsUpdated": 4,
    			"numProductsDeleted": 0,
    			"numProductsAlreadySuspended": 0,
    			"numProductsNewlySuspended": 0,
    			"overQuota": false,
    			"objIDs": [
    				1541687,
    				1541688,
    				1541689,
    				1541690
    			]
    		}
    	},
    	"jsonp": null,
    	"type": "json",
    	"exceptionClass": "",==
    	"version": "3.0.0",
    	"apiVersion": "2",
    	"useRawValue": false
    }
    

    The prices of products and skus are all tied to price tiers. A price tier represents a colleciton of prices under a specific currency. You can have multiple price tiers with the same currency. For example, you can have a price tier named "USD DST" for distributors and another pirce tier named "USD WHL" for wholesalers.

    When you try to search for products and skus, you will need to specify which price tier you're referencing.

    Use this method to list all the price tiers that have been created under your account.

    URL
    GET http://manage.brandboom.com/api/v2/pricetiers/search
    Parameters

    Return
    Response Payload A list of price tier objects

    PriceTier Object

    {
    	"id": 10022,
    	"accountID": 912,
    	"brandID": 9015,
    	"name": "WHL",
    	"currency": "USD",
    	"currentClass": "PriceTier"
    }
    

    Use this method to retrieve customers. You can use this method to chceck to see if a customer with a specific CustomerCode1 and CustomerCode2 already exists on Brandboom. CustomerCode1 is usually the company name (ex: Nordstrom) and the CustomerCode2 is usually the store name (ex: Hollywood Store). Additionally, you can use the dateModified parameter to only retrieve new or recently updated entries.

    URL
    GET http://manage.brandboom.com/api/v2/customers/{customerID} , or
    http://manage.brandboom.com/api/v2/customers/search
    Parameters
    customerID (optional) Comma separated list of Brandboom Customer IDs.
    keywords (optional) Comma separated list of keywords.
    code1 (optional) Only retrieve customers with the exact matching CustomerCode1
    code2 (optional) Only retrieve customers with the exact matching CustomerCode2
    types
    (optional)
    One or more of the following: B for billing, S for shipping. The default is both billing and shipping.
    dateModified
    (optional)
    Use this parameter to retreive only customers created/updated after this date.
    numResults (optional) The number of results that you want your request to limit to. The maximum and default are 100 results per request (30 if format is xml).
    resultOffset (optional) The result offset that you want your request to start from. The default is 0 (the beginning).

    Return
    Response Payload An object with the totalNumResults and an array of Customer objects.

    Customer Object

    {
    	"id": 155389,							//read-only; Brandboom customer ID
    	"customerID": 155389,					//read-only; Brandboom customer ID
    	"accountID": 912,						//read-only
    	"customerCode1": "Nordstrom",
    	"customerCode2": "Hollywood",
    	"type": "S",							//address type. "B" for billing, "S" for shipping. blank for both.
    	"erpCode": "",							//ID of this customer in ERP system, if applicable.
    	"referenceNumber": "2147483647",		//custom reference number.
    	"vatNumber": "",
    	"buyerName": "John Smith",
    	"addressName": "Hollywood Store",
    	"address1": "343 Hollywood Blvd",
    	"address2": "",
    	"city": ""Los Angeles,
    	"state": "CA",
    	"postalCode": "90015",
    	"country": "US",
    	"phone": "(343)343-122",
    	"fax": "(343)343-3433",
    	"email": "john.smith@nordstrom.com",
    	"note": "",							//notes / comments
    	"term": "Net 30",						//default payment terms that will get applied to orders
    	"discountPercentage": "5",				//default discount percentage that will get applied to orders
    	"dateCreated": "2014-09-18 11:37:24",		//read-only
    	"dateModified": "2014-11-04 15:35:59",	//read-only
    	"currentClass": "Customer"
    }
    

    This function is called when you want to import a list of customers from an Excel/CSV file into your customers database for your Brandboom account. In order for this to work correctly, you must either conform to the layout of the sample template listed below, or request for a customized mapping of column entries.


    Excel
    Product Template
    CSV
    Product Template
    • Your HTTP Post must include enctype="multipart/form-data" for file uploading to work (RFC-186). Otherwise, the file will not be picked up.
    • It’s strongly recommended that you test out importing with a couple lines of data first.
    Parameters
    mode update - Add/update customers to the database without deleting
    overwrite - Delete the current customer database completely before adding customers
    data An array of Customer objects.

    Alternatively, attach a file in the POST request (RFC-1867) under the parameter data. If you do choose to use an attachment file, columns should correspond to those provided in the sample customer template. Supported formats: xls (Excel 97), xlsx (Excel 2000), csv
    template (optional) auto - detect the template format based on your account. If your account has a custom template, that will be used; if you're account is integrated with a Brandboom-supported backend system, the format of that system will be used. Otherwise, the default is used.
    default - use the default template

    Return
    Response Payload On success, an information object will be returned containing various statistics including the number of entries added and the number of entries deleted.

    On error, a list of errors will be returned.

    {
    	"controller": "CustomersApiController",
    	"funcName": "import",
    	"method": "import",
    	"status": "true",
    	"value": {
    		"errors": [],
    		"stats": {
    			"numCustomersUpdated": 6,
    			"numCustomersDeleted": 0
    		}
    	},
    	"jsonp": null,
    	"type": "json",
    	"exceptionClass": "",
    	"version": "3.0.0",
    	"apiVersion": "2",
    	"useRawValue": false
    }
    

    Use this method to create a Customer. Note that you can only create customers under your own account (accountID). The combination of CustomerCode1, CustomerCode2, and Type has to be unique. Ex: Nordstrom Store-012 S would be the shipping address for Store #12 of Nordstrom. If a customer with the same combination already exists, it will udpate that entry.

    URL
    POST http://manage.brandboom.com/api/v2/customers/create
    Parameters
    customer The JSON string of the Customer object

    Return
    Response Payload The new Customer object

    Use this method to update a Customer

    URL
    PUT http://manage.brandboom.com/api/v2/customers/update/{customerID}
    Parameters
    customer The JSON string of the Customer object
    Return
    Response Payload The updated Customer object

    Use this method to delete a Customer.

    URL
    DELETE http://manage.brandboom.com/api/v2/customers/delete/{customerID}

    RECOMMENDED ORDER HANDLING

    Integration between a client's system and the Brandboom API is rather straightforward. The four basic requirements are:

    1. Web service call capability
    2. Timer module to auto-sync periodically
    3. JSON/XML/CSV module to read and processed retrieved brandboom orders
    4. Internal module to link with back-end systems


    EXPORT TIMEOUT

    When an order is retrieved through a "search" request and it's been "locked", Brandboom expects your backend to issue an API request to set the status of the order to exported within 5 minutes in order to confirm that the exported order has been properly received and processed.

    Orders that are not set to exported within 5 minsutes:

    • Will be marked as timed-out
    • Will appear with a red color on the Brandboom Orders page.

    At this point, you should look at the action history of the order by expandings it on the Brandboom Orders page. Also, you should inspect the back-end system and determine if the order was properly processed. If so, either:

    • Set the order back to export then to exported on the orders page, or
    • Simply send out status API request and have the order marked as "exported".
    • Otherwise, fix the errors and try to export again.

    ORDERS VS INVOICES

    An Order contains the full list of products that a buyer wants to purchase where as an Invoice contains a subset of that Order. Often times, an Order is broken down into multiple Invoices, with each having its own ship date and payment. On Brandboom, you can run your business either with Orders only, or you can enable Invoices.

    If you want to receive credit card payments online through Brandboom, you will have to enable Invoices. Payments can only be made towards Invoices, but not Orders.

    If you decide to not use Invoices, you can still mark an entire Order as "paid" or "shipped" manually. Otherwise, you will need to handle each Invoice under the Order individually. Once all Invoices are paid/shipped then the Order will be marked paid/shipped automatically.

    To enable Invoices, please contact Brandboom.

    This method usually is called periodically to fetch the latest orders from Brandboom. The sales rep should set the order status to export when an order is ready to be picked up by the backend. Once an order is pending for export, sales reps will no longer be able to make changes to it. The backend system should then invoke this method with exportStatus=export and lock=true to fetch the order. "Lock" will automatically mark the order as "exporting" and prevent future searches with the parameter exportStatus=export from retrieving this order again by mistake.

    URL
    GET http://manage.brandboom.com/api/v2/orders/{orderID} , or
    http://manage.brandboom.com/api/v2/orders/search
    Parameters
    orderID (optional) A comma-separated list of Brandboom (numeric) Order IDs
    keywords (optional) One or more of keywords separated by spaces
    status (optional) One or more of the following order statuses are allowed: open, processing, complete, void
    shipStatus (optional) One or more of the following ship statuses are allowed: unshipped, partially-pick-and-pack*, pick-and-pack, partially-shipped*, shipped.
    payStatus (optional) One or more of the following pay statuses are allowed: unpaid, partially-paid*, paid
    exportStatus (optional) One or more of the following pay statuses are allowed: unexported, export, exporting, partially-exported*, exported
    lock
    (optional)
    If true, the orders retrieved will be updated with the status of exporting.
    orderDateStart
    (optional)
    Order date must be on or after this date in the format YYYY-MM-DD.
    orderDateEnd
    (optional)
    Order date must be on or before this date in the format YYYY-MM-DD.
    shipDateStart
    (optional)
    Ship date must be on or after this date in the format YYYY-MM-DD.
    shipDateEnd
    (optional)
    Ship date must be on or before this date in the format YYYY-MM-DD.
    showroomID (optional) Comma-delimited list of showroom IDs. If specified, only orders belonging to these showrooms will be returned. You can locate the showroomID in the Showroom Settings popup.
    numResults (optional) The number of results that you want your request to limit to. The maximum and default are 100 results per request (30 if format is xml).
    resultOffset (optional) The result offset that you want your request to start from. The default is 0 (the beginning).

    Return
    Response Payload If format is json, the response is an object with the totalNumResults and an array of Order objects.
    If format is flat, the response is a flat-file of order line items, broken down to the sku-quantity level.
    If format is xml, the response message payload will contain an <orders> node with children <order> nodes.

    Order Object

    The structure of an Order object is as follow:
     {
    	"orderID": "244314",
    	"orderRecordID": "925996",
    	"showroomID": "11594",
    	"location": {									//showroom address
    		"id": "54535",
    		"name": "",
    		"address1": "1111 S Grand Ave",
    		"address2": "PH4",
    		"city": "Los Angeles",
    		"state": "CA",
    		"postalCode": "90015",
    		"country": "US",
    		"phones": [],
    		"accountID": "",
    		"kind": "",
    		"userID": "-1",
    		"type": "",
    		"displayOptions": {},
    		"currentClass": "Location"
    	},
    	"contact": "1111 S Grand Ave PH4\nLos Angeles, CA 90015\nUS",
    	"disclaimer": "", 								//terms of sales
    	"orderDate": "2014-12-16",						//date order placed
    	"orderNumber": "RMP.2",						//auto-generated order number
    	"orderType": "future", 							//"future" or "at-once"
    	"sellerUserID": "109784",
    	"originalSellerUserID": -1,
    	"salesRepName": "Alice He",
    	"salesRepEmail": "alice@brandboom.com",
    	"salesRepCode": "",
    	"buyerUserID": "109784",
    	"buyerName": "Test",
    	"buyerPhone": "4155186513",
    	"buyerFax": "123-123-3333",
    	"buyerEmail": "alice@brandboom.com",
    	"customerPO": "2123",
    	"shipDate": "",								//ship date
    	"cancelAfter": "",								//cancel date
    	"billTo": {									//bill-to address
    		"id": "-1",
    		"name": "Brandboom",
    		"address1": "1111 S Grand Ave",
    		"address2": "",
    		"city": "Los Angeles",
    		"state": "CA",
    		"postalCode": "90015",
    		"country": "US",
    		"phones": [],
    		"accountID": "",
    		"kind": "",
    		"userID": "-1",
    		"type": "",
    		"displayOptions": {},
    		"currentClass": "Location"
    	},
    	"shipTo": {								//ship-to address
    		"id": "-1",
    		"name": "Brandboom",
    		"address1": "1111 S Grand Ave",
    		"address2": "",
    		"city": "Los Angeles",
    		"state": "CA",
    		"postalCode": "90015",
    		"country": "US",
    		"phones": [],
    		"accountID": "",
    		"kind": "",
    		"userID": "-1",
    		"type": "",
    		"displayOptions": {},
    		"currentClass": "Location"
    	},
    	"shippingInstructions": "In one box.",
    	"comments": "Please confirm before shipping.",
    	"vatNumber": "",
    	"termsOptions": [],						//available payment terms
    	"terms": "Net 30",							//selected payment terms
    	"shippingOption": "FEDEX GRND",			//shipping method
    	"customFields": [],						//array of custom fields
    	"productLines": [							//product lines
    		{
    			"productID": "1017623",
    			"styleNumber": "901",
    			"description": "90 Jeans",
    			"descriptionOnly": "90 Jeans",
    			"name": "90 Jeans",
    			"season": ["Fall-15"],
    			"MSRP": "0",
    			"locale": "en_US",
    			"sizeRange": "O/S",							//the size range this product in general; ex: XS-XL
    			"sizes": ["O/S"],								//sizes available for this product in general
    			"prepacks": [],
    			"IDH": "",									//image name of the thumb
    			"lineItems": [									//line items (per color/option)
    				{
    					"optionIndex": "GRN",					//option code
    					"optionLocal": "GREEN",				//option name
    					"sizes": ["O/S"],						//sizes available for this option
    					"prepacks": {"__": ""},
    					"skus": {								//skus of this option
    						"O/S": {
    							"quantity": "20",				//quantity ordered for this sku
    							"size": "O/S",
    							"skuNumber": "901-GRN-OS",
    							"UPC": "1232323133",
    							"isActive": true
    						}
    					},
    					"originalPrice": "50",					//price these skus were marked as
    					"actualPrice": "48",					//price these skus were sold at
    					"totalLineQuantity": "20",  				//total quantities ordered for this option
    					"totalLineValue": "960"				//total quantities ordered for this option
    				}
    			],
    			"minQTY": "5"								//minimum quantities required for this option
    		}
    	],
    	"globalDiscountPercentage":"",							//order discount percentage
    	"subtotalOrderQuantity": "20",
    	"subtotalOrderValue": "960",
    	"totalOrderQuantity": "20",
    	"totalOrderValue": "960",
    	"taxPercentage": "",									//order tax percentage
    	"shippingCost": "105.34",
    	"credit": "",											//credit amount
    	"finalInvoiceValue": "1065.34",
    	"currency": "USD",
    	"locale": "en_US",
    	"status": {
    		"fulfillStatus": "1",
    		//0:open, 1:processing, 2:completed, 4:partially-ship, 5:shipped, 6:partially-pick-and-pack, 7:pick-and-pack, 9:void
    		"deleteStatus": "0",
    		//0:normal, 1:buyer-delete, 2:seller-deleted, 3:both-deleted
    		"reviewStatus": "1",
    		//0:normal, 1:buyer-not-seen, 2:seller-not-seen
    		"exportStatus": "0",
    		//0:off, 1:export, 2:exporting, 3:exported, 5:failed
    		"reopenStatus": "0",
    		//0:not-reopened, 1:reopned (after placing)
    		"payStatus": "0"
    		//0:unpaid, 1:partial, 2:paid
    	},
    	"customer": {...}, 										//customer assigned; see Customers section
    	"tags": ["Spring 2016", "Mens"]
     }
    

    You can use this method with a GET request to inquire about the statuses of orders. Alternatively, as your backend processes orders, you can use this method with a PUT request to update the statuses of them. You should set them to:

    exported:
    when your backend has successfully imported the orders
    shipped:
    when orders have been shipped out
    paid:
    when orders have been completely paid for
    To set an order as failed during exporting, use the Orders/reject method instead.

    If an at-once order has already been set as exported and you're trying to un-export it, the exported quantities will be automatically added back into the total current inventory counts.
    • If you're using the invoicing feature (i.e. orders are split into partial payments and shipments), You are not allowed to set the status of the orders directly. You need to call the Invoice.status method instead.

    URL
    GET http://manage.brandboom.com/api/v2/orders/status, or
    PUT http://manage.brandboom.com/api/v2/orders/status
    Parameters
    id A list of comma-separated Brandboom Order IDs
    status* unshipped, pick-and-pack, shipped, unpaid, paid, unexported, export, exporting, or exported
    *Only required if you're setting the status.

    Return
    Response Payload GET: If an array of orderIDs has been provided, an associative array of order status objects with the orderIDs as the keys. If a single orderID was provide, the corresponding order status object.
    PUT: An object containing a list of the order IDs of the succeeded ones and an associative array of the failed ones. The fail error message is a simple error string in the case of general errors.
    PUT REQUEST:
    {
    	"status": false,
    	"succeeded": [12311, 34331],
    	"failed": {
    		"43122": "You don't have the permission to edit the order.",
    		"54111": "Some items in this order are no longer in stock or in the stock amount initially requested"
    	}
    }
    GET REQUEST:
    {
    	"status": true,
    	"value": {
    		"12311": {
    			"fulfillStatus": 0,
    			"deleteStatus": 0,
    			"reviewStatus"; 0,
    			"exportStatus": 0,
    			"reopenStatus": 0,
    			"payStatus": 0
    		}
    	}
    }
    

    Supplementary to the status method, this method should be called when your backend system determines that orders feteched through search are invalid (ex: if your backend can't find a matching result for the customer specified in the order). Calling this function will set the orders as erroneous. The reasons given will be logged in the revision history.

    URL
    PUT http://manage.brandboom.com/api/v2/orders/reject
    Parameters
    orderIDs A list of comma-separated pairs of Brandboom-Order-IDs and rejection reasons, delimited by the vertical bar character. ex: 2344|Invalid Payment Terms, 3444|Duplicate Order
    Return
    Response Payload A list of Brandboom Order IDs that have been successfully rejected
    • If an order ID refers to an order that's no longer available, it will simply be ignore.

    You can use this method with a GET request to inquire about the shipping details of a specific order. Alternatively, as your backend fulfills and ships an order, you can use this method with a PUT request to update its shipping details.

    • If you're using the invoicing feature (i.e. orders are split into partial payments and shipments), you are not allowed to set the shipping details of the order directly. You need to call the Invoice.shippingDetails method instead.

    URL
    GET http://manage.brandboom.com/api/v2/orders/shippingDetails/{orderID}, or
    PUT http://manage.brandboom.com/api/v2/orders/shippingDetails/{orderID}
    Parameters
    details You can set one ore more of the following attributes:
    shippingCost:
    The numeric shipping amount; when updated, it will trigger order final total to recalculate.
    shippingOption:
    The shipping option/method.
    shippingInstructions:
    Any instructions that should be indicated. Additionally, this's where you would want to specify extra details like tracking number, tracking status, etc.

    Return
    Response Payload An object containing the shipping details
    {
    	"status": true,
    	"value": {
    		"shippingCost": "35.30",
    		"shippingOption": "FEDEX",
    		"shippingInstruction": "In one box. Tracking#: 1231 1231 4433 32."
    	}
    }
    

    Invoices/search

    Use this method to search for invoices. Use the first URL format to grab a specific invoice, or use the later to grab all invoices tied to an order. "Lock" will automatically mark the invoice as exporting and prevent future searches with the parameter status=export from retrieving this order again by mistake.

    URL
    GET http://manage.brandboom.com/api/v2/invoices/{invoiceID} , or
    http://manage.brandboom.com/api/v2/invoices/search
    Parameters
    invoiceID (optional) A comma-separated list of Brandboom invoiceIDs
    orderID (optional) A comma-separated list of Brandboom orderIDs whose invoices we want to fetch
    keywords (optional) One or more of keywords separated by spaces
    status (optional) A comma-separated list of the following invoice statuses: unshipped, pick-and-pack, shipped, unpaid, partially-paid, paid, unexported, export, exporting, exported
    lock (optional) If true, the invoices retrieved will be updated with the status of exporting
    orderDateStart
    (optional)
    Order date must be on or after this date in the format YYYY-MM-DD
    orderDateEnd
    (optional)
    Order date must be on or before this date in the format YYYY-MM-DD
    shipDateStart
    (optional)
    Ship date must be on or after this date in the format YYYY-MM-DD
    shipDateEnd
    (optional)
    Ship date must be on or before this date in the format YYYY-MM-DD
    invoiceDateStart
    (optional)
    Invoice date must be on or after this date in the format YYYY-MM-DD
    invoiceDateEnd
    (optional)
    Invoice date must be on or before this date in the format YYYY-MM-DD
    numResults (optional) The number of results that you want your request to limit to. The maximum and default are 100 results per request (30 if format is xml)
    resultOffset (optional) The result offset that you want your request to start from. The default is 0 (the beginning)

    Return
    Response Payload An object with the totalNumResults and an array of Invoice objects

    Invoice Object

    The structure of an Invoice object is as follow:
    {
    	"id": 3,
    	"orderID": 588891, 					//read-only
    	"accountID": 912,						//read-only
    	"showroomID": 11594, 					//read-only
    	"orderNumber": "RMP.5", 				//read-only
    	"invoiceIndex": 1,						//read-only
    	"invoiceNumber": "RMP.5.1", 			//read-only; generated by Brandboom
    	"invoiceDate": "2015-04-28",
    	"productIDs": [ 						//Brandboom IDs of products on this invoice;
    	  "1402756" 							//must be alreday listed in the corresponding Order
    	],
    	"productLines": { 						//read-only; loaded based on Invoice.productIDs
    		"1402756": {
    			"productID": "1402756",
    			"styleNumber": "test111",
    			"description": "testing111",
    			"descriptionOnly": "testing111",
    			"name": "testing111",
    			"season": ["North Skull"],
    			"MSRP": "5",
    			"locale": "en_US",
    			"sizeRange": "XS-5XL",
    			"sizes": ["XS", "S", "SM", "M", "MD", "L", "LG", "XL", "XX", "XXL", "5XL"],
    			"prepacks": [],
    			"IDH": "",
    			"lineItems": [
    			 	{
    					"optionIndex": "YW",
    					"optionLocal": "yellow",
    					"sizes": ["XS", "S", "SM", "M", "MD", "L", "LG", "XL", "XX", "XXL", "5XL"],
    					"prepacks": {},
    					"skus": {
    						"SM": {
    							"quantity": "1",
    							"size": "SM",
    							"skuNumber": "test111-YW-SM",
    							"UPC": ""
    						},
    						"M": {
    							"quantity": "3",
    							"size": "M",
    							"skuNumber": "test111-YW-M",
    							"UPC": "",
    						}
    					},
    					"originalPrice": "5",
    					"actualPrice": "5",
    					"totalLineQuantity": "4",
    					"totalLineValue": "20"
    				}
    			],
    			"minQTY": "1",
    			"removedSizes": []
    		}
    	},
    	"currency": "GBP", 					//read-only
    	"invoiceAmount": 200, 					//read-only; automatically calculated
    	"shippingMethod": "FEDEX GRND",
    	"shippingInstructions": "In One Box",
    	"shippingCost": 30,
    	"shipDate": "2015-02-12",
    	"shipStatus": 0,						//read-only; use Invoice/status to update
    	"trackingNumber": "",
    	"comments": "Testing order.",
    	"paymentMethod": "Credit Card",
    	"paidAmount": 0, 						//read-only; calculated from Payments
    	"taxAmount": 0,
    	"exportStatus": 0,						//read-only; use Invoice/status to update
    	"exportError": "",
    	"payStatus": 0, 						//read-only; determined from Payments
    										//0: Unpaid, 1: Partial, 2: Paid
    	"reviewStatus": 0, 						//read-only
    										//0: Not Sent, 1: Sent; 2: Opened
    	"dateCreated": "2015-04-28 00:44:08",		//read-only
    	"dateModified": "2015-04-28 00:55:52", 	//read-only
    	"currentClass": "Invoice"
    }
    

    Use this method to create an invoice tied to an order. You can either pass in a list of productIDs or the JSON string of of the Invoice object. Please make sure product IDs provided already exist on the corresponding Order.

    • You cannot add a product directly onto an invoice without having added it to the order first.
    • You cannot modify the statuses of an invoice directly. Please use Invoice/status instead

    URL
    POST http://manage.brandboom.com/api/v2/invoices/create
    Parameters
    orderID The Brandboom orderID
    productIDs The Brandboom productIDs of products that we want to tie to this Invoice.
    invoice* The JSON string of the Invoice object. Only required if productIDs has not been provided.

    Return
    Response Payload The new Invoice object

    Use this method to update an invoice tied to an order. Note that read-only attributes will not be overwritten. To update the line items on an Invoice, modify the productIDs attribute instead. Also, please make sure these product IDs already exist on the corresponding Order. Note that attributes pertaining to invoice statuses will not be updated via this method.

    • You cannot add a product directly onto an invoice without having added it to the order first.
    • You cannot modify the statuses of an invoice directly. Please use Invoice/status instead

    URL
    PUT http://manage.brandboom.com/api/v2/invoices/update/{invoiceID}
    Parameters
    invoice The JSON string of the Invoice
    Return
    Response Payload The updated Invoice object

    You can use this method to query the status of invoices. Alternatively, as your backend processes invoices, you can use this method to update the status of them. You should set them to:

    exported
    when your backend has successfully imported the invoices
    pick-and-pack
    when the invoices have been picked and packed
    shipped
    when the invoices have been shipped out

    When you mark an invoice as shipped, if there're no more uninvoiced products on the corresponding order from, the order will be marked as shipped automatically. Otherwise, it will be marked as partially-shipped. Furthermore, if no invoices have been set as shipped and if you decide to set one of them as pick-and-pack, the corresponding order will be set as pick-and-pack as well.

    Unlike orders, you cannot mark an invoice as paid directly. As soon as you have added payments (either manually or through the payment API) to the invoice, it will be marked as partially-paid or paid automatically. Once all products have been invoiced and paid for, the order will be marked as paid.

    URL
    GET http://manage.brandboom.com/api/v2/invoices/status, or
    PUT http://manage.brandboom.com/api/v2/invoices/status
    Parameters
    id A list of comma-separated Invoice IDs
    status* unshipped, pick-and-pack, shipped, unexported, export, exporting, exported
    *Only required if you're setting the status
    Return
    Response Payload GET: If multiple invoice IDs have been provide, an associative array of Invoice status objects with invoice IDs as the keys. If a singel invoice ID has been provided, the Invoice status object.
    PUT: An object containing a list of the invoice IDs of the succeeded ones and an associative array of the failed ones.
    GET REQUEST:
    {
    	"status": true,
    	"value: {
    		"12311": {
    			"shipStatus": 0,
    			"payStatus": 0,
    			"exportStatus": 0,
    			"deleteStatus": 0
    		}
    	}
    }
    PUT REQUEST:
    {
    	"status": false,
    	"succeeded": [12311, 34331],
    	"failed": {
    		"43122": "You don't have the permission to edit the invoice."
    	}
    }
    

    You can use this method with a GET request to inquire about the shipping details of an invoice. Alternatively, as your backend fulfills and ships an invoice, you can use this method with a PUT request to update its shipping details.

    URL
    GET http://manage.brandboom.com/api/v2/invoices/shippingDetails/{invoiceID}, or
    PUT http://manage.brandboom.com/api/v2/invoices/shippingDetails/{invoiceID}
    Parameters
    details You can set one ore more of the following attributes:
    shippingCost:
    The numeric shipping amount; when updated, it will trigger invoice final total to recalculate.
    shippingMethod:
    The shipping option/method.
    shippingInstructions:
    Any instructions that should be indicated.
    trackingNumber:
    The tracking number.

    Return
    Response Payload An object containing the shipping details
    {
    	"status": true,
    	"value": {
    		"shippingCost": "35.30",
    		"shippingOption": "FEDEX",
    		"shippingInstruction": "In one box. ",
    		"trackingNumber": "1231 1231 4433 32."
    	}
    }
    

    Use this method to send a notification to the buyer's email address. Once sent, the buyer will have access to the invoice online from now.

    URL
    POST http://manage.brandboom.com/api/v2/invoices/send/{invoiceID}

    Use this method to delete an invoice. If there're payments tied to an Invoice, you won't be able to delete it. Please delete all associated payments before deleting the Invoice.

    URL
    DELETE http://manage.brandboom.com/api/v2/invoices/delete/{invoiceID}

    Use this method to search for payments. Use the first URL format to retrieve a payment by ID, or provide the invoice ID to get a list of payments tied to that invoice.

    URL
    GET http://manage.brandboom.com/api/v2/payments/{paymentID} , or
    http://manage.brandboom.com/api/v2/payments/search
    Parameters
    paymentID A comma-separated list of payment IDs. Required if invoiceID not provided.
    invoiceID (optional) The ID of invoices whose payments should be fetched

    Return
    Response Payload An object with the totalNumResults and an array of Payment objects

    Payment Object

    {
    	"id": 5, 								//read-only
    	"invoiceID": 106, 						//read-only after creation
    	"accountID": 912,						//read-only
    	"showroomID": 11594,					//read-only
    	"userID": 1, 							//read-only
    	"method": 1,							//0: Credit Card, 1: Debit Card, 2: Check, 3: Bank Transfer
    										//4: Cash, 5: Credit, 6: ACH, 7: Other, 
    										//8: Stripe Credit Card (via Front End only)
    	"amount": "12.50",						//period-divided (not comma) decimal amount
    	"currency": "GBP",						//read-only; copied from Invoice
    	"cardType": "Visa", 					//only applicable if method is "Credit Card"
    	"lastFour": "3433",						//only applicable if method is "Credit Card"
    	"stripeChargeID": "ch_164FrKAD2fXH91u5SAtJhImX",
    										//read-only; only applicable if method is Stripe Credit Card
    	"notes": "Test payment.",
    	"date": "2015-05-14",
    	"dateCreated": "2015-05-14 22:46:21",		//read-only
    	"dateModified": "2015-05-14 22:46:21", 	//read-only
    	"status": "0",							//read-only; 0: Active, 1: Partially Refunded, 2: Refunded
    	"currentClass": "Payment"
    }
    

    Use this method to create a payment record for an Invoice. The invoiceID must be provided in the Payment JSON. If you don't specify a payment amount or if the amount is 0, it will default to the remaining balance.

    To receive credit card payments diretly on Brandboom, you must set up a Stripe account and link it on your account. This all can be done on your account page directly. The payment method of Stripe Credit Card is only available via the front end. A Stripe fee of 2.7% and a transaction fee of 30 cents will be placed on each transaction.

    URL
    POST http://manage.brandboom.com/api/v2/payments/create
    Parameters
    payment The JSON string of the Payment object.

    Return
    Response Payload The new Payment object

    Use this method to update a payment tied to an invoice. Note that read-only attributes will not be overwritten.

    URL
    PUT http://manage.brandboom.com/api/v2/payments/update/{paymentID}
    Parameters
    payment The JSON string of the Payment object

    Return
    Response Payload The updated Payment object

    Use this method to refund a payment of type Stripe Credit Card. Only credit card payments processed via Stripe on Brandboom can be refunded.

    URL
    PUT http://manage.brandboom.com/api/v2/payments/refund/{paymentID}
    Parameters
    amount The amount to be refunded

    Return
    Response Payload The updated Payment object

    Use this method to delete a payment. If the payment was a Stripe Credit Card payment, you must also specify whether you want to refund the entire transaction.

    URL
    DELETE http://manage.brandboom.com/api/v2/payments/delete/{paymentID}
    Parameters
    refund Required if the payment is an Online Credit Card (Stripe) payment. You must specify whether you want to refund the entire transaction. true or false