External channel integration via the App Store allows developers to integrate a channel into the same process flow and interaction that a customer would go through integrating and interacting with a native channel.
In order to start creating an external channel integraiton you must first register an account with Linnworks and then log in to http://developer.linnworks.com/ and create a Channel Integration app. This will provide you with a default manifest which will require you to fill out the below properties.
ChannelName | Unique name of the channel, no spaces all upper cases - Must be unique (eg. No channels that are already integrated through native implementations) |
ChannelFriendlyName | Name of the channel |
ChannelLogoURL | Link to channel logo 57x57px |
AddNewUserEndpoint | Endpoint used for adding new users |
UserConfigEndpoint | Endpoint used for adding new users. Called when a customer clicks Integrate in the config screen. |
SaveConfigEndpoint | Endpoint used for either saving the user config or on every wizard step. |
ShippingTagsEndpoint | Endpoint which should return a list of Shipping tags and friendly names from the channel. For example if a customer selects “NextDay” on the channel. |
PaymentTagsEndpoint | Endpoint which should return a list of Payment tags and friendly names from the channel. For example if a customer selects “Sage Pay” on the channel. |
ConfigDeletedEndpoint | Endpoint which is called when a customer deletes the integration from Linnworks. |
ConfigTestEndpoint | Endpoint which is called when a customer presses test in the channel config. This should verify if the customer's integration is correct. |
OrdersEndpoint | Endpoint which is called with parameters of PageNumber and UTCTimeFrom and expected to return orders, it is suggested that using last update date of orders is used. This call should return Paid and unpaid orders. |
DespatchEndpoint | Endpoint which is called with a list of orders that have been despatched within linnworks. |
ProductsEndpoint | Endpoint which is called with parameters of PageNumber and expected to return a list of products. |
InventoryUpdateEndpoint | Endpoint which is called with a list of inventory changes to be updated on the channel. Note: Linnworks will only send changesand not the whole feed. |
PriceUpdateEndpoint | Endpoint which is called with a list of price changes to be updated on the channel. Note: Linnworks will only send changes and not the whole feed. |
InventoryUpdateBatchSize | Defines the number of inventory updates that can be sent at one time. |
PriceUpdateBatchSize | Defines the number of price updates that can be sent at one time. |
DespatchUpdateBatchSize | Defines the number of despatches will be sent at one time. |
While the structure of the URL for the api endpoints doesn’t have to conform to any structure the requests and responses conform to a strict object structure.
Firstly each endpoint must respond within 10 seconds of a request otherwise the connection will be disconnected. You must choose an appropriate batch size for updates and ensure that when providing data it is done quickly and efficiently.
All requests sent and received are expected to be in JSON format. All endpoints apart from AddNewUserEndpoint will send the AuthorizationToken along with the request object.
All responses should return content-length. Streaming data is not supported. When you want to ignore one of your endpoints, send default response with no items in the response array, but with response code 200.
Field Name | Type | Description |
---|---|---|
LinnworksUniqueIdentifier | GUID | Uniqueidentifer of the linnworks customer's account. Will never change. |
String | Email of the customer, subject to change. | |
AccountName | String | Account name being integrated into the system. Will never change and on integration it is suggest that duplicates are checked for. Nb. Customers may expect to have multiple integrations of the same channel in Linnworks. |
{
"LinnworksUniqueIdentifier": "005d4263-5a0c-43ce-bdc5-526955604107", "Email": "test@mycompany.com",
"AccountName": "My Account name" }
Field Name | Type | Description |
---|---|---|
Error | String | Error string if there was an issue with the call. |
AuthorizationToken | String | If successful the authorization token string of the customer. This will be used for all subsequent calls. |
{
"Error": null, "AuthorizationToken": "a8e53e86eead4b69beaa0afcc29b67fb", }
This request is made in two situations:
Firstly when a customer is going through the integration wizard to integrate the channel. To complete the wizard returns “UserConfig” as the step name and this will indicate the wizard is complete.
The second instance is when the config is loaded the call is made to load any dynamic ConfigItems that may be required to show on the Linnworks config UI. SaveConfigEndpoint will be called on each wizard step and when the config is saved.If the config is loaded and the StepName is not “UserConfig” it will load the config wizard and take them through the stages until “UserConfig” is returned. This can be especially useful if the user is required to go through additional steps down the line.
Field Name | Type | Description |
---|---|---|
AuthorizationToken | String | Token that you generated for this customer. |
{
"AuthorizationToken": "a8e53e86eead4b69beaa0afcc29b67fb", }
Field Name | Type | Description |
---|---|---|
Error | String | Error string if there was an issue with the request. |
StepName | String | Current Step name, if returned “UserConfig” it will assume that the wizard is complete. |
AccountName | String | Account name being integrated into the system. Will never change and on integration it is suggest that duplicates are checked for. Nb. Customers may expect to have multiple integrations of the same channel in Linnworks. |
WizardStepDescription | String | Description of the current wizard step. |
WizardStepTitle | String | User visible title displayed on the integration wizard. |
ConfigItems | ConfigItem[] | See Config Item table. |
Field Name | Type | Description |
---|---|---|
ConfigItemId | String | Unique id of either the wizard item or config item. |
Description | String | Description of the config item or wizard item. Will be displayed in tooltips . |
Group Name | String | Used to group the config or wizard items. |
ListValues | ListValue[] | See List Value table. |
MustBeSpecified | Boolean | Defines if the user must enter this value in the wizard or config. |
Name | String | Visible name on the wizard or config. |
ReadOnly | Boolean | Defines if the field is a visible only field. |
RegexError | String | Message that will be shown to the custmer if wizard field validation does not go through. |
RegexValidation | String | JavaScript Regex validation script. |
SelectedValue | String | Selected value either default value or value selected in the UI when sent back. |
Sortorder | Int | Order of config item to be displayed on the UI. |
ValueType | String | Valid values: STRING, INT, DOUBLE, BOOLEAN, PASSWORD, LIST. |
Field Name | Type | Description |
---|---|---|
Display | String | Visible value. |
Value | String | Value String SelectedValue. |
{
"Error": null,
"StepName": "AddCredentials",
"WizardStepDescription": "This is where you add your website credentials",
"WizardStepTitle": "Add Credentials",
"ConfigItems": [
{"ConfigItemId": "APIKey",
"Name": "API Key",
"Description": "Website API Key",
"GroupName": "API Credentials",
"SortOrder": 1,
"SelectedValue": "AnApiKeyGoesHere",
"RegExValidation": null,
"RegExError": null,
"MustBeSpecified": true,
"ReadOnly": false,
"ListValues": [],
"ValueType": "PASSWORD"
},
{"ConfigItemId": "APISecretKey",
"Name": "API Secret Key",
"Description": "Website API Secret Key",
"GroupName": "API Credentials",
"SortOrder": 2,
"SelectedValue": "MYSuperSecretKey",
"RegExValidation": null,
"RegExError": null,
"MustBeSpecified": true,
"ReadOnly": false,
"ListValues": [],
"ValueType": "PASSWORD"
},
{"ConfigItemId": "IsOauth",
"Name": "Is Oauth",
"Description": "Defines if the authentication type is Oauth",
"GroupName": "API Settings",
"SortOrder": 3,
"SelectedValue": "False",
"RegExValidation": null,
"RegExError": null,
"MustBeSpecified": true,
"ReadOnly": false,
"ListValues": [],
"ValueType": "BOOLEAN"
},
{"ConfigItemId": "Version",
"Name": "Version",
"Description": "Version of the API",
"GroupName": "API Settings",
"SortOrder": 3,
"SelectedValue": "False",
"RegExValidation": null,
"RegExError": null,
"MustBeSpecified": true,
"ReadOnly": false,
"ListValues": [
{"Display": "1.6 - Stable",
"Value": "1.6.0"},
{ "Display": "1.6 - Beta",
"Value": "1.6.1" },
{ "Display": "1.5 - Stable",
"Value": "1.5.0"}],
"ValueType": "LIST"}
]}
This request is made in two situations:
At the end of every config wizard step as a customer enters / edits the fields and on the config screen if custom config items are supplied back when the step name is “UserConfig”.
Linnworks will provide the entire object that was provided back with the only field ever changing being the SelectedValue. This is passed back cast as string as fields may be of many different types.
Field Name | Type | Description |
---|---|---|
AuthorizationToken | String | Authorization Token from the customers integration. |
ConfigItems | ConfigItem[] | See Config Item table. |
StepName | String | The step name Linnworks thinks it’s on. It’s good to check this field incase wizards get out of sync for any reason. |
{
"StepName": "AddCredentials",
"ConfigItems": [
{"ConfigItemId": "APIKey",
"Name": "API Key",
"Description": "Website API Key",
"GroupName": "API Credentials",
"SortOrder": 1,
"SelectedValue": "AnApiKeyGoesHere",
"RegExValidation": null,
"RegExError": null,
"MustBeSpecified": true,
"ReadOnly": false,
"ListValues": [],
"ValueType": "PASSWORD"
},
{"ConfigItemId": "APISecretKey",
"Name": "API Secret Key",
"Description": "Website API Secret Key",
"GroupName": "API Credentials",
"SortOrder": 2,
"SelectedValue": "MYSuperSecretKey",
"RegExValidation": null,
"RegExError": null,
"MustBeSpecified": true,
"ReadOnly": false,
"ListValues": [],
"ValueType": "PASSWORD"
},
{"ConfigItemId": "IsOauth",
"Name": "Is Oauth",
"Description": "Defines if the authentication type is Oauth",
"GroupName": "API Settings",
"SortOrder": 3,
"SelectedValue": "False",
"RegExValidation": null,
"RegExError": null,
"MustBeSpecified": true,
"ReadOnly": false,
"ListValues": [],
"ValueType": "BOOLEAN"}],
"AuthorizationToken": "1fdea65984c54a91ae8549de68844ca9"
}
Field Name | Type | Description |
---|---|---|
AuthorizationToken | String | Authorization Token from the customers integration. |
ConfigItems | ConfigItem[] | See Config Item table. |
StepName | String | The next wizard step name. |
WizardStepDescription | String | Description of the next wizard step. |
WizardStepTitle | String | User visible title displayed on the integration wizard. |
{
"Error": null,
"StepName": "OrderSetup",
"WizardStepDescription": "Definition of tax settings and items to return",
"WizardStepTitle": "Order Setup",
"ConfigItems": [
{
"ConfigItemId": "PriceIncTax",
"Name": "Price Includes Tax",
"Description": "Defines if the price of an item includes tax",
"GroupName": "Tax",
"SortOrder": 1,
"SelectedValue": "False",
"RegExValidation": null,
"RegExError": null,
"MustBeSpecified": true,
"ReadOnly": false,
"ListValues": [],
"ValueType": "BOOLEAN"
},
{"ConfigItemId": "DownloadVirtualItems",
"Name": "Download Virtual Items",
"Description": "Check to allow the download of virtual items",
"GroupName": "Items",
"SortOrder": 2,
"SelectedValue": "False",
"RegExValidation": null,
"RegExError": null,
"MustBeSpecified": false,
"ReadOnly": false,
"ListValues": [],
"ValueType": "BOOLEAN"}]
}
Field Name | Type | Description |
---|---|---|
AuthorizationToken | String | Authorization Token from the customers integration. |
{
"AuthorizationToken": "0dfdbaf3e4d5434f825e774e31bcc148"
}
Field Name | Type | Description |
---|---|---|
Error | String | If there was an error with the request. |
ShippingTags | ShippingTag[] | See Shipping Tag table. |
Field Name | Type | Description |
---|---|---|
Tag | String | The shipping tag that is supplied on the order. |
FriendlyName | String | Friendly name of the shipping tag. |
Site | String | Site of the shipping tag, this is usually used when the channel has one set of credentials however has multiple sites for example UK, DE, US and so on. Leave blank if this is not applicable. |
{
"Error": null,
"ShippingTags": [
{"Tag": "RM CLR01",
"FriendlyName": "Royal Mail First Class",
"Site": ""},
{"Tag": "RM_SpecialDelivery_9am",
"FriendlyName": "Royal Mail Special Delivery",
"Site": ""},
{"Tag": "dpd",
"FriendlyName": "DPD - Next Day",
"Site": ""},
{"Tag": "fedex_ground",
"FriendlyName": "Fedex - Ground",
"Site": ""},
{"Tag": "matrix_rate_10221",
"FriendlyName": "Some other service",
"ListValues": [],
"Site": ""}]
}
Field Name | Type | Description |
---|---|---|
AuthorizationToken | String | Authorization Token from the customers integration. |
{
"AuthorizationToken": "0dfdbaf3e4d5434f825e774e31bcc148"
}
Field Name | Type | Description |
---|---|---|
Error | String | If there was an error with the request. |
PaymentTags | PaymentTags[] | See Payment Tag table. |
Field Name | Type | Description |
---|---|---|
Tag | String | The payment tag that is supplied on the order. |
FriendlyName | String | Friendly name of the payment tag. |
Site | String | Site of the payment tag, this is usually used when the channel has one set of credentials however has multiple sites for example UK, DE, US and so on. Leave blank if this is not applicable. |
{
"Error": null,
"PaymentTags": [
{"Tag": "paypal_verified",
"FriendlyName": "PayPal",
"Site": ""},
{"Tag": "mastercard",
"FriendlyName": "Credit Card - Master Card",
"Site": ""},
{"Tag": "credit_unknown",
"FriendlyName": "Credit Card - Unknown",
"Site": ""},
{"Tag": "bank",
"FriendlyName": "Bank payments",
"Site": ""}]
}
Field Name | Type | Description |
---|---|---|
AuthorizationToken | String | Authorization Token from the customers integration. |
{
"AuthorizationToken": "0dfdbaf3e4d5434f825e774e31bcc148"
}
Field Name | Type | Description |
---|---|---|
Error | String | If there was an error with the request. |
{
"Error": "User config does not exist"
{
Field Name | Type | Description |
---|---|---|
AuthorizationToken | String | Authorization Token from the customers integration. |
{
"AuthorizationToken": "0dfdbaf3e4d5434f825e774e31bcc148"
}
Field Name | Type | Description |
---|---|---|
Error | String | If there was an error with the request. |
{
"Error": "User config does not exist"
{
Field Name | Type | Description |
---|---|---|
AuthorizationToken | String | Authorization Token from the customers integration. |
UTCTimeFrom | DateTime | Utc date from Linnworks since the last time we had a successful orders request. This may change from Linnworks side if the user want’s to back date the sync. It is suggested that if the channels API has the availability of filtering by the last time the order was updated to use this. Format: "yyyy-MM-dd HH:mm:ssZ". |
PageNumber | Int | Page number of the request. Starts from 1. |
{
"PageNumber": 1,
"UTCTimeFrom": "2016-08-26T09:43:14Z",
"AuthorizationToken": "f989a881a6a241d5ab81b4b03f3730f1"
{
Field Name | Type | Description |
---|---|---|
Error | String | If there was an error with the request. |
HasMorePages | Boolean | Indicates if there are more pages after the current page. |
Orders | Order[] | See Order Table. |
Field Name | Type | Description |
---|---|---|
BillingAddress | Address[] | See Address Table. |
DeliveryAddress | Address[] | See Address Table. |
OrderItems | OrderItem[] | See Order Item Table. |
ExtendedProperties | ExtendedProperty[] | See Extended Property Table. |
Notes | Note[] | See Note table. |
Site | String | Site of the order, this is usually used when the channel has one set of credentials however has multiple sites for example UK, DE, US and so on. Leave blank if this is not applicable. This field is used in Postal Service and Payment mapping. |
MatchPostalServiceTag | String | Shipping tag used which is used for order mapping to map the channel shipping tag to the Linnworks shipping service. |
MatchPaymentMethodTag | String | Payment tag used which is used for order mapping to map the channel payment tag to the Linnworks payment service. |
PaymentStatus | String | Payment status or the order. Valid values: PAID, UNPAID |
ChannelBuyerName | String | Name of the customer who bought the item. If the channel supports usernames it’s suggested to put the username instead of the actual name of the customer. |
ReferenceNumber | String | Unique reference of the order. If two orders have the same reference then one will be ignored. This field will be sent back when marking orders as despatched. |
ExternalReference | String | External reference is usually the payment gateway transaction id. |
Currency | String | 3 digit ISO 4217 currency code of the order. |
ReceivedDate | DateTime | Date the order was created. Where possible normalize to UTC Format: "yyyy-MM-dd HH:mm:ssZ". |
DispatchBy | DateTime | Date the order should be shipped by. Where possible normalize to UTC Format: "yyyy-MM-dd HH:mm:ssZ". |
PaidOn | DateTime | Date the order was paid. Where possible normalize to UTC Format: "yyyy-MM-dd HH:mm:ssZ". |
PostalServiceCost | Decimal | Postal cost of the order including tax. |
PostalServiceTaxRate | Decimal | Tax rate used for the postal service. |
UseChannelTax | Boolean | If True Linnworks will not overwrite the PostalServiceTaxRate percentage. |
Field Name | Type | Description |
---|---|---|
FullName | String | Customer Full Name. |
Company | String | Customer Company. |
Address1 | String | First line of address. |
Address2 | String | Second line of address. |
Address3 | String | Third line of address. |
Town | String | Town. |
Region | String | Area, County, State or a Region. |
PostCode | String | Postal / Zip Code. |
Country | String | Country. |
CountryCode | String | ISO 3166-2 Country Code. |
PhoneNumber | String | Customer's phone number. |
EmailAddress | String | Email Address. |
Field Name | Type | Description |
---|---|---|
TaxCostInclusive | Boolean | Indicates if the PricePerUnit includes tax. |
UseChannelTax | Boolean | If True Linnworks will not overwrite the tax percentage. |
IsService | Boolean | Indicates if the order line is a service. |
OrderLineNumber | String | Unique per order line number. Any orders with non unique or duplicates will not be saved. |
SKU | String | SKU of the product (used for Mapping). |
PricePerUnit | Decimal | Individual price per unit. |
LinePercentDiscount | Decimal | Percentage line discount. |
ItemTitle | String | Title of the product. |
Options | Option[] | See Option Table. |
Field Name | Type | Description |
---|---|---|
Name | String | Unique per order option Name. |
Value | String | Option Value. |
Field Name | Type | Description |
---|---|---|
Name | String | Unique per order option Name. |
Value | String | Option Value. |
Type | String | Type of property for example “Shipping”, “Tracking Number”. |
Field Name | Type | Description |
---|---|---|
Note | String | Note text, duplicates will be ignored. |
NoteEntryDate | DateTime | Date of the note Format: "yyyy-MM-dd HH:mm:ssZ". |
NoteUserName | String | User who entered the note, if left blank “Channel” will be entered. |
IsInternal | Boolean | Indicates if the note is customer visible. |
{
"Error": null,
"HasMorePages": true,
"Orders": [{
"BillingAddress": {
"FullName": "Mr Billing Billington",
"Company": "Linn Systems Ltd",
"Address1": "2-4 Southgate",
"Address2": "",
"Address3": "",
"Town": "Chichester",
"Region": "West Sussex",
"PostCode": "PO19 8DJ",
"Country": "United Kingdom",
"CountryCode": "GB",
"PhoneNumber": "00000000002",
"EmailAddress": "test@test.com"
},
"DeliveryAddress": {
"FullName": "Mr Testing Testington",
"Company": "Linn Systems Ltd",
"Address1": "2-4 Southgate",
"Address2": "",
"Address3": "",
"Town": "Chichester",
"Region": "West Sussex",
"PostCode": "PO19 8DJ",
"Country": "United Kingdom",
"CountryCode": "GB",
"PhoneNumber": "00000000001",
"EmailAddress": "test@test.com"
},
"OrderItems": [{
"TaxCostInclusive": true,
"UseChannelTax": false,
"IsService": false,
"OrderLineNumber": "0",
"SKU": "ChannelProduct_0",
"PricePerUnit": 0.731495563281465,
"Qty": 479904921,
"TaxRate": 20.0,
"LinePercentDiscount": 0.0,
"ItemTitle": "Title for MyReference-2ChannelProduct_0",
"Options": [{
"Name": "Colour",
"Value": "Red"
}]}],
"ExtendedProperties": [{
"Name": "Prop0",
"Value": "Val0",
"Type": "Info"
}],
"Notes": [{
"Note": "A customer has left a note",
"NoteEntryDate": "2016-08-26T13:28:05Z",
"NoteUserName": "Channel",
"IsInternal": false
}],
"Site": "",
"MatchPostalServiceTag": "Royal Mail First Class",
"MatchPaymentMethodTag": "PayPal",
"PaymentStatus": "PAID",
"ChannelBuyerName": "A Channel Buyer Name",
"ReferenceNumber": "MyReference-2",
"ExternalReference": "MyExternalReference-1",
"SecondaryReferenceNumber": null,
"Currency": "GBP",
"ReceivedDate": "2016-08-26T13:23:05.1678193Z",
"DispatchBy": "2016-09-05T13:28:05.1678193Z",
"PaidOn": "2016-08-26T13:19:05.1678193Z",
"PostalServiceCost": 0.818234497130958,
"PostalServiceTaxRate": 20.0,
"UseChannelTax": false
}]
}
Field Name | Type | Description |
---|---|---|
AuthorizationToken | String | Authorization Token from the customers integration. |
Orders | DespatchOrder[] | See Despatch Order Table. |
Field Name | Type | Description |
---|---|---|
ReferenceNumber | String | Unique reference of the order. |
ShippingVendor | String | Shipping Ventor / Carrier. |
ShippingMethod | String | Linnworks shipping method. |
TrackingNumber | String | Tracking Number. |
SecondaryTrackingNumbers | String | Additional Tracking numbers. |
ProcessedOn | String | Date order was processed Format: "yyyy-MM-dd HH:mm:ssZ". |
Items | Items[] | See Despatch Item table. |
Field Name | Type | Description |
---|---|---|
SKU | String | Channel SKU from the order item. |
OrderLineNumber | String | Unique line number from the order item. |
DespatchedQuantity | int | Quantity despatched, due to splits this might be less than the original order and additional quantity may be provided later. |
{
"Orders": [{
"ReferenceNumber": "12345",
"ShippingVendor": "Royal Mail",
"ShippingMethod": "First Class",
"TrackingNumber": "TrackingNumber 1",
"SecondaryTrackingNumbers": null,
"ProcessedOn": "2016-08-29T07:49:51.5036339Z",
"Items": [{
"SKU": "SKU1234",
"OrderLineNumber": "1",
"DespatchedQuantity": 2
},
{
"SKU": "SKU1235",
"OrderLineNumber": "2",
"DespatchedQuantity": 2
}]
}],
"AuthorizationToken": "b7f4ee81bc4e4363adcd00eced0ea471"
}
Field Name | Type | Description |
---|---|---|
Error | String | If there was an error with the request. |
Orders | Order[] | See Despatch Order Response table. |
Field Name | Type | Description |
---|---|---|
Error | String | If there was an error with the request. |
ReferenceNumber | String | Reference number of the order. |
{
"Error": null,
"Orders": [{
"Error": "Despatch failed for some reason",
"ReferenceNumber": "12345"}]
}
Field Name | Type | Description |
---|---|---|
AuthorizationToken | String | Authorization Token from the customers integration. |
PageNumber | Int | Current page number in the fetch sequence, starts from 1. |
{
"AuthorizationToken": "0dfdbaf3e4d5434f825e774e31bcc148",
"PageNumber": 1
}
Field Name | Type | Description |
---|---|---|
Error | String | If there was an error with the request. |
HasMorePages | Boolean | Indicates if more pages are expected. |
Products | Product[] | See Product table. |
Field Name | Type | Description |
---|---|---|
SKU | String | Product Unique SKU, duplicates will be ignored. |
Title | String | Title of the product. |
Quantity | Int | Current level on the channel. |
Price | Decimal | Current price on the channel. |
Reference | String | Reference from the channel e.g. internal product ID. This will be submitted alongside the SKU in inventory and price updates. |
{
"Error": null,
"HasMorePages": true,
"Products": [{
"SKU": "ChannelProduct_1",
"Title": "Channel Tile of product ChannelProduct_1",
"Quantity": 68,
"Price": 9.15,
"Reference": "12458"}]
}
Field Name | Type | Description |
---|---|---|
AuthorizationToken | String | Authorization Token from the customers integration. |
Products | Product[] | See Inventory Product table. |
Field Name | Type | Description |
---|---|---|
SKU | String | Product SKU. |
Reference | String | Product Reference, e.g. Internal product id. |
Quantity | Int | New available quantity. |
{
"Products": [{
"SKU": "ABC1234",
"Reference": "122440",
"Quantity": 10
}],
"AuthorizationToken": "4d1aa44d211641a48da9ae269ff68975"
}
Field Name | Type | Description |
---|---|---|
Error | String | If there was an error with the request. |
Products | Product[] | See Inventory Product Response table. |
SKU | String | Product Unique SKU, duplicates will be ignored. |
{
"Error": null,
"Products": [{
"Error": "SKU does not exist",
"SKU": "MyNonExistantSKU"
}]
}
Field Name | Type | Description |
---|---|---|
AuthorizationToken | String | Authorization Token from the customers integration. |
Products | Product[] | See Price Product table. |
Field Name | Type | Description |
---|---|---|
SKU | String | Product SKU. |
Reference | String | Product Reference, e.g. Internal product id. |
Price | Decimal | New price |
Tag | String | Price tag, this is free text but can be used to identify different types of Prices for example the Price with no tag could be current selling price, and a tag submitted with “RETAILPRICE” could be the retail price. |
{
"Products": [{
"SKU": "ABC1234",
"Reference": "122440",
"Price": 10.99,
"Tag": ""
}],
"AuthorizationToken": "4d1aa44d211641a48da9ae269ff68975"
}
Field Name | Type | Description |
---|---|---|
Error | String | If there was an error with the request. |
Products | Product[] | See PriceProduct Response table. |
Field Name | Type | Description |
---|---|---|
SKU | String | Product Unique SKU, duplicates will be ignored. |
Error | String | If there was an error with the product update. |
{
"Error": null,
"Products": [{
"Error": "SKU does not exist",
"SKU": "MyNonExistantSKU"
}]
}
Field Name | Type | Description |
---|---|---|
AuthorizationToken | String | Authorization Token from the customers integration. |
{
"AuthorizationToken": "0dfdbaf3e4d5434f825e774e31bcc148"
}
Field Name | Type | Description |
---|---|---|
Error | String | If there was an error with the product update. |
CanCancel | Boolean | Determines whether the channel allows cancelling an order |
CanCancelOrderLines | Boolean | Determines whether the channel allows cancelling individual order lines |
CanCancelOrderLinesPartially | Boolean | Determines whether the channel allows cancelling only part of an order line (not the full quantity) |
AutomaticRefundOnCancel | Boolean | Determines whether the channel will automatically refund an order when it is cancelled. When enabled, this will create a processed refund in Linnworks when an order is cancelled |
CanRefund | Boolean | Determines whether the channel allows refunding an order |
CanAttachRefundToItem | Boolean | Determines whether the channel allows attaching refunds to a particular order line |
CanAttachRefundToService | Boolean | Determines whether the channel allows attaching refunds to service lines |
RefundShippingTypes | ShippingRefundType | Determines how the channel deals with shipping refunds |
CanRefundAdditionally | Boolean | Determines whether the channel allows creating refunds independent of any items/shipping |
CanReturn | Boolean | Determines whether the channel allows creating returns |
Flag | Numeric Value | Description |
---|---|---|
NotSupported | 0 | Shipping refunds are not supported |
TiedToItem | 1 | Shipping refunds are only supported when attached to an item |
Independent | 2 | Shipping refunds are supported as independent refunds |
{
"Error": null,
"CanCancel": true,
"CanCancelOrderLines": true,
"CanCancelOrderLinesPartially": true,
"AutomaticRefundOnCancel": false,
"CanRefund": true,
"CanAttachRefundToItem": true,
"CanAttachRefundToService": false,
"RefundShippingTypes": 0,
"CanRefundAdditionally": false,
"CanReturn": false,
}