ChannelApe V1 API Documentation
Download OpenAPI specification:Download
Invalid requests will return with a non-200 level status code. The request will also contain one to many error codes. You can look up the error code and its meaning in the below table.
500 level status codes are usually intermittent and should be retried. If you are still encountering a 500 level status code after retrying the request a few times, please open a bug on our community page and a ChannelApe team member will look into it.
Code | Enum | Message |
---|---|---|
0 | INTERNAL_SERVER_ERROR | An internal server error occurred. Please check the server logs. |
1 | USER_ALREADY_EXISTS | User already exists for email address. |
2 | INCORRECT_USERNAME_OR_PASSWORD | Invalid email or password. |
3 | INVALID_VERIFICATION_TOKEN | Invalid verification code. Please check the link in your email. |
4 | MALFORMED_AUTHORIZATION_TOKEN | A malformed authorization token was received. Please check the server logs and try again. |
5 | MALFORMED_USERNAME | Email address is not valid. |
6 | MALFORMED_PASSWORD | Password does not meet our requirements. |
7 | EXPIRED_VERIFICATION_TOKEN | Verification code has expired. Please request a new one. |
8 | USERNAME_NOT_FOUND | Could not find user for given username. |
9 | INVALID_FORGOT_PASSWORD_TOKEN | Invalid forgot password code. Please check the link in your email. |
10 | EXPIRED_FORGOT_PASSWORD_TOKEN | Password reset code has expired. Please request a new one. |
11 | EXPIRED_AUTHORIZATION_TOKEN | Authorization token has expired. Please request a new one. |
12 | INVALID_AUTHORIZATION_TOKEN | Invalid authorization token. Please check the server logs and try again. |
13 | INVALID_BUSINESS_NAME | Business name cannot be blank. |
14 | INVALID_TIME_ZONE | Provided time zone is invalid. |
15 | BUSINESS_NOT_FOUND | Requested business cannot be found. |
16 | INSUFFICIENT_BUSINESS_OWNER_PERMISSIONS | Only the business owner is allowed to perform this action. |
17 | INSUFFICIENT_BUSINESS_MEMBER_PERMISSIONS | Only a member of this business can perform this action. |
18 | USER_NOT_FOUND | Requested user cannot be found. |
19 | INSUFFICIENT_USER_PERMISSIONS | You are not authorized to update this user. |
20 | USER_ALREADY_BUSINESS_MEMBER | User cannot be added to business because they are already a member. |
21 | BUSINESS_MEMBER_NOT_FOUND | Requested business member cannot be found. |
22 | INVALID_QUERY_PARAMETERS | Request cannot be completed with given query parameters. |
23 | OWNER_DELETION_NOT_ALLOWED | Business owner cannot be removed from members list. |
24 | PRODUCT_NOT_FOUND | Product not found. |
25 | SUPPLIER_NOT_FOUND | Supplier could not be found for business. |
26 | SKU_NOT_FOUND | SKU is required for this request and could not be found. |
27 | UPC_NOT_FOUND | UPC is required for this request and could not be found. |
28 | TITLE_NOT_SET | Title is required field for this request. |
29 | INVALID_CURRENCY_CODE | Alphabetic currency code provided must be one from ISO4217. |
30 | INVALID_INVENTORY_ITEM_KEY | Inventory item key of SKU or UPC is required for business creation. |
31 | INVENTORY_ITEM_ALREADY_EXISTS | Inventory item already exists for this supplier with given index key. |
32 | INVALID_RETAIL_PRICE | Retail price must be a number greater than or equal to zero. |
33 | INVALID_WHOLESALE_PRICE | Wholesale price must be a number greater than or equal to zero. |
34 | INVALID_GRAMS | Grams must be a number greater than or equal to zero. |
35 | INVALID_QUANTITY | Quantity must be a number greater than or equal to zero. |
36 | INVENTORY_ITEM_NOT_FOUND | Inventory item could not be found for business. |
37 | SKU_DOES_NOT_MATCH_INVENTORY_ITEM_VALUE | SKU cannot be changed on an inventory item when SKU is selected as the inventory item key for the business. |
38 | UPC_DOES_NOT_MATCH_INVENTORY_ITEM_VALUE | UPC cannot be changed on an inventory item when UPC is selected as the inventory item key for the business. |
39 | NOT_SUPPLIER_OF_BUSINESS | One of the provided supplier IDs does not exist or is not a supplier of your business. |
40 | INTEGRATION_NOT_FOUND | Requested integration cannot be found. |
41 | INVALID_SUPPLIER_INTEGRATION_CREDENTIALS | Required supplier integration values were not found. |
42 | INVALID_INTEGRATION_ACTION | This action is not supported by the given integration. |
43 | MISSING_REQUIRED_VARIANT_ATTRIBUTES | Missing a required variant attribute. Please confirm your request has IDs for the title, condition, and retailPrice attributes. |
44 | VARIANT_EXISTS_CREATION_FAILURE | Cannot create variant because this variant already exists in our system. If you're trying to update this variant, please refer to the update API. |
45 | VARIANT_NOT_FOUND | Variant not found. Please check the provided SKU or UPC and Product ID. |
46 | CONDITION_REQUIRED | Attribute: condition is required. Please specify NEW, USED, or REFURBISHED as the item condition. |
47 | TITLE_REQUIRED | Attribute: title is required. Please specify title for this request. |
48 | VENDOR_REQUIRED | Attribute: vendor is required. Please specify vendor for this request. |
49 | RETAIL_PRICE_REQUIRED | Attribute: retailPrice is required. Please specify retailPrice for this request. |
50 | INTEGRATION_ALREADY_EXISTS_FOR_BUSINESS | This integration already exists for your business. |
51 | INVALID_CONDITION | Received invalid condition. Please specify NEW, USED, or REFURBISHED. |
52 | INVALID_QUANTITY_MIN | Minimum quantity must be a number greater than or equal to zero. |
53 | INVALID_QUANTITY_MAX | Maximum quantity must be a number greater than or equal to zero. |
54 | INVALID_RETAIL_PRICE_MIN | Minimum retail price must be a number greater than or equal to zero. |
55 | INVALID_RETAIL_PRICE_MAX | Maximum retail price must be a number greater than or equal to zero. |
56 | INVALID_WHOLESALE_PRICE_MIN | Minimum wholesale price must be a number greater than or equal to zero. |
57 | INVALID_WHOLESALE_PRICE_MAX | Maximum wholesale price must be a number greater than or equal to zero. |
58 | INVALID_WEIGHT_MIN | Minimum weight must be a number greater than or equal to zero. |
59 | INVALID_WEIGHT_MAX | Maximum weight must be a number greater than or equal to zero. |
60 | INVALID_QUANTITY_RANGE | Maximum quantity cannot be less than minimum quantity. |
61 | INVALID_WEIGHT_RANGE | Maximum weight cannot be less than minimum weight. |
62 | INVALID_RETAIL_PRICE_RANGE | Maximum retail price cannot be less than minimum retail price. |
63 | INVALID_WHOLESALE_PRICE_RANGE | Maximum wholesale price cannot be less than minimum wholesale price. |
64 | PRODUCT_FILTER_NOT_FOUND | Product filter could not be found. |
65 | INVALID_PRODUCT_MODIFIER_NAME | Product modifier name cannot be blank. |
66 | INVALID_PRODUCT_MODIFIER | Provided product modifier is invalid. |
67 | INVALID_PRODUCT_MODIFIER_TARGET | Provided product modifier target is invalid. |
68 | INVALID_PRODUCT_MODIFIER_VALUE | Provided product modifier value is invalid. |
69 | INVALID_CHANNEL_INTEGRATION_CREDENTIALS | Required channel integration values were not found. |
70 | CHANNEL_NOT_FOUND | Channel could not be found for business. |
71 | INVALID_INTEGRATION_TYPE | This resource cannot be used with the provided integration due to conflicting integration types. |
72 | PRODUCT_MODIFIER_NOT_FOUND | Product modifier could not be found. |
73 | PRODUCT_BLOCK_NOT_FOUND | Product block could not be found. |
74 | BUSINESS_ID_NOT_FOUND | Business ID is a required query parameter for this request. |
75 | INVALID_VARIANT_REFERENCE_QUERY_MISSING_PARAM | You must supply an inventoryItemValue or sku for this query. |
76 | PRODUCT_FILTER_USED_IN_PRODUCT_BLOCK | Product filter cannot be deleted because it is currently being used by one or many product blocks. |
77 | PRODUCT_PUSH_NOT_FOUND | Product push could not be found. |
78 | PRODUCT_FILTER_REQUIRED | Attribute: productFilterIds is required. Please specify at least one product filter ID for this request. |
79 | DUPLICATE_PRODUCT_MODIFIER_TARGET | Product push cannot have two product modifiers with the same target. |
80 | INVALID_PRODUCT_PUSH_ORDINAL | Product push ordinal must be greater than zero. |
81 | PRODUCT_FILTER_USED_IN_PRODUCT_PUSH | Product filter cannot be deleted because it is currently being used by one or many product pushes. |
82 | PRODUCT_MODIFIER_USED_IN_PRODUCT_PUSH | Product modifier cannot be deleted because it is currently being used by one or many product pushes. |
83 | PATH_DOES_NOT_EXIST | Requested path does not exist. |
84 | SERVICE_UNAVAILABLE | Service is temporarily unavailable. |
85 | INVALID_CHANNEL_SETTINGS_PRICE_TYPE | Price type for channel settings is invalid. |
86 | INVALID_CHANNEL_SETTINGS_UPDATE_FIELD | Update field for channel settings is invalid. |
87 | INVALID_CHANNEL_NAME | Channel name cannot be blank. |
88 | CHANNEL_NAME_ALREADY_EXISTS_FOR_BUSINESS | This name already exists for a channel in your business. |
89 | SHOPIFY_AUTHORIZATION_CODE_REQUIRED | Attribute: authorizationCode is required. Please specify authorization code for this request. |
90 | SHOPIFY_SUBDOMAIN_REQUIRED | Attribute: shopifySubdomain is required. Please specify shop subdomain for this request. |
91 | SHOPIFY_SUBDOMAIN_NOT_FOUND | Shopify subdomain could not be found. |
92 | INVALID_SHOPIFY_AUTHORIZATION_CODE | Shopify authorization code is invalid. |
93 | SUBSCRIPTION_EXISTS_CREATION_FAILURE | Cannot create subscription because this subscription already exists in our system. If you're trying to update this subscription, please refer to the update API. |
94 | SUBSCRIPTION_NOT_FOUND | Subscription not found for business. |
95 | DAYS_OF_WEEK_REQUIRED | At least one day of the week is required for this request and could not be found. |
96 | INVALID_DAYS_OF_WEEK | Days of week provided are invalid. |
97 | INVALID_DAILY_START_TIME_IN_MINUTES | Daily start time in minutes must be a number between 1 and 1440. |
98 | INVALID_DAILY_END_TIME_IN_MINUTES | Daily end time in minutes must be a number between 1 and 1440 that is greater than the daily start time in minutes. |
99 | INVALID_DAILY_INTERVAL_IN_MINUTES | Daily interval in minutes must be a number between 1 and 1440. |
100 | SCHEDULE_NOT_FOUND | Schedule could not be found. |
101 | RECIPE_NOT_FOUND | Recipe could not be found. |
102 | RECIPE_SOURCE_NOT_FOUND | Recipe source could not be found for business. |
103 | INVALID_RECIPE_SOURCE_TYPE | Recipe source type is invalid. |
104 | INVALID_RECIPE_SOURCE_ACTION | Recipe source action could not be found for integration. |
105 | RECIPE_TARGET_NOT_FOUND | Recipe target could not be found for business. |
106 | INVALID_RECIPE_TARGET_TYPE | Recipe target type is invalid. |
107 | INVALID_RECIPE_TARGET_ACTION | Recipe target action could not be found for integration. |
108 | DUPLICATE_RECIPE_SOURCE_AND_TARGET | Recipes source ID, type, and action cannot match recipe target ID, type, and action. |
109 | INVALID_MINUTE_OF_DAY | Minute of day must be a number between 1 and 1440. |
110 | INVALID_DAY_OF_WEEK | Day of week provided is invalid. |
111 | ACTION_NOT_FOUND | Action could not be found. |
112 | INVALID_ACTION_TARGET_TYPE | Action target type is invalid. |
113 | ACTION_ALREADY_COMPLETED | Action has already been completed. |
114 | INVALID_ACTION_HEALTH_CHECK_INTERVAL | Action health check interval must be a number between 5 seconds and 12 hours. |
115 | INVALID_ACTION_TARGET | Action target could not be found for business. |
116 | INVALID_SUPPLIER_NAME | Supplier name cannot be blank. |
117 | SUPPLIER_NAME_ALREADY_EXISTS_FOR_BUSINESS | This name already exists for a supplier in your business. |
118 | RECIPE_SOURCE_DISABLED | Recipes require enabled applications. The provided source application is currently disabled. |
119 | RECIPE_TARGET_DISABLED | Recipes require enabled applications. The provided target application is currently disabled. |
120 | ACTION_ALREADY_IN_PROGRESS | Action cannot be processed right now because another matching action is currently in progress. Please try again later. |
121 | ACTION_ON_DISABLED_CHANNEL | Action cannot be performed on a disabled channel. |
122 | COMPLETED_TASK_NOT_FOUND | Completed task could not be found. |
123 | INVALID_COMPLETED_TASK_TARGET | Completed task target could not be found for business. |
124 | INVALID_COMPLETED_TASK_TARGET_TYPE | Completed task target type is invalid. |
125 | INVALID_COMPLETED_TASK_OPERATION | Completed task operation is invalid. |
126 | ACTION_ON_DISABLED_SUPPLIER | Action cannot be performed on a disabled supplier. |
127 | INVALID_SUBSCRIPTION_ID | Subscription ID is invalid. |
128 | INVALID_SUBSCRIPTION_PRODUCT_HANDLE | Subscription product handle is invalid. |
129 | INVALID_SUBSCRIPTION_START_PERIOD | Subscription start period date is invalid. Must be a valid ISO 8601 formatted date. |
130 | INVALID_SUBSCRIPTION_END_PERIOD | Subscription end period date is invalid. Must be a valid ISO 8601 formatted date after the start period date. |
131 | INVALID_START_DATE | Start date parameter is invalid. Must be a valid ISO 8601 formatted date. |
132 | INVALID_END_DATE | End date parameter is invalid. Must be a valid ISO 8601 formatted date after the start date. |
133 | ACTION_ON_INACTIVE_SUBSCRIPTION | Action cannot be performed for business with inactive subscription. |
134 | MISSING_SUPPLIER_FILE_SETTINGS_SOURCE | At least one source is required for supplier file settings. |
135 | INVALID_SUPPLIER_FILE_SETTINGS_SOURCE_ID | Source ID for supplier file settings must be non-empty and unique. |
136 | SUPPLIER_FILE_SETTINGS_MAPPING_SOURCE_ID_NOT_FOUND | Source ID for supplier file settings mapping cannot be found in sources. |
137 | INVALID_URL | Valid URL is required. |
138 | INVALID_SUPPLIER_FILE_SETTINGS_SOURCE_JOIN_INDEX | Join index greater than or equal to zero is required for all supplier file settings sources. |
139 | INVALID_FILE_TYPE | Invalid file type. Acceptable values are CSV, TSV, and PSV. |
140 | INVALID_SUPPLIER_FILE_SETTINGS_SOURCE_AUTHORIZATION_USERNAME_KEY | Username key for supplier file settings source cannot be found for integration. |
141 | INVALID_SUPPLIER_FILE_SETTINGS_SOURCE_AUTHORIZATION_PASSWORD_KEY | Password key for supplier file settings source cannot be found for integration. |
142 | INVALID_SUPPLIER_FILE_SETTINGS_COLUMN_INDEX | Column index greater than or equal to zero is required for all supplier file setting mappings. |
143 | INVALID_SUPPLIER_FILE_SETTINGS_OPTIONS_KEY | Non-empty key is required for supplier file settings options mapping. |
144 | INVALID_SUPPLIER_FILE_SETTINGS_ADDITIONAL_FIELDS_KEY | Non-empty key is required for supplier file settings additional fields mapping. |
145 | MISSING_SUPPLIER_FILE_SETTINGS_REMOVED_FROM_FEED_TAG | Removed from feed tag is required for supplier file settings. |
146 | INVALID_UNIT_OF_MEASUREMENT | Unit of measurement must be oz, lb, g, kg, or t. |
147 | INVALID_FILE_ESCAPE_CHARACTER | Escape character for must be a valid non-newline ASCII character. |
148 | INVALID_TARGET_TYPE | Invalid target type |
149 | FILE_NOT_FOUND | File could not be found on server. |
150 | FILE_DOWNLOAD_TIMED_OUT | File could not be downloaded within time limit. |
151 | FILE_CANNOT_BE_DOWNLOADED | You do not have permission to download the file or some other server error occurred. |
152 | WALMART_PRIVATE_KEY_REQUIRED | Attribute: privateKey is required. Please specify Private Key for this request. |
153 | WALMART_CONSUMER_ID_REQUIRED | Attribute: consumerId is required. Please specify Consumer ID for this request. |
154 | INVALID_WALMART_PRIVATE_KEY | null |
155 | INVALID_WALMART_CREDENTIALS | Invalid Walmart consumerId or privateKey. |
156 | INVALID_SUBSCRIPTION_LAST_COMPLETED_TASK_USAGE_RECORDING_TIME | Subscription last completed task usage recording time is invalid. Must be a valid ISO 8601 formatted date. |
157 | INVALID_CATEGORY_MODIFIER_NAME | Category Modifier name cannot be blank. |
158 | INVALID_CATEGORY_MODIFIER_VALUE | Category Modifier value cannot be blank. |
159 | INVALID_ORDER_STATUS | Received invalid order status. Please specify OPEN, CLOSED, IN_PROGRESS, or CANCELED. |
160 | INVALID_ORDER_TOTAL_PRICE | Order total price must be a number greater than or equal to zero. |
161 | INVALID_ORDER_SUBTOTAL_PRICE | Order subtotal price must be a number greater than or equal to zero. |
162 | INVALID_ORDER_TOTAL_TAX | Order total tax must be a number greater than or equal to zero. |
163 | INVALID_ORDER_TOTAL_GRAMS | Order total grams must be a number greater than or equal to zero. |
164 | INVALID_ORDER_PURCHASED_AT_DATE | Attribute: purchasedAt is required. Order creation requires valid ISO 8601 fomatted date for purchasedAt. |
165 | INVALID_ORDER_CANCELED_AT_DATE | Order canceled at date is invalid. Must be a valid ISO 8601 formatted date. |
166 | INVALID_FULFILLMENT_STATUS | Received invalid fulfillment status. Please specify PENDING, OPEN, SUCCESS, or CANCELED. |
167 | INVALID_CHANNEL_ORDER_ID | Channel order ID cannot be blank. |
168 | DUPLICATE_CHANNEL_ORDER_ID | Duplicate channel order ID found. All channel order IDs must be unique for business. |
169 | INVALID_LINE_ITEM_ID | Line Item ID cannot be blank. |
170 | DUPLICATE_LINE_ITEM_ID | Duplicate line item ID found for order. All line items must have unique ID. |
171 | INVALID_LINE_ITEM_QUANTITY | Line item quantity must be greater than zero. |
172 | INVALID_LINE_ITEM_PRICE | Line item price must be a number greater than or equal to zero. |
173 | LINE_ITEM_REQUIRED | Attribute: lineItems cannot be empty. Line item list needs to contain at least one line item. |
174 | ORDER_NOT_FOUND | Order could not be found. |
175 | INVALID_ORDERS_QUERY | Attribute: businessId and channelId cannot be empty. Business ID or Channel ID is a required query parameter for this request. |
176 | EBAY_RU_NAME_REQUIRED | Attribute: ruName cannot be empty. Please specify eBay RuName for this request. |
177 | EBAY_AUTHORIZATION_CODE_REQUIRED | Attribute: authorizationCode cannot be empty. Please specify eBay authorization code for this request. |
178 | EBAY_MARKETPLACE_ID_REQUIRED | Attribute: marketplaceId must be valid. Please specify valid eBay Marketplace ID for this request. |
179 | EBAY_TOKEN_GENERATION_FAILED | Could not generate long lived eBay refresh token. Please retry request with new authorization code. |
180 | EBAY_INVENTORY_LOCATION_ADDRESS_REQUIRED | Attribute: address is required. Please specify valid inventory location address for this request. |
181 | EBAY_INVALID_INVENTORY_LOCATION_ADDRESS | Attribute: address is invalid. Could not create eBay inventory location using provided address. Please ensure address is valid for marketplace and try again. |
182 | EBAY_DEFAULT_FULFILLMENT_POLICY_REQUIRED | Could not find default fulfillment policy for given eBay marketplace. Please create policy within eBay and then try your request again. |
183 | EBAY_DEFAULT_RETURN_POLICY_REQUIRED | Could not find default return policy for given eBay marketplace. Please create policy within eBay and then try your request again. |
184 | EBAY_DEFAULT_PAYMENT_POLICY_REQUIRED | Could not find default payment policy for given eBay marketplace. Please create policy within eBay and then try your request again. |
185 | EBAY_SESSION_ID_REQUIRED | Arrtibue: sessionId cannot be empty. Please specify eBay Session ID for this request. |
186 | EBAY_AUTH_TOKEN_GENERATION_FAILED | Could not generate long lived eBay auth token. Please retry request with new session ID. |
187 | INVALID_ORDER_TOTAL_SHIPPING_PRICE | Order total shipping price must be a number greater than or equal to zero. |
188 | INVALID_ORDER_TOTAL_SHIPPING_TAX | Order total shipping tax must be a number greater than or equal to zero. |
189 | INVALID_LINE_ITEM_SHIPPING_PRICE | Line item shipping price must be a number greater than or equal to zero. |
190 | INVALID_LINE_ITEM_SHIPPING_TAX | Line item shipping tax must be a number greater than or equal to zero. |
191 | INVALID_SUPPLIER_FILE_SETTINGS_OPTIONS_VALUE | Non-empty value is required for supplier file settings options mapping. |
192 | INVALID_SUPPLIER_FILE_SETTINGS_ADDITIONAL_FIELDS_VALUE | Non-empty value is required for supplier file settings additional fields mapping. |
193 | WALMART_CONSUMER_CHANNEL_TYPE_REQUIRED | Attribute: consumerChannelType is required. Please specify Consumer Channel Type for this request. |
194 | INVENTORY_ITEM_USED_BY_VARIANT_REFERENCE | Inventory item cannot be deleted because it is currently being used by one or many variant references. |
195 | INVALID_CHANNEL_OUTPUT_FILE_COLUMN_HEADER | Non-empty header is required for all channel output file columns. |
196 | INVALID_CHANNEL_OUTPUT_FILE_COLUMN_FIELD | Field for one or more channel output file columns is invalid. |
197 | INVALID_CHANNEL_OUTPUT_FILE_COLUMN_KEY | Non-empty key is required for each optionalValue and additionalFieldValue field within channel output file columns. |
198 | INVALID_CHANNEL_OUTPUT_FILE_COLUMN_INDEX | Valid index is required for each productImage and image field within channel output file columns. |
199 | INVALID_SEARCH_FIELD_ORDINAL | Attribute: ordinal is invalid. Search Field ordinal must be greater than zero. |
200 | INVALID_SEARCH_FIELD_PREFIX_ALREADY_EXISTS | Search Field Prefix already exists for business. |
201 | INVALID_SEARCH_FIELD_PREFIX_MUST_BE_POPULATED | Attribute: prefix is required. Please specify search field prefix for this request. |
202 | INVALID_SEARCH_FIELD_LABEL_ALREADY_EXISTS | Search Field Label already exists for business. |
203 | INVALID_SEARCH_FIELD_LABEL_MUST_BE_POPULATED | Attribute: label is required. Please specify search field label for this request. |
204 | ORDINAL_NOT_FOUND | Requested search field with ordinal not found for business. |
207 | API_ACCOUNT_NOT_FOUND | Requested API Account with id not found for business. |
208 | API_ACCOUNTS_FORBIDDEN_TO_CREATE_BUSINESSES | API Accounts are forbidden from creating businesses. |
209 | API_RATE_LIMIT_EXCEEDED | You have exceeded the rate limit for your business. Try again in a moment. |
210 | API_ACCOUNTS_FORBIDDEN_TO_CREATE_API_ACCOUNTS | API Accounts are forbidden from creating other API Accounts. |
211 | API_ACCOUNTS_FORBIDDEN_TO_DELETE_API_ACCOUNTS | API Accounts are forbidden from deleting other API Accounts. |
212 | LOCATIONS_NEED_TO_BE_RETRIEVED_USING_A_VALID_SHOPIFY_INTEGRATION | Locations can only be retrieved from a valid Shopify Integration. |
213 | INVALID_CHANNEL_ID | Attribute: channelId is required. Please specify field channelId for this request. |
214 | LINE_ITEM_MUST_EXIST_ON_THE_ORDER | Line Item must exist on the order. |
215 | REPORT_NOT_FOUND | Requested report with embed code not found. |
216 | INVALID_FULFILLMENT_SHIPPED_AT_DATE | Fulfillment shipped at date is invalid. Must be a valid ISO 8601 formatted date. |
217 | INVALID_ACTIVITY_OPERATION | Attribute: operation is invalid. Operation must be CREATE, UPDATE, or DELETE. |
218 | INVALID_ACTIVITY_RESULT | Attribute: result is invalid. Result must be SUCCESS, ERROR, WARNING, or UNCHANGED. |
219 | INVALID_ACTIVITY_MESSAGE_TITLE | Attribute: title is invalid. Activity Message Title is required on messages and must be 100 characters or less. |
220 | INVALID_ACTIVITIY_MESSAGE_DESCRIPTION | Attribute: description is invalid. Activity Message Description is required on messages and must be 1000 characters or less. |
221 | TOO_MANY_ACTIVITY_MESSAGES | Attribute: messages is invalid. Exceeded limit of 20 messages per activity. |
220 | INVALID_ACTIVITIY_MESSAGE_DESCRIPTION | Attribute: description is invalid. Activity Message Description is required on messages and must be 1000 characters or less. |
221 | TOO_MANY_ACTIVITY_MESSAGES | Attribute: messages is invalid. Exceeded limit of 20 messages per activity. |
222 | INVALID_SHOPIFY_REQUEST | Attempt to update Shopify resulted in bad request. |
223 | UNAUTHORIZED_SHOPIFY_REQUEST | Attempt to update Shopify resulted in unauthorized request. |
224 | INVALID_SHOPIFY_ORDER_SHIPPING_ADDRESS | Attempt to update Shopify order shipping address resulted in bad request. |
225 | UNABLE_TO_SYNC_SHOPIFY_CUSTOMER | Shopify customer can not be synchronized because the shopify order does not have a customer. |
226 | INVALID_EMBED_CODE | Attribute: embedCode is invalid. Embed code is required. |
227 | USER_DOES_NOT_HAVE_ACCESS_TO_ANALYTICS | User does not have permissions to access analytics. |
228 | PLAYBOOK_STEP_NOT_FOUND | Playbook Step could not be found. |
229 | INVALID_PLAYBOOK_STEP_NAME | Attribute: name is required. Please specify a non-empty Playbook Step Name for this request. |
230 | DUPLICATE_PLAYBOOK_STEP_NAME | Attribute: name must be unique across all steps. Playbook Step Name must be unique across all Playbook Steps. |
231 | INVALID_PLAYBOOK_STEP_ENVIRONMENT_VARIABLE_KEY_NAME | Attribute: environmentVariableKeys cannot contain duplicate or empty names. Name must be unique across all environment variable keys in the Playbook Step. |
232 | INSUFFICIENT_PLAYBOOK_ADMIN_PERMISSIONS | Only Playbook Administrators are allowed to perform this action. |
233 | INVALID_STEP_SETTINGS_VERSION | Attribute: version is invalid. Version must be PRODUCTION, STAGING, or TEST |
234 | INVALID_STEP_ENVIRONMENT_VARIABLE | Attribute: environmentVariables are not valid for the provided step. |
235 | STEP_ID_REQUIRED | Attribute: step id is required. Please specify a non-empty Playbook Step ID for this request. |
236 | INVALID_ORDER_QUERY_PURCHASED_AT_MIN_INTERVAL | Attribute: purchasedAtMaxIntervalMinutes must be a valid positive number. |
237 | INVALID_ORDER_QUERY_PURCHASED_AT_MAX_INTERVAL | Attribute: purchasedAtMinIntervalMinutes must be a valid positive number. |
238 | INVALID_ORDER_QUERY_PURCHASED_AT_RANGE | Order Query Range is invalid. purchasedAtMinIntervalMinutes must be greater than purchasedAtMaxIntervalMinutes. |
239 | STEP_SETTINGS_NOT_PERMITTED_FOR_INTEGRATION | Attribute: stepSettings are only allowed for step integration. |
240 | STEP_INVOCATIONS_NOT_PERMITTED_FOR_INTEGRATION | Steps can only be invoked by a step integration. |
241 | STEP_INVOCATION_FAILED | Step invocation has failed for the given message. |
242 | BUSINESS_ID_REQUIRED | Attribute: businessId is required. Please specify a non-empty valid Business ID for this request. |
243 | INVALID_LOCATION_NAME | Attribute: name is invalid. Please specify a non-empty valid location name less than 256 characters for this request. |
244 | LOCATION_WITH_NAME_ALREADY_EXISTS | Attribute: name is invalid. Location name must be unique to the business. |
245 | LOCATION_NOT_FOUND | Location could not be found. |
246 | INVALID_INVENTORY_ITEM_SKU | Attribute: sku is invalid. Please specify a non-empty valid SKU less than 101 characters for this request. |
247 | INVALID_INVENTORY_ITEM_TITLE | Attribute: title is invalid. Please specify a non-empty valid title less than 256 characters for this request. |
248 | INVENTORY_ITEM_WITH_SKU_ALREADY_EXISTS | Attribute: sku is invalid. Inventory Item sku must be unique to the business. |
249 | INVALID_QUANTITY_ADJUSTMENT | Attribute: quantity is invalid. Adjustment must be a valid number greater or equal to -500000000 or less than or equal to 500000000. |
250 | INVALID_INVENTORY_QUANTITY_STATUS | Attribute: inventoryStatus is invalid. Please specify a non-empty valid inventoryStatus for this request. |
251 | INVALID_ADJUSTMENT_EFFECTIVE_DATE | Attribute: effectiveDate is invalid. Must be a valid ISO 8601 formatted date. |
252 | INVALID_MEMO | Attribute: memo is invalid. Memo cannot be more than 1000 characters. |
253 | INVALID_TOTAL_ADJUSTED_QUANTITY | Total Quantity for an inventory item cannot be adjusted to greater than 1000000000 or less than -1000000000. |
254 | INVALID_LOCATION_ID | Attribute: locationId is invalid. Please specify a non-empty valid locationId for this request. |
255 | QUANTITY_STATUS_NOT_FOUND | Quantity status could not be found. |
256 | IDEMPOTENT_KEY_IS_REQUIRED | A unique X-Channel-Ape-Idempotent-Key header is required for this request. |
257 | INVALID_MAXIMUM_CONCURRENT_CONNECTION_SETTING | Maximum concurrent connections is invalid. |
258 | INVALID_RESTOCK_TYPE | Attribute: restockType on refund is invalid. Must be NO_RESTOCK, CANCEL, or RETURN. |
259 | INVALID_SUPPLIER_REFUND_RESTOCK_TYPE | Attribute: restockType on refund line item is invalid. Supplier Refund Line Items must have NO_RESTOCK restock type. |
260 | INVALID_UPDATED_LINE_ITEM_QUANTITY | Attribute: quantity on line item is invalid. It must be greater than or equal to the existing quantity to update a line item. |
261 | LINE_ITEMS_REQUIRED_FOR_UPDATE | Attribute: lineItems is invalid. At least all existing line items must be provided to update the line items of the order. |
262 | INVALID_UPDATED_LINE_ITEM_SKU | Attribute: sku on line item is invalid. It must match existing sku to update a line item. |
263 | INVALID_FULFILLMENT_LOCATION_ID | Attribute: locationId on fulfillment is invalid. Location must exist on the same business as the order. |
264 | DUPLICATE_CHANNEL_LOCATION_ID | Attribute: locationId is invalid. A channel with that location is already configured for your business. |
265 | INVALID_COMMITTED_QUANTITY | Total Committed Quantity for an inventory item cannot be adjusted to less than 0. |
266 | INVALID_UPDATED_AT_START_DATE | Updated at start date parameter is invalid. Must be a valid ISO 8601 formatted date after the start date. |
267 | INVALID_UPDATED_AT_END_DATE | Updated at end date parameter is invalid. Must be a valid ISO 8601 formatted date after the start date and updated at start date. |
268 | INVALID_ORDER_QUERY_UPDATED_AT_MIN_INTERVAL | Attribute: updateAtMaxIntervalMinutes must be a valid positive number. |
269 | INVALID_ORDER_QUERY_UPDATED_AT_MAX_INTERVAL | Attribute: updateMinIntervalMinutes must be a valid positive number. |
270 | INVALID_ORDER_QUERY_UPDATED_AT_RANGE | Order Query Range is invalid. updatedAtMinIntervalMinutes must be greater than updatedAtMaxIntervalMinutes. |
271 | INVALID_ORDER_QUERY_PURCHASED_AND_UPDATED_AT_RANGE | Order Query Range is invalid. purchasedAtMinIntervalMinutes must be greater than updatedAtMaxIntervalMinutes. |
272 | INVALID_TAX_PRICE | Tax price must be a number greater than or equal to zero. |
273 | INVALID_TAX_RATE | Tax Rate is invalid. Optional tax rate field must be a decimal. |
274 | INVALID_TAX_TITLE | Tax Title is invalid. Tax titles have a maximum length of 255 characters. |
275 | INVALID_REFUND_TRANSACTION_ID | Refund Transaction ID is invalid. Transaction ID is a required field. |
276 | INVALID_REFUND_TRANSACTION_MESSAGE | Refund Message is invalid. Refund transaction messages have a maximum length of 255 characters. |
277 | INVALID_REFUND_TRANSACTION_AMOUNT | Refund Transaction Amount must be a number. |
278 | INVALID_REFUND_TRANSACTION_STATUS | Refund Transaction Status is invalid. Please specify PENDING, SUCCESS, FAILURE, ERROR. |
279 | INVALID_REFUND_ADJUSTMENT_ID | Refund Adjustment ID is invalid. Adjustment ID is a required field. |
280 | INVALID_REFUND_ADJUSTMENT_REASON | Adjustment Reason is invalid. Refund adjustment messages have a maximum length of 255 characters. |
281 | INVALID_REFUND_ADJUSTMENT_AMOUNT | Refund Adjustment Amount must be a number. |
282 | INVALID_REFUND_ADJUSTMENT_TAX_AMOUNT | Refund Adjustment Tax Amount is invalid. Optional refund adjustment tax amount field must be a number. |
283 | MISSING_REQUIRED_REFUND_ATTRIBUTES | Refund is invalid. Refunds cannot be empty. Provide at least one of lineItems, transactions, or adjustments. |
284 | INVALID_PLAYBOOK_PLAY_NAME | Attribute: name is required. Please specify a non-empty Playbook Play Name for this request. |
285 | INVALID_PLAY_NAME | Attribute: Play Name is invalid. Play Name Should have a maximum length of 100 characters. |
287 | PLAYBOOK_PLAY_NOT_FOUND | Playbook Play could not be found. |
288 | DUPLICATE_PLAYBOOK_PLAY_NAME | Attribute: name must be unique across all plays. Playbook Play Name must be unique across all Playbook Plays. |
289 | PLAY_SETTINGS_NOT_PERMITTED_FOR_INTEGRATION | Attribute: playSettings are only allowed for step integration. |
290 | PLAY_ID_REQUIRED | Attribute: playId is required. Please specify a non-empty Playbook Play ID for this request. |
291 | INVALID_ON_ORDER_QUANTITY | Total On-Order Quantity for an inventory item cannot be adjusted to less than 0. |
292 | INVALID_RESERVE_QUANTITY | Total Reserve Quantity for an inventory item cannot be adjusted to less than 0. |
293 | DUPLICATE_PLAYBOOK_PLAY_ENVIRONMENT_VARIABLE_NAME | Attribute: environmentVariables are duplicated. Environment variable names must be unique per play supplier. |
294 | MISSING_PLAYBOOK_PLAY_ENVIRONMENT_VARIABLE | Attribute: environmentVariables are missing for the provided play. |
295 | INVALID_PLAYBOOK_PLAY_ENVIRONMENT_VARIABLE | Attribute: environmentVariables are not valid for the provided play. |
296 | INVALID_STATE_DEFINITION | The play does not currently have a valid definition. Please update the play to have a valid definition and retry your request. |
297 | INVALID_PLAYBOOK_PLAY_ENVIRONMENT_VARIABLE_NAME | Attribute: environmentVariable names are not valid for the provided play. Environment variable name is required. |
298 | DUPLICATE_SHOPIFY_CHANNEL_LOCATION_ID | Attribute: locationId is invalid. Location is already set for a Shopify channel on this business. Location cannot be set for multiple Shopify Channels on the same business. |
An action is a process by which ChannelApe accomplishes tasks. An inventory action might update inventory quantities across all marketplaces, thus performing specific tasks.
Get action
Retrieves an action by ID.
HTTP Status Codes
Status | Meaning |
---|---|
200 | Action successfully retrieved. |
404 | Action with ID does not exist or you do not have access to the business the action belongs to. |
path Parameters
action_id required | string |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Responses
Query actions by business
Query actions for a given business.
Required query parameters
businessId - ID of ChannelApe business
Optional query parameters
startDate - ISO 8601 date string (defaults to epoch time). Used to filter results after given purchase date.
endDate - ISO 8601 date string (defaults to current time). Used to filter results before given purchase date.
lastKey - ID returned on previous page of results. Used to retrieve next page of results when results are paginated.
size - Integer between 1 and 250 (defaults to 50). Maximum number of results to return.
HTTP Status Codes
Status | Meaning |
---|---|
200 | Action successfully retrieved. |
400 | Start date and/or end date is invalid. |
404 | Business does not exist or you do not have access to the business. |
query Parameters
size | integer Example: size=5 |
endDate | string Example: endDate=2016-03-23T12:42:21.338Z |
businessId | string Example: businessId={{business_id}} |
startDate | string Example: startDate=2016-03-01T12:41:21.338Z |
lastKey | string Example: lastKey={{last_key}} |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Responses
Update action with error
Sets processing status to error for an in progress action. This will allow a new action to run with the same target if it is queued.
HTTP Status Codes
Status | Meaning |
---|---|
200 | Action successfully updated with error processing status. |
400 | Action has already been completed. |
404 | Action with ID does not exist or you do not have access to the business the action belongs to. |
path Parameters
action_id required | string |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Responses
Update action health check
Updated action health check which keeps action from automatically updating to an error processing status. Action will automatically update to error processing status if health check interval * 2 + 1 minute is exceeded without a health check update.
HTTP Status Codes
Status | Meaning |
---|---|
200 | Successfully updated last health check for action. |
400 | Action has already been completed. |
404 | Action with ID does not exist or you do not have access to the business the action belongs to. |
path Parameters
action_id required | string |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Responses
Complete action
Complete an in progress action. This will allow a new action to run with the same target if it is queued.
HTTP Status Codes
Status | Meaning |
---|---|
200 | Action successfully updated with completed processing status. |
400 | Action has already been completed. |
404 | Action with ID does not exist or you do not have access to the business the action belongs to. |
path Parameters
action_id required | string |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Responses
Generate embed URL
Generates an embed URL for a report.
Required Fields
embedUrl - Location of report.
timezone - Default timezone to run reports in.
HTTP Status Codes
Status | Meaning |
---|---|
201 | Temporary embed URL has been created for report. |
400 | Embed URL or Timezone is invalid. |
403 | User does not have peremission to access analytics. |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "timezone": "America/New_York",
- "embedCode": "dashboard/1"
}
Allows for ingestion of large amounts of data into ChannelApe in the form of batch requests. Business are limited to 25% of their API Account Rate Limit when processing batches concurrently (i.e. a rate limit of 5 calls per second can process 1 batch process at a time). Subsequent batch requests will be queued up and processed in order of being received.
Create a new batch
Triggers a new async batch. Default type is INVENTORY so you must provide the list of adjustments.
Only basic validation is done at the time the batch is received, such as checking for null values. All other validation happens down stream when the batch is being processed.
Fields
businessId - Business where the batch should be run.
adjustments - If batch type is INVENTORY, then list of adjustments that will be made during the batch. Maximum limit is 4000 adjustments or a 1MB request size. If more than 4000 adjustments/1MB request body are needed, the request should be split up into multiple batches.
- idempotentKey - A unique key designated for the individual adjustment. Adjustments are deduplicated and not made when there is a duplicate idempotent key. This is to prevent duplicate adjustments being made in the system.
- inventoryItemId - A ChannelApe system inventory item id. Must provide either this or sku.
- sku - A sku that may or may not exist in ChannelApe. If the sku doesn't exist during a batch run, it will be created when the batch is run.
- locationId - A ChannelApe location ID of where the adjustment should be made.
- inventoryStatus - The status for the adjustment
- quantity - The quantity of the adjustment. The end result of the adjustment will depend on the operation.
- operation - Whether or not you want to overwrite the existing value(SET) or adjust relative(ADJUST)
- aggregateChannelSync (optional)- true or false (default). If specified as true, the side affects of making adjustments to parent locations will happen. See the side effects section under "Adjust inventory item quantity" heading.
- memo - An optional field to that describes why an adjustment is being made.
HTTP Status Codes
Status | Meaning |
---|---|
201 | Batch has been created. Async processing will begin |
400 | Invalid fields |
403 | User does not have permission to trigger the batch for that business |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "businessId": "938a69a8-9ef2-4faa-b485-dad486aba56e",
- "adjustments": [
- {
- "idempotentKey": "123456789",
- "inventoryItemId": "703",
- "quantity": 10,
- "operation": "ADJUST",
- "locationId": 51,
- "inventoryStatus": "ON_ORDER",
- "aggregateChannelSync": true,
- "memo": "Reason the adjustment was made."
}, - {
- "idempotentKey": "123456789",
- "inventoryItemId": "703",
- "quantity": 12,
- "operation": "SET",
- "locationId": 51,
- "inventoryStatus": "COMMITTED",
- "memo": "Reason the adjustment was made."
}
]
}
Response samples
- 202
{- "id": "325bd7f2-272a-4212-9abb-59ffeaddb5ab",
- "type": "INVENTORY",
- "status": "READY",
- "createdAt": "2022-04-19T02:35:17.000Z",
- "updatedAt": "2022-04-19T02:35:17.000Z",
- "businessId": "938a69a8-9ef2-4faa-b485-dad486aba56e"
}
Retrieve Batch Information
Retrieve information from an individual batch
HTTP Status Codes
Status | Meaning |
---|---|
200 | Batch ID found and returned |
404 | Batch Not Found |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Responses
Response samples
- 200
- 404
{- "id": "{{$guid}}",
- "type": "INVENTORY",
- "status": "COMPLETE",
- "createdAt": "2022-04-05T14:01:19.000Z",
- "updatedAt": "2022-04-18T19:16:06.000Z",
- "businessId": "938a69a8-9ef2-4faa-b485-dad486aba56e"
}
A business in ChannelApe refers to an account created to access the platform. Some customers choose to create a separate business for each sales channel, while others group all their channels under a single business. This allows for logical grouping of orders, channels, inventory, and suppliers within the platform. Additionally, some customers may choose to segregate their businesses based on geographic location, such as North America versus Europe. Each business can have multiple users, allowing different business members to be added to each business.
Add Business Member
Add verified user to a business by providing their username. Only the business owner can add other members.
path Parameters
business_id required | string |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "username": "{{username}}"
}
Update Business
Update the name and/or timeZone of a business. Only the business owner can update the business.
Required Request Fields
name - Name of your business. Can be updated later.
timeZone - TimeZone your business operates under. Will change how dashboards render along with what times you see for recipe schedules in the app. API stores all values in UTC/GMT. Can be updated later.
path Parameters
business_id required | string |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "name": "Jim's Vitamins",
- "timeZone": "America/Atka"
}
Delete Business Member
Remove a user from the business. Only the business owner can remove other members.
Note: Business owner cannot be removed from the business.
path Parameters
business_id required | string |
user_id required | string |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Responses
Verify Business Member
Once a business owner adds a member to the business, they need to verify their membership using this call and the token emailed to them.
path Parameters
business_member_verification_token required | string |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Responses
Create Business
Create a new business.
Required Request Fields
name - Name of your business. Can be updated later.
timeZone - TimeZone your business operates under. Will change how dashboards render along with what times you see for recipe schedules in the app. API stores all values in UTC/GMT. Can be updated later.
alphabeticCurrencyCode - ISO 4217 currency code used by your business. All supplier inventory items will assume this currency. When an order is placed with an uknown currency, this currency will be assumed.
inventoryItemKey - Valid values are "SKU" or "UPC". Cannot be changed once business is created. Unique identifier for all inventory items under a supplier. Duplicate inventory item keys for a given supplier will be ommitted.
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "name": "Jill's Supplement Store",
- "timeZone": "America/New_York",
- "alphabeticCurrencyCode": "USD",
- "inventoryItemKey": "SKU"
}
Channel references the marketplaces, affiliate networks, or partners that ChannelApe can interact with to distribute your catalog or to retrieve orders from and sync inventory to. Some examples of a channel would be Shopify Store, Amazon, or NetSuite B2B Orders.
Create custom export channel
Create a Custom Export Channel for a business.
Required Fields
businessId - ID for ChannelApe business that channel should be created for.
integrationId - ID for Custom Export Channel. Must match ChannelApe Exporter integration ID (02df0b31-a071-4791-b9c2-aa01e4fb0ce6).
name - Needs to be unique across all channels for the business.
Optional Fields
enabled - Indicates whether the channel is installed. Uninstalled channels cannot run actions. Defaults to false.
settings - Map with multiple optional values.
allowRead - Allow ChannelApe to read existing products and variants from this channel. Defaults to true.
priceType - Which price variant price field retail or wholesale that ChannelApe will use when creating or updating variants on this channel. Defaults to retail.
outputFile - Map with multiple optional values to indicate file format.
- header - Whether the output file should contain a header row consisting of column header values. Defaults to true.
- columns - List of columns to write to output file. Defaults to empty list.
- header - Value used for column header. Required field with no default.
- field - Indicates ChannelApe product or variant field should be outputted for this column. Valid values are:
- productId
- inventoryItemValue
- sku
- upc
- productTitle
- produtDescription
- productPrimaryCategory
- productSecondaryCategory
- productVendor
- optionValue
- productImage
- productOptionKeys - Sorted alphabetically and comma separated
- productTags - Sorted alphabetically and comma separated
- productCreatedAt
- productUpdatedAt
- title
- description
- primaryCategory
- secondaryCategory
- vendor
- quantity
- weight
- alphabeticCurrencyCode
- retailPrice
- wholesalePrice
- condition
- image
- tags - Sorted alphabetically and comma separated
- additionalFieldValue
- variantCreatedAt
- variantUpdatedAt
- index - Only applicable for productImage and image fields. Indicates index (starting at 0) of image within images list. Return null if index does not exist.
- key - Only appicable for optionValue and additionalFieldValue fields. Indicates key within map to retrieve. Returns null if key does not exist.
- value - Static value to be written to each cell in the column. Only valid when field is empty.
- unitOfMeasurement - Only applicable for weight field. Indicates what unit to output variant weight in. Defaults to grams. Valid values are:
- oz - Ounces
- lb - Pounds
- g - Grams
- kg - Kilograms
- t - Metric Tonnes
HTTP Status Codes
Status | Meaning |
---|---|
201 | Successfully created channel for business. |
400 | Request body contains invalid fields. Check response errors list for more details. |
403 | You are not a member of the business passed in the request body. |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "businessId": "some-business-id",
- "integrationId": "02df0b31-a071-4791-b9c2-aa01e4fb0ce6",
- "enabled": true,
- "name": "My Custom Export",
- "settings": {
- "allowRead": true,
- "priceType": "retail",
- "outputFile": {
- "header": true,
- "columns": [
- {
- "header": "Product ID",
- "field": "productId"
}, - {
- "header": "Variant ID",
- "field": "inventoryItemValue"
}, - {
- "header": "SKU",
- "field": "sku"
}, - {
- "header": "UPC",
- "field": "upc"
}, - {
- "header": "Length",
- "value": "10"
}, - {
- "header": "Product Title",
- "field": "productTitle"
}, - {
- "header": "Product Description",
- "field": "productDescription"
}, - {
- "header": "Product Primary Category",
- "field": "productPrimaryCategory"
}, - {
- "header": "Product Secondary Category",
- "field": "productSecondaryCategory"
}, - {
- "header": "Product Vendor",
- "field": "productVendor"
}, - {
- "header": "Option 1 Name",
- "value": "Size"
}, - {
- "header": "Option 1 Value",
- "field": "optionValue",
- "key": "Size"
}, - {
- "header": "Option 2 Name",
- "field": "optionValue",
- "key": "Flavor"
}, - {
- "header": "Option 2 Value",
- "key": "Flavor"
}, - {
- "header": "Color",
- "field": "optionValue",
- "key": "Color"
}, - {
- "header": "Product Image 1",
- "field": "productImage",
- "index": 0
}, - {
- "header": "Product Image 2",
- "field": "productImage",
- "index": 1
}, - {
- "header": "Thumbnail",
- "field": "productImage",
- "index": 28
}, - {
- "header": "Product Tags",
- "field": "productTags"
}, - {
- "header": "Description",
- "field": "description"
}, - {
- "header": "Primary Category",
- "field": "primaryCategory"
}, - {
- "header": "Secondary Category",
- "field": "secondaryCategory"
}, - {
- "header": "Vendor",
- "field": "vendor"
}, - {
- "header": "Quantity",
- "field": "quantity"
}, - {
- "header": "Pounds",
- "field": "weight",
- "unitOfMeasurement": "lb"
}, - {
- "header": "Grams",
- "field": "weight",
- "unitOfMeasurement": "g"
}, - {
- "header": "Ounces",
- "field": "weight",
- "unitOfMeasurement": "oz"
}, - {
- "header": "Weight",
- "field": "weight",
- "unitOfMeasurement": "kg"
}, - {
- "header": "Currency Code",
- "field": "alphabeticCurrencyCode"
}, - {
- "header": "Retail Price",
- "field": "retailPrice"
}, - {
- "header": "Wholesale Price",
- "field": "wholesalePrice"
}, - {
- "header": "Condition",
- "field": "condition"
}, - {
- "header": "Image 1",
- "field": "image",
- "index": 0
}, - {
- "header": "Image 2",
- "field": "image",
- "index": 1
}, - {
- "header": "Cover Image",
- "field": "image",
- "index": 4
}, - {
- "header": "Tags",
- "field": "tags"
}, - {
- "header": "Additional Field 1 Name",
- "value": "ebay_category_id"
}, - {
- "header": "Additional Field 1 Value",
- "field": "additionalFieldValue",
- "key": "ebay_category_id"
}, - {
- "header": "Name",
- "value": "jcpenny_title"
}, - {
- "header": "Value",
- "field": "additionalFieldValue",
- "key": "jcpenny_title"
}, - {
- "header": "Name",
- "value": "sears_title"
}, - {
- "header": "Value",
- "field": "additionalFieldValue",
- "key": "sears_title"
}, - {
- "header": "Amazon Quantity",
- "field": "additionalFieldValue",
- "key": "amz_quantity"
}
]
}
}
}
Update custom export channel
Update a Custom Export Channel for a business.
Required Fields
name - Needs to be unique across all channels for the business.
Optional Fields
enabled - Indicates whether the channel is installed. Uninstalled channels cannot run actions. Defaults to false.
settings - Map with multiple optional values.
allowRead - Allow ChannelApe to read existing products and variants from this channel. Defaults to true.
priceType - Which price variant price field retail or wholesale that ChannelApe will use when creating or updating variants on this channel. Defaults to retail.
outputFile - Map with multiple optional values to indicate file format.
- header - Whether the output file should contain a header row consisting of column header values. Defaults to true.
- columns - List of columns to write to output file. Defaults to empty list.
- header - Value used for column header. Required field with no default.
- field - Indicates ChannelApe product or variant field should be outputted for this column. Valid values are:
- productId
- inventoryItemValue
- sku
- upc
- productTitle
- produtDescription
- productPrimaryCategory
- productSecondaryCategory
- productVendor
- optionValue
- productImage
- productOptionKeys - Sorted alphabetically and comma separated
- productTags - Sorted alphabetically and comma separated
- productCreatedAt
- productUpdatedAt
- title
- description
- primaryCategory
- secondaryCategory
- vendor
- quantity
- weight
- alphabeticCurrencyCode
- retailPrice
- wholesalePrice
- condition
- image
- tags - Sorted alphabetically and comma separated
- additionalFieldValue
- variantCreatedAt
- variantUpdatedAt
- index - Only applicable for productImage and image fields. Indicates index (starting at 0) of image within images list. Return null if index does not exist.
- key - Only appicable for optionValue and additionalFieldValue fields. Indicates key within map to retrieve. Returns null if key does not exist.
- value - Static value to be written to each cell in the column. Only valid when field is empty.
- unitOfMeasurement - Only applicable for weight field. Indicates what unit to output variant weight in. Defaults to grams. Valid values are:
- oz - Ounces
- lb - Pounds
- g - Grams
- kg - Kilograms
- t - Metric Tonnes
HTTP Status Codes
Status | Meaning |
---|---|
201 | Successfully created channel for business. |
400 | Request body contains invalid fields. Check response errors list for more details. |
404 | Channel with ID does not exist or you do not have access to the business the action belongs to. |
path Parameters
channel_id required | string |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "enabled": true,
- "name": "My Custom Export",
- "settings": {
- "allowRead": true,
- "priceType": "wholesale",
- "outputFile": {
- "header": false,
- "columns": [
- {
- "header": "Product ID",
- "field": "productId"
}, - {
- "header": "Variant ID",
- "field": "inventoryItemValue"
}, - {
- "header": "SKU",
- "field": "sku"
}, - {
- "header": "UPC",
- "field": "upc"
}, - {
- "header": "Length",
- "value": "10"
}, - {
- "header": "Product Title",
- "field": "productTitle"
}, - {
- "header": "Product Description",
- "field": "productDescription"
}, - {
- "header": "Product Primary Category",
- "field": "productPrimaryCategory"
}, - {
- "header": "Product Secondary Category",
- "field": "productSecondaryCategory"
}, - {
- "header": "Product Vendor",
- "field": "productVendor"
}, - {
- "header": "Option 1 Name",
- "value": "Size"
}, - {
- "header": "Option 1 Value",
- "field": "optionValue",
- "key": "Size"
}, - {
- "header": "Option 2 Name",
- "field": "optionValue",
- "key": "Flavor"
}, - {
- "header": "Option 2 Value",
- "key": "Flavor"
}, - {
- "header": "Color",
- "field": "optionValue",
- "key": "Color"
}, - {
- "header": "Product Image 1",
- "field": "productImage",
- "index": 0
}, - {
- "header": "Product Image 2",
- "field": "productImage",
- "index": 1
}, - {
- "header": "Thumbnail",
- "field": "productImage",
- "index": 28
}, - {
- "header": "Product Tags",
- "field": "productTags"
}, - {
- "header": "Description",
- "field": "description"
}, - {
- "header": "Primary Category",
- "field": "primaryCategory"
}, - {
- "header": "Secondary Category",
- "field": "secondaryCategory"
}, - {
- "header": "Vendor",
- "field": "vendor"
}, - {
- "header": "Quantity",
- "field": "quantity"
}, - {
- "header": "Pounds",
- "field": "weight",
- "unitOfMeasurement": "lb"
}, - {
- "header": "Grams",
- "field": "weight",
- "unitOfMeasurement": "g"
}, - {
- "header": "Ounces",
- "field": "weight",
- "unitOfMeasurement": "oz"
}, - {
- "header": "Weight",
- "field": "weight",
- "unitOfMeasurement": "kg"
}, - {
- "header": "Currency Code",
- "field": "alphabeticCurrencyCode"
}, - {
- "header": "Retail Price",
- "field": "retailPrice"
}, - {
- "header": "Wholesale Price",
- "field": "wholesalePrice"
}, - {
- "header": "Condition",
- "field": "condition"
}, - {
- "header": "Image 1",
- "field": "image",
- "index": 0
}, - {
- "header": "Image 2",
- "field": "image",
- "index": 1
}, - {
- "header": "Cover Image",
- "field": "image",
- "index": 4
}, - {
- "header": "Tags",
- "field": "tags"
}, - {
- "header": "Additional Field 1 Name",
- "value": "ebay_category_id"
}, - {
- "header": "Additional Field 1 Value",
- "field": "additionalFieldValue",
- "key": "ebay_category_id"
}, - {
- "header": "Name",
- "value": "jcpenny_title"
}, - {
- "header": "Value",
- "field": "additionalFieldValue",
- "key": "jcpenny_title"
}, - {
- "header": "Name",
- "value": "sears_title"
}, - {
- "header": "Value",
- "field": "additionalFieldValue",
- "key": "sears_title"
}, - {
- "header": "Amazon Quantity",
- "field": "additionalFieldValue",
- "key": "amz_quantity"
}
]
}
}
}
Get channel
Retrieve a single channel by ID.
HTTP Status Codes
Status | Meaning |
---|---|
200 | Channel successfully retrieved. |
404 | Channel with ID does not exist or you do not have access to the business the action belongs to. |
path Parameters
channel_id required | string |
header Parameters
Authorization | string Example: Bearor {{token}} |
Responses
Get channels for business
Retrieve all channels belonging to a business.
HTTP Status Codes
Status | Meaning |
---|---|
200 | Channels successfully retrieved. If list is empty, businessId could be invalid or you are not a member of that business. |
query Parameters
businessId | string Example: businessId={{business_id}} |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Responses
Add manual action
Start a manual action for a channel.
Required Fields
action - Name of action you wish to run for this channel. Must be an action listed for this integration.
HTTP Status Codes
Status | Meaning |
---|---|
201 | Successfully created manual action for channel. |
400 | action provided in request body is invalid or subscription for this business is invalid. |
403 | You are not permitted to start an action for this channel. |
path Parameters
channel_id required | string |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "action": "PRODUCT_PUSH"
}
Create file preview
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "fileType": "TSV",
- "url": "ftp://ftp.example.com/test.txt",
- "authorization": {
- "username": "admin",
- "password": "admin"
}, - "headers": false
}
Get integrations
Retrieve all public integrations. Private supplier integrations that have already been installed can also be retrieved by passing the businessId query paramter.
Optional Query Parameters
businessId - Needed to retrieve any private supplier integrations associated with business.
query Parameters
businessId | string Example: businessId={{business_id}} |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Responses
Inventory locations are physical locations where inventory items are stored, such as a warehouse.
Create Location
Required Request Fields
name - Name of your location. Can be updated later.
businessId - The ChannelApe business ID to associate the location to.
Optional Request Fields
aggregateLocationIds - A list of other valid locations for your business. If an adjustment is made at one of the aggregate locations, an adjustment will be made on this location as well that is the sum of current ATP at each of the aggregate locations listed. The sum of the total ATP across the locations will be synchronized to the channel if it is a virtual location. Ideally the locations that have this will be your virtual location, and the list of aggregateLocationIds will be the warehouses you want to keep in sync with that virtual location. You can have up to 5 aggregate locations on a single location. An aggregate location also can not contain itself.
Note: that you can't have nested aggregate locations. If a location has aggregate locations it can't be in a list of aggregate locations on another location. You can have a location listed across multiple aggregates.
HTTP Status Codes
Status | Meaning |
---|---|
201 | Location has been created. |
400 | One or more fields provided in the request body are invalid. |
404 | Business could not be found. |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "name": "East Coast Warehouse",
- "businessId": "7790a7d0-2a53-4521-bde4-59ad32147edd"
}
Response samples
- 201
- 400
{- "aggregateLocationIds": [ ],
- "name": "East Coast Warehouse",
- "businessId": "7790a7d0-2a53-4521-bde4-59ad32147edd",
- "createdAt": "2022-08-16T20:02:37.000Z",
- "errors": [ ],
- "id": "87",
- "updatedAt": "2022-08-16T20:02:37.000Z"
}
Get Locations for a business
Retrieves all locations for a business.
HTTP Status Codes
Status | Meaning |
---|---|
200 | Locations have been retrieved. |
400 | One or more fields provided in the request are invalid. |
query Parameters
businessId | string Example: businessId=7790a7d0-2a53-4521-bde4-59ad32147edd |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Update Location
Update the name of a location.
Required Request Fields
name - Name of your location.
Optional Request Fields
aggregateLocationIds - A list of other valid locations for your business. If an adjustment is made at one of the aggregate locations, an adjustment will be made on this location as well that is the sum of current ATP at each of the aggregate locations listed. The sum of the total ATP across the locations will be synchronized to the channel if it is a virtual location. Ideally the locations that have this will be your virtual location, and the list of aggregateLocationIds will be the warehouses you want to keep in sync with that virtual location. You can have up to 5 aggregate locations on a single location. An aggregate location also can not contain itself.
Note: that you can't have nested aggregate locations. If a location has aggregate locations it can't be in a list of aggregate locations on another location. You can have a location listed across multiple aggregates.
HTTP Status Codes
Status | Meaning |
---|---|
200 | Location has been updated. |
400 | One or more fields provided in the request body are invalid. |
404 | Location could not be found. |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "name": "West Coast Warehouse"
}
Response samples
- 200
- 400
{- "aggregateLocationIds": [ ],
- "businessId": "7790a7d0-2a53-4521-bde4-59ad32147edd",
- "createdAt": "2022-08-17T15:36:43.236Z",
- "errors": [ ],
- "id": "123",
- "name": "West Coast Warehouse",
- "updatedAt": "2022-08-17T15:36:43.236Z"
}
Updating a location's SLA information
Add SLA info about a Location
Optional Fields
fulfillmentSLAHours - The SLA for the location. This must be a number greater than 0 if provided.
Operating Days if provided must require the following:
open - The opening time for the location. Must be before 'end'
end - The end of day for the location. Must be after 'open'
fulfillmentCutoffTime - The time a location stops fulfilling items. Must be between 'open' and 'end', or equal to 'end'
day - The day of week for the operating day. Must be one of the following:
- M - Monday
- T - Tuesday
- W - Wednesday
- R - Thursday
- F - Friday
- S - Saturday
- U - Sunday
If you provide multiple of the same days, only one of them will be accepted.
HTTP Status Codes
Status | Meaning |
---|---|
200 | Location SLA information has been created/updated. |
400 | One or more fields provided in the request body are invalid. |
404 | Location could not be found. |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Request samples
- Payload
{- "fulfillmentSLAHours": "2",
- "operatingDays": [
- {
- "day": "W",
- "open": "08:00",
- "end": "10:00",
- "fulfillmentCutoffTime": "09:00"
}, - {
- "day": "T",
- "open": "08:00",
- "end": "10:00",
- "fulfillmentCutoffTime": "09:00"
}
]
}
Updating a location's closed dates
Add Closed dates for a location. This should be holidays or dates that the location would otherwise be open in according to their SLA information
Required Fields
closedDays - A list of days that the location is closed. This is a PUT, so any days committed will be removed. The entire list needs to be provided during update.
If you provide multiple of the same days, only one of them will be accepted.
HTTP Status Codes
Status | Meaning |
---|---|
200 | Location closed days have been updated. |
400 | One or more fields provided in the request body are invalid. |
404 | Location could not be found. |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "closedDays": [
- "2021/02/01",
- "2021/03/01",
- "2021/04/01",
- "2021/05/01",
- "2021/06/01"
]
}
Response samples
- 200
{- "closedDays": [
- {
- "createdAt": "2021-11-05T14:40:28.000Z",
- "date": "2021/02/01",
- "id": "5",
- "updatedAt": "2021-11-05T14:55:30.697Z"
}, - {
- "createdAt": "2021-11-05T14:41:22.000Z",
- "date": "2021/05/01",
- "id": "8",
- "updatedAt": "2021-11-05T14:55:30.697Z"
}, - {
- "createdAt": "2021-11-05T14:41:22.000Z",
- "date": "2021/04/01",
- "id": "6",
- "updatedAt": "2021-11-05T14:55:30.697Z"
}, - {
- "createdAt": "2021-11-05T14:42:06.000Z",
- "date": "2021/06/01",
- "id": "9",
- "updatedAt": "2021-11-05T14:55:30.697Z"
}, - {
- "createdAt": "2021-11-05T14:41:22.000Z",
- "date": "2021/03/01",
- "id": "7",
- "updatedAt": "2021-11-05T14:55:30.697Z"
}
], - "errors": [ ],
- "locationId": "123"
}
Log Payload
Provides an endpoint to get request/response payloads from external systems into ChannelApe during some of the automated flows you are using.
Required fields
The request body is what will be logged and searchable. This can be in any format up to 1mb.
Optional headers
X-Channel-Ape-Logs-Flow - a header to specify which flow this request or response body is being logged from. It's recommended to use this to organize things but If you don't provide a flow it will be logged under a default flow. This must be alphanumeric.
header Parameters
X-Channel-Ape-Logs-Flow | string Example: sendorders |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "customer": {
- "first_name": "John",
- "last_name": "Doe"
}
}
Response samples
- 201
- 400
{- "flow": "default",
- "logtime": "2022-09-08T20:50:56.592Z",
- "businessId": "{{business_id}}"
}
Representation of a physical SKU. When assosciated with a location, quantities can be set, adjusted, and retrieved for 1 or many quantity statuses.
Create Inventory Item
Required Request Fields
sku - Unique identifier for your inventory item up to 100 characters. Must be unique for your ChannelApe business.
businessId - The ChannelApe business ID to associate the Inventory Item to.
HTTP Status Codes
Status | Meaning |
---|---|
201 | Inventory Item has been created. |
400 | One or more fields provided in the request body are invalid. |
404 | Business could not be found. |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "businessId": "d119c22a-92a3-49f4-b020-e3e43c23c28d",
- "sku": "301-0059-LE",
- "title": "The Summer Collection Bundle"
}
Get Inventory Item by SKU
Retrieves a list of inventory items with the given SKU on the given business. 1 or 0 results will be returned.
HTTP Status Codes
Status | Meaning |
---|---|
200 | Inventory Items have been retrieved. |
400 | One or more fields provided in the request are invalid. |
query Parameters
businessId | string Example: businessId=7790a7d0-2a53-4521-bde4-59ad32147edd |
sku | string Example: sku=301-0059-LE |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Responses
Update Inventory Item
Update an Inventory item.
Required Request Fields
sku - Unique identifier for your inventory item. Must be unique for your ChannelApe business.
HTTP Status Codes
Status | Meaning |
---|---|
200 | Inventory Item has been updated. |
400 | One or more fields provided in the request body are invalid. |
404 | Inventory Item could not be found. |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "sku": "301-0059-LE",
- "title": "The Summer Collection Bundle"
}
Adjust inventory item quantity
Adjusts the inventory items current quantity at a given location and status. Request will fail if the inventory item does not exist.
Note that if you set the 'effectiveAt' time to the future, it will be staged and added to the adjustments at the effective time. The staged adjustments cannot be removed or edited. You'll need to make another adjustment to negate it.
Required Request Headers
X-Channel-Ape-Idempotent-Key - A unique value linked to the request that prevents the same operation from occuring twice. Limit of 255 characters.
Required Request Fields
locationId - The location at which the quantity will be adjusted. Must be a valid ChannelApe location
quantity - The quantity to the adjust the existing quantity by.
inventoryStatus - The status of the quantity that will be adjusted.
Possible values include:
* AVAILABLE_TO_SELL
* COMMITTED
* ON_ORDER
* RESERVE
* ON_HOLD
* ON_HAND
Optional Request Fields
aggregateChannelSync - true or false. Defaults to false. If specified as true, the side affects of making adjustments to parent locations will happen. See the side effects section below.
memo - A note to describe why the adjustment was possibly made. Limit of 1000 characters.
effectiveAt - The time the adjustment should be effective. If this is in the future, this will be staged and inserted into the adjustment history log at the effective time. This can be useful for expiring adjustments by creating an adjustment that offsets an existing one.
ChannelApe does allow setting effective dates in the past, but does not rewrite the adjustment history. It will be placed in the history log at the time the adjustment is made.
expiresAt - The time the adjustment should negate itself. These are always relative to the adjustment that is made. So even if you are doing a set the future adjustment will be the opposite of that. Example a +7 adjustment on sku ABC-123 is set to expire the following day. The following day a -7 adjustment will be made when the adjustment expires.
futureAppliedAtpPercentage- If you are making adjustments in the future for reserving inventory it may be hard to know exactly what quantities you want to set and expire in the future, especially in bulk. To make this easier, the API has an option to make a future adjustment based on the total inventory you have available to promise. If you have 100 units available to promise currently and you want to reserve 5% of those you can use this field in a future adjustment to take 5% of whatever inventory you have left at the time and reserve it. So if you sell through all 100, there is nothing to reserve. If you don't sell through any and still have 100 units, it will reserve 10 leaving you 90 units to sell.
For more on inventory adjustments and how they work in ChannelApe see our Inventory Management documentation.
Side Effects
If the location you are making an adjustment for is the child of one or more parent locations and aggregateChannelSync flag is true, the same relative adjustment will be made to each parent location. Ie. +1 on the child, then a +1 for each parent. If any of the parents are associated with a real time inventory channel, then the current ATP will also be synchronized to channel. The aggregateChannelSync only applies to currently effective adjustments.
HTTP Status Codes
Status | Meaning |
---|---|
201 | Inventory item quantity has been adjusted successfully |
400 | One or more fields provided in the request body are invalid. |
404 | Inventory Item could not be found. |
header Parameters
Content-Type | string Example: application/json |
X-Channel-Ape-Idempotent-Key | string Example: {{$guid}} |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "locationId": 10,
- "inventoryStatus": "ON_HOLD",
- "quantity": "15",
- "effectiveAt": "2019-10-25T19:07:49.088Z"
}
Adjust inventory item quantity by SKU
Adjusts the inventory items current quantity at a given location and status. Request will fail if the inventory item does not exist.
Note that if you set the 'effectiveAt' time to the future, it will be staged and added to the adjustments at the effective time. The staged adjustments cannot be removed or edited. You'll need to make another adjustment to negate it.
Required Request Headers
X-Channel-Ape-Idempotent-Key - A unique value linked to the request that prevents the same operation from occuring twice. Limit of 255 characters.
Required Request Fields
locationId - The location at which the quantity will be adjusted. Must be a valid ChannelApe location
quantity - The quantity to the adjust the existing quantity by.
sku - The sku for item in ChannelApe. If the sku does not exist, it will be automatically created
inventoryStatus - The status of the quantity that will be adjusted.
Possible values include:
* AVAILABLE_TO_SELL
* COMMITTED
* ON_ORDER
* RESERVE
* ON_HOLD
* ON_HAND
Optional Request Fields
aggregateChannelSync - true or false. Defaults to false. If specified as true, the side affects of making adjustments to parent locations will happen. See the side effects section below.
memo - A note to describe why the adjustment was possibly made. Limit of 1000 characters.
effectiveAt - The time the adjustment should be effective. If this is in the future, this will be staged and inserted into the adjustment history log at the effective time. This can be useful for expiring adjustments by creating an adjustment that offsets an existing one.
ChannelApe does allow setting effective dates in the past, but does not rewrite the adjustment history. It will be placed in the history log at the time the adjustment is made.
expiresAt - The time the adjustment should negate itself. These are always relative to the adjustment that is made. So even if you are doing a set the future adjustment will be the opposite of that. Example a +7 adjustment on sku ABC-123 is set to expire the following day. The following day a -7 adjustment will be made when the adjustment expires.
futureAppliedAtpPercentage-Â If you are making adjustments in the future for reserving inventory it may be hard to know exactly what quantities you want to set and expire in the future, especially in bulk. To make this easier, the API has an option to make a future adjustment based on the total inventory you have available to promise. If you have 100 units available to promise currently and you want to reserve 5% of those you can use this field in a future adjustment to take 5% of whatever inventory you have left at the time and reserve it. So if you sell through all 100, there is nothing to reserve. If you don't sell through any and still have 100 units, it will reserve 10 leaving you 90 units to sell.
For more on inventory adjustments and how they work in ChannelApe see our Inventory Management documentation.
Side Effects
If the location you are making an adjustment for is the child of one or more parent locations and aggregateChannelSync flag is true, the same relative adjustment will be made to each parent location. Ie. +1 on the child, then a +1 for each parent. If any of the parents are associated with a real time inventory channel, then the current ATP will also be synchronized to channel.
HTTP Status Codes
Status | Meaning |
---|---|
201 | Inventory item quantity has been adjusted successfully |
400 | One or more fields provided in the request body are invalid. |
404 | Inventory Item could not be found. |
header Parameters
Content-Type | string Example: application/json |
X-Channel-Ape-Idempotent-Key | string Example: {{$guid}} |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "locationId": 10,
- "sku": "Some-New-Sku",
- "inventoryStatus": "ON_HOLD",
- "quantity": "15",
- "effectiveAt": "2019-10-25T19:07:49.088Z"
}
Response samples
- 201
{- "adjustment": 100,
- "apiAccountId": "123",
- "createdAt": "2022-09-13T18:25:34.753Z",
- "effectiveAt": "2022-09-13T18:25:34.753Z",
- "inventoryItemId": "100",
- "inventoryStatus": "AVAILABLE_TO_SELL",
- "locationId": "50",
- "quantity": 100,
- "staged": false,
- "updatedAt": "2022-09-13T18:25:34.753Z"
}
Set inventory item quantity
Overwrites the inventory items current quantity at a given location and status.
Required Request Headers
X-Channel-Ape-Idempotent-Key - A unique value linked to the request that prevents the same operation from occuring twice. Limit of 255 characters.
Required Request Fields
locationId - The location at which the quantity will be adjusted. Must be a valid ChannelApe location
quantity - The quantity to the adjust the existing quantity by.
inventoryStatus - The status of the quantity that will be adjusted.
Possible values include:
* AVAILABLE_TO_SELL
* COMMITTED
* ON_ORDER
* RESERVE
* ON_HOLD
* ON_HAND
Optional Request Fields
aggregateChannelSync - true or false. Defaults to false. If specified as true, the side affects of making adjustments to parent locations will happen. See the side effects section below.
memo - A note to describe why the adjustment was possibly made. Limit of 1000 characters.
effectiveAt - The time the adjustment should be effective. If this is in the future, this will be staged and inserted into the adjustment history log at the effective time. This can be useful for expiring adjustments by creating an adjustment that offsets an existing one.
ChannelApe does allow setting effective dates in the past, but does not rewrite the adjustment history. It will be placed in the history log at the time the adjustment is made.
For more on inventory adjustments and how they work in ChannelApe see our Inventory Management documentation.
Side Effects
If the location you are making an adjustment for is the child of one or more parent locations and the aggregateChannelSync flag is set to true, then for each parent, it will sum up all of the adjusted statuses current quantities from all of the parents child locations, including the new adjustment that was just made and will set that value as the current value for the parent location. If any of the parents are associated with a real time inventory channel, then the current ATP will also be synchronized to channel.
HTTP Status Codes
Status | Meaning |
---|---|
201 | Inventory item quantity has been adjusted successfully |
400 | One or more fields provided in the request body are invalid. |
404 | Inventory Item could not be found. |
header Parameters
Content-Type | string Example: application/json |
X-Channel-Ape-Idempotent-Key | string Example: {{$guid}} |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "locationId": 10,
- "inventoryStatus": "ON_HOLD",
- "quantity": "15",
- "effectiveAt": "2019-10-25T19:07:49.088Z"
}
Set inventory item quantity by SKU
Overwrites the inventory items current quantity at a given location and status.
Required Request Headers
X-Channel-Ape-Idempotent-Key - A unique value linked to the request that prevents the same operation from occuring twice. Limit of 255 characters.
Required Request Fields
locationId - The location at which the quantity will be adjusted. Must be a valid ChannelApe location
quantity - The quantity to the adjust the existing quantity by.
sku - The sku for item in ChannelApe. If the sku does not exist, it will be automatically created
inventoryStatus - The status of the quantity that will be adjusted.
Possible values include:
* AVAILABLE_TO_SELL
* COMMITTED
* ON_ORDER
* RESERVE
* ON_HOLD
* ON_HAND
Optional Request Fields
aggregateChannelSync - true or false. Defaults to false. If specified as true, the side affects of making adjustments to parent locations will happen. See the side effects section below.
memo - A note to describe why the adjustment was possibly made. Limit of 1000 characters.
effectiveAt - The time the adjustment should be effective. If this is in the future, this will be staged and inserted into the adjustment history log at the effective time. This can be useful for expiring adjustments by creating an adjustment that offsets an existing one.
ChannelApe does allow setting effective dates in the past, but does not rewrite the adjustment history. It will be placed in the history log at the time the adjustment is made.
For more on inventory adjustments and how they work in ChannelApe see our Inventory Management documentation.
Side Effects
If the location you are making an adjustment for is the child of one or more parent locations and the aggregateChannelSync flag is set to true, then for each parent, it will sum up all of the adjusted statuses current quantities from all of the parents child locations, including the new adjustment that was just made and will set that value as the current value for the parent location. If any of the parents are associated with a real time inventory channel, then the current ATP will also be synchronized to channel.
HTTP Status Codes
Status | Meaning |
---|---|
201 | Inventory item quantity has been adjusted successfully |
400 | One or more fields provided in the request body are invalid. |
404 | Inventory Item could not be found. |
header Parameters
Content-Type | string Example: application/json |
X-Channel-Ape-Idempotent-Key | string Example: {{$guid}} |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "locationId": 10,
- "sku": "Some-New-Sku",
- "inventoryStatus": "ON_HOLD",
- "quantity": "15",
- "effectiveAt": "2019-10-25T19:07:49.088Z"
}
Response samples
- 201
{- "adjustment": 100,
- "apiAccountId": "123",
- "createdAt": "2022-09-13T18:25:34.753Z",
- "effectiveAt": "2022-09-13T18:25:34.753Z",
- "inventoryItemId": "100",
- "inventoryStatus": "AVAILABLE_TO_SELL",
- "locationId": "50",
- "quantity": 100,
- "staged": false,
- "updatedAt": "2022-09-13T18:25:34.753Z"
}
Retrieve Inventory Item Quantities
Retrieves the newest quantities for all the different locations and statuses. If an adjustment does not exist yet for a given location/status combination it will not be returned.
HTTP Status Codes
Status | Meaning |
---|---|
200 | Inventory Item exists. |
404 | Inventory Item could not be found. |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Responses
An order is transaction that was placed on either your website or marketplace. Using the ChannelApe API you could query orders by business and retrieve orders from every channel we support in a unified format.
For more details on the ChannelApe order model, please check out our knowledgebase here.
Create order
Create a new order for a channel.
Required Fields
channelId - ID for ChannelApe channel that order belongs to (i.e. Shopify Channel, Amazon Channel, eBay Channel).
channelOrderId - ID for order unique to ChannelApe business that you assign (i.e. Shopify Order ID, ASIN).
alphabeticCurrencyCode - Currency used throughout all price fields of the order (i.e. USD, EUR, CAD).
status - State of order (PENDING, OPEN, IN_PROGRESS, CLOSED, CANCELED, HOLD).
lineItems - List of line items for the order. At least one is required to create order. Only required fields for a lineItem are a "id" and "quantity". "id" needs to be unique across all line items for the order and "quantity" needs to be greater then 0.
Optional Headers
Header | Use |
---|---|
X-Channel-Ape-Action-Id | Attaches an action to any order activities created by the request whenver a valid action ID is provided. |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "channelId": "{{channel_id}}",
- "channelOrderId": "{{channel_order_id}}",
- "status": "CANCELED",
- "alphabeticCurrencyCode": "USD",
- "totalPrice": "30.80",
- "subtotalPrice": "30.80",
- "totalTax": "1.97",
- "totalShippingPrice": "3.00",
- "totalShippingTax": "0.18",
- "totalGrams": "226.796",
- "purchasedAt": "2015-09-11T20:52:15.000Z",
- "canceledAt": "2015-09-13T08:04:00.000Z",
- "canceledReason": "Wrong product",
- "customer": {
- "name": "Dan Nino",
- "firstName": "Dan",
- "lastName": "Nino",
- "email": "iomalte14@yopmail.com",
- "phone": "(570)555-1234",
- "shippingAddress": {
- "name": "Dan Nino",
- "firstName": "Dan",
- "lastName": "Nino",
- "company": "ChannelApe",
- "address1": "224 Wyoming Avenue",
- "address2": "Rear of 1st Floor",
- "city": "Scranton",
- "province": "Pennsylvania",
- "provinceCode": "PA",
- "country": "United States",
- "countryCode": "US",
- "postalCode": "18503",
- "phone": "(555)555-5555",
- "additionalFields": [
- {
- "name": "shipping_address_id",
- "value": "3425252"
}, - {
- "name": "note",
- "value": "Leave with dog."
}
]
}, - "billingAddress": {
- "name": "Dan Nino",
- "firstName": "Dan",
- "lastName": "Nino",
- "company": "ChannelApe",
- "address1": "224 Wyoming Avenue",
- "address2": "Rear of 1st Floor",
- "city": "Scranton",
- "province": "Pennsylvania",
- "provinceCode": "PA",
- "country": "United States",
- "countryCode": "US",
- "postalCode": "18503",
- "phone": "(555)555-5555",
- "additionalFields": [
- {
- "name": "billing_address_id",
- "value": "897987466"
}, - {
- "name": "note",
- "value": "Paid with PayPal"
}
]
}, - "additionalFields": [
- {
- "name": "FirstTimeCustomer",
- "value": "false"
}, - {
- "name": "InternationalCustomer",
- "value": "false"
}
]
}, - "fulfillments": [
- {
- "id": "94938",
- "status": "CANCELED",
- "shippingCompany": "UPS",
- "shippingMethod": "SecondDay",
- "trackingNumber": "AF335244",
- "shippedAt": "2015-09-11T21:52:15.000Z",
- "lineItems": [
- {
- "id": "52365397597450",
- "sku": "0Z-DAPL-Y6NE",
- "upc": "442806190",
- "price": "30.80",
- "shippingPrice": "3.00",
- "shippingTax": "0.18",
- "shippingMethod": "2nd Day Air",
- "quantity": 1,
- "title": "Metagenics Multigenics Intensive Care without Iron 180T",
- "vendor": "Metagenics",
- "grams": "226.796",
- "additionalFields": [
- {
- "name": "ASIN",
- "value": "B003B6UM5S"
}, - {
- "name": "QuantityShipped",
- "value": "1"
}, - {
- "name": "ItemTaxCurrencyCode",
- "value": "USD"
}, - {
- "name": "PromotionDiscountCurrencyCode",
- "value": "USD"
}, - {
- "name": "PromotionDiscountAmount",
- "value": "0.00"
}
]
}
], - "additionalFields": [
- {
- "name": "WarehouseID",
- "value": "CA-34"
}
]
}
], - "lineItems": [
- {
- "id": "52365397597450",
- "sku": "0Z-DAPL-Y6NE",
- "upc": "442806190",
- "price": "30.80",
- "shippingPrice": "3.00",
- "shippingTax": "0.18",
- "shippingMethod": "2nd Day Air",
- "quantity": 1,
- "title": "Metagenics Multigenics Intensive Care without Iron 180T",
- "vendor": "Metagenics",
- "grams": "226.796",
- "additionalFields": [
- {
- "name": "ASIN",
- "value": "B003B6UM5S"
}, - {
- "name": "QuantityShipped",
- "value": "1"
}, - {
- "name": "ItemTaxCurrencyCode",
- "value": "USD"
}, - {
- "name": "PromotionDiscountCurrencyCode",
- "value": "USD"
}, - {
- "name": "PromotionDiscountAmount",
- "value": "0.00"
}
]
}
], - "refunds": [
- {
- "channelRefundId": "123456",
- "supplierRefundId": "789123",
- "transactions": [
- {
- "id": "channel-transaction-id",
- "amount": "9.99",
- "message": "9.99 Paid to seller.",
- "status": "PENDING"
}
], - "adjustments": [
- {
- "id": "channel-adjustment-id",
- "amount": "-3.99",
- "taxAmount": "1.99",
- "reason": "Refund Discrepancy"
}
], - "lineItems": [
- {
- "id": "52365397597450",
- "sku": "0Z-DAPL-Y6NE",
- "upc": "442806190",
- "price": "30.80",
- "shippingPrice": "3.00",
- "shippingTax": "0.18",
- "shippingMethod": "2nd Day Air",
- "quantity": 1,
- "title": "Metagenics Multigenics Intensive Care without Iron 180T",
- "vendor": "Metagenics",
- "grams": "226.796",
- "additionalFields": [
- {
- "name": "ASIN",
- "value": "B003B6UM5S"
}, - {
- "name": "QuantityShipped",
- "value": "1"
}, - {
- "name": "ItemTaxCurrencyCode",
- "value": "USD"
}, - {
- "name": "PromotionDiscountCurrencyCode",
- "value": "USD"
}, - {
- "name": "PromotionDiscountAmount",
- "value": "0.00"
}
]
}
]
}
], - "additionalFields": [
- {
- "name": "MarketplaceId",
- "value": "ATVPDKIKX0DER"
}, - {
- "name": "FulfillmentChannel",
- "value": "AFN"
}, - {
- "name": "ShipmentServiceLevelCategory",
- "value": "SecondDay"
}, - {
- "name": "ShipServiceLevel",
- "value": "SecondDay"
}, - {
- "name": "NumberOfItemsShipped",
- "value": "1"
}, - {
- "name": "NumberOfItemsUnshipped",
- "value": "0"
}, - {
- "name": "EarliestShipDate",
- "value": "2015-09-14T07:15:36Z"
}, - {
- "name": "LatestShipDate",
- "value": "2015-09-14T07:15:36Z"
}
]
}
Query orders by channel
Query orders for a given channel.
Required query parameters
channelId - ID of ChannelApe channel
Optional query parameters
status - String of PENDING, OPEN, HOLD, IN_PROGRESS, CLOSED, or CANCELED (no default). Used to filter results by one or many statuses. Multiple statuses can be provided by duplicate the status key and providing a different value.
startDate - ISO 8601 date string (defaults to epoch time). Used to filter results after given purchase date.
endDate - ISO 8601 date string (defaults to current time). Used to filter results before given purchase date.
updatedAtStartDate - ISO 8601 date string (defaults to epoch time). Used to filter orders that were updated after this time. Can be used in conjuction with startDate and endDate query params.
updatedAtEndDate - ISO 8601 date string (defaults to current time). Used to filter orders that were updated before this time. Can be used in conjuction with startDate and endDate query params.
lastKey - ID returned on previous page of results. Used to retrieve next page of results when results are paginated.
size - Integer between 1 and 250 (defaults to 100). Maximum number of results to return.
count - Boolean values of true or false (defaults to false). Should query return count of all matched results.
query Parameters
channelId | string Example: channelId={{channel_id}}} |
status | string Example: status=OPEN |
size | integer Example: size=100 |
startDate | string Example: startDate=2016-02-20T20:21:51.403Z |
endDate | string Example: endDate=2017-02-27T20:00:00.000Z |
updatedAtStartDate | string Example: updatedAtStartDate=2016-02-23T20:21:59.705Z |
updatedAtEndDate | string Example: updatedAtEndDate=2017-02-25T12:15:15.080Z |
lastKey | string Example: lastKey={{last_key}} |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Responses
Patch Order
Patch a single order using its ID. Any data not included in the request will be ignored, and the data will remain untouched unless explicitly defined. ChannelApe does not support patching individual list items(fulfillments, refunds, line items, or additional fields at any level). If a list is passed in on the request it will be wiped and recreated again with that given information.
All line item fields other than SKU and ID can be updated. Quantities can only be increased. New line items can also be added to an order.
Required Fields
No fields are required.
Optional Headers
Header | Use |
---|---|
X-Channel-Ape-Action-Id | Attaches an action to any order activities created by the request whenver a valid action ID is provided. |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "status": "CANCELED"
}
Update order
Update a single order using its ID. Any data not included in the request will be erased from the currently saved order.
All line item fields other than SKU and ID can be updated. Quantities can only be increased. New line items can also be added to an order.
Required Fields
channelId - ID for ChannelApe channel that order belongs to (i.e. Shopify Channel, Amazon Channel, eBay Channel).
channelOrderId - ID for order unique to ChannelApe business that you assign (i.e. Shopify Order ID, ASIN).
alphabeticCurrencyCode - Currency used throughout all price fields of the order (i.e. USD, EUR, CAD).
status - State of order (PENDING, OPEN, IN_PROGRESS, CLOSED, CANCELED, HOLD).
Optional Headers
Header | Use |
---|---|
X-Channel-Ape-Action-Id | Attaches an action to any order activities created by the request whenver a valid action ID is provided. |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "status": "CANCELED",
- "alphabeticCurrencyCode": "USD",
- "totalPrice": "30.80",
- "subtotalPrice": "30.80",
- "totalTax": "1.97",
- "totalShippingPrice": "3.00",
- "totalShippingTax": "0.18",
- "totalGrams": "226.796",
- "purchasedAt": "2015-09-11T20:52:15.000Z",
- "canceledAt": "2015-09-13T08:04:00.000Z",
- "canceledReason": "Wrong product",
- "customer": {
- "name": "Dan Nino",
- "firstName": "Dan",
- "lastName": "Nino",
- "email": "iomalte14@yopmail.com",
- "phone": "(570)555-1234",
- "shippingAddress": {
- "name": "Dan Nino",
- "firstName": "Dan",
- "lastName": "Nino",
- "company": "ChannelApe",
- "address1": "224 Wyoming Avenue",
- "address2": "Rear of 1st Floor",
- "city": "Scranton",
- "province": "Pennsylvania",
- "provinceCode": "PA",
- "country": "United States",
- "countryCode": "US",
- "postalCode": "18503",
- "phone": "(555)555-5555",
- "additionalFields": [
- {
- "name": "shipping_address_id",
- "value": "3425252"
}, - {
- "name": "note",
- "value": "Leave with dog."
}
]
}, - "billingAddress": {
- "name": "Dan Nino",
- "firstName": "Dan",
- "lastName": "Nino",
- "company": "ChannelApe",
- "address1": "224 Wyoming Avenue",
- "address2": "Rear of 1st Floor",
- "city": "Scranton",
- "province": "Pennsylvania",
- "provinceCode": "PA",
- "country": "United States",
- "countryCode": "US",
- "postalCode": "18503",
- "phone": "(555)555-5555",
- "additionalFields": [
- {
- "name": "billing_address_id",
- "value": "897987466"
}, - {
- "name": "note",
- "value": "Paid with PayPal"
}
]
}, - "additionalFields": [
- {
- "name": "FirstTimeCustomer",
- "value": "false"
}, - {
- "name": "InternationalCustomer",
- "value": "false"
}
]
}, - "fulfillments": [
- {
- "id": "94938",
- "status": "CANCELED",
- "shippingCompany": "UPS",
- "shippingMethod": "SecondDay",
- "trackingNumber": "AF335244",
- "shippedAt": "2015-09-11T21:52:15.000Z",
- "lineItems": [
- {
- "id": "52365397597450",
- "sku": "0Z-DAPL-Y6NE",
- "upc": "442806190",
- "price": "30.80",
- "shippingPrice": "3.00",
- "shippingTax": "0.18",
- "shippingMethod": "2nd Day Air",
- "quantity": 1,
- "title": "Metagenics Multigenics Intensive Care without Iron 180T",
- "vendor": "Metagenics",
- "grams": "226.796",
- "additionalFields": [
- {
- "name": "ASIN",
- "value": "B003B6UM5S"
}, - {
- "name": "QuantityShipped",
- "value": "1"
}, - {
- "name": "ItemTaxCurrencyCode",
- "value": "USD"
}, - {
- "name": "PromotionDiscountCurrencyCode",
- "value": "USD"
}, - {
- "name": "PromotionDiscountAmount",
- "value": "0.00"
}
]
}
], - "additionalFields": [
- {
- "name": "WarehouseID",
- "value": "CA-34"
}
]
}
], - "refunds": [
- {
- "channelRefundId": "123456",
- "supplierRefundId": "789123",
- "transactions": [
- {
- "id": "channel-transaction-id",
- "amount": "9.99",
- "message": "9.99 Paid to seller.",
- "status": "PENDING"
}
], - "adjustments": [
- {
- "id": "channel-adjustment-id",
- "amount": "-3.99",
- "taxAmount": "1.99",
- "reason": "Refund Discrepancy"
}
], - "lineItems": [
- {
- "id": "52365397597450",
- "sku": "0Z-DAPL-Y6NE",
- "upc": "442806190",
- "price": "30.80",
- "shippingPrice": "3.00",
- "shippingTax": "0.18",
- "shippingMethod": "2nd Day Air",
- "quantity": 1,
- "title": "Metagenics Multigenics Intensive Care without Iron 180T",
- "vendor": "Metagenics",
- "grams": "226.796",
- "additionalFields": [
- {
- "name": "ASIN",
- "value": "B003B6UM5S"
}, - {
- "name": "QuantityShipped",
- "value": "1"
}, - {
- "name": "ItemTaxCurrencyCode",
- "value": "USD"
}, - {
- "name": "PromotionDiscountCurrencyCode",
- "value": "USD"
}, - {
- "name": "PromotionDiscountAmount",
- "value": "0.00"
}
]
}
]
}
], - "additionalFields": [
- {
- "name": "MarketplaceId",
- "value": "ATVPDKIKX0DER"
}, - {
- "name": "FulfillmentChannel",
- "value": "AFN"
}, - {
- "name": "ShipmentServiceLevelCategory",
- "value": "SecondDay"
}, - {
- "name": "ShipServiceLevel",
- "value": "SecondDay"
}, - {
- "name": "NumberOfItemsShipped",
- "value": "1"
}, - {
- "name": "NumberOfItemsUnshipped",
- "value": "0"
}, - {
- "name": "EarliestShipDate",
- "value": "2015-09-14T07:15:36Z"
}, - {
- "name": "LatestShipDate",
- "value": "2015-09-14T07:15:36Z"
}
]
}
Delete order
Delete a single order using its ID.
Optional Headers
Header | Use |
---|---|
X-Channel-Ape-Action-Id | Attaches an action to any order activities created by the request whenver a valid action ID is provided. |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Responses
Get order summary
Retrieves a summary of order inforamtion between two periods. Defaults to seven days.
Required query parameters
businessId - ID of ChannelApe business
Optional query parameters
startDate - ISO 8601 date string (defaults to 7 days prior). Used to filter results after given purchase date.
endDate - ISO 8601 date string (defaults to current time). Used to filter results before given purchase date.
Response variables
earliestCreationTime - Timestamp of startDate given as query parameter or seven days prior if no startDate is given.
latestCreationTime - Timestamp of endDate given as query parameter or current time if no endDate is given.
agingOrders - Orders with a createdAt date between seven days and two months ago and an order status of OPEN or IN_PROGRESS. Note this list does not change regardless of what startDat and endDate are set to.
alphabeticCurrencyCode - Currency that all money values returned are in. Should be currency code used by business. This endpoint does not convert currencies and instead assumes all orders have the same currency as the business.
closedOrders - Number of orders with CLOSED status found for this business between the provided start and end dates.
openOrders - Number of orders with OPEN status found for this business between the provided start and end dates.
inProgressOrders - Number of orders with IN_PROGRESS status found for this business between the provided start and end dates.
canceledOrders - Number of orders with CANCELED status found for this business between the provided start and end dates.
totalOrders - Number of orders found for this business between the provided start and end dates.
totalRevenue - Summation of totalPrice for all orders found between the provided start and end dates with an OPEN, IN_PROGRESS, or CLOSED status.
channels - Total order and revenue information for all channels (enabled or not) for the business sorted in descending order by total revenue. totalRevenue for each channel is calculated by summing the totalPrice for each order that has an IN_PROGRESS, CLOSED, or OPEN status. Channel without any orders are excluded.
topSellingLineItems - Top 100 selling line items sorted in descending order by totalRevenue. totalRevenue for each line item is calcualted by multipling line item price by quantity. Line items with the same line item ID are summed together to get the totalRevenue for each line item.
query Parameters
businessId | string Example: businessId={{business_id}} |
startDate | string Example: startDate=2017-02-26T18:51:24.275Z |
endDate | string Example: endDate=2017-05-03T18:51:24.275Z |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Responses
Activities can be used to record things about an order. ChannelApe records all successful and error activities automatically, but individual integrations may have the need to record custom warning or information actions on an order.
Create an Order Activity
Log a new order activity for an Order.
The order must exist in ChannelApe when creating activity unless you are specifying a CREATE / ERROR or DELETE / SUCCESS. Although you can still create these if the order does exist, ChannelApe can anticipate the order not being there for those operation / result combinations.
Required Fields
operation - The operation for the corresponding order. (UPDATE, CREATE, or DELETE)
result - The result for the corresponding order. (WARNING, SUCCESS, ERROR, UNCHANGED)
channelOrderId - The Channel Order ID for the corresponding order. It is only required when you are not providing the Channel Ape Order ID. Channel ID is also required if you are providing this field. The should be used when an order does not yet exist in ChannelApe.
channelId - The Channel ID for the corresponding order. Must be a valid channel on the business, and is only required if providing order activity with a Channel Order ID.
orderId - The Channel Ape Order ID of the corresponding order. Channel ID and Channel Order ID is not required when providing this field.
HTTP Status Codes
Status | Meaning |
---|---|
202 | Order activity has been queued for creation. |
400 | One or more fields provided in the request body are invalid. |
404 | One or more resources provided in the request body could not be found. |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "operation": "CREATE",
- "result": "WARNING",
- "channelOrderId": "93712370",
- "completionTime": "2019-02-21T12:12:00.000Z",
- "channelId": "c73bb5ca-23d6-4744-96d5-c4fc1ca3bc5c",
- "actionId": "Some-action-id",
- "messages": [
- {
- "title": "Invalid shipping method",
- "description": "No shipping method was provided on the order. Using default shipping method of Standard."
}
]
}
Query product blocks by business ID and product filter ID
query Parameters
businessId | string Example: businessId=9f5c18b9-fef3-4d75-9dab-ea9a15fb3940 |
productFilterId | string Example: productFilterId=8cc21616-e22f-46d1-913e-00aeecb8d0f2 |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Responses
Update product filter
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "complement": false,
- "createdAt": "2015-10-22T17:23:38.106Z",
- "errors": [ ],
- "id": "90887395-9ace-45e5-8e0a-f97920cde82f",
- "label": "Product Filter with sets of SKUs, UPCs, and Vendors - UPDATE",
- "skus": [
- "190856"
], - "tags": [
- "EuropaSports"
], - "upcs": [
- "027434004190"
], - "updatedAt": "2015-10-22T17:24:28.074Z",
- "vendors": [
- "TwinLab",
- "Clif"
]
}
Create product filter
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "businessId": "0ea98dc8-367c-4288-888a-7872e105dc52",
- "label": "Testing Empty Tag Set Error",
- "condition": "NEW",
- "skus": [
- "190856"
], - "tags": [ ]
}
Create product modifier
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "businessId": "41ad9601-a0b1-46a7-a1db-068b36104b6f",
- "name": "Set Equal to Five",
- "description": "Setting quantity to five",
- "modifier": "setEqualTo",
- "target": "quantity",
- "value": "4.8"
}
Update product modifier
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "name": "Add Five Dollars to Price",
- "description": "Add five dollars to retail price",
- "modifier": "addAmount",
- "target": "retailPrice",
- "value": "5.00"
}
Put product push without ordinal
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "productFilterIds": [
- "02178907-f8ce-4fd1-91b0-8c7d5e21b7bc",
- "b0d2f967-98ff-4813-b01b-e11db46bc659",
- "4f517811-37e8-4127-b899-255482a27a9b"
], - "productModifierIds": [
- "d3232e23-fb76-4316-a5ee-0175e71289b0",
- "b59fc8e5-9dbc-49cc-8367-665551493997"
], - "primaryCategoryModifier": {
- "name": "Wall Fixtures",
- "value": "116880"
}, - "secondaryCategoryModifier": {
- "name": "Lamps, Lighting & Ceiling Fans",
- "value": "20697"
}
}
Put product push
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "productFilterIds": [
- "02178907-f8ce-4fd1-91b0-8c7d5e21b7bc",
- "b0d2f967-98ff-4813-b01b-e11db46bc659",
- "4f517811-37e8-4127-b899-255482a27a9b"
], - "productModifierIds": [
- "d3232e23-fb76-4316-a5ee-0175e71289b0",
- "b59fc8e5-9dbc-49cc-8367-665551493997"
], - "primaryCategoryModifier": {
- "name": "Wall Fixtures",
- "value": "116880"
}, - "secondaryCategoryModifier": {
- "name": "Lamps, Lighting & Ceiling Fans",
- "value": "20697"
}
}
A product is an inventory item located in your catalog. Products are usually listed for sale on a marketplace such as Amazon or Ebay.
Update Product
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "categories": {
- "secondary": "so secondary",
- "primary": "such primary"
}, - "businessId": "bff40446-6061-4496-b56a-617fba995d8f",
- "description": "Wow what a test - of presentation layer",
- "images": [
- "someOtherUrl",
- "someUrl"
], - "optionKeys": [
- "More",
- "Color",
- "Cowbell",
- "Density",
- "Width"
], - "tags": [
- "Test",
- "Hodor"
], - "title": "Testing new product fields",
- "vendor": "Hodor"
}
Create product
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "categories": {
- "secondary": "so secondary",
- "primary": "such primary"
}, - "businessId": "bff40446-6061-4496-b56a-617fba995d8f",
- "description": "Wow what a test - of presentation layer",
- "images": [
- "someOtherUrl",
- "someUrl"
], - "optionKeys": [
- "More",
- "Color",
- "Cowbell",
- "Density",
- "Width"
], - "tags": [
- "Test",
- "Hodor"
], - "title": "Testing new product fields",
- "vendor": "Hodor"
}
Recipes are used to create automations within the ChannelApe platform. Recipes can be triggered via a schedule or the completion of an action.
Update recipe
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "enabled": false,
- "sourceId": "dd9fc4f7-1d33-467c-8ecb-42b59b488736",
- "sourceType": "schedule",
- "targetAction": "PRODUCT_PULL",
- "targetId": "14384039-7364-44f9-ab00-cd74287ab72a",
- "targetType": "supplier"
}
Create recipe
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "businessId": "6b30c39f-2c7f-422c-8dbb-39072117e94c",
- "sourceId": "95c48ab3-41df-4a41-af87-3242e2c15c3b",
- "sourceType": "schedule",
- "targetId": "ec67fc63-77f0-4b64-8378-3e7211901f49",
- "targetType": "supplier",
- "targetAction": "PRODUCT_PULL",
- "enabled": "true"
}
Create schedule
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "businessId": "dbe7abb7-7d2d-4611-a294-c8ddd094a744",
- "daysOfWeek": [
- "WEDNESDAY",
- "MONDAY",
- "FRIDAY"
], - "endTimeInMinutes": 1440,
- "intervalInMinutes": 1337,
- "startTimeInMinutes": 544
}
Resources for Playbook Plays
A play is an ordered execution of steps to achieve some high level business goal.
Create step
Generate a new Playbook Step.
Required Fields
name - Name of the step. Must be unique.
Optional Fields
public - Whether or not the step will be queryable from ChannelApe. Default is true. If you turn off public visibility you will only be able retrieve this step by ID.
environmentVariableKeys -
- name: The name of the environment variable
- secured: This flag controls if a value is returned on the retrieval of a step/play supplier. This should be used for credentials or other sensitive settings that only need to be writable.
- defaultValue: If no value is provided when creating a step supplier, this value will be used. Note that this will not apply to play suppliers
- description: A description for end users to know the intention of the environment variable key. Can be up to 1k characters.
HTTP Status Codes
Status | Meaning |
---|---|
201 | Step has been created. |
400 | One or more fields provided in the request body are invalid. |
403 | You aren not a Playbook Admin and therefore cannot create steps. |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "name": "Send ChannelApe 940 over AS2",
- "public": true,
- "environmentVariableKeys": [
- {
- "name": "CHANNEL_APE_SECRET_KEY",
- "description": "The API token used to access ChannelApe's APIResources",
- "secured": true
}, - {
- "defaultValue": "CA_AS2",
- "name": "Port",
- "secured": false
}
]
}
Query steps
Query public steps. Private steps can only be retrieved by retrieving it directly by ID.
Optional query parameters
name - String value used to match the beginning of a step name (ignoring case).
lastKey - ID returned on previous page of results. Used to retrieve next page of results when results are paginated.
size - Integer between 1 and 250 (defaults to 100). Maximum number of results to return.
HTTP Status Codes
Status | Meaning |
---|---|
200 | Matching steps were returned. |
query Parameters
name | string Example: name=send |
size | integer Example: size=50 |
Authorization | string Example: Authorization=Bearor {{token}} |
header Parameters
Content-Type | string Example: application/json |
Responses
Update step
Update name, public flag, and envrionment variable keys of an existing Playbook Step.
Required Fields
name - Name of the step. Must be unique.
Optional Fields
public - Whether or not the step will be queryable from ChannelApe. Default is true. If you turn off public visibility you will only be able retrieve this step by ID.
environmentVariableKeys -
- name: The name of the environment variable
- secured: This flag controls if a value is returned on the retrieval of a step/play supplier. This should be used for credentials or other sensitive settings that only need to be writable.
- defaultValue: If no value is provided when creating a step supplier, this value will be used. Note that this will not apply to play suppliers
- description: A description for end users to know the intention of the environment variable key. Can be up to 1k characters.
HTTP Status Codes
Status | Meaning |
---|---|
200 | Step has been updated. |
400 | One or more fields provided in the request body are invalid. |
403 | You aren not a Playbook Admin and therefore cannot create steps. |
404 | Step could not be found. |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "environmentVariableKeys": [
- {
- "name": "CHANNEL_APE_SECRET_KEY",
- "description": "The API token used to access ChannelApe's APIResources",
- "secured": true
}, - {
- "defaultValue": "CA_AS2",
- "name": "Port",
- "secured": false
}
], - "name": "Send ChannelApe XML over AS2",
- "public": false
}
Resources for Playbook Steps.
A play is a sequence of steps that are executed to achieve a business goal(s).
Create play
Generate a new Playbook Play.
Required Fields
name - Name of the step that must be 190 characters or less.
HTTP Status Codes
Status | Meaning |
---|---|
201 | Play has been created. |
400 | One or more fields provided in the request body are invalid. |
403 | You are not a Playbook Admin and therefore cannot create plays. |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Request Body schema: application/json
Responses
Request samples
- Payload
{- "name": "Send orders to warehouse"
}
Response samples
- 200
{- "createdAt": "2021-04-21T19:05:26.000Z",
- "id": "6f0baa19-be1a-4a52-9e21-9b78bc516dd1",
- "name": "Send Orders to Warehouse",
- "updatedAt": "2021-04-21T19:05:26.000Z",
- "scheduleConfigurations": [ ]
}
Get All Plays
Retrieve all Playbook Plays available to install. The plays steps are not printed in this API call. You can call /v2/plays/:id to get more information on a play.
HTTP Status Codes
Status | Meaning |
---|---|
200 | Plays returned |
header Parameters
Content-Type | string Example: application/json |
Authorization | string Example: Bearor {{token}} |
Responses
Response samples
- 200
{- "plays": [
- {
- "id": "00fb2d8e-db5a-484d-9722-d72845c81ce4",
- "name": "Send Orders to Warehouse",