### Getting Started with SOAP API
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_kb_id=b02d13c91bd5d1d42d9eea40604bcb2e
Steps for developers to get started with the ChannelAdvisor SOAP API, including setting up API access, understanding capabilities, and seeking support.
```APIDOC
## Getting Started with SOAP API
### Description
Follow these steps to begin integrating with the ChannelAdvisor SOAP API.
### Method
N/A (Getting Started Guide)
### Endpoint
N/A
### Parameters
N/A
### Request Example
N/A
### Response
N/A
### Steps for Developers
1. **Set up API Access**: Refer to the "Understanding Security" page for instructions.
2. **Explore Capabilities**: Review the "Intro to Integrations" guide.
3. **Review Examples**: Examine provided Code Samples and the "Application Example - Exporting Orders".
4. **Ask Questions**: Join the ChannelAdvisor Developer Network Google Group.
5. **Troubleshoot Errors**: Contact ChannelAdvisor support, providing full XML request and response.
```
--------------------------------
### Ruby soap4r Ping API Setup
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_id=3b5d57492fd15994cffb5ff62799b63c
This Ruby code demonstrates how to set up a client using soap4r to interact with the ChannelAdvisor API. It includes instructions for installation and client generation, along with a basic client authentication handler.
```ruby
-- install soap4r
gem install soap4r
-- create client
ruby wsdl2ruby --wsdl https://api.channeladvisor.com/ChannelAdvisorAPI/v1/CartService.asmx?WSDL --type client --force
-- this generates the following files:
CartServiceClient.rb
default.rb
defaultdriver.rb
defaultMappingRegistry.rb
-- Create a new test.rb file, with this Ruby code:
#!/usr/bin/env ruby
require 'rubygems'
require_gem 'soap4r'
require 'defaultDriver.rb'
require 'soap/header/simplehandler'
class ClientAuthHeaderHandler < SOAP::Header::SimpleHandler
APICredentialsName = XSD::QName.new('http://api.channeladvisor.com/webservices/', 'APICredentials')
DeveloperKeyName = XSD::QName.new('http://api.channeladvisor.com/webservices/', 'DeveloperKey')
PasswordName = XSD::QName.new('http://api.channeladvisor.com/webservices/', 'Password')
def initialize(userid, passwd)
super(APICredentialsName)
@userid = userid
@passwd = passwd
end
def on_simple_outbound
{PasswordName => @passwd, DeveloperKeyName => @userid}
end
end
endpoint_url = 'https://api.channeladvisor.com/ChannelAdvisorAPI/v1/orderService.asmx'
obj = CartServiceSoap.new(endpoint_url)
```
--------------------------------
### Example: Updating Quantity and Retrieving Product Data
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_id=9d1ddb891bd5d1d42d9eea40604bcb71
This is a practical example demonstrating how to combine multiple operations within a single batch request. It includes two quantity updates and a GET request to retrieve product data, highlighting the critical role of line breaks for proper execution.
```http
--batch
Content-Type: multipart/mixed; boundary=changeset
--changeset
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: 1
PUT https://api.channeladvisor.com/v1/Products(12345)/Quantities HTTP/1.1
Content-Type: application/json
{
"ProductID": 12345,
"Quantity": 10,
"UpdateType": "Unshipped"
}
--changeset
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: 2
PUT https://api.channeladvisor.com/v1/Products(67890)/Quantities HTTP/1.1
Content-Type: application/json
{
"ProductID": 67890,
"Quantity": 5,
"UpdateType": "Unshipped"
}
--changeset
Content-Type: application/http
Content-Transfer-Encoding: binary
Content-ID: 3
GET https://api.channeladvisor.com/v1/Products(12345) HTTP/1.1
--changeset--
--batch--
```
--------------------------------
### Python: Ping ChannelAdvisor Inventory Service with SUDS and Logging
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_id=3b5d57492fd15994cffb5ff62799b63c
This Python example utilizes the SUDS library to interact with the ChannelAdvisor Inventory Service. It includes instructions for installing the library and configuring logging to view SOAP messages during the 'Ping' operation.
```python
from suds.client import Client
import logging
# Set logging to DEBUG so we can see the SOAP messages.
logging.basicConfig(level = logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
# Specify Login Information?
api_key = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
api_password = 'xxxxxxx'
# Specify URLs
wsdl_url = 'https://api.channeladvisor.com/ChannelAdvisorAPI/v5/InventoryService.asmx?WSDL'
service_url = 'https://api.channeladvisor.com/ChannelAdvisorAPI/v5/InventoryService.asmx'
# Initialize client.
client = Client(wsdl_url, location = service_url)
# Pass login information
login = client.factory.create('APICredentials')
login.DeveloperKey = api_key
login.Password = api_password
client.set_options(soapheaders=login)
# Initiate request
result = client.service.Ping()
```
--------------------------------
### Example Request for Product Labels and Data (v2)
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_id=0dec97c52fd15994cffb5ff62799b626
An example of a GET request to the ChannelAdvisor API v2, showing how to filter for a label named 'Shoes' and expand the 'Product' entity. An access token is required for authentication.
```http
GET https://api.channeladvisor.com/v1/ProductLabels?access_token=xxxxxxxxxx&$filter=Name eq 'Shoes'&$select=Product&$expand=Product
```
--------------------------------
### Example Request for Retrieving Product Labels (ChannelAdvisor API)
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_kb_id=ed6f7f3033182e50ae51a5373e5c7be9
An example GET request to retrieve labels for a specific product using its ProductID and an access token.
```HTTP
GET https://api.channeladvisor.com/v1/Products(22223456)/Labels?access_token=xxxxxxxxxx
```
--------------------------------
### Retrieve All Products (GET Request)
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_id=05ec9b491bd5d1d42d9eea40604bcb08
This example demonstrates how to retrieve all available products from the ChannelAdvisor system using a GET request. It requires an access token and allows for paging through results. The response includes a collection of product objects.
```http
GET https://api.channeladvisor.com/v1/Products?access_token=xxxxxxxxxx
```
--------------------------------
### Get Order List Example (SOAP API)
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_id=be5d930d1bd5d1d42d9eea40604bcbd6
This is a basic example of calling the GetOrderList API method to retrieve orders. It serves as a starting point for fetching order data. For more advanced filtering, refer to the OrderCriteria documentation.
```xml
1.0
2023-01-01T00:00:00
```
--------------------------------
### Webhook Authentication Examples
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_kb_id=a6a1ab8cfbeea6d00d21fefd6eefdcd3
Examples demonstrating how to receive webhook events with different authentication methods.
```APIDOC
## Webhook Event Reception
### CustomHeader Authentication
#### Description
Example of receiving a webhook event with custom header authentication.
#### Method
POST
#### Endpoint
`https://yourwebhookserver.com`
#### Request Headers
- **content-length**: (string) - The length of the request body.
- **signature**: (string) - The signature for verifying the webhook request.
- **my-custom-header**: (string) - Your custom API key.
- **content-encoding**: (string) - The encoding of the request body.
- **content-type**: (string) - The content type of the request body.
#### Request Body Example
```json
{
"schema": "/v1/orders/paymentcleared",
"eventDateUtc": "2022-04-19T21:12:01.7689095Z",
"webhookId": 142,
"payload": {
"ID": 21870793,
"ProfileID": 12345678,
"SiteID": 587,
"SiteName": "Checkout Direct",
"UserDataPresent": 1,
"UserDataRemovalDateUTC": null
}
}
```
### BasicAuth Authentication
#### Description
Example of receiving a webhook event with Basic Authentication.
#### Method
POST
#### Endpoint
`https://yourwebhookserver.com`
#### Request Headers
- **content-length**: (string) - The length of the request body.
- **signature**: (string) - The signature for verifying the webhook request.
- **Authorization**: (string) - Basic authentication token.
- **content-encoding**: (string) - The encoding of the request body.
- **content-type**: (string) - The content type of the request body.
#### Request Body Example
```json
{
"schema": "/v1/orders/paymentcleared",
"eventDateUtc": "2022-04-19T21:12:01.7689095Z",
"webhookId": 142,
"payload": {
"ID": 21870793,
"ProfileID": 12345678,
"SiteID": 587,
"SiteName": "Checkout Direct",
"UserDataPresent": 1,
"UserDataRemovalDateUTC": null
}
}
```
```
--------------------------------
### SynchInventoryItemList Request Example (XML)
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_id=ab5d57492fd15994cffb5ff62799b64c
This snippet shows the raw XML structure for a SynchInventoryItemList request. It includes placeholders for API credentials, account ID, and detailed inventory item information such as SKU, title, descriptions, pricing, and distribution center details. This is a foundational example for submitting inventory data.
```xml
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
```
--------------------------------
### Example Orders Response - JSON
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_kb_id=f90ddfc52fd15994cffb5ff62799b625
This is an example JSON response from a successful GET request to the Orders endpoint. It illustrates the structure of the returned order data, highlighting key fields like 'ID', 'ProfileID', 'SiteID', and 'SiteAccountID', which is essential for differentiating between multiple seller accounts.
```JSON
{
"@odata.context": "https://api.channeladvisor.com/v1/$metadata#Orders",
"value": [
{
"ID": 2218523,
"ProfileID": 12345678,
"SiteID": 640,
"SiteName": "Amazon Seller Central - US",
"UserDataPresent": 1,
"UserDataRemovalDateUTC": null,
"SiteAccountID": 6583,
"SiteOrderID": "111-4014611-5228246",
"SecondarySiteOrderID": null,
"SellerOrderID": null
},
{
"ID": 2401142,
"ProfileID": 12345678,
"SiteID": 640,
"SiteName": "Amazon Seller Central - US",
"UserDataPresent": 1,
"UserDataRemovalDateUTC": null,
"SiteAccountID": 6722,
"SiteOrderID": "111-358131-6855589",
"SecondarySiteOrderID": null,
"SellerOrderID": null
}
],
"@odata.nextLink": "https://api.channeladvisor.com/v1/Orders?access_token=xxxxxxxxxx&$skip=20"
}
```
--------------------------------
### Quantity Request Examples
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_kb_id=c0ec1b491bd5d1d42d9eea40604bcb8d
Examples demonstrating various quantity management operations.
```APIDOC
## Quantity Request Examples
### Description
Provides code examples for common quantity management tasks.
### Examples
* Infinite Quantity
* Remove Quantity from Single DC
* Retrieve Product Distribution Center Quantities
* Update Quantity - Choose Update Type (Multi-DC Update)
* Update Quantity - Choose Update Type (Single DC Update)
* Update Quantity - Define Unshipped Quantity on a Single Product
```
--------------------------------
### Custom Header Example
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_kb_id=3b1d9f891bd5d1d42d9eea40604bcba0
Example of how to include a custom header with a secret API key value for authentication.
```json
"signature": "t=1648571812708, vcurrent=/XbxwepkUcAzl+ahg98ggWyzOIOvRalC7tIfB04KEtM=",
"my-custom-header": "my-secret-api-ke"
```
--------------------------------
### Cancellation Started Payload Structure Example (JSON)
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_kb_id=971d5f891bd5d1d42d9eea40604bcba4
This JSON structure outlines the expected format of the payload for a 'Cancellation Started' event. It includes the schema, event date, webhook ID, and a payload object containing either OrderItemAdjustment or OrderAdjustment details, along with the complete order information.
```json
{
"schema": "/v1/adjustments/eventschemaname",
"eventDateUtc": "YYYY-MM-DDTHH:mm:ss.mssssssZ",
"webhookId": 80,
"payload": {
"OrderItemAdjustment": {
OrderItemAdjustmentContent
},
"Order": {
all Order properties,
"Items": [{
item properties and collections,
"Adjustments": [{
the same OrderItemAdjustmentProperties that
triggered the event
}],
"OrderItemAttributes": [{
order item attribute properties
}],
}],
"Fulfillments": [{
fulfillment properties and collections
}],
"OrderAttributes": [{
order attributes properties
}]
}
}
}
```
--------------------------------
### Submit Order API Example
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_kb_id=b03d9b092fd15994cffb5ff62799b6d1
This example demonstrates how to submit a single order using the ChannelAdvisor SOAP API. It includes authentication details, order information, billing, payment, shopping cart, and shipping details.
```APIDOC
## POST /api/orders
### Description
Submits a single order to ChannelAdvisor. This endpoint allows for detailed order creation, including buyer information, items, and shipping preferences.
### Method
POST
### Endpoint
/api/orders
### Parameters
#### Request Body
- **accountID** (string) - Required - The account ID for the ChannelAdvisor account.
- **order** (object) - Required - Contains all details for the order.
- **OrderTimeGMT** (string) - Required - The date and time the order was placed in GMT.
- **ClientOrderIdentifier** (string) - Optional - A unique identifier for the order from the client system.
- **OrderStatus** (object) - Required - Status of the order.
- **CheckoutStatus** (string) - Required - The checkout status (e.g., NoChange, Canceled).
- **CheckoutDateGMT** (string) - Required - The date and time of checkout in GMT.
- **PaymentStatus** (string) - Required - The payment status (e.g., NoChange, Paid).
- **PaymentDateGMT** (string) - Required - The date and time of payment in GMT.
- **ShippingStatus** (string) - Required - The shipping status (e.g., NoChange, Shipped).
- **ShippingDateGMT** (string) - Required - The date and time of shipping in GMT.
- **BuyerEmailAddress** (string) - Required - The email address of the buyer.
- **EmailOptIn** (boolean) - Required - Indicates if the buyer has opted in for emails.
- **ResellerID** (string) - Optional - The ID of the reseller, if applicable.
- **BillingInfo** (object) - Required - Billing address details.
- **AddressLine1** (string) - Required - The first line of the billing address.
- **AddressLine2** (string) - Optional - The second line of the billing address.
- **City** (string) - Required - The billing city.
- **Region** (string) - Required - The billing state or region.
- **PostalCode** (string) - Required - The billing postal code.
- **CountryCode** (string) - Required - The billing country code (e.g., US).
- **CompanyName** (string) - Optional - The billing company name.
- **JobTitle** (string) - Optional - The billing job title.
- **Title** (string) - Optional - The billing title (e.g., Mr., Ms.).
- **FirstName** (string) - Required - The billing first name.
- **LastName** (string) - Required - The billing last name.
- **Suffix** (string) - Optional - The billing suffix (e.g., Jr., Sr.).
- **PhoneNumberDay** (string) - Optional - The billing phone number during the day.
- **PhoneNumberEvening** (string) - Optional - The billing phone number in the evening.
- **PaymentInfo** (object) - Required - Payment details.
- **PaymentType** (string) - Optional - The type of payment (e.g., CreditCard, PayPal).
- **CreditCardLast4** (string) - Optional - The last 4 digits of the credit card.
- **PayPalID** (string) - Optional - The PayPal transaction ID.
- **MerchantReferenceNumber** (string) - Optional - The merchant's reference number.
- **PaymentTransactionID** (string) - Optional - The payment transaction ID.
- **GoogleTransactionID** (string) - Optional - The Google Checkout transaction ID.
- **ShoppingCart** (object) - Required - Contains details of items in the shopping cart.
- **CartID** (string) - Required - The ID of the shopping cart.
- **CheckoutSource** (string) - Required - The source of the checkout (e.g., Demandware_Checkout).
- **VATTaxCalculationOption** (string) - Required - VAT tax calculation option.
- **VATShippingOption** (string) - Required - VAT shipping option.
- **LineItemSKUList** (array) - Required - A list of line items in the order.
- **OrderLineItemItem** (object) - Required - Details of a single line item.
- **LineItemType** (string) - Required - Type of the line item (e.g., SKU).
- **UnitPrice** (number) - Required - The unit price of the item.
- **LineItemID** (string) - Required - The ID of the line item.
- **AllowNegativeQuantity** (boolean) - Required - Whether negative quantities are allowed.
- **Quantity** (integer) - Required - The quantity of the item.
- **ItemSaleSource** (string) - Required - The source of the item sale.
- **SKU** (string) - Required - The Stock Keeping Unit of the item.
- **Title** (string) - Required - The title of the item.
- **BuyerUserID** (string) - Required - The buyer's user ID.
- **BuyerFeedbackRating** (integer) - Required - The buyer's feedback rating.
- **SalesSourceID** (string) - Optional - The sales source ID.
- **VATRate** (number) - Required - The VAT rate for the item.
- **ShippingInfo** (object) - Required - Shipping address details.
- **AddressLine1** (string) - Required - The first line of the shipping address.
- **AddressLine2** (string) - Optional - The second line of the shipping address.
- **City** (string) - Required - The shipping city.
- **Region** (string) - Required - The shipping state or region.
- **PostalCode** (string) - Required - The shipping postal code.
- **CountryCode** (string) - Required - The shipping country code (e.g., US).
- **CompanyName** (string) - Optional - The shipping company name.
- **JobTitle** (string) - Optional - The shipping job title.
- **Title** (string) - Optional - The shipping title (e.g., Mr., Ms.).
- **FirstName** (string) - Required - The shipping first name.
- **LastName** (string) - Required - The shipping last name.
- **Suffix** (string) - Optional - The shipping suffix (e.g., Jr., Sr.).
- **PhoneNumberDay** (string) - Optional - The shipping phone number during the day.
- **PhoneNumberEvening** (string) - Optional - The shipping phone number in the evening.
- **ShipmentList** (array) - Optional - A list of shipments for the order.
- **ShippingInstructions** (string) - Optional - Special shipping instructions.
### Request Example
```xml
---
---
---
2006-09-06T03:23:00
NoChange
2006-09-06T03:23:00
NoChange
2006-09-06T03:23:00
NoChange
2006-09-06T03:23:00
address@domain.com
false
186 Example Street
Morrisville
NC
27560
US
First
Last
0
Demandware_Checkout
Unspecified
Unspecified
SKU
6.39
0
false
2
DIRECT_SALE
Disco Lights1
Test Title
username
0
0
2701 Shipping Circle
Morrisville
NC
27560
US
John
Doe
Fragile
```
### Response
#### Success Response (200)
- **SubmitOrderResult** (string) - Description of the result of the order submission. This typically includes an order ID or a success message.
#### Response Example
```xml
Success: Order 12345 submitted successfully.
```
```
--------------------------------
### Python: Ping ChannelAdvisor Inventory Service using SUDS
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_id=3b5d57492fd15994cffb5ff62799b63c
This Python 2.5 example uses the SUDS library to connect to the ChannelAdvisor Inventory Service. It demonstrates how to initialize the client, construct a SOAP message for the 'Ping' operation, and include authentication credentials.
```python
from suds.client import Client
url = "https://api.channeladvisor.com/ChannelAdvisorAPI/v1/InventoryService.asmx?WSDL"
channel_advisor_inventory = Client(url, location="https://api.channeladvisor.com/ChannelAdvisorAPI/v1/InventoryService.asmx")
#The extra location is required because CA is https
message = """
"
login = channel_advisor_inventory.factory.create('APICredentials')
login.DeveloperKey = 'DeveloperKey'
login.Password = 'Password'
result = channel_advisor_inventory.service.addPerson(message)
```
--------------------------------
### Python: Ping ChannelAdvisor API with SUDS and Logging
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_kb_id=3b5d57492fd15994cffb5ff62799b63c
This Python snippet utilizes the SUDS library to interact with the ChannelAdvisor API. It includes instructions for installing the library and configuring logging to view SOAP messages. The code initializes the client, sets authentication headers, and performs a 'Ping' request.
```python
# Set logging to DEBUG so we can see the SOAP messages.
from suds.client import Client
import logging
logging.basicConfig(level = logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
# Specify Login Information?
api_key = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'
api_password = 'xxxxxxx'
# Specify URLs
wsdl_url = 'https://api.channeladvisor.com/ChannelAdvisorAPI/v5/InventoryService.asmx?WSDL'
service_url = 'https://api.channeladvisor.com/ChannelAdvisorAPI/v5/InventoryService.asmx'
# Initialize client.
client = Client(wsdl_url, location = service_url)
# Pass login information
login = client.factory.create('APICredentials')
login.DeveloperKey = api_key
login.Password = api_password
client.set_options(soapheaders=login)
# Initiate request
result = client.service.Ping()
```
--------------------------------
### Image Request Examples
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_id=57dc57c52fd15994cffb5ff62799b63c
Provides examples for common Image API operations: adding/updating images, deleting images, and retrieving images.
```APIDOC
## Image Request Examples
### Description
This section provides examples for common operations performed using the Images API.
### Examples
- Add or Update Images
- Delete Images
- Retrieve Images
```
--------------------------------
### Refund Started Payload Structure Example (JSON)
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_kb_id=131d97092fd15994cffb5ff62799b6e3
This JSON structure represents the payload for a 'Refund Started' event. It includes schema information, the event date, webhook ID, and a payload containing either an OrderItemAdjustment or OrderAdjustment, along with the complete order details, including items, fulfillments, and attributes. The adjustment that triggered the event is present at the top level and also within the relevant item's adjustments collection.
```json
{
"schema": "/v1/adjustments/eventschemaname",
"eventDateUtc": "YYYY-MM-DDTHH:mm:ss.mssssssZ",
"webhookId": 80,
"payload": {
"OrderItemAdjustment": {
OrderItemAdjustmentContent
},
"Order": {
all Order properties,
"Items": [
{
item properties and collections,
"Adjustments": [
the same OrderItemAdjustmentProperties that
triggered the event
],
"OrderItemAttributes": [
order item attribute properties
]
}
],
"Fulfillments": [
fulfillment properties and collections
],
"OrderAttributes": [
order attributes properties
]
}
}
}
```
--------------------------------
### Example Success Response with Response File URL
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_kb_id=f4fcdce833aa66105ee4e7382e5c7b09
This example shows a successful response when the failed webhook event retrieval process is ready. It includes the token, status 'Ready', the time the process started, and a URL to download a JSON-formatted file containing details of the failed webhook events. This URL is valid for 15 minutes.
```JSON
{
"$id": "1",
"Token": "7B308-1A",
"Status": "Ready",
"StartedOnUtc": "2024-02-28T21:48:31.74-05:00",
"ResponseFileUrl": "https://downloads.channeladvisor.com/api/Download?e=api&purl=aHR0cHMlM2ElMmYlMmZhcHAtbG9ncy1xMDAwMi5zMy5hbWF6b25hd3MuY29tJTJmb3JkZXJzJTJmYXJjaGl2ZSUyZnJlc2VuZHdlYmhvb2tmYWlsZWRldmVudHMlMmY1MDQ1ODQlMmY1Mjc3JTJmMjYuanNvbiUzZkFXU0FjY2Vzc0tleUlkJTNkQUtJQUkySzJKT1g1WUtRNkpEQUElMjZFeHBpcmVzJTNkMTcwOTE1ODAwMiUyNlNpZ25hdHVyZSUzZGUzUlNuUXE0aHgyM0I2MFFCSTJRMzBDSVJtUSUyNTNE&key=b3JkZXJzJTJmYXJjaGl2ZSUyZnJlc2VuZHdlYmhvb2tmYWlsZWRldmVudHMlMmY1MDQ1ODQlMmY1Mjc3JTJmMjYuanNvbg==&filename=https%3a%2f%2fapp-logs-q0002.s3.amazonaws.com%2forders%2farchive%2fresendwebhookfailedevents%2f504584%2f5277%2f26.json%3fAWSAccessKeyId%3dAKIAI2K2JOX5YKQ6JDAA%26Expires%3d1709158002%26Signature%3de3RSnQq4hx23B60QBI2Q30CIRmQ%253D"
}
```
--------------------------------
### Example Response for Bundle Components
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_id=f2dc97491bd5d1d42d9eea40604bcbb0
This is an example of a successful JSON response when retrieving bundle components. It lists the ProductID, ComponentID, ProfileID, ComponentSku, and Quantity for each component within the specified bundle.
```JSON
{
"@odata.context": "https://api.channeladvisor.com/v1/$metadata#ProductBundleComponents",
"value": [
{
"ProductID": 25399103,
"ComponentID": 25030239,
"ProfileID": 12345678,
"ComponentSku": "TestSKU0000004",
"Quantity": 1
},
{
"ProductID": 25399103,
"ComponentID": 25030240,
"ProfileID": 12345678,
"ComponentSku": "TestSKU0000005",
"Quantity": 1
}
]
}
```
--------------------------------
### Example Response for Retrieving All Bundle Components
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_id=f2dc97491bd5d1d42d9eea40604bcb83
This is an example of a successful response (200 OK) when retrieving all bundle components. The response is in JSON format and includes a list of components, each with its ProductID, ComponentID, ProfileID, ComponentSku, and Quantity. This data can be used for further operations like updating component quantities or deleting components.
```json
{
"@odata.context": "https://api.channeladvisor.com/v1/$metadata#ProductBundleComponents",
"value": [
{
"ProductID": 25399103,
"ComponentID": 25030239,
"ProfileID": 12345678,
"ComponentSku": "TestSKU0000004",
"Quantity": 1
},
{
"ProductID": 25399103,
"ComponentID": 25030240,
"ProfileID": 12345678,
"ComponentSku": "TestSKU0000005",
"Quantity": 1
},
{
"ProductID": 25399103,
"ComponentID": 25030555,
"ProfileID": 12345678,
"ComponentSku": "TestSKU0000006",
"Quantity": 1
},
{
"ProductID": 25399103,
"ComponentID": 25030556,
"ProfileID": 12345678,
"ComponentSku": "TestSKU0000007",
"Quantity": 1
},
{
"ProductID": 25399103,
"ComponentID": 25030557,
"ProfileID": 12345678,
"ComponentSku": "TestSKU0000008",
"Quantity": 1
},
{
"ProductID": 25399103,
"ComponentID": 25030558,
"ProfileID": 12345678,
"ComponentSku": "TestSKU0000009",
"Quantity": 1
},
{
"ProductID": 25399103,
"ComponentID": 25030559,
"ProfileID": 12345678,
"ComponentSku": "TestSKU0000010",
"Quantity": 1
}
]
}
```
--------------------------------
### Rithum API Documentation Overview
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_kb_id=346b01763330be10ae51a5373e5c7bee
This section provides an overview of the Rithum API documentation, including version history and general guidance for getting started with API integrations.
```APIDOC
## Rithum API Documentation
### Description
Welcome to the Rithum API documentation. This website provides documentation, code samples, and other information regarding API connectivity to Rithum. The documentation describes the latest version of the REST API and V7 of the SOAP API. It is assumed that net new integrations will utilize the REST API.
### Key Information
- **Latest REST API Version**: Described in this documentation.
- **SOAP API Version**: V7.
- **New Integrations**: Recommended to use the REST API.
### Getting Started Guide
1. Read about a typical Rithum integration.
2. Request a Developer Account.
3. Create an application using the Developer Console.
4. Gain access to a Rithum account (refer to Authorization types and Request Authorization methods).
5. Learn about Rithum REST API core concepts.
6. Understand how to work with products (attributes, distribution centers, available quantity).
7. Understand how to work with orders (retrieving, creating, updating, shipping, canceling, refunding).
8. Differentiate between API production and API sandbox (test) accounts.
### Getting Help
- Review the documentation on this site and use the search feature.
- Check out the REST API FAQs or SOAP API FAQs.
- Visit the API Discussion Forums.
- Contact Software Support by creating a case (platform login required).
### Version History
- **9.0**: Last modified on 2025-10-28 by Leslie Khan
- **8.0**: Last modified on 2025-10-28 by Leslie Khan
- **7.0**: Last modified on 2025-07-23 by Leslie Khan
- **6.0**: Last modified on 2025-07-23 by Leslie Khan
- **5.0**: Last modified on 2025-05-06 by Benjamin Sharaf
- **4.0**: Last modified on 2025-05-06 by Benjamin Sharaf
- **3.0**: Last modified on 2024-06-17 by Leslie Khan
- **2.0**: Last modified on 2024-06-12 by Leslie Khan
- **1.0**: Created on 2022-09-08 by Knowledge Team
```
--------------------------------
### Install Rake and SOAP4R Gems
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_kb_id=4c6dd30d1bd5d1d42d9eea40604bcb86
Commands to install the Rake build tool and the SOAP4R library, which are prerequisites for generating Ruby proxies for SOAP web services. Version 1.5.8 of SOAP4R was used in the example.
```bash
gem install rake
gem install soap4r
# verify by examining local gems
gem list --local
```
--------------------------------
### Example Request for FBA Orders with Refunds (ChannelAdvisor API)
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_kb_id=210d17891bd5d1d42d9eea40604bcb8b
An example of a complete GET request to the ChannelAdvisor API for fetching FBA orders with refunds. This includes a placeholder for the `access_token` and demonstrates the structure of the `$filter` and `$expand` parameters as described in the documentation.
```HTTP
GET https://api.channeladvisor.com/v1/OrderItems?access_token=xxxxxxxxxx&$filter=Adjustments/Any(c:c/CreatedDateUtc gt 2018-09-01)&$select=Order &$expand=Order($expand=Fulfillments($expand=Items),Fulfillments($filter=DistributionCenterID lt 0), Items($expand=Adjustments))
```
--------------------------------
### Initiate Implicit Flow (HTTP GET)
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_kb_id=9d6fc685335696905ee4e7382e5c7bfc
This snippet shows the HTTP GET request to initiate the Implicit Flow for client-side applications. It requires the application ID, response type, requested scopes, redirect URI, and an anti-forgery token. The response is a redirect to the specified URI with the access token as a query parameter.
```http
GET https://api.channeladvisor.com/oauth2/authorize ?
client_id = [application id] &
response_type = token &
scope = orders &
redirect_uri = [redirect uri] &
state = [anti-forgery token]
```
```http
GET https://api.channeladvisor.com/oauth2/token?client_id=a1bcd3efghi340j9k0lmn0op521qrstu&response_type=token&scope=orders+inventory&redirect_uri=https%3A%2F%2Fwww.redirecturl.com%2Foauth2%2Fcallback&state=insertantiforgerytoken
```
```http
https://[redirect uri] ?
access_token = [access token] &
token_type = Bearer &
expires_in = 3600 &
state = [anti-forgery token]
```
--------------------------------
### Retrieve Orders with Specific Expansions and Filters (GET Request)
Source: https://knowledge.channeladvisor.com/kc_id=kb_article_view&sys_kb_id=910d57891bd5d1d42d9eea40604bcbb5
This example demonstrates how to retrieve orders using a GET request. It allows for filtering by export status and profile ID, and expanding related collections such as 'Items' and 'Fulfillments' to include detailed item-level information and fulfillment data. This is useful for fetching comprehensive order details for integration purposes.
```HTTP
GET https://api.channeladvisor.com/v1/Orders?access_token=xxxxxxxxxx&exported=false&$expand=Items,Fulfillments&$filter=ProfileID eq 12345678
```
=== COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.