NAV
BladePRO
Public API
Version 1.0.0
PHP Ruby Node CURL

Overview

Introduction

The BladePRO Public API allows fulfilment customers to view and create orders, products and purchase orders. We have developed the API to be powerful, but simple to integrate with. It is available over HTTPS using REST architecture to accept and return data in JSON format, making it compatible with most scripting languages.

Getting Help

For help or assistance with the Public API please contact technical support team at techops@i-fulfilment.co.uk providing as much detail about your issue as possible.

Where applicable please include:

Environments

There are two environments that developers can use when using the BladePRO Public API: Production or Sandbox. The Sandbox environment uses anonymised live data sampled from the production environment for each organisation to provide developers a realistic dataset to test with. No personal or sensitive data is kept within this data. This dataset is refresh every Sunday and any data created on the Sandbox during the week will be reset.

Along with an API access you can also request a regular user account for the BladePRO web portal. This will allow you to see the product and order data you are dealing and can often be helpful when debugging an issue.

Sandbox Details

Production Details

REST

The API uses REST architecture over HTTPS. To request, modify, create, or delete data you must select the appropriate HTTP method, shown below.

Method Action Description
GET Read Retrieve a list of records, or a single record
POST Create Add a new record
PUT Update Update an existing record
DELETE Delete Remove a record

Rate Limits

The BladePRO API uses a leaky bucket algorithm to limit the number of API calls per user in a given time period. A full bucket contains 500 possible connections, and each API endpoint called will deduct one connection from the bucket. An additional five connections will be added to the bucket every minute until it reaches the maximum.

If your bucket becomes empty, API calls will be rejected until more connections are added, i.e. you will be limited to five calls per minute.

Error Codes

The BladePRO API uses the following error codes:

Error Code Name Meaning
400 Bad Request Your request is incorrectly formatted
401 Unauthorized Your API key is wrong
403 Forbidden You do not have access to the specified endpoint
404 Not Found The specified endpoint could not be found
500 Internal Server Error There is a problem with the API, please try again later

Scopes

The BladePRO API uses the following permission scopes:

Module Scope Description
Orders APP::ORDERS::READ View READ ONLY order records
Orders APP::ORDERS::MANAGE Read, create, update and delete order records
Products APP::PRODUCTS::READ View READ ONLY product records
Products APP:PRODUCTS::MANAGE Read, create, update and delete product records
Purchase Orders APP::PURCHASE-ORDERS::READ View READ ONLY purchase order records
Purchase Orders APP::PURCHASE-ORDERS::MANAGE Read, create, update and delete purchase order records
Returns APP::RETURNS::READ View READ ONLY return records
Returns APP::RETURNS::MANAGE Read, create, update and delete return records
Vendors APP::VENDORS-ORDERS::READ View READ ONLY vendor records
Vendors APP::VENDORS-ORDERS::MANAGE Read, create, update and delete vendor records

Structure

BladePRO’s Public API works using pre-defined structures for accepting input and its response format. For each endpoint there will be descriptions for the following elements, when appropriate:

Types for the Request Body

If present, this section will have one or more subsections. The first will be the one being used as the main type for the endpoint, and will be marked with the text "(root level)". The rest will follow in alphabetical order.

There will be a table in each of these sections, describing the type and listing the fields with description, allowed types and restrictions for validating the values. Fields are optional unless the required restriction is present. Also, fields can accept the value null, unless not null is present.

Possible types include:

For most fields, there will be requirements for which values are valid. For fields with multiple allowed types, some restrictions might only apply to some types. In this case, the requirement text will say “if type is type, then …". Possible requirements include:

Endpoint Filters

The filters section contain tables that describe which fields are filterable, what operators are allowed, and where the possible values can be retrieved from. It is possible to not filter at all, to filter by one or more different fields, and to filter each field by multiple operators, but it is not possible to filter by the same field and operator by multiple values.

This is valid: ?reference[NOT_EQUALS]=asdf&reference[LIKE]=asd, but this is invalid: ?reference[NOT_EQUALS]=asdf&reference[NOT_EQUALS]=zxcv as it contains two NOT_EQUALS operators.

For operators that allow multiple values, use a comma separated list: ?status[IN]=draft,active. Date types will require ISO strings for values.

The following operators are available:

Operator Availability
EQUALS strings, numbers, enums, booleans
NOT_EQUALS strings, numbers, enums, booleans
IN strings, numbers, enums
NOT_IN strings, numbers, enums
LESS_THAN strings, numbers, dates
MORE_THAN strings, numbers, dates
LIKE strings
NOT_LIKE strings
ON_DATE dates

Some fields reference library data, such as IDs for channels, warehouses etc. For such fields the Value List URL column of the filter specification will define the URL for the available values.

Authentication

<?php

// For this example we are using the popular library Guzzle.
// Details on how to install and use Guzzle can be found at:
// http://docs.guzzlephp.org/en/latest/

// Load up Guzzle to perform the http request
$client = new GuzzleHttp\Client();

// Request an access token
$tokenRequest = $client->request('POST', 'https://public-api.bladepro.io/v1/auth/login', [
    'body' => json_encode([
        'username' => 'geminize-direct',
        'password' => 'API_SECRET_KEY'
    ]),
]);

// Get the access token
$auth = json_decode($tokenRequest->getBody(), true);

// Did we receive a token?
if(empty($auth["data"]["token"])) {
    throw new \Exception("Failed to get an access token");
}
require 'rest-client'
require 'json'

# Request an access token
auth = RestClient.post 'https://public-api.bladepro.io/v1/auth/login', {
    'username' => 'geminize-direct',
    'password' => 'API_SECRET_KEY'
}.to_json, {
    content_type: :json,
    accept: :json
}

auth = JSON.parse(auth)

# Did we receive a token?
if ( !auth['data']['token'] )
    raise RuntimeError, "Failed to get an access token"
end
// Require the node HTTP module
var request = require('request');

// Request an access token
request({method: 'POST', json:true, uri: 'https://public-api.bladepro.io/v1/auth/login', body: {username: 'geminize-direct', password: 'API_SECRET_KEY'}}, function (error, response, body) {

    // Get the access token
    var auth = body;

    // Did we receive a token?
    if ( !auth || !auth.data || !auth.data.token ) {
        throw "Failed to get an access token";
    }
});
# Request an access token
curl -XPOST -H "Content-type: application/json" -d '{"username":"geminize-direct","password":"API_SECRET_KEY"}' 'https://public-api.bladepro.io/v1/auth/login'

Make sure to replace API_SECRET_KEY with your API key. The endpoint returns a JSON user object, structured like this:

{
    "meta": {
        "request_reference": "1vd88ym25-c893v8t"
    },
    "data": {
        "session_token": "9nYQgN1Z7M8Fj15CjXDmSDAC4SIPItcD5I0enaZ5bVLHUKvn6sGfstYadhSpnBGurEBZ3L4es9ZWIrlFBviBBBxXrah1FcnHS43Q",
        "expiry": "2020-01-15T17:09:15.000Z"
    }
}

Before accessing the API, you will need a personal API key from i-Fulfilment. This key is used to identify yourself to the API and receive an access token, required to access any of the API endpoints. These tokens are temporary and will auto expire after 30 minutes of no use.

To generate an authentication token, perform an authentication request, sending your personal and private keys. The API will generate an authentication token which is valid for one hour.

You must send this token in the header of any subsequent requests.

There is no limit to the number of authentication requests you make – you can perform one authentication request, store the token and use it until it expires, or perform a separate authentication request to generate a new token before each separate API call.

Login

POST /v1/auth/login

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/auth/login", [
    "body" => json_encode([
        "username" => "my-login",
        "password" => "my-password",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/auth/login', {
  username: "my-login",
  password: "my-password",
}, {
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/auth/login",
    body: {
        "username": "my-login",
        "password": "my-password"
    },
    headers: {
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/auth/login' \
--header 'Content-Type: application/json' \
--data-raw '{
    "username": "my-login",
    "password": "my-password"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "session_token": "wH45uWbrWvIQN6ivBBGlbN5jJ3c83vWaXsOL0OkdvMCvw8SM3ZKhrWjrhArys6OgRcO7sYOQNIRba5a3KZSsXp4fxZRbzaoyXs6Y",
        "expiry": "2025-05-13T13:50:31.000Z"
    }
}

Log into BladePRO.

Request Body

Login

Return Type

Auth

Types for the Request Body

Login (root level)

Key Description Types Restrictions
username The username. string required
not null
min length is 2
password The password. string required
not null
min length is 3

Scopes

This endpoint is available to all users.

GDPR

Dealing with GDPR requests.

GDPR Request

POST /v1/gdpr

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/gdpr", [
    "body" => json_encode([
        "message" => "Customer John Smith (#23) has requested a redaction.",
        "details" => [
            "name" => "John Smith",
            "id" => "23",
            "email" => "john.smith@nowhere.com",
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/gdpr', {
  message: "Customer John Smith (#23) has requested a redaction.",
  details: {
    name: "John Smith",
    id: "23",
    email: "john.smith@nowhere.com",
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/gdpr",
    body: {
        "message": "Customer John Smith (#23) has requested a redaction.",
        "details": {
            "name": "John Smith",
            "id": "23",
            "email": "john.smith@nowhere.com"
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/gdpr' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "message": "Customer John Smith (#23) has requested a redaction.",
    "details": {
        "name": "John Smith",
        "id": "23",
        "email": "john.smith@nowhere.com"
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 34
    }
}

Submit a GDPR request.

Request Body

GdprRequest

Return Type

Gdpr

Types for the Request Body

GdprRequest (root level)

Key Description Types Restrictions
message Details regarding the request. string required
not null
details Specific request details in a Key/Value object. object required
not null

Scopes

This endpoint is only available for users with scope APP::MISC.

Orders

Working with orders.

List Goodsouts

GET /v1/orders/despatched

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/despatched?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/despatched?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/despatched?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/despatched?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1049789,
            "status": "despatched",
            "bid": "1049789-1049789",
            "despatch_date": null,
            "courier": {
                "name": "Royal Mail",
                "code": "RM",
                "service": {
                    "name": "CRL - Packet (24 Hr)",
                    "code": "1ST",
                    "tracked": false,
                    "signed": false
                },
                "tracking": [
                    {
                        "courier": "Royal Mail",
                        "code": "RMTN1134905823GB",
                        "url": "http://www.royalmail.com/trackdetails?trackNumber=RMTN1134905823GB"
                    }
                ]
            },
            "attributes": [
                {
                    "name": "Marketplace",
                    "value": "202-9999999-9995900"
                }
            ],
            "order": {
                "id": 1234567,
                "reference": "CustomerReference #154254",
                "status": "open",
                "currency": {
                    "code": "GBP",
                    "name": "British Pound",
                    "symbol": "£"
                }
            }
        }
    ]
}

List order goodsouts. Please note that all expands will be applied automatically.

Return Type

array<DespatchedOrders>

Filters

Field Operators Value List URL
search LIKE fuzzy search across selected attributes
id EQUALS
order.reference IN
order.channel.short_code IN, NOT_IN /v1/orders/channels
order.channel.id IN, NOT_IN
despatch_date LESS_THAN, ON_DATE, MORE_THAN
order.currency.code IN, NOT_IN
attributes.name IN, NOT_IN

Sortings

Results can be sorted by the following keys: bid, despatch_date, order.channel.name, order.status, placed_date, status, warehouse.name.

Available expands

Field Return Type Description
attributes array<CachedAttribute> An attribute.
courier CachedCourier A courier.
courier.service CachedShippingService Holds data about a shipping service.
courier.tracking array<CachedCourierTracking> Tracking details.
order CachedOrder An order.
order.currency SummarisedCurrency A currency.

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

List Goodsouts

GET /v1/orders/goodsouts

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/goodsouts?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/goodsouts?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/goodsouts?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1049789,
            "bid": "1234567-1049789",
            "creator": "Support Team",
            "status": "awaiting_despatch",
            "date_placed": "2019-11-25T14:52:56.000Z",
            "despatch_date": null,
            "despatch_on_date": null,
            "warehouse": "CHR",
            "courier": {
                "name": "Royal Mail",
                "code": "RM",
                "service": {
                    "name": "CRL - Packet (24 Hr)",
                    "code": "1ST",
                    "tracked": false,
                    "signed": false
                },
                "tracking": [
                    {
                        "courier": "Royal Mail",
                        "code": "RMTN1134905823GB",
                        "url": "http://www.royalmail.com/trackdetails?trackNumber=RMTN1134905823GB"
                    }
                ]
            },
            "tags": [
                {
                    "name": "Processed",
                    "shortcode": "processed",
                    "description": "Processed by a 3rd party system"
                }
            ],
            "attributes": [
                {
                    "name": "Marketplace",
                    "value": "202-9999999-9995900"
                }
            ],
            "shipping_address": {
                "first_name": "Support",
                "last_name": "Team",
                "company": null,
                "address_one": "Unit 4",
                "address_two": "Radar Way",
                "address_three": null,
                "town": "Christchurch",
                "county": "Dorset",
                "postcode": "BH234FL",
                "email": "support.team@i-fulfilment.co.uk",
                "mobile": null,
                "telephone": null,
                "secondary_telephone": null,
                "contact": {
                    "name": "Support Team",
                    "group": "I-Fulfilment"
                },
                "country": {
                    "name": "United Kingdom",
                    "iso_2": "GB",
                    "iso_3": "GBR"
                }
            },
            "order": {
                "id": 1234567,
                "reference": "CustomerReference #154254",
                "status": "open",
                "channel": {
                    "id": 342,
                    "short_code": "DEMO",
                    "name": "Demo Channel"
                },
                "currency": {
                    "code": "GBP",
                    "name": "British Pound",
                    "symbol": "£"
                },
                "brand": {
                    "name": "Demo Brand"
                }
            },
            "lines": {
                "id": 3450345,
                "product_variation_id": 1,
                "sku": "DEMO-SKU-01",
                "name": "Example product",
                "quantity": 1
            }
        }
    ]
}

List order goodsouts. Please note that all expands will be applied automatically.

Return Type

array<CachedGoodsout>

Filters

Field Operators Value List URL
search LIKE fuzzy search across selected attributes
id EQUALS
status IN, NOT_IN
order.reference IN
order.channel.short_code IN, NOT_IN /v1/orders/channels
order.channel.id IN, NOT_IN
shipping_address.country.iso_2 IN, NOT_IN
date_placed LESS_THAN, ON_DATE, MORE_THAN
despatch_date LESS_THAN, ON_DATE, MORE_THAN
order.currency.code IN, NOT_IN
tags.shortcode IN, NOT_IN
attributes.name IN, NOT_IN

Sortings

Results can be sorted by the following keys: bid, despatch_date, order.channel.name, order.status, placed_date, status, warehouse.name.

Available expands

Field Return Type Description
attributes array<CachedAttribute> An attribute.
courier CachedCourier A courier.
courier.service CachedShippingService Holds data about a shipping service.
courier.tracking array<CachedCourierTracking> Tracking details.
lines array<CachedGoodsoutLine> An order goodsout line summary.
order CachedOrder An order.
order.brand CachedBrand A brand.
order.channel CachedOrderChannel An order channel.
order.currency SummarisedCurrency A currency.
shipping_address CachedAddress An address.
shipping_address.contact CachedAddressContact A BladePRO contact.
shipping_address.country SummarisedCountry A country.
tags array<SummarisedTag> A tag.
warehouse SummarisedWarehouse A warehouse.
warehouse.country SummarisedCountry A country.

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Create Order

POST /v1/orders

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/orders?expand=*", [
    "body" => json_encode([
        "channel" => "DEMO",
        "reference" => "#154254",
        "currency" => "GBP",
        "goodsouts" => [
            [
                "warehouse" => "CHR",
                "date_placed" => "2020-03-31",
                "shipping_address" => [
                    "title" => "Mr",
                    "first_name" => "Support",
                    "last_name" => "Team",
                    "company" => "ACME LTD",
                    "address_one" => "Unit 4",
                    "address_two" => "Radar Way",
                    "address_three" => "Ind Est",
                    "town" => "Christchurch",
                    "country_id" => "GB",
                    "county" => "Dorset",
                    "postcode" => "BH23 4FL",
                    "email" => "support.team@i-fulfilment.co.uk",
                    "mobile" => "00000000000",
                    "telephone" => "00000000000",
                    "secondary_telephone" => "0000000000000",
                    "vat_number" => "GB999 9999 73",
                ],
                "lines" => [
                    [
                        "variation" => [
                            "sku" => "GREEN-BALL",
                            "channel" => 1,
                        ],
                        "net_unit_principal" => 12.55,
                        "principal_tax" => 12,
                        "discount" => 0,
                        "discount_type" => "value",
                        "quantity" => 4,
                        "expiry_date" => "2025-03-31",
                        "batch_code" => "ABC154254",
                        "packing_requirements" => [
                            "pack_together_reference" => "ABC1234",
                        ],
                    ],
                ],
                "attributes" => [
                    [
                        "name" => "my-attribute",
                        "value" => "LoremIpsum",
                    ],
                ],
                "picking_instructions" => null,
                "delivery_instructions" => "When not home put in shed.",
                "gift_message" => null,
                "shipping" => [
                    "customer_principal" => 0.99,
                    "shipping_code" => null,
                    "duty_paid" => true,
                ],
                "bulk_options" => [
                    "requires_palletisation" => true,
                    "single_sku_cartons_only" => true,
                    "distribution_branch_id" => "BRANCH_01",
                    "department_number" => "DEP01",
                    "store_location_number" => "41440",
                    "distribution_centre" => "DC49004",
                    "purchase_order_reference" => "PO6548967-46531",
                    "carton_label" => [
                        "type_id" => 1,
                        "references" => [
                            "dc" => "ABC",
                            "store" => "ABC",
                        ],
                    ],
                ],
                "tags" => [
                    "JIT",
                    "MyTag",
                ],
            ],
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/orders?expand=*', {
  channel: "DEMO",
  reference: "#154254",
  currency: "GBP",
  goodsouts: [
    {
      warehouse: "CHR",
      date_placed: "2020-03-31",
      shipping_address: {
        title: "Mr",
        first_name: "Support",
        last_name: "Team",
        company: "ACME LTD",
        address_one: "Unit 4",
        address_two: "Radar Way",
        address_three: "Ind Est",
        town: "Christchurch",
        country_id: "GB",
        county: "Dorset",
        postcode: "BH23 4FL",
        email: "support.team@i-fulfilment.co.uk",
        mobile: "00000000000",
        telephone: "00000000000",
        secondary_telephone: "0000000000000",
        vat_number: "GB999 9999 73",
      },
      lines: [
        {
          variation: {
            sku: "GREEN-BALL",
            channel: 1,
          },
          net_unit_principal: 12.55,
          principal_tax: 12,
          discount: 0,
          discount_type: "value",
          quantity: 4,
          expiry_date: "2025-03-31",
          batch_code: "ABC154254",
          packing_requirements: {
            pack_together_reference: "ABC1234",
          },
        },
      ],
      attributes: [
        {
          name: "my-attribute",
          value: "LoremIpsum",
        },
      ],
      picking_instructions: nil,
      delivery_instructions: "When not home put in shed.",
      gift_message: nil,
      shipping: {
        customer_principal: 0.99,
        shipping_code: nil,
        duty_paid: true,
      },
      bulk_options: {
        requires_palletisation: true,
        single_sku_cartons_only: true,
        distribution_branch_id: "BRANCH_01",
        department_number: "DEP01",
        store_location_number: "41440",
        distribution_centre: "DC49004",
        purchase_order_reference: "PO6548967-46531",
        carton_label: {
          type_id: 1,
          references: {
            dc: "ABC",
            store: "ABC",
          },
        },
      },
      tags: [
        "JIT",
        "MyTag",
      ],
    },
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders?expand=*",
    body: {
        "channel": "DEMO",
        "reference": "#154254",
        "currency": "GBP",
        "goodsouts": [
            {
                "warehouse": "CHR",
                "date_placed": "2020-03-31",
                "shipping_address": {
                    "title": "Mr",
                    "first_name": "Support",
                    "last_name": "Team",
                    "company": "ACME LTD",
                    "address_one": "Unit 4",
                    "address_two": "Radar Way",
                    "address_three": "Ind Est",
                    "town": "Christchurch",
                    "country_id": "GB",
                    "county": "Dorset",
                    "postcode": "BH23 4FL",
                    "email": "support.team@i-fulfilment.co.uk",
                    "mobile": "00000000000",
                    "telephone": "00000000000",
                    "secondary_telephone": "0000000000000",
                    "vat_number": "GB999 9999 73"
                },
                "lines": [
                    {
                        "variation": {
                            "sku": "GREEN-BALL",
                            "channel": 1
                        },
                        "net_unit_principal": 12.55,
                        "principal_tax": 12,
                        "discount": 0,
                        "discount_type": "value",
                        "quantity": 4,
                        "expiry_date": "2025-03-31",
                        "batch_code": "ABC154254",
                        "packing_requirements": {
                            "pack_together_reference": "ABC1234"
                        }
                    }
                ],
                "attributes": [
                    {
                        "name": "my-attribute",
                        "value": "LoremIpsum"
                    }
                ],
                "picking_instructions": null,
                "delivery_instructions": "When not home put in shed.",
                "gift_message": null,
                "shipping": {
                    "customer_principal": 0.99,
                    "shipping_code": null,
                    "duty_paid": false
                },
                "bulk_options": {
                    "requires_palletisation": true,
                    "single_sku_cartons_only": true,
                    "distribution_branch_id": "BRANCH_01",
                    "department_number": "DEP01",
                    "store_location_number": "41440",
                    "distribution_centre": "DC49004",
                    "purchase_order_reference": "PO6548967-46531",
                    "carton_label": {
                        "type_id": 1,
                        "references": {
                            "dc": "ABC",
                            "store": "ABC"
                        }
                    }
                },
                "tags": [
                    "JIT",
                    "MyTag"
                ]
            }
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/orders?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "channel": "DEMO",
    "reference": "#154254",
    "currency": "GBP",
    "goodsouts": [
        {
            "warehouse": "CHR",
            "date_placed": "2020-03-31",
            "shipping_address": {
                "title": "Mr",
                "first_name": "Support",
                "last_name": "Team",
                "company": "ACME LTD",
                "address_one": "Unit 4",
                "address_two": "Radar Way",
                "address_three": "Ind Est",
                "town": "Christchurch",
                "country_id": "GB",
                "county": "Dorset",
                "postcode": "BH23 4FL",
                "email": "support.team@i-fulfilment.co.uk",
                "mobile": "00000000000",
                "telephone": "00000000000",
                "secondary_telephone": "0000000000000",
                "vat_number": "GB999 9999 73"
            },
            "lines": [
                {
                    "variation": {
                        "sku": "GREEN-BALL",
                        "channel": 1
                    },
                    "net_unit_principal": 12.55,
                    "principal_tax": 12,
                    "discount": 0,
                    "discount_type": "value",
                    "quantity": 4,
                    "expiry_date": "2025-03-31",
                    "batch_code": "ABC154254",
                    "packing_requirements": {
                        "pack_together_reference": "ABC1234"
                    }
                }
            ],
            "attributes": [
                {
                    "name": "my-attribute",
                    "value": "LoremIpsum"
                }
            ],
            "picking_instructions": null,
            "delivery_instructions": "When not home put in shed.",
            "gift_message": null,
            "shipping": {
                "customer_principal": 0.99,
                "shipping_code": null,
                "duty_paid": false
            },
            "bulk_options": {
                "requires_palletisation": true,
                "single_sku_cartons_only": true,
                "distribution_branch_id": "BRANCH_01",
                "department_number": "DEP01",
                "store_location_number": "41440",
                "distribution_centre": "DC49004",
                "purchase_order_reference": "PO6548967-46531",
                "carton_label": {
                    "type_id": 1,
                    "references": {
                        "dc": "ABC",
                        "store": "ABC"
                    }
                }
            },
            "tags": [
                "JIT",
                "MyTag"
            ]
        }
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1234567,
        "reference": "#154254",
        "status": "open",
        "goodsouts": {
            "id": 1049789,
            "status": "awaiting_despatch",
            "date_placed": "2019-11-25T14:52:56.000Z",
            "despatch_date": null,
            "cancellation_date": "2019-11-25T14:52:56.000Z",
            "despatch_on_date": null,
            "source": "How the order was created.",
            "delivery_instructions": "When not home put in shed.",
            "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift.",
            "attributes": [
                {
                    "name": "Marketplace",
                    "value": "202-9999999-9995900"
                }
            ],
            "shipments": [
                {
                    "shipping_service": [
                        {
                            "name": "CRL - Packet (24 Hr)",
                            "code": "1ST",
                            "courier_account": [
                                {
                                    "name": "Royal Mail",
                                    "courier": {
                                        "name": "Royal Mail",
                                        "code": "RM"
                                    }
                                }
                            ]
                        }
                    ]
                }
            ],
            "lines": [
                {
                    "id": 3450345,
                    "transaction_sku": "GREEN-BALL",
                    "quantity": 4,
                    "discount_type": "percentage",
                    "discount": 1.5,
                    "net_unit_principal": 12,
                    "status": "active",
                    "variation": {
                        "id": 1,
                        "product_id": 1,
                        "status": "active",
                        "sku": "DEMO-SKU-01",
                        "barcode": "0123456789012",
                        "product_variation_type_id": 1,
                        "discontinued_date": "2019-11-25T14:52:56.000Z",
                        "despatch_instructions": "Always pack facing upwards.",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z",
                        "type": {
                            "id": 1,
                            "name": "Standard Product",
                            "type": "product",
                            "created": "2019-11-25T14:52:56.000Z",
                            "modified": "2019-11-25T14:52:56.000Z"
                        },
                        "descriptions": [
                            {
                                "id": 1,
                                "product_variation_id": 1,
                                "locale_id": 1,
                                "name": "Example product",
                                "full_description": "Example product description",
                                "created": "2019-11-25T14:52:56.000Z",
                                "modified": "2019-11-25T14:52:56.000Z",
                                "locale": {
                                    "id": 1,
                                    "name": "English",
                                    "code": "en",
                                    "created": "2019-11-25T14:52:56.000Z",
                                    "modified": "2019-11-25T14:52:56.000Z"
                                }
                            }
                        ]
                    }
                }
            ],
            "tags": [
                {
                    "id": 1,
                    "name": "Processed",
                    "shortcode": "PROCESSED",
                    "description": "Marked a as processed by XYZ system",
                    "created": "2019-11-25T14:52:56.000Z"
                }
            ],
            "warehouse": [
                {
                    "short_code": "CHR",
                    "name": "Christchurch"
                }
            ],
            "order": {
                "id": 1234567,
                "reference": "#154254",
                "status": "open",
                "channel": {
                    "id": 321,
                    "organisation_id": 321,
                    "name": "Demo Channel",
                    "short_code": "DEMO",
                    "status": "active",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z",
                    "organisation": {
                        "id": 1,
                        "name": "Demo",
                        "active": true,
                        "vat_number": "GB999 9999 73",
                        "notes": "Demo account...",
                        "contact_name": "Mr Joe Bloggs",
                        "contact_phone": "+44 01425 000 000",
                        "contact_mobile": "+44 00000000",
                        "contact_email": "joe.bloggs@example.com",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    }
                }
            },
            "shipping_address": {
                "title": "Mr",
                "first_name": "Support",
                "last_name": "Team",
                "company": "ACME LTD",
                "address_one": "Unit 4",
                "address_two": "Radar Way",
                "address_three": null,
                "town": "Christchurch",
                "county": "Dorset",
                "postcode": "BH23 4FL",
                "country_id": 1,
                "email": "support.team@i-fulfilment.co.uk",
                "mobile": "00000000000",
                "telephone": "00000000000",
                "secondary_telephone": "0000000000000",
                "vat_number": "GB999 9999 73",
                "country": {
                    "id": 1,
                    "name": "United Kingdom",
                    "iso_2": "GB",
                    "iso_3": "GBR",
                    "region_id": 1,
                    "currency_id": 1,
                    "block": "EU",
                    "region": {}
                }
            }
        }
    }
}

Creates an order.

Request Body

CreateOrder

Return Type

Orders

Types for the Request Body

CreateOrder (root level)

Key Description Types Restrictions
channel Channel’s unique short code or ID. string
or integer
required
not null
if type is string, then min length is 3
if type is integer, then min is 1
reference Order specific reference. string required
not null
min length is 1
currency Currency ISO code. string required
not null
min length is 3
goodsouts List of goodsouts to create on the order. array<Goodsout> required
not null
min count is 1

Address

Key Description Types Restrictions
title Title. string not null
first_name First name. string required
not null
last_name Last name. string required
not null
company Company name. string not null
address_one First line of address. string required
not null
address_two Second line of address. string not null
address_three Third line of address. string not null
town Town. string required
not null
country_id Country ISO 2 or ISO 3 code. string required
not null
min length is 2
max length is 3
county County. string not null
postcode Postcode. string required
not null
email Email. string not null
mobile Mobile number. string not null
telephone Landline number. string not null
secondary_telephone Secondary telephone number. string not null
vat_number VAT number. string not null

Attribute

Key Description Types Restrictions
name Name of the attribute string required
not null
min length is 1
value Value of the attribute string required
not null

BulkOptions

Key Description Types Restrictions
requires_palletisation Whether the goodsout needs palletisation. boolean
single_sku_cartons_only Are packed boxes only allowed to have a single SKU in them? boolean
distribution_branch_id Distribution branch ID. string
department_number Department number. string
store_location_number Store location number. string
distribution_centre Distribution centre. string
purchase_order_reference Purchase order reference. string
carton_label Carton label details. CartonLabel

CartonLabel

Key Description Types Restrictions
type_id Carton label type’s ID. integer required
not null
min is 1
references References required by the label type. Use their ‘code’ field as keys in this map. object required
not null

CreateOrderGoodsoutLinePackingRequirements

Key Description Types Restrictions
pack_together_reference The reference used to group items together that must be packed in the same box. string

Goodsout

Key Description Types Restrictions
warehouse Warehouse short code. string required
not null
min length is 3
date_placed Customer placed date. date required
not null
shipping_address Customer shipping address. Address required
not null
lines The list of products. array<Line> required
not null
min count is 1
attributes List of attributes. array<Attribute> not null
picking_instructions Picking instructions. string not null
despatch_instructions Despatch instructions. string not null
delivery_instructions Delivery instructions. string not null
gift_message Gift message. If presented, gift_message_template_shortcode is required. string optionally required
not null
gift_message_template_shortcode Shortcode for the gift message template to be used. If presented, gift_message is required. string optionally required
not null
shipping Shipping data. Shipping not null
bulk_options Options for bulk goodsouts. BulkOptions
tags List of tags to be applied to the goodsout. array<string>

Line

Key Description Types Restrictions
variation Product description Variation required
not null
net_unit_principal The net amount paid for a single one of these items. number required
not null
min is 0
principal_tax The ID of the tax that should be applied to the line principal value. integer required
not null
min is 1
discount The amount of discount to be applied to the line principal value. number not null
min is 0
discount_type The type of discount to apply. enum(percentage, value) not null
quantity The quantity ordered. integer required
not null
min is 1
expiry_date The required expiry date that must be picked. date not null
batch_code The required batch code that must be picked. string not null
min length is 1
packing_requirements Packing Requirements CreateOrderGoodsoutLinePackingRequirements

Shipping

Key Description Types Restrictions
customer_principal The net amount the customer paid for shipping. number required
not null
min is 0
shipping_code Shipping code. string not null
min length is 2
duty_paid Duty paid. boolean not null

Variation

Key Description Types Restrictions
sku The product’s stock keeping unit (SKU). string required
not null
min length is 1
channel The product channel’s ID. integer required
not null
min is 1

Available expands

Field Return Type Description
goodsouts array<OrderGoodsouts> Customer order shipments.
goodsouts.attributes array<CachedAttribute> An attribute.
goodsouts.lines array<OrderGoodsoutLines> An order for a product.
goodsouts.shipments array<Shipments> Data related to a shipment.
goodsouts.shipments.shipping_service ShippingServices Customer order shipments.
goodsouts.shipments.shipping_service.courier_account ShippingCourierAccounts Shipping courier account data.
goodsouts.shipments.shipping_service.courier_account.courier CachedNameAndCode Holds a name and a code field.

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Create Goodsout

POST /v1/orders/goodsouts

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/orders/goodsouts?expand=*", [
    "body" => json_encode([
        "warehouse" => "CHR",
        "order" => [
            "channel" => "DEMO",
            "reference" => "#154254",
            "currency" => "GBP",
        ],
        "date_placed" => "2020-03-31",
        "shipping_address" => [
            "title" => "Mr",
            "first_name" => "Support",
            "last_name" => "Team",
            "company" => "ACME LTD",
            "address_one" => "Unit 4",
            "address_two" => "Radar Way",
            "address_three" => "Ind Est",
            "town" => "Christchurch",
            "country_id" => "GB",
            "county" => "Dorset",
            "postcode" => "BH23 4FL",
            "email" => "support.team@i-fulfilment.co.uk",
            "mobile" => "00000000000",
            "telephone" => "00000000000",
            "secondary_telephone" => "0000000000000",
            "vat_number" => "GB999 9999 73",
        ],
        "lines" => [
            [
                "variation" => [
                    "sku" => "GREEN-BALL",
                    "channel" => 1,
                ],
                "net_unit_principal" => 12.55,
                "principal_tax" => 12,
                "discount" => 0,
                "discount_type" => "value",
                "quantity" => 4,
                "packing_requirements" => [
                    "pack_together_reference" => "ABC1234",
                ],
                "expiry_date" => "2025-03-31",
                "batch_code" => "ABC154254",
            ],
        ],
        "attributes" => [
            [
                "name" => "my-attribute",
                "value" => "LoremIpsum",
            ],
        ],
        "delivery_instructions" => "When not home put in shed.",
        "shipping" => [
            "customer_principal" => 0.99,
            "duty_paid" => true,
        ],
        "import_options" => [
            "fraud" => true,
        ],
        "bulk_options" => [
            "requires_palletisation" => true,
            "single_sku_cartons_only" => true,
            "distribution_branch_id" => "BRANCH_01",
            "department_number" => "DEP01",
            "store_location_number" => "41440",
            "distribution_centre" => "DC49004",
            "purchase_order_reference" => "PO6548967-46531",
            "carton_label" => [
                "type_id" => 1,
                "references" => [
                    "dc" => "ABC",
                    "store" => "ABC",
                ],
            ],
        ],
        "tags" => [
            "JIT",
            "MyTag",
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/orders/goodsouts?expand=*', {
  warehouse: "CHR",
  order: {
    channel: "DEMO",
    reference: "#154254",
    currency: "GBP",
  },
  date_placed: "2020-03-31",
  shipping_address: {
    title: "Mr",
    first_name: "Support",
    last_name: "Team",
    company: "ACME LTD",
    address_one: "Unit 4",
    address_two: "Radar Way",
    address_three: "Ind Est",
    town: "Christchurch",
    country_id: "GB",
    county: "Dorset",
    postcode: "BH23 4FL",
    email: "support.team@i-fulfilment.co.uk",
    mobile: "00000000000",
    telephone: "00000000000",
    secondary_telephone: "0000000000000",
    vat_number: "GB999 9999 73",
  },
  lines: [
    {
      variation: {
        sku: "GREEN-BALL",
        channel: 1,
      },
      net_unit_principal: 12.55,
      principal_tax: 12,
      discount: 0,
      discount_type: "value",
      quantity: 4,
      packing_requirements: {
        pack_together_reference: "ABC1234",
      },
      expiry_date: "2025-03-31",
      batch_code: "ABC154254",
    },
  ],
  attributes: [
    {
      name: "my-attribute",
      value: "LoremIpsum",
    },
  ],
  delivery_instructions: "When not home put in shed.",
  shipping: {
    customer_principal: 0.99,
    duty_paid: true,
  },
  import_options: {
    fraud: true,
  },
  bulk_options: {
    requires_palletisation: true,
    single_sku_cartons_only: true,
    distribution_branch_id: "BRANCH_01",
    department_number: "DEP01",
    store_location_number: "41440",
    distribution_centre: "DC49004",
    purchase_order_reference: "PO6548967-46531",
    carton_label: {
      type_id: 1,
      references: {
        dc: "ABC",
        store: "ABC",
      },
    },
  },
  tags: [
    "JIT",
    "MyTag",
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts?expand=*",
    body: {
        "warehouse": "CHR",
        "order": {
            "channel": "DEMO",
            "reference": "#154254",
            "currency": "GBP"
        },
        "date_placed": "2020-03-31",
        "shipping_address": {
            "title": "Mr",
            "first_name": "Support",
            "last_name": "Team",
            "company": "ACME LTD",
            "address_one": "Unit 4",
            "address_two": "Radar Way",
            "address_three": "Ind Est",
            "town": "Christchurch",
            "country_id": "GB",
            "county": "Dorset",
            "postcode": "BH23 4FL",
            "email": "support.team@i-fulfilment.co.uk",
            "mobile": "00000000000",
            "telephone": "00000000000",
            "secondary_telephone": "0000000000000",
            "vat_number": "GB999 9999 73"
        },
        "lines": [
            {
                "variation": {
                    "sku": "GREEN-BALL",
                    "channel": 1
                },
                "net_unit_principal": 12.55,
                "principal_tax": 12,
                "discount": 0,
                "discount_type": "value",
                "quantity": 4,
                "packing_requirements": {
                    "pack_together_reference": "ABC1234"
                },
                "expiry_date": "2025-03-31",
                "batch_code": "ABC154254"
            }
        ],
        "attributes": [
            {
                "name": "my-attribute",
                "value": "LoremIpsum"
            }
        ],
        "delivery_instructions": "When not home put in shed.",
        "shipping": {
            "customer_principal": 0.99,
            "duty_paid": false
        },
        "import_options": {
            "fraud": true
        },
        "bulk_options": {
            "requires_palletisation": true,
            "single_sku_cartons_only": true,
            "distribution_branch_id": "BRANCH_01",
            "department_number": "DEP01",
            "store_location_number": "41440",
            "distribution_centre": "DC49004",
            "purchase_order_reference": "PO6548967-46531",
            "carton_label": {
                "type_id": 1,
                "references": {
                    "dc": "ABC",
                    "store": "ABC"
                }
            }
        },
        "tags": [
            "JIT",
            "MyTag"
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/orders/goodsouts?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "warehouse": "CHR",
    "order": {
        "channel": "DEMO",
        "reference": "#154254",
        "currency": "GBP"
    },
    "date_placed": "2020-03-31",
    "shipping_address": {
        "title": "Mr",
        "first_name": "Support",
        "last_name": "Team",
        "company": "ACME LTD",
        "address_one": "Unit 4",
        "address_two": "Radar Way",
        "address_three": "Ind Est",
        "town": "Christchurch",
        "country_id": "GB",
        "county": "Dorset",
        "postcode": "BH23 4FL",
        "email": "support.team@i-fulfilment.co.uk",
        "mobile": "00000000000",
        "telephone": "00000000000",
        "secondary_telephone": "0000000000000",
        "vat_number": "GB999 9999 73"
    },
    "lines": [
        {
            "variation": {
                "sku": "GREEN-BALL",
                "channel": 1
            },
            "net_unit_principal": 12.55,
            "principal_tax": 12,
            "discount": 0,
            "discount_type": "value",
            "quantity": 4,
            "packing_requirements": {
                "pack_together_reference": "ABC1234"
            },
            "expiry_date": "2025-03-31",
            "batch_code": "ABC154254"
        }
    ],
    "attributes": [
        {
            "name": "my-attribute",
            "value": "LoremIpsum"
        }
    ],
    "delivery_instructions": "When not home put in shed.",
    "shipping": {
        "customer_principal": 0.99,
        "duty_paid": false
    },
    "import_options": {
        "fraud": true
    },
    "bulk_options": {
        "requires_palletisation": true,
        "single_sku_cartons_only": true,
        "distribution_branch_id": "BRANCH_01",
        "department_number": "DEP01",
        "store_location_number": "41440",
        "distribution_centre": "DC49004",
        "purchase_order_reference": "PO6548967-46531",
        "carton_label": {
            "type_id": 1,
            "references": {
                "dc": "ABC",
                "store": "ABC"
            }
        }
    },
    "tags": [
        "JIT",
        "MyTag"
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1049789,
        "status": "awaiting_despatch",
        "date_placed": "2019-11-25T14:52:56.000Z",
        "despatch_date": null,
        "cancellation_date": "2019-11-25T14:52:56.000Z",
        "despatch_on_date": null,
        "source": "How the order was created.",
        "delivery_instructions": "When not home put in shed.",
        "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift.",
        "attributes": [
            {
                "name": "Marketplace",
                "value": "202-9999999-9995900"
            }
        ],
        "shipments": [
            {
                "shipping_service": [
                    {
                        "name": "CRL - Packet (24 Hr)",
                        "code": "1ST",
                        "courier_account": [
                            {
                                "name": "Royal Mail",
                                "courier": {
                                    "name": "Royal Mail",
                                    "code": "RM"
                                }
                            }
                        ]
                    }
                ]
            }
        ],
        "lines": [
            {
                "id": 3450345,
                "transaction_sku": "GREEN-BALL",
                "quantity": 4,
                "discount_type": "percentage",
                "discount": 1.5,
                "net_unit_principal": 12,
                "status": "active",
                "variation": {
                    "id": 1,
                    "product_id": 1,
                    "status": "active",
                    "sku": "DEMO-SKU-01",
                    "barcode": "0123456789012",
                    "product_variation_type_id": 1,
                    "discontinued_date": "2019-11-25T14:52:56.000Z",
                    "despatch_instructions": "Always pack facing upwards.",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z",
                    "type": {
                        "id": 1,
                        "name": "Standard Product",
                        "type": "product",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    },
                    "descriptions": [
                        {
                            "id": 1,
                            "product_variation_id": 1,
                            "locale_id": 1,
                            "name": "Example product",
                            "full_description": "Example product description",
                            "created": "2019-11-25T14:52:56.000Z",
                            "modified": "2019-11-25T14:52:56.000Z",
                            "locale": {
                                "id": 1,
                                "name": "English",
                                "code": "en",
                                "created": "2019-11-25T14:52:56.000Z",
                                "modified": "2019-11-25T14:52:56.000Z"
                            }
                        }
                    ]
                }
            }
        ],
        "tags": [
            {
                "id": 1,
                "name": "Processed",
                "shortcode": "PROCESSED",
                "description": "Marked a as processed by XYZ system",
                "created": "2019-11-25T14:52:56.000Z"
            }
        ],
        "warehouse": [
            {
                "short_code": "CHR",
                "name": "Christchurch"
            }
        ],
        "order": {
            "id": 1234567,
            "reference": "#154254",
            "status": "open",
            "channel": {
                "id": 321,
                "organisation_id": 321,
                "name": "Demo Channel",
                "short_code": "DEMO",
                "status": "active",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        },
        "shipping_address": {
            "title": "Mr",
            "first_name": "Support",
            "last_name": "Team",
            "company": "ACME LTD",
            "address_one": "Unit 4",
            "address_two": "Radar Way",
            "address_three": null,
            "town": "Christchurch",
            "county": "Dorset",
            "postcode": "BH23 4FL",
            "country_id": 1,
            "email": "support.team@i-fulfilment.co.uk",
            "mobile": "00000000000",
            "telephone": "00000000000",
            "secondary_telephone": "0000000000000",
            "vat_number": "GB999 9999 73",
            "country": {
                "id": 1,
                "name": "United Kingdom",
                "iso_2": "GB",
                "iso_3": "GBR",
                "region_id": 1,
                "currency_id": 1,
                "block": "EU",
                "region": {}
            }
        }
    }
}

Creates an order goodsout.

Request Body

CreateGoodsout

Return Type

OrderGoodsouts

Types for the Request Body

CreateGoodsout (root level)

Key Description Types Restrictions
warehouse Warehouse short code. string required
not null
min length is 3
order Order. Order required
not null
date_placed Customer placed date. date required
not null
shipping_address Customer shipping address. Address required
not null
lines The list of products. array<Line> required
not null
min count is 1
attributes List of attributes. array<Attribute> not null
picking_instructions Picking instructions. string not null
despatch_instructions Despatch instructions. string not null
delivery_instructions Delivery instructions. string not null
gift_message Gift message. If presented, gift_message_template_shortcode is required. string optionally required
not null
gift_message_template_shortcode Shortcode for the gift message template to be used. If presented, gift_message is required. string optionally required
not null
shipping Shipping data. Shipping not null
import_options Import options. ImportOptions
metadata Goodsout metadata. array<OrderResourceMetadata>
bulk_options Options for bulk goodsouts. BulkOptions
tags List of tags to be applied to the goodsout. array<string>

Address

Key Description Types Restrictions
title Title. string
first_name First name. string
last_name Last name. string
company Company name. string
address_one First line of address. string
address_two Second line of address. string
address_three Third line of address. string
town Town. string
country_id Country ISO 2 or ISO 3 code. string min length is 0
max length is 3
county County. string
postcode Postcode. string
email Email. string
mobile Mobile number. string
telephone Landline number. string
secondary_telephone Secondary telephone number. string
vat_number VAT number. string

Attribute

Key Description Types Restrictions
name Name of the attribute string required
not null
min length is 1
value Value of the attribute string required
not null

BulkOptions

Key Description Types Restrictions
requires_palletisation Whether the goodsout needs palletisation. boolean
single_sku_cartons_only Are packed boxes only allowed to have a single SKU in them? boolean
distribution_branch_id Distribution branch ID. string
department_number Department number. string
store_location_number Store location number. string
distribution_centre Distribution centre. string
purchase_order_reference Purchase order reference. string
carton_label Carton label details. CartonLabel

CartonLabel

Key Description Types Restrictions
type_id Carton label type’s ID. integer required
not null
min is 1
references References required by the label type. Use their ‘code’ field as keys in this map. object required
not null

CreateOrderGoodsoutLinePackingRequirements

Key Description Types Restrictions
pack_together_reference The reference used to group items together that must be packed in the same box. string

ImportOptions

Key Description Types Restrictions
fraud If the order came in as a possible fraud order, set this to true. The order will be put on hold. boolean

Line

Key Description Types Restrictions
variation Product description Variation required
not null
net_unit_principal The net amount paid for a single one of these items. number required
not null
min is 0
principal_tax The ID of the tax that should be applied to the line principal value. integer required
not null
min is 1
discount The amount of discount to be applied to the line principal value. number not null
min is 0
discount_type The type of discount to apply. enum(percentage, value) not null
quantity The quantity ordered. integer required
not null
min is 1
packing_requirements Packing Requirements CreateOrderGoodsoutLinePackingRequirements
expiry_date The required expiry date that must be picked. date not null
batch_code The required batch code that must be picked. string not null
min length is 1

Order

Key Description Types Restrictions
channel Channel’s unique short code or ID. string
or integer
required
not null
if type is string, then min length is 3
if type is integer, then min is 1
reference Order specific reference. string required
not null
min length is 1
currency Currency ISO code. string required
not null
min length is 3

OrderResourceMetadata

Key Description Types Restrictions
key Metadata key. string required
not null
value Metadata value. string required
not null

Shipping

Key Description Types Restrictions
customer_principal The net amount the customer paid for shipping. number required
not null
min is 0
shipping_code Shipping code. string not null
min length is 2
duty_paid Duty paid. boolean not null

Variation

Key Description Types Restrictions
sku The product’s stock keeping unit (SKU). string required
not null
min length is 1
channel The product channel’s ID. integer required
not null
min is 1

Available expands

Field Return Type Description
attributes array<CachedAttribute> An attribute.
lines array<OrderGoodsoutLines> An order for a product.
lines.variation ProductVariations Marketplace listable products’ data.
lines.variation.descriptions array<ProductVariationDescriptions> Variation descriptions.
lines.variation.descriptions.locale Locales Locale data.
lines.variation.type ProductVariationTypes Product variation type data.
order Orders Customer order groups.
order.channel OrderChannels Customer order groups.
order.channel.organisation Organisations Organisation data.
shipments array<Shipments> Data related to a shipment.
shipments.shipping_service ShippingServices Customer order shipments.
shipments.shipping_service.courier_account ShippingCourierAccounts Shipping courier account data.
shipments.shipping_service.courier_account.courier CachedNameAndCode Holds a name and a code field.
shipping_address OrderGoodsoutAddresses Data related to an address.
shipping_address.country Countries A country.
shipping_address.country.region Regions Geographical region data.
tags array<Tags> A tag.
warehouse SummarisedWarehouse A warehouse.

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Bulk Import Orders

POST /v1/orders/goodsouts/from_file

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/orders/goodsouts/from_file", [
    "body" => json_encode([
        "file" => ":: FILE CONTENTS ::",
        "name" => "my_document.pdf",
        "extension" => "pdf",
        "mime" => "application/pdf",
        "category" => "document",
        "paper_size" => "A4",
        "print_at_despatch" => 1,
        "mapping_template_id" => 123,
        "organisation_id" => 123,
        "order_channel_id" => 123,
        "brand_id" => 123,
        "currency_id" => 123,
        "fields" => "[{\"name\":\"reference\",\"label\":\"Order Reference\",\"description\":\"The customer order reference.\",\"required\":true,\"type\":\"text\",\"key\":\"order.reference\",\"validations\":[null],\"possibleMappings\":[\"reference\",\"order_reference\"],\"primaryKey\":true}]",
        "slug" => "order",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/orders/goodsouts/from_file', {
  file: ":: FILE CONTENTS ::",
  name: "my_document.pdf",
  extension: "pdf",
  mime: "application/pdf",
  category: "document",
  paper_size: "A4",
  print_at_despatch: 1,
  mapping_template_id: 123,
  organisation_id: 123,
  order_channel_id: 123,
  brand_id: 123,
  currency_id: 123,
  fields: "[{\"name\":\"reference\",\"label\":\"Order Reference\",\"description\":\"The customer order reference.\",\"required\":true,\"type\":\"text\",\"key\":\"order.reference\",\"validations\":[null],\"possibleMappings\":[\"reference\",\"order_reference\"],\"primaryKey\":true}]",
  slug: "order",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/from_file",
    body: {
        "file": ":: FILE CONTENTS ::",
        "name": "my_document.pdf",
        "extension": "pdf",
        "mime": "application/pdf",
        "category": "document",
        "paper_size": "A4",
        "print_at_despatch": 1,
        "mapping_template_id": 123,
        "organisation_id": 123,
        "order_channel_id": 123,
        "brand_id": 123,
        "currency_id": 123,
        "fields": "[{\"name\":\"reference\",\"label\":\"Order Reference\",\"description\":\"The customer order reference.\",\"required\":true,\"type\":\"text\",\"key\":\"order.reference\",\"validations\":[null],\"possibleMappings\":[\"reference\",\"order_reference\"],\"primaryKey\":true}]",
        "slug": "order"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/orders/goodsouts/from_file' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "file": ":: FILE CONTENTS ::",
    "name": "my_document.pdf",
    "extension": "pdf",
    "mime": "application/pdf",
    "category": "document",
    "paper_size": "A4",
    "print_at_despatch": 1,
    "mapping_template_id": 123,
    "organisation_id": 123,
    "order_channel_id": 123,
    "brand_id": 123,
    "currency_id": 123,
    "fields": "[{\"name\":\"reference\",\"label\":\"Order Reference\",\"description\":\"The customer order reference.\",\"required\":true,\"type\":\"text\",\"key\":\"order.reference\",\"validations\":[null],\"possibleMappings\":[\"reference\",\"order_reference\"],\"primaryKey\":true}]",
    "slug": "order"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "success": true
    }
}

Uploads a file to be imported.

Request Body

BulkImportOrders

Return Type

BulkImportOrdersFile

Types for the Request Body

BulkImportOrders (root level)

Key Description Types Restrictions
file The file contents Base64 encoded. string required
not null
min length is 1
name The file name. string required
not null
min length is 1
extension The file extension. string required
not null
min length is 1
mime The file mime. string required
not null
min length is 1
category The document category. enum(document) required
not null
paper_size The paper size. enum(A4, 6x4) not null
print_at_despatch The number of copies to print at desptach. number not null
min is 0
mapping_template_id The ID for the mapping template. integer required
not null
min is 1
organisation_id The ID for the organisation. integer required
not null
min is 1
order_channel_id The ID for the order channel. integer required
not null
min is 1
brand_id The ID for the brand. integer required
not null
min is 1
currency_id The ID for the currency. integer required
not null
min is 1
fields The array of fields of the file. string required
not null
slug The slug. string required
not null

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

View Goodsout

GET /v1/orders/goodsouts/:id

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1049789,
        "status": "awaiting_despatch",
        "date_placed": "2019-11-25T14:52:56.000Z",
        "despatch_date": null,
        "cancellation_date": "2019-11-25T14:52:56.000Z",
        "despatch_on_date": null,
        "source": "How the order was created.",
        "delivery_instructions": "When not home put in shed.",
        "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift.",
        "attributes": [
            {
                "name": "Marketplace",
                "value": "202-9999999-9995900"
            }
        ],
        "shipments": [
            {
                "shipping_service": [
                    {
                        "name": "CRL - Packet (24 Hr)",
                        "code": "1ST",
                        "courier_account": [
                            {
                                "name": "Royal Mail",
                                "courier": {
                                    "name": "Royal Mail",
                                    "code": "RM"
                                }
                            }
                        ]
                    }
                ]
            }
        ],
        "lines": [
            {
                "id": 3450345,
                "transaction_sku": "GREEN-BALL",
                "quantity": 4,
                "discount_type": "percentage",
                "discount": 1.5,
                "net_unit_principal": 12,
                "status": "active",
                "variation": {
                    "id": 1,
                    "product_id": 1,
                    "status": "active",
                    "sku": "DEMO-SKU-01",
                    "barcode": "0123456789012",
                    "product_variation_type_id": 1,
                    "discontinued_date": "2019-11-25T14:52:56.000Z",
                    "despatch_instructions": "Always pack facing upwards.",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z",
                    "type": {
                        "id": 1,
                        "name": "Standard Product",
                        "type": "product",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    },
                    "descriptions": [
                        {
                            "id": 1,
                            "product_variation_id": 1,
                            "locale_id": 1,
                            "name": "Example product",
                            "full_description": "Example product description",
                            "created": "2019-11-25T14:52:56.000Z",
                            "modified": "2019-11-25T14:52:56.000Z",
                            "locale": {
                                "id": 1,
                                "name": "English",
                                "code": "en",
                                "created": "2019-11-25T14:52:56.000Z",
                                "modified": "2019-11-25T14:52:56.000Z"
                            }
                        }
                    ]
                }
            }
        ],
        "tags": [
            {
                "id": 1,
                "name": "Processed",
                "shortcode": "PROCESSED",
                "description": "Marked a as processed by XYZ system",
                "created": "2019-11-25T14:52:56.000Z"
            }
        ],
        "warehouse": [
            {
                "short_code": "CHR",
                "name": "Christchurch"
            }
        ],
        "order": {
            "id": 1234567,
            "reference": "#154254",
            "status": "open",
            "channel": {
                "id": 321,
                "organisation_id": 321,
                "name": "Demo Channel",
                "short_code": "DEMO",
                "status": "active",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        },
        "shipping_address": {
            "title": "Mr",
            "first_name": "Support",
            "last_name": "Team",
            "company": "ACME LTD",
            "address_one": "Unit 4",
            "address_two": "Radar Way",
            "address_three": null,
            "town": "Christchurch",
            "county": "Dorset",
            "postcode": "BH23 4FL",
            "country_id": 1,
            "email": "support.team@i-fulfilment.co.uk",
            "mobile": "00000000000",
            "telephone": "00000000000",
            "secondary_telephone": "0000000000000",
            "vat_number": "GB999 9999 73",
            "country": {
                "id": 1,
                "name": "United Kingdom",
                "iso_2": "GB",
                "iso_3": "GBR",
                "region_id": 1,
                "currency_id": 1,
                "block": "EU",
                "region": {}
            }
        }
    }
}

Retrieves a single goodsout.

Parameter Regular Expressions

Return Type

OrderGoodsouts

Available expands

Field Return Type Description
attributes array<CachedAttribute> An attribute.
lines array<OrderGoodsoutLines> An order for a product.
lines.items array<OrderGoodsoutLineItems> An item inside a goodsout line.
lines.items.batch ProductComponentBatches Description of a batch.
lines.items.component ProductComponents Product component.
lines.items.despatched_stocks array<OrderGoodsoutLineItemDespatchedStocks> Stock despatched for an specific line item.
lines.items.despatched_stocks.batch ProductComponentBatches Description of a batch.
lines.principal_tax OrganisationTaxes Organisation tax data.
lines.variation ProductVariations Marketplace listable products’ data.
lines.variation.descriptions array<ProductVariationDescriptions> Variation descriptions.
lines.variation.descriptions.locale Locales Locale data.
lines.variation.type ProductVariationTypes Product variation type data.
order Orders Customer order groups.
order.channel OrderChannels Customer order groups.
order.channel.organisation Organisations Organisation data.
shipments array<Shipments> Data related to a shipment.
shipments.shipping_service ShippingServices Customer order shipments.
shipments.shipping_service.courier_account ShippingCourierAccounts Shipping courier account data.
shipments.shipping_service.courier_account.courier CachedNameAndCode Holds a name and a code field.
shipping_address OrderGoodsoutAddresses Data related to an address.
shipping_address.country Countries A country.
shipping_address.country.region Regions Geographical region data.
tags array<Tags> A tag.
warehouse SummarisedWarehouse A warehouse.

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Upload Document

POST /v1/orders/goodsouts/:id/documents

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/documents", [
    "body" => json_encode([
        "file" => ":: FILE CONTENTS ::",
        "name" => "my_document.pdf",
        "extension" => "pdf",
        "mime" => "application/pdf",
        "category" => "document",
        "paper_size" => "A4",
        "print_at_despatch" => 1,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/documents', {
  file: ":: FILE CONTENTS ::",
  name: "my_document.pdf",
  extension: "pdf",
  mime: "application/pdf",
  category: "document",
  paper_size: "A4",
  print_at_despatch: 1,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/documents",
    body: {
        "file": ":: FILE CONTENTS ::",
        "name": "my_document.pdf",
        "extension": "pdf",
        "mime": "application/pdf",
        "category": "document",
        "paper_size": "A4",
        "print_at_despatch": 1
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/documents' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "file": ":: FILE CONTENTS ::",
    "name": "my_document.pdf",
    "extension": "pdf",
    "mime": "application/pdf",
    "category": "document",
    "paper_size": "A4",
    "print_at_despatch": 1
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "success": true
    }
}

Uploads a Base64 encoded document to a goodsout.

Parameter Regular Expressions

Request Body

Document

Return Type

OrderGoodsoutDocumentUploadConfirmation

Types for the Request Body

Document (root level)

Key Description Types Restrictions
file The file contents Base64 encoded. string required
not null
min length is 1
name The file name. string required
not null
min length is 1
extension The file extension. string required
not null
min length is 1
mime The file mime. string required
not null
min length is 1
category The document category. enum(document) required
not null
paper_size The paper size. enum(A4, 6x4) not null
print_at_despatch The number of copies to print at desptach. number not null
min is 0

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Cancel Goodsout

PUT /v1/orders/goodsouts/:id/cancel

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1049789/cancel", [
    "body" => json_encode([
        "reason" => "Example reason.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1049789/cancel', {
  reason: "Example reason.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1049789/cancel",
    body: {
        "reason": "Example reason."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1049789/cancel' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "reason": "Example reason."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1049789,
        "status": "awaiting_despatch",
        "date_placed": "2019-11-25T14:52:56.000Z",
        "despatch_date": null,
        "cancellation_date": "2019-11-25T14:52:56.000Z",
        "despatch_on_date": null,
        "source": "How the order was created.",
        "delivery_instructions": "When not home put in shed.",
        "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift."
    }
}

Cancels an order goodsout.

Parameter Regular Expressions

Request Body

Reason

Return Type

OrderGoodsouts

Types for the Request Body

Reason (root level)

Key Description Types Restrictions
reason The reason. string required
not null
min length is 1

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Update Delivery Instructions

PUT /v1/orders/goodsouts/:id/delivery_instructions

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/delivery_instructions", [
    "body" => json_encode([
        "delivery_instructions" => "When not home put in shed.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/delivery_instructions', {
  delivery_instructions: "When not home put in shed.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/delivery_instructions",
    body: {
        "delivery_instructions": "When not home put in shed."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/delivery_instructions' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "delivery_instructions": "When not home put in shed."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1049789,
        "status": "awaiting_despatch",
        "date_placed": "2019-11-25T14:52:56.000Z",
        "despatch_date": null,
        "cancellation_date": "2019-11-25T14:52:56.000Z",
        "despatch_on_date": null,
        "source": "How the order was created.",
        "delivery_instructions": "When not home put in shed.",
        "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift."
    }
}

Updates a goodsout’s delivery instructions.

Parameter Regular Expressions

Request Body

DeliveryInstructions

Return Type

OrderGoodsouts

Types for the Request Body

DeliveryInstructions (root level)

Key Description Types Restrictions
delivery_instructions Delivery instructions. string required
not null
min length is 0
max length is 30

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Update Gift Message

PUT /v1/orders/goodsouts/:id/gift_message

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/gift_message", [
    "body" => json_encode([
        "message" => "Happy birthday Sam!<br/>Hope you enjoy this gift.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/gift_message', {
  message: "Happy birthday Sam!<br/>Hope you enjoy this gift.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/gift_message",
    body: {
        "message": "Happy birthday Sam!<br/>Hope you enjoy this gift."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/gift_message' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "message": "Happy birthday Sam!<br/>Hope you enjoy this gift."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1049789,
        "status": "awaiting_despatch",
        "date_placed": "2019-11-25T14:52:56.000Z",
        "despatch_date": null,
        "cancellation_date": "2019-11-25T14:52:56.000Z",
        "despatch_on_date": null,
        "source": "How the order was created.",
        "delivery_instructions": "When not home put in shed.",
        "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift."
    }
}

Updates a goodsout’s gift message.

Parameter Regular Expressions

Request Body

UpdateGoodsoutGiftMessage

Return Type

OrderGoodsouts

Types for the Request Body

UpdateGoodsoutGiftMessage (root level)

Key Description Types Restrictions
message Gift Message. string required
not null
min length is 0
max length is 800

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Update Shipping Address

PUT /v1/orders/goodsouts/:id/shipping_address

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/shipping_address", [
    "body" => json_encode([
        "title" => "Mr",
        "first_name" => "Support",
        "last_name" => "Team",
        "company" => "ACME LTD",
        "address_one" => "Unit 4",
        "address_two" => "Radar Way",
        "address_three" => "Ind Est",
        "town" => "Christchurch",
        "country_id" => "GB",
        "county" => "Dorset",
        "postcode" => "BH23 4FL",
        "email" => "support.team@i-fulfilment.co.uk",
        "mobile" => "00000000000",
        "telephone" => "00000000000",
        "secondary_telephone" => "0000000000000",
        "vat_number" => "GB999 9999 73",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/shipping_address', {
  title: "Mr",
  first_name: "Support",
  last_name: "Team",
  company: "ACME LTD",
  address_one: "Unit 4",
  address_two: "Radar Way",
  address_three: "Ind Est",
  town: "Christchurch",
  country_id: "GB",
  county: "Dorset",
  postcode: "BH23 4FL",
  email: "support.team@i-fulfilment.co.uk",
  mobile: "00000000000",
  telephone: "00000000000",
  secondary_telephone: "0000000000000",
  vat_number: "GB999 9999 73",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/shipping_address",
    body: {
        "title": "Mr",
        "first_name": "Support",
        "last_name": "Team",
        "company": "ACME LTD",
        "address_one": "Unit 4",
        "address_two": "Radar Way",
        "address_three": "Ind Est",
        "town": "Christchurch",
        "country_id": "GB",
        "county": "Dorset",
        "postcode": "BH23 4FL",
        "email": "support.team@i-fulfilment.co.uk",
        "mobile": "00000000000",
        "telephone": "00000000000",
        "secondary_telephone": "0000000000000",
        "vat_number": "GB999 9999 73"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/shipping_address' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "title": "Mr",
    "first_name": "Support",
    "last_name": "Team",
    "company": "ACME LTD",
    "address_one": "Unit 4",
    "address_two": "Radar Way",
    "address_three": "Ind Est",
    "town": "Christchurch",
    "country_id": "GB",
    "county": "Dorset",
    "postcode": "BH23 4FL",
    "email": "support.team@i-fulfilment.co.uk",
    "mobile": "00000000000",
    "telephone": "00000000000",
    "secondary_telephone": "0000000000000",
    "vat_number": "GB999 9999 73"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "title": "Mr",
        "first_name": "Support",
        "last_name": "Team",
        "company": "ACME LTD",
        "address_one": "Unit 4",
        "address_two": "Radar Way",
        "address_three": null,
        "town": "Christchurch",
        "county": "Dorset",
        "postcode": "BH23 4FL",
        "country_id": 1,
        "email": "support.team@i-fulfilment.co.uk",
        "mobile": "00000000000",
        "telephone": "00000000000",
        "secondary_telephone": "0000000000000",
        "vat_number": "GB999 9999 73"
    }
}

Updates the shipping address of a goodsout.

Parameter Regular Expressions

Request Body

Address

Return Type

OrderGoodsoutAddresses

Types for the Request Body

Address (root level)

Key Description Types Restrictions
title Title. string not null
first_name First name. string required
not null
last_name Last name. string required
not null
company Company name. string not null
address_one First line of address. string required
not null
address_two Second line of address. string not null
address_three Third line of address. string not null
town Town. string required
not null
country_id Country ISO 2 or ISO 3 code. string required
not null
min length is 2
max length is 3
county County. string not null
postcode Postcode. string required
not null
email Email. string not null
mobile Mobile number. string not null
telephone Landline number. string not null
secondary_telephone Secondary telephone number. string not null
vat_number VAT number. string not null

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Update Goodsout Warehouse

PUT /v1/orders/goodsouts/:id/warehouse

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/warehouse?expand=*", [
    "body" => json_encode([
        "warehouse_code" => "CHR",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/warehouse?expand=*', {
  warehouse_code: "CHR",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/warehouse?expand=*",
    body: {
        "warehouse_code": "CHR"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/warehouse?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "warehouse_code": "CHR"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1049789,
        "status": "awaiting_despatch",
        "date_placed": "2019-11-25T14:52:56.000Z",
        "despatch_date": null,
        "cancellation_date": "2019-11-25T14:52:56.000Z",
        "despatch_on_date": null,
        "source": "How the order was created.",
        "delivery_instructions": "When not home put in shed.",
        "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift.",
        "warehouse": [
            {
                "short_code": "CHR",
                "name": "Christchurch"
            }
        ]
    }
}

Updates a goodsout’s warehouse.

Parameter Regular Expressions

Request Body

UpdateGoodsoutWarehousee

Return Type

OrderGoodsouts

Types for the Request Body

UpdateGoodsoutWarehousee (root level)

Key Description Types Restrictions
warehouse_code The warehouse short code. string required
not null
min length is 1

Available expands

Field Return Type Description
warehouse SummarisedWarehouse A warehouse.

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Hold Goodsout

PUT /v1/orders/goodsouts/:id/hold

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1049789/hold", [
    "body" => json_encode([
        "reason" => "Example reason.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1049789/hold', {
  reason: "Example reason.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1049789/hold",
    body: {
        "reason": "Example reason."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1049789/hold' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "reason": "Example reason."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1049789,
        "status": "awaiting_despatch",
        "date_placed": "2019-11-25T14:52:56.000Z",
        "despatch_date": null,
        "cancellation_date": "2019-11-25T14:52:56.000Z",
        "despatch_on_date": null,
        "source": "How the order was created.",
        "delivery_instructions": "When not home put in shed.",
        "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift."
    }
}

Holds an order goodsout.

Parameter Regular Expressions

Request Body

Reason

Return Type

OrderGoodsouts

Types for the Request Body

Reason (root level)

Key Description Types Restrictions
reason The reason. string required
not null
min length is 1

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Unhold Goodsout

PUT /v1/orders/goodsouts/:id/unhold

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1049789/unhold", [
    "body" => json_encode([
        "reason" => "Example reason.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1049789/unhold', {
  reason: "Example reason.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1049789/unhold",
    body: {
        "reason": "Example reason."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1049789/unhold' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "reason": "Example reason."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1049789,
        "status": "awaiting_despatch",
        "date_placed": "2019-11-25T14:52:56.000Z",
        "despatch_date": null,
        "cancellation_date": "2019-11-25T14:52:56.000Z",
        "despatch_on_date": null,
        "source": "How the order was created.",
        "delivery_instructions": "When not home put in shed.",
        "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift."
    }
}

Unholds an order goodsout.

Parameter Regular Expressions

Request Body

Reason

Return Type

OrderGoodsouts

Types for the Request Body

Reason (root level)

Key Description Types Restrictions
reason The reason. string required
not null
min length is 1

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Get Goodsout Despatch Attributes

GET /v1/orders/goodsouts/:id/despatch_attributes

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/goodsouts/1049789/despatch_attributes", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/goodsouts/1049789/despatch_attributes', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1049789/despatch_attributes",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/goodsouts/1049789/despatch_attributes' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "sku": "DEMO-SKU-01",
            "product_name": "Example Product",
            "attribute_name": "Color",
            "attribute_value": "Red"
        }
    ]
}

Get all despatch attributes for a goodsout.

Parameter Regular Expressions

Return Type

array<OrderGoodsoutDespatchAttributes>

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Require Quote on Goodsout

PUT /v1/orders/goodsouts/:id/require_quote

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1049789/require_quote", [
    "body" => json_encode([
        "require_quote" => true,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1049789/require_quote', {
  require_quote: true,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1049789/require_quote",
    body: {
        "require_quote": true
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1049789/require_quote' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "require_quote": true
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1049789,
        "status": "awaiting_despatch",
        "date_placed": "2019-11-25T14:52:56.000Z",
        "despatch_date": null,
        "cancellation_date": "2019-11-25T14:52:56.000Z",
        "despatch_on_date": null,
        "source": "How the order was created.",
        "delivery_instructions": "When not home put in shed.",
        "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift."
    }
}

Require quote to an order goodsout.

Parameter Regular Expressions

Request Body

RequireQuote

Return Type

OrderGoodsouts

Types for the Request Body

RequireQuote (root level)

Key Description Types Restrictions
require_quote Require quote boolean required
not null

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Booking In Required

PUT /v1/orders/goodsouts/:id/set_booking_in_required

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/:id/set_booking_in_required", [
    "body" => json_encode([
        "booking_in_required" => true,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/:id/set_booking_in_required', {
  booking_in_required: true,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/:id/set_booking_in_required",
    body: {
        "booking_in_required": true
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/:id/set_booking_in_required' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "booking_in_required": true
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1049789,
        "status": "awaiting_despatch",
        "date_placed": "2019-11-25T14:52:56.000Z",
        "despatch_date": null,
        "cancellation_date": "2019-11-25T14:52:56.000Z",
        "despatch_on_date": null,
        "source": "How the order was created.",
        "delivery_instructions": "When not home put in shed.",
        "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift."
    }
}

Add Booking In required tag to goodsout.

Parameter Regular Expressions

Request Body

BookingInRequired

Return Type

OrderGoodsouts

Types for the Request Body

BookingInRequired (root level)

Key Description Types Restrictions
booking_in_required Set booking in required tag. boolean required
not null

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Add Goodsout Timeline

POST /v1/orders/goodsouts/:id/timeline

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/timeline", [
    "body" => json_encode([
        "message" => "Marked as processed with in system XYZ.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/timeline', {
  message: "Marked as processed with in system XYZ.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/timeline",
    body: {
        "message": "Marked as processed with in system XYZ."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/timeline' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "message": "Marked as processed with in system XYZ."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "message": "Marked as processed with in system XYZ."
    }
}

Add a message or note to the timeline.

Parameter Regular Expressions

Request Body

CreateAudit

Return Type

OrderGoodsoutAudits

Types for the Request Body

CreateAudit (root level)

Key Description Types Restrictions
message The message or note to be added to the timeline. string required
not null
max length is 65535

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Apply Goodsout Tag

POST /v1/orders/goodsouts/:id/tags

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/orders/goodsouts/:id/tags", [
    "body" => json_encode([
        "shortcode" => "PROCESSED",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/orders/goodsouts/:id/tags', {
  shortcode: "PROCESSED",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/:id/tags",
    body: {
        "shortcode": "PROCESSED"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/orders/goodsouts/:id/tags' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "shortcode": "PROCESSED"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "name": "Processed",
        "shortcode": "PROCESSED",
        "description": "Marked a as processed by XYZ system",
        "created": "2019-11-25T14:52:56.000Z"
    }
}

Applies a tag to a goodsout.

Parameter Regular Expressions

Request Body

ApplyTag

Return Type

OrderGoodsoutTags

Types for the Request Body

ApplyTag (root level)

Key Description Types Restrictions
shortcode The tag shortcode. string required
not null
min length is 1

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Remove Goodsout Tag

DELETE /v1/orders/goodsouts/:id/tags/:tagShortcode

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("DELETE", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/tags/PROCESSED", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.delete 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/tags/PROCESSED', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "DELETE",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/tags/PROCESSED",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request DELETE 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/tags/PROCESSED' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

null

Remove a tag from a goodsout.

Parameter Regular Expressions

Return Type

Empty.

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Bulk List Tracking Numbers

PUT /v1/orders/goodsouts/bulk_tracking_numbers

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/bulk_tracking_numbers?expand=*", [
    "body" => json_encode([
        "order_goodsout_ids" => [
            1,
            2,
            3,
            4,
            5,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/bulk_tracking_numbers?expand=*', {
  order_goodsout_ids: [
    1,
    2,
    3,
    4,
    5,
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/bulk_tracking_numbers?expand=*",
    body: {
        "order_goodsout_ids": [
            1,
            2,
            3,
            4,
            5
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/bulk_tracking_numbers?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "order_goodsout_ids": [
        1,
        2,
        3,
        4,
        5
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "order_goodsout_id": 1049789,
            "despatch_date": "2021-01-26T14:52:56.000Z",
            "courier": "Royal Mail",
            "external_tracking_enabled": true,
            "service": "Tracked 48H Hour",
            "tracking_numbers": [
                {
                    "courier": "Royal Mail",
                    "code": "RMTN1134905823GB",
                    "url": "http://www.royalmail.com/trackdetails?trackNumber=RMTN1134905823GB"
                }
            ]
        }
    ]
}

Fetches all the tracking numbers for a set list of order goodsouts. This endpoint always expands all expandables.

Request Body

BulkGetGoodsoutData

Return Type

array<BulkOrderTrackingNumbers>

Types for the Request Body

BulkGetGoodsoutData (root level)

Key Description Types Restrictions
order_goodsout_ids List of order goodsout ID’s. array<number> required
not null
min count is 1

Available expands

Field Return Type Description
tracking_numbers array<CachedCourierTracking> Tracking details.

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Bulk List Tracking Numbers by Reference

PUT /v1/orders/goodsouts/bulk_tracking_numbers/by_reference

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/bulk_tracking_numbers/by_reference?expand=*", [
    "body" => json_encode([
        "references" => [
            "#154254",
            "#154234",
            "AB12314",
        ],
        "statuses" => [
            "awaiting_despatch",
            "despatched",
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/bulk_tracking_numbers/by_reference?expand=*', {
  references: [
    "#154254",
    "#154234",
    "AB12314",
  ],
  statuses: [
    "awaiting_despatch",
    "despatched",
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/bulk_tracking_numbers/by_reference?expand=*",
    body: {
        "references": [
            "#154254",
            "#154234",
            "AB12314"
        ],
        "statuses": [
            "awaiting_despatch",
            "despatched"
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/bulk_tracking_numbers/by_reference?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "references": [
        "#154254",
        "#154234",
        "AB12314"
    ],
    "statuses": [
        "awaiting_despatch",
        "despatched"
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "reference": "#154254",
            "order_goodsout_id": 1049789,
            "despatch_date": "2021-01-26T14:52:56.000Z",
            "status": "despatched",
            "courier": "Royal Mail",
            "service": "Tracked 48H Hour",
            "external_tracking_enabled": true,
            "tracking_numbers": [
                {
                    "courier": "Royal Mail",
                    "code": "RMTN1134905823GB",
                    "url": "http://www.royalmail.com/trackdetails?trackNumber=RMTN1134905823GB"
                }
            ]
        }
    ]
}

Fetches all the tracking numbers for a set list of order goodsouts. This endpoint always expands all expandables.

Request Body

BulkGetGoodsoutDataByReference

Return Type

array<BulkOrderTrackingNumbersByReference>

Types for the Request Body

BulkGetGoodsoutDataByReference (root level)

Key Description Types Restrictions
references List of order references. array<string> required
not null
min count is 1
statuses Limit to certain goodsout statuses. array<enum(draft, awaiting_allocation, hung, returned, awaiting_payment, awaiting_picking, awaiting_despatch, backorder_release, backorder, cancelled, return_open, item_refunded, item_replaced, awaiting_collection, despatched)> min count is 1

Available expands

Field Return Type Description
tracking_numbers array<CachedCourierTracking> Tracking details.

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Bulk List Goodsout Statuses

PUT /v1/orders/goodsouts/bulk_statuses

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/bulk_statuses", [
    "body" => json_encode([
        "order_goodsout_ids" => [
            1,
            2,
            3,
            4,
            5,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/bulk_statuses', {
  order_goodsout_ids: [
    1,
    2,
    3,
    4,
    5,
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/bulk_statuses",
    body: {
        "order_goodsout_ids": [
            1,
            2,
            3,
            4,
            5
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/bulk_statuses' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "order_goodsout_ids": [
        1,
        2,
        3,
        4,
        5
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "order_goodsout_id": 1049789,
            "status": "awaiting_despatch"
        }
    ]
}

Fetches the statuses for a set list of order goodsouts.

Request Body

BulkGetGoodsoutData

Return Type

array<BulkOrderStatuses>

Types for the Request Body

BulkGetGoodsoutData (root level)

Key Description Types Restrictions
order_goodsout_ids List of order goodsout ID’s. array<number> required
not null
min count is 1

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Bulk Check Order Exists

PUT /v1/orders/exists

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/exists", [
    "body" => json_encode([
        "order_channel_id" => 1,
        "order_references" => [
            "433-3450983-23443",
            "443-473470-972349",
            "43-45343-54543543543-001",
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/exists', {
  order_channel_id: 1,
  order_references: [
    "433-3450983-23443",
    "443-473470-972349",
    "43-45343-54543543543-001",
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/exists",
    body: {
        "order_channel_id": 1,
        "order_references": [
            "433-3450983-23443",
            "443-473470-972349",
            "43-45343-54543543543-001"
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/exists' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "order_channel_id": 1,
    "order_references": [
        "433-3450983-23443",
        "443-473470-972349",
        "43-45343-54543543543-001"
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "order_reference": "8674-7893278932798-68723",
            "order_id": 4374739234,
            "exists": false
        }
    ]
}

Check to see if an order reference exists on a specific channel.

Request Body

BulkCheckOrderExistsData

Return Type

array<BulkCheckOrderExists>

Types for the Request Body

BulkCheckOrderExistsData (root level)

Key Description Types Restrictions
order_channel_id Order channel to check against. integer required
not null
min is 1
order_references List of order references to check. array<string> required
not null
min count is 1

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Bulk List All Open Orders

PUT /v1/orders/open

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/open?expand=*", [
    "body" => json_encode([
        "order_channel_id" => 1,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/open?expand=*', {
  order_channel_id: 1,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/open?expand=*",
    body: {
        "order_channel_id": 1
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/open?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "order_channel_id": 1
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "order_id": "2333",
            "reference": "8674-7893278932798-68723",
            "goodsouts": [
                {
                    "order_goodsout_id": "2333",
                    "status": "awaiting_picking",
                    "metadata": [
                        {
                            "key": "import_data",
                            "value": "..."
                        }
                    ]
                }
            ]
        }
    ]
}

List all the ‘open’ orders for a given channel. Can be used to do a pre-cursive check when importing to filter quickly filter out known references.

Request Body

BulkListAllOpenOrderReferencesInput

Return Type

array<BulkListAllOpenOrders>

Types for the Request Body

BulkListAllOpenOrderReferencesInput (root level)

Key Description Types Restrictions
order_channel_id Order channel to check against. integer required
not null
min is 1

Available expands

Field Return Type Description
goodsouts array<BulkListAllOpenOrdersGoodsout> undefined
goodsouts.metadata array<BulkListAllOpenOrdersGoodsoutMetadata> undefined

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Get packing list.

GET /v1/orders/goodsouts/:id/packing_list

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/goodsouts/:id/packing_list?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/goodsouts/:id/packing_list?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/:id/packing_list?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/goodsouts/:id/packing_list?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "pallet": {
                "pallet_product_variation_id": 1,
                "pallet_reference": 1,
                "sku": "STD-PALLET",
                "weight_kg": "1.000"
            },
            "carton_reference": 1,
            "carton_product_variation_id": 1,
            "sku": "OWNPACK",
            "sscc_18": "012345600064565487",
            "weight": "1.421",
            "height": 200,
            "width": 300,
            "depth": 150,
            "contains": {
                "product_component_id": 1,
                "sku": "BLUE_CAR",
                "name": "Blue Toy Car",
                "quantity": 25,
                "colour": "Blue",
                "size": "1:46",
                "style": "Standard",
                "type": null,
                "quality": "medium"
            }
        }
    ]
}

Fetches all boxes the goodsout was packed into. This endpoint always expands all expandables.

Parameter Regular Expressions

Return Type

array<OrderGoodsoutPackingListBox>

Available expands

Field Return Type Description
contains array<OrderGoodsoutPackingListProduct> A pallet on a packing list.
pallet OrderGoodsoutPackingListPallet A pallet on a packing list.

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Save Goodsout Shipment Tracking Update

POST /v1/shipping/tracking_update

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/shipping/tracking_update", [
    "body" => json_encode([
        "message" => "Shipment has arrived at regional facility.",
        "location" => "Christchurch",
        "tracking_number" => "123ABC",
        "timestamp_utc" => "2024-10-07T14:52:56.000Z",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/shipping/tracking_update', {
  message: "Shipment has arrived at regional facility.",
  location: "Christchurch",
  tracking_number: "123ABC",
  timestamp_utc: "2024-10-07T14:52:56.000Z",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/shipping/tracking_update",
    body: {
        "message": "Shipment has arrived at regional facility.",
        "location": "Christchurch",
        "tracking_number": "123ABC",
        "timestamp_utc": "2024-10-07T14:52:56.000Z"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/shipping/tracking_update' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "message": "Shipment has arrived at regional facility.",
    "location": "Christchurch",
    "tracking_number": "123ABC",
    "timestamp_utc": "2024-10-07T14:52:56.000Z"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "message": "Shipment has arrived at regional facility.",
        "location": "Christchurch",
        "tracking_number": "123ABC",
        "timestamp": "2024-10-07T14:52:56.000Z"
    }
}

Receives goodsout shipment tracking update.

Request Body

SaveGoodsoutShipmentTrackingUpdate

Return Type

OrderGoodsoutShipmentTracking

Types for the Request Body

SaveGoodsoutShipmentTrackingUpdate (root level)

Key Description Types Restrictions
message A summary text that describes the tracking event. string required
not null
min length is 1
location A text summary of where (location) the update has occurred. string required
not null
min length is 1
tracking_number The specific tracking number for the update. string required
not null
min length is 1
timestamp_utc The date/time of when the update was created (UTC format only). date required
not null

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

List Goodsout Shipment Tracking Updates

GET /v1/orders/goodsouts/:id/shipping/tracking_updates

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/goodsouts/:id/shipping/tracking_updates?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/goodsouts/:id/shipping/tracking_updates?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/:id/shipping/tracking_updates?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/goodsouts/:id/shipping/tracking_updates?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "message": "Shipment has arrived at regional facility.",
            "location": "Christchurch",
            "tracking_number": "123ABC",
            "timestamp": "2024-10-07T14:52:56.000Z"
        }
    ]
}

List goodsout shipment tracking updates.

Parameter Regular Expressions

Return Type

array<OrderGoodsoutShipmentTracking>

Available expands

Field Return Type Description

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Order Lines

Working with order lines.

Create Order Line

POST /v1/orders/goodsouts/:id/lines

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines", [
    "body" => json_encode([
        "variation" => [
            "sku" => "GREEN-BALL",
            "channel" => 1,
        ],
        "net_unit_principal" => 12.55,
        "principal_tax" => 12,
        "discount" => 0,
        "discount_type" => "value",
        "quantity" => 4,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines', {
  variation: {
    sku: "GREEN-BALL",
    channel: 1,
  },
  net_unit_principal: 12.55,
  principal_tax: 12,
  discount: 0,
  discount_type: "value",
  quantity: 4,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines",
    body: {
        "variation": {
            "sku": "GREEN-BALL",
            "channel": 1
        },
        "net_unit_principal": 12.55,
        "principal_tax": 12,
        "discount": 0,
        "discount_type": "value",
        "quantity": 4
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "variation": {
        "sku": "GREEN-BALL",
        "channel": 1
    },
    "net_unit_principal": 12.55,
    "principal_tax": 12,
    "discount": 0,
    "discount_type": "value",
    "quantity": 4
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 3450345,
        "transaction_sku": "GREEN-BALL",
        "quantity": 4,
        "discount_type": "percentage",
        "discount": 1.5,
        "net_unit_principal": 12,
        "status": "active"
    }
}

Adds a new line to an existing goodsout.

Parameter Regular Expressions

Request Body

CreateOrderGoodsoutLine

Return Type

OrderGoodsoutLines

Types for the Request Body

CreateOrderGoodsoutLine (root level)

Key Description Types Restrictions
variation Product description Variation required
not null
net_unit_principal The net amount paid for a single one of these items. number required
not null
min is 0
principal_tax The ID of the tax that should be applied to the line principal value. integer required
not null
min is 1
discount The amount of discount to be applied to the line principal value. number not null
min is 0
discount_type The type of discount to apply. enum(percentage, value) not null
quantity The quantity ordered. integer required
not null
min is 1

Variation

Key Description Types Restrictions
sku The product’s stock keeping unit (SKU). string required
not null
min length is 1
channel The product channel’s ID. integer required
not null
min is 1

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Update Order Line Quantity

PUT /v1/orders/goodsouts/:id/lines/:lineId/quantity

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/3450345/quantity", [
    "body" => json_encode([
        "quantity" => 4,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/3450345/quantity', {
  quantity: 4,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/3450345/quantity",
    body: {
        "quantity": 4
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/3450345/quantity' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "quantity": 4
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 3450345,
        "transaction_sku": "GREEN-BALL",
        "quantity": 4,
        "discount_type": "percentage",
        "discount": 1.5,
        "net_unit_principal": 12,
        "status": "active"
    }
}

Updates the quantity of an order goodsout line.

Parameter Regular Expressions

Request Body

UpdateGoodsoutLineQuantity

Return Type

OrderGoodsoutLines

Types for the Request Body

UpdateGoodsoutLineQuantity (root level)

Key Description Types Restrictions
quantity Quantity. integer required
not null
min is 1

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Cancel Order Line

PUT /v1/orders/goodsouts/:id/lines/:lineId/cancel

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/3450345/cancel", [
    "body" => json_encode([
        "reason" => "Item no longer wanted.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/3450345/cancel', {
  reason: "Item no longer wanted.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/3450345/cancel",
    body: {
        "reason": "Item no longer wanted."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/3450345/cancel' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "reason": "Item no longer wanted."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 3450345,
        "transaction_sku": "GREEN-BALL",
        "quantity": 4,
        "discount_type": "percentage",
        "discount": 1.5,
        "net_unit_principal": 12,
        "status": "active"
    }
}

Cancel a order goodsout line.

Parameter Regular Expressions

Request Body

CancelGoodsoutLine

Return Type

OrderGoodsoutLines

Types for the Request Body

CancelGoodsoutLine (root level)

Key Description Types Restrictions
reason Reason for canceling the line. string required
not null
min length is 1
max length is 250

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Order Channels

Working with order channels.

List Order Channels

GET /v1/orders/channels

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/channels?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/channels?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/channels?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/channels?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 321,
            "organisation_id": 321,
            "name": "Demo Channel",
            "short_code": "DEMO",
            "status": "active",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "brands": [
                {
                    "id": 5,
                    "name": "Demo Brand"
                }
            ],
            "organisation": {
                "id": 1,
                "name": "Demo",
                "active": true,
                "vat_number": "GB999 9999 73",
                "notes": "Demo account...",
                "contact_name": "Mr Joe Bloggs",
                "contact_phone": "+44 01425 000 000",
                "contact_mobile": "+44 00000000",
                "contact_email": "joe.bloggs@example.com",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            },
            "tax": {
                "id": 1,
                "name": "standard",
                "code": "20",
                "rate": 20,
                "description": "standard 20%",
                "active": true,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            }
        }
    ]
}

List order channels

Return Type

array<OrderChannels>

Filters

Field Operators Value List URL
search LIKE fuzzy search across selected attributes
status EQUALS

Available expands

Field Return Type Description
brands array<Brands> Brand data.
organisation Organisations Organisation data.
tax OrganisationTaxes Organisation tax data.

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Order Metadata

Working with order metadata.

List Order Metadata

GET /v1/orders/goodsouts/:id/metadata

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "key": "my_key",
            "value": "some-value"
        }
    ]
}

Retrieves a list of all the metadata stored against a order.

Parameter Regular Expressions

Return Type

array<OrderResourceMetadatas>

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Get Order Metadata

GET /v1/orders/goodsouts/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Retrieves a single piece of metadata stored against a order.

Parameter Regular Expressions

Return Type

OrderResourceMetadatas

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Set Order Metadata

PUT /v1/orders/goodsouts/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key", [
    "body" => json_encode([
        "value" => "some-value",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key', {
  value: "some-value",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key",
    body: {
        "value": "some-value"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "value": "some-value"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Sets some metadata against a Order.

Parameter Regular Expressions

Request Body

UpdateResourceMetadata

Return Type

OrderResourceMetadatas

Types for the Request Body

UpdateResourceMetadata (root level)

Key Description Types Restrictions
value The value. string required
not null
max length is 65535

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Delete Order Metadata

DELETE /v1/orders/goodsouts/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("DELETE", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.delete 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "DELETE",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request DELETE 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

null

Deletes some metadata against a order.

Parameter Regular Expressions

Return Type

Empty.

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Products

Working with products.

Create Product

POST /v1/products/variations

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/products/variations?expand=*", [
    "body" => json_encode([
        "sku" => "RED-BIKE-01A",
        "name" => "Red bike",
        "barcode" => "0793573679000",
        "brand" => 1,
        "channel" => 1,
        "new_component" => [
            "perishable" => true,
            "organic" => true,
            "dangerous" => true,
            "dutiable" => true,
            "hygiene" => true,
            "battery" => true,
            "fragile" => true,
            "what_is_it" => "Bicycle.",
            "made_of" => "metal, rubber, plastic",
            "used_for" => "sports",
            "customs_country_of_origin_country" => "GBR",
            "product_component_customs_code_id" => 1,
            "doqs" => [
                [
                    "length" => 2500,
                    "width" => 1000,
                    "height" => 4500,
                    "weight" => 1.45,
                    "quantity" => 10,
                    "type" => "INNER_PACK",
                    "shippable" => true,
                    "barcode" => "0793573679000",
                ],
            ],
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/products/variations?expand=*', {
  sku: "RED-BIKE-01A",
  name: "Red bike",
  barcode: "0793573679000",
  brand: 1,
  channel: 1,
  new_component: {
    perishable: true,
    organic: true,
    dangerous: true,
    dutiable: true,
    hygiene: true,
    battery: true,
    fragile: true,
    what_is_it: "Bicycle.",
    made_of: "metal, rubber, plastic",
    used_for: "sports",
    customs_country_of_origin_country: "GBR",
    product_component_customs_code_id: 1,
    doqs: [
      {
        length: 2500,
        width: 1000,
        height: 4500,
        weight: 1.45,
        quantity: 10,
        type: "INNER_PACK",
        shippable: true,
        barcode: "0793573679000",
      },
    ],
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations?expand=*",
    body: {
        "sku": "RED-BIKE-01A",
        "name": "Red bike",
        "barcode": "0793573679000",
        "brand": 1,
        "channel": 1,
        "new_component": {
            "perishable": false,
            "organic": false,
            "dangerous": false,
            "dutiable": false,
            "hygiene": false,
            "battery": false,
            "fragile": false,
            "what_is_it": "Bicycle.",
            "made_of": "metal, rubber, plastic",
            "used_for": "sports",
            "customs_country_of_origin_country": "GBR",
            "product_component_customs_code_id": 1,
            "doqs": [
                {
                    "length": 2500,
                    "width": 1000,
                    "height": 4500,
                    "weight": 1.45,
                    "quantity": 10,
                    "type": "INNER_PACK",
                    "shippable": true,
                    "barcode": "0793573679000"
                }
            ]
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/products/variations?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "sku": "RED-BIKE-01A",
    "name": "Red bike",
    "barcode": "0793573679000",
    "brand": 1,
    "channel": 1,
    "new_component": {
        "perishable": false,
        "organic": false,
        "dangerous": false,
        "dutiable": false,
        "hygiene": false,
        "battery": false,
        "fragile": false,
        "what_is_it": "Bicycle.",
        "made_of": "metal, rubber, plastic",
        "used_for": "sports",
        "customs_country_of_origin_country": "GBR",
        "product_component_customs_code_id": 1,
        "doqs": [
            {
                "length": 2500,
                "width": 1000,
                "height": 4500,
                "weight": 1.45,
                "quantity": 10,
                "type": "INNER_PACK",
                "shippable": true,
                "barcode": "0793573679000"
            }
        ]
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "product_id": 1,
        "status": "active",
        "sku": "DEMO-SKU-01",
        "barcode": "0123456789012",
        "product_variation_type_id": 1,
        "discontinued_date": "2019-11-25T14:52:56.000Z",
        "despatch_instructions": "Always pack facing upwards.",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "product": {
            "id": 1,
            "product_channel_id": 1,
            "product_brand_id": 1,
            "product_category_id": 1,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "channel": {
                "id": 1,
                "organisation_id": 1,
                "status": "active",
                "outbound_email": "someone@example.com",
                "default_warehouse_id": 1,
                "default_product_brand_id": 1,
                "global": false,
                "name": "Demo Channel",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            },
            "brand": {
                "id": 1,
                "name": "Demo Brand",
                "organisation_id": 1,
                "active": true,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        },
        "type": {
            "id": 1,
            "name": "Standard Product",
            "type": "product",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        },
        "components": [
            {
                "product_variation_id": 1,
                "product_component_instance_id": 1,
                "quantity": 1,
                "instance": {
                    "id": 1,
                    "product_component_id": 1,
                    "component": {
                        "id": 1,
                        "status": "active",
                        "sku": "DEMO-SKU-01",
                        "barcode": "123123123000",
                        "perishable": false,
                        "fragile": false,
                        "battery": false,
                        "dangerous": false,
                        "organic": false,
                        "what_is_it": "Tape measure.",
                        "made_of": "Synthetic rubber & Polyvinyl chloride",
                        "used_for": "A tool for measuring distances.",
                        "customs_country_of_origin_country_id": 1,
                        "product_component_customs_code_id": 1,
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z",
                        "count_product_component_batches": 1
                    }
                }
            }
        ],
        "descriptions": [
            {
                "id": 1,
                "product_variation_id": 1,
                "locale_id": 1,
                "name": "Example product",
                "full_description": "Example product description",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "locale": {
                    "id": 1,
                    "name": "English",
                    "code": "en",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        ],
        "primary_component": [
            {
                "id": 1,
                "status": "active",
                "sku": "DEMO-SKU-01",
                "barcode": "123123123000",
                "perishable": false,
                "fragile": false,
                "battery": false,
                "dangerous": false,
                "organic": false,
                "what_is_it": "Tape measure.",
                "made_of": "Synthetic rubber & Polyvinyl chloride",
                "used_for": "A tool for measuring distances.",
                "customs_country_of_origin_country_id": 1,
                "product_component_customs_code_id": 1,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "count_product_component_batches": 1
            }
        ],
        "tags": [
            {
                "id": 1,
                "name": "Processed",
                "shortcode": "PROCESSED",
                "description": "Marked a as processed by XYZ system",
                "created": "2019-11-25T14:52:56.000Z"
            }
        ],
        "stock_data_summaries": [
            {
                "product_variation_id": 1,
                "warehouse_id": 1,
                "warehouse_code": "CHR",
                "warehouse_name": "Christchurch",
                "total": 156,
                "total_saleable": 140,
                "saleable": 134,
                "available": 121,
                "allocated": 10,
                "misc": 34,
                "expected": 100,
                "under_investigation": 1
            }
        ]
    }
}

Creates a product.

Request Body

CreateProduct

Return Type

ProductVariations

Types for the Request Body

CreateProduct (root level)

Key Description Types Restrictions
sku The product’s Stock Keeping Unit. string required
not null
match is /^[a-z0-9\-_.]{2,}$/i
name The product’s name. string required
not null
min length is 3
barcode The product barcode. string required
not null
match is /^\d{3,20}$/
brand Product brand id. integer required
not null
min is 1
channel Product channel id. integer required
not null
min is 1
new_component Component data. Required when creating a new warehouse product. It can’t appear in the payload along with existing_components. NewComponent optionally required
not null
existing_components Components to use. Required when creating a new virtual product. It can’t appear in the payload along with new_component. array<ExistingComponent> optionally required
not null
min count is 1

Doq

Key Description Types Restrictions
length Length in MM. integer required
not null
min is 1
width Width in MM. integer required
not null
min is 1
height Height in MM. integer required
not null
min is 1
weight Weight in KG. number required
not null
min is 0.001
quantity Quantity. integer required
not null
min is 1
type Short code for the DOQ. enum(INNER_PACK, MASTER_CASE, PALLET, SINGLE_PRODUCT) required
not null
shippable Is this a shippable item? boolean required
not null
barcode Barcode. string not null
match is /^[0-9]{6,}$/

ExistingComponent

Key Description Types Restrictions
id The product component ID. integer required
not null
min is 1
quantity The quantity required to build the virtual product. integer required
not null
min is 1

NewComponent

Key Description Types Restrictions
perishable Is the product perishable? boolean required
not null
organic Is the product organic? boolean required
not null
dangerous Is the product dangerous? boolean not null
dutiable Is the product dutiable? boolean not null
hygiene Is the product for hygiene? boolean not null
battery Does the product have battery? boolean not null
fragile Is the product fragile? boolean not null
what_is_it Part of customs details: What is the product? string required
not null
min length is 1
made_of Part of customs details: What is the product made of? string required
not null
min length is 1
used_for Part of customs details: What is the product used for? string required
not null
min length is 1
customs_country_of_origin_country The ISO2 or ISO3 code or the ID of the country of origin. string
or integer
required
not null
if type is string, then min length is 1
if type is string, then max length is 3
if type is integer, then min is 1
product_component_customs_code_id Customs code ID. integer required
not null
min is 1
doqs List of product DOQs. array<Doq> required
not null
min count is 1

Available expands

Field Return Type Description
components array<ProductVariationComponents> Variation component.
components.instance ProductComponentInstances Component instance.
components.instance.component ProductComponents Product component.
components.instance.component.doqs array<ProductComponentDoqs> Product component DOQ.
components.instance.component.doqs.type ProductComponentDoqTypes Product component DOQ Types.
descriptions array<ProductVariationDescriptions> Variation descriptions.
descriptions.locale Locales Locale data.
primary_component array<ProductComponents> Product component.
product Products Product data. Products are grouping entries and may represent multiple different kinds of physical products.
product.brand ProductBrands Product brand data.
product.brand.organisation Organisations Organisation data.
product.channel ProductChannels Geographical region data.
product.channel.organisation Organisations Organisation data.
stock_data_summaries array<ProductVariationStockDataSummary> Variation stock breakdown.
tags array<Tags> A tag.
type ProductVariationTypes Product variation type data.

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

List Product Variations

GET /v1/products/variations

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/variations?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/variations?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/variations?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "sku": "DEMO-SKU-01",
            "name": "Example product",
            "is_primary": false,
            "status": "active",
            "created": {},
            "product": {
                "id": 1,
                "channel": {
                    "id": 1,
                    "name": "Demo Channel",
                    "default_warehouse_id": 1,
                    "global": false,
                    "organisation": {
                        "id": 1,
                        "name": "Demo Organisation"
                    }
                }
            },
            "tags": [
                {
                    "name": "Processed",
                    "shortcode": "processed",
                    "description": "Processed by a 3rd party system"
                }
            ],
            "descriptions": [
                {
                    "id": 1,
                    "product_variation_id": 1,
                    "locale_id": 1,
                    "name": "Example Product",
                    "full_description": "Example product description",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z",
                    "locale": {
                        "id": 1,
                        "name": "English",
                        "code": "en",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    }
                }
            ],
            "components": [
                {
                    "id": 1,
                    "sku": "DEMO-SKU-01",
                    "name": "Example Product",
                    "barcode": 1234567891020,
                    "quantity": 1
                }
            ],
            "type": {
                "id": 1,
                "name": "Standard Product",
                "type": "product"
            },
            "primary_product_category": {
                "id": 4,
                "name": "Bicycles"
            }
        }
    ]
}

Get a list of product variations. Please note that all expands will be applied automatically.

Return Type

array<CachedProductVariation>

Filters

Field Operators Value List URL
search LIKE fuzzy search across selected attributes
id EQUALS, IN
product.channel.id IN, NOT_IN
tags.shortcode IN, NOT_IN
status IN, NOT_IN
sku EQUALS, IN
type.id IN
is_primary EQUALS
order_channel_id IN /v1/orders/channels

Sortings

Results can be sorted by the following keys: created, product.channel.name, sku, status.

Available expands

Field Return Type Description
components array<CachedProductVariationComponent> Variation component.
created CachedProductVariationCreated Variation specific data.
descriptions array<CachedProductVariationDescription> Variation descriptions.
descriptions.locale SummarisedLocale Locale / Language.
primary_product_category SummarisedProductCategory Summary of a product category.
product CachedProduct Top level product data.
product.channel CachedProductChannel Cached product channel.
product.channel.organisation CachedProductChannelOrganisation Top level product data.
tags array<SummarisedTag> A tag.
type SummarisedProductVariationType Top level product data.

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

View Product Variation

GET /v1/products/variations/:id

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/variations/:id?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/variations/:id?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/:id?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/variations/:id?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "product_id": 1,
        "status": "active",
        "sku": "DEMO-SKU-01",
        "barcode": "0123456789012",
        "product_variation_type_id": 1,
        "discontinued_date": "2019-11-25T14:52:56.000Z",
        "despatch_instructions": "Always pack facing upwards.",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "product": {
            "id": 1,
            "product_channel_id": 1,
            "product_brand_id": 1,
            "product_category_id": 1,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "channel": {
                "id": 1,
                "organisation_id": 1,
                "status": "active",
                "outbound_email": "someone@example.com",
                "default_warehouse_id": 1,
                "default_product_brand_id": 1,
                "global": false,
                "name": "Demo Channel",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            },
            "brand": {
                "id": 1,
                "name": "Demo Brand",
                "organisation_id": 1,
                "active": true,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        },
        "type": {
            "id": 1,
            "name": "Standard Product",
            "type": "product",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        },
        "components": [
            {
                "product_variation_id": 1,
                "product_component_instance_id": 1,
                "quantity": 1,
                "instance": {
                    "id": 1,
                    "product_component_id": 1,
                    "component": {
                        "id": 1,
                        "status": "active",
                        "sku": "DEMO-SKU-01",
                        "barcode": "123123123000",
                        "perishable": false,
                        "fragile": false,
                        "battery": false,
                        "dangerous": false,
                        "organic": false,
                        "what_is_it": "Tape measure.",
                        "made_of": "Synthetic rubber & Polyvinyl chloride",
                        "used_for": "A tool for measuring distances.",
                        "customs_country_of_origin_country_id": 1,
                        "product_component_customs_code_id": 1,
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z",
                        "count_product_component_batches": 1
                    }
                }
            }
        ],
        "descriptions": [
            {
                "id": 1,
                "product_variation_id": 1,
                "locale_id": 1,
                "name": "Example product",
                "full_description": "Example product description",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "locale": {
                    "id": 1,
                    "name": "English",
                    "code": "en",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        ],
        "primary_component": [
            {
                "id": 1,
                "status": "active",
                "sku": "DEMO-SKU-01",
                "barcode": "123123123000",
                "perishable": false,
                "fragile": false,
                "battery": false,
                "dangerous": false,
                "organic": false,
                "what_is_it": "Tape measure.",
                "made_of": "Synthetic rubber & Polyvinyl chloride",
                "used_for": "A tool for measuring distances.",
                "customs_country_of_origin_country_id": 1,
                "product_component_customs_code_id": 1,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "count_product_component_batches": 1
            }
        ],
        "tags": [
            {
                "id": 1,
                "name": "Processed",
                "shortcode": "PROCESSED",
                "description": "Marked a as processed by XYZ system",
                "created": "2019-11-25T14:52:56.000Z"
            }
        ],
        "stock_data_summaries": [
            {
                "product_variation_id": 1,
                "warehouse_id": 1,
                "warehouse_code": "CHR",
                "warehouse_name": "Christchurch",
                "total": 156,
                "total_saleable": 140,
                "saleable": 134,
                "available": 121,
                "allocated": 10,
                "misc": 34,
                "expected": 100,
                "under_investigation": 1
            }
        ]
    }
}

View a single product variation.

Parameter Regular Expressions

Return Type

ProductVariations

Available expands

Field Return Type Description
components array<ProductVariationComponents> Variation component.
components.instance ProductComponentInstances Component instance.
components.instance.component ProductComponents Product component.
components.instance.component.doqs array<ProductComponentDoqs> Product component DOQ.
components.instance.component.doqs.type ProductComponentDoqTypes Product component DOQ Types.
descriptions array<ProductVariationDescriptions> Variation descriptions.
descriptions.locale Locales Locale data.
primary_component array<ProductComponents> Product component.
product Products Product data. Products are grouping entries and may represent multiple different kinds of physical products.
product.brand ProductBrands Product brand data.
product.brand.organisation Organisations Organisation data.
product.channel ProductChannels Geographical region data.
product.channel.organisation Organisations Organisation data.
stock_data_summaries array<ProductVariationStockDataSummary> Variation stock breakdown.
tags array<Tags> A tag.
type ProductVariationTypes Product variation type data.

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

Update Name and Description

PUT /v1/products/variations/:id/description

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/products/variations/12345/description?expand=*", [
    "body" => json_encode([
        "locale" => "en",
        "name" => "Red Ball",
        "full_description" => "A beautiful red ball.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/products/variations/12345/description?expand=*', {
  locale: "en",
  name: "Red Ball",
  full_description: "A beautiful red ball.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/12345/description?expand=*",
    body: {
        "locale": "en",
        "name": "Red Ball",
        "full_description": "A beautiful red ball."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/products/variations/12345/description?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "locale": "en",
    "name": "Red Ball",
    "full_description": "A beautiful red ball."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "product_variation_id": 1,
        "locale_id": 1,
        "name": "Example product",
        "full_description": "Example product description",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "locale": {
            "id": 1,
            "name": "English",
            "code": "en",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        }
    }
}

Updates product’s name and description.

Parameter Regular Expressions

Request Body

UpdateVariationNameAndDescription

Return Type

ProductVariationDescriptions

Types for the Request Body

UpdateVariationNameAndDescription (root level)

Key Description Types Restrictions
locale ID or code of locale. string
or integer
required
not null
if type is string, then min length is 2
if type is string, then max length is 2
if type is integer, then min is 1
name Name. string required
not null
min length is 1
full_description Description. string required
not null
min length is 0

Available expands

Field Return Type Description
locale Locales Locale data.

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

Activate Product Variation

PUT /v1/products/variations/:id/activate

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/products/variations/:id/activate?expand=*", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/products/variations/:id/activate?expand=*', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/:id/activate?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/products/variations/:id/activate?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "product_id": 1,
        "status": "active",
        "sku": "DEMO-SKU-01",
        "barcode": "0123456789012",
        "product_variation_type_id": 1,
        "discontinued_date": "2019-11-25T14:52:56.000Z",
        "despatch_instructions": "Always pack facing upwards.",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "product": {
            "id": 1,
            "product_channel_id": 1,
            "product_brand_id": 1,
            "product_category_id": 1,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "channel": {
                "id": 1,
                "organisation_id": 1,
                "status": "active",
                "outbound_email": "someone@example.com",
                "default_warehouse_id": 1,
                "default_product_brand_id": 1,
                "global": false,
                "name": "Demo Channel",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            },
            "brand": {
                "id": 1,
                "name": "Demo Brand",
                "organisation_id": 1,
                "active": true,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        },
        "type": {
            "id": 1,
            "name": "Standard Product",
            "type": "product",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        },
        "components": [
            {
                "product_variation_id": 1,
                "product_component_instance_id": 1,
                "quantity": 1,
                "instance": {
                    "id": 1,
                    "product_component_id": 1,
                    "component": {
                        "id": 1,
                        "status": "active",
                        "sku": "DEMO-SKU-01",
                        "barcode": "123123123000",
                        "perishable": false,
                        "fragile": false,
                        "battery": false,
                        "dangerous": false,
                        "organic": false,
                        "what_is_it": "Tape measure.",
                        "made_of": "Synthetic rubber & Polyvinyl chloride",
                        "used_for": "A tool for measuring distances.",
                        "customs_country_of_origin_country_id": 1,
                        "product_component_customs_code_id": 1,
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z",
                        "count_product_component_batches": 1
                    }
                }
            }
        ],
        "descriptions": [
            {
                "id": 1,
                "product_variation_id": 1,
                "locale_id": 1,
                "name": "Example product",
                "full_description": "Example product description",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "locale": {
                    "id": 1,
                    "name": "English",
                    "code": "en",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        ],
        "primary_component": [
            {
                "id": 1,
                "status": "active",
                "sku": "DEMO-SKU-01",
                "barcode": "123123123000",
                "perishable": false,
                "fragile": false,
                "battery": false,
                "dangerous": false,
                "organic": false,
                "what_is_it": "Tape measure.",
                "made_of": "Synthetic rubber & Polyvinyl chloride",
                "used_for": "A tool for measuring distances.",
                "customs_country_of_origin_country_id": 1,
                "product_component_customs_code_id": 1,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "count_product_component_batches": 1
            }
        ],
        "tags": [
            {
                "id": 1,
                "name": "Processed",
                "shortcode": "PROCESSED",
                "description": "Marked a as processed by XYZ system",
                "created": "2019-11-25T14:52:56.000Z"
            }
        ],
        "stock_data_summaries": [
            {
                "product_variation_id": 1,
                "warehouse_id": 1,
                "warehouse_code": "CHR",
                "warehouse_name": "Christchurch",
                "total": 156,
                "total_saleable": 140,
                "saleable": 134,
                "available": 121,
                "allocated": 10,
                "misc": 34,
                "expected": 100,
                "under_investigation": 1
            }
        ]
    }
}

Set the product variation’s status to “active”.

Parameter Regular Expressions

Request Body

Ignored.

Return Type

ProductVariations

Available expands

Field Return Type Description
components array<ProductVariationComponents> Variation component.
components.instance ProductComponentInstances Component instance.
components.instance.component ProductComponents Product component.
components.instance.component.doqs array<ProductComponentDoqs> Product component DOQ.
components.instance.component.doqs.type ProductComponentDoqTypes Product component DOQ Types.
descriptions array<ProductVariationDescriptions> Variation descriptions.
descriptions.locale Locales Locale data.
primary_component array<ProductComponents> Product component.
product Products Product data. Products are grouping entries and may represent multiple different kinds of physical products.
product.brand ProductBrands Product brand data.
product.brand.organisation Organisations Organisation data.
product.channel ProductChannels Geographical region data.
product.channel.organisation Organisations Organisation data.
stock_data_summaries array<ProductVariationStockDataSummary> Variation stock breakdown.
tags array<Tags> A tag.
type ProductVariationTypes Product variation type data.

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

Discontinue Product Variation

PUT /v1/products/variations/:id/discontinue

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/products/variations/:id/discontinue?expand=*", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/products/variations/:id/discontinue?expand=*', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/:id/discontinue?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/products/variations/:id/discontinue?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "product_id": 1,
        "status": "active",
        "sku": "DEMO-SKU-01",
        "barcode": "0123456789012",
        "product_variation_type_id": 1,
        "discontinued_date": "2019-11-25T14:52:56.000Z",
        "despatch_instructions": "Always pack facing upwards.",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "product": {
            "id": 1,
            "product_channel_id": 1,
            "product_brand_id": 1,
            "product_category_id": 1,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "channel": {
                "id": 1,
                "organisation_id": 1,
                "status": "active",
                "outbound_email": "someone@example.com",
                "default_warehouse_id": 1,
                "default_product_brand_id": 1,
                "global": false,
                "name": "Demo Channel",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            },
            "brand": {
                "id": 1,
                "name": "Demo Brand",
                "organisation_id": 1,
                "active": true,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        },
        "type": {
            "id": 1,
            "name": "Standard Product",
            "type": "product",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        },
        "components": [
            {
                "product_variation_id": 1,
                "product_component_instance_id": 1,
                "quantity": 1,
                "instance": {
                    "id": 1,
                    "product_component_id": 1,
                    "component": {
                        "id": 1,
                        "status": "active",
                        "sku": "DEMO-SKU-01",
                        "barcode": "123123123000",
                        "perishable": false,
                        "fragile": false,
                        "battery": false,
                        "dangerous": false,
                        "organic": false,
                        "what_is_it": "Tape measure.",
                        "made_of": "Synthetic rubber & Polyvinyl chloride",
                        "used_for": "A tool for measuring distances.",
                        "customs_country_of_origin_country_id": 1,
                        "product_component_customs_code_id": 1,
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z",
                        "count_product_component_batches": 1
                    }
                }
            }
        ],
        "descriptions": [
            {
                "id": 1,
                "product_variation_id": 1,
                "locale_id": 1,
                "name": "Example product",
                "full_description": "Example product description",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "locale": {
                    "id": 1,
                    "name": "English",
                    "code": "en",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        ],
        "primary_component": [
            {
                "id": 1,
                "status": "active",
                "sku": "DEMO-SKU-01",
                "barcode": "123123123000",
                "perishable": false,
                "fragile": false,
                "battery": false,
                "dangerous": false,
                "organic": false,
                "what_is_it": "Tape measure.",
                "made_of": "Synthetic rubber & Polyvinyl chloride",
                "used_for": "A tool for measuring distances.",
                "customs_country_of_origin_country_id": 1,
                "product_component_customs_code_id": 1,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "count_product_component_batches": 1
            }
        ],
        "tags": [
            {
                "id": 1,
                "name": "Processed",
                "shortcode": "PROCESSED",
                "description": "Marked a as processed by XYZ system",
                "created": "2019-11-25T14:52:56.000Z"
            }
        ],
        "stock_data_summaries": [
            {
                "product_variation_id": 1,
                "warehouse_id": 1,
                "warehouse_code": "CHR",
                "warehouse_name": "Christchurch",
                "total": 156,
                "total_saleable": 140,
                "saleable": 134,
                "available": 121,
                "allocated": 10,
                "misc": 34,
                "expected": 100,
                "under_investigation": 1
            }
        ]
    }
}

Set the product variation’s status to “discontinued”.

Parameter Regular Expressions

Request Body

Ignored.

Return Type

ProductVariations

Available expands

Field Return Type Description
components array<ProductVariationComponents> Variation component.
components.instance ProductComponentInstances Component instance.
components.instance.component ProductComponents Product component.
components.instance.component.doqs array<ProductComponentDoqs> Product component DOQ.
components.instance.component.doqs.type ProductComponentDoqTypes Product component DOQ Types.
descriptions array<ProductVariationDescriptions> Variation descriptions.
descriptions.locale Locales Locale data.
primary_component array<ProductComponents> Product component.
product Products Product data. Products are grouping entries and may represent multiple different kinds of physical products.
product.brand ProductBrands Product brand data.
product.brand.organisation Organisations Organisation data.
product.channel ProductChannels Geographical region data.
product.channel.organisation Organisations Organisation data.
stock_data_summaries array<ProductVariationStockDataSummary> Variation stock breakdown.
tags array<Tags> A tag.
type ProductVariationTypes Product variation type data.

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

Add Product Timeline

POST /v1/products/variations/:id/timeline

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/products/variations/1234567/timeline", [
    "body" => json_encode([
        "message" => "Marked as processed with in system XYZ.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/products/variations/1234567/timeline', {
  message: "Marked as processed with in system XYZ.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/1234567/timeline",
    body: {
        "message": "Marked as processed with in system XYZ."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/products/variations/1234567/timeline' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "message": "Marked as processed with in system XYZ."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "message": "Marked as processed with in system XYZ."
    }
}

Add a message or note to the timeline.

Parameter Regular Expressions

Request Body

CreateAudit

Return Type

ProductAudits

Types for the Request Body

CreateAudit (root level)

Key Description Types Restrictions
message The message or note to be added to the timeline. string required
not null
max length is 65535

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

Apply Product Tag

POST /v1/products/variations/:id/tags

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/products/variations/12345/tags", [
    "body" => json_encode([
        "shortcode" => "PROCESSED",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/products/variations/12345/tags', {
  shortcode: "PROCESSED",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/12345/tags",
    body: {
        "shortcode": "PROCESSED"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/products/variations/12345/tags' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "shortcode": "PROCESSED"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "name": "Processed",
        "shortcode": "PROCESSED",
        "description": "Marked a as processed by XYZ system",
        "created": "2019-11-25T14:52:56.000Z"
    }
}

Applies a tag to a product variation.

Parameter Regular Expressions

Request Body

ApplyTag

Return Type

ProductVariationTags

Types for the Request Body

ApplyTag (root level)

Key Description Types Restrictions
shortcode The tag shortcode. string required
not null
min length is 1

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

Remove Product Tag

DELETE /v1/products/variations/:id/tags/:tagShortcode

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("DELETE", "https://public-api.bladepro.io/v1/products/variations/1234567/tags/PROCESSED", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.delete 'https://public-api.bladepro.io/v1/products/variations/1234567/tags/PROCESSED', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "DELETE",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/1234567/tags/PROCESSED",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request DELETE 'https://public-api.bladepro.io/v1/products/variations/1234567/tags/PROCESSED' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

null

Remove a tag from a product variation.

Parameter Regular Expressions

Return Type

Empty.

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

Find variations with suppliers

GET /v1/products/variations/suppliers

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/variations/suppliers", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/variations/suppliers', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/suppliers",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/variations/suppliers' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "channel": 123,
            "sku": "DEMO-SKU-01",
            "product_component_sku": "DEMO-SKU-01",
            "product_component_supplier_id": 123,
            "product_component_id": 123,
            "warehouse_id": 123
        }
    ]
}

Retrieves basic data about the list of available marketplace listable products.

Return Type

array<ProductChannelVariations>

Filters

Field Operators Value List URL
sku LIKE, NOT_LIKE, IN
channel IN, NOT_IN

Scopes

This endpoint is available to all users.

Bulk List Stock

PUT /v1/products/variations/stocks

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/products/variations/stocks", [
    "body" => json_encode([
        "product_variation_id" => [
            1,
        ],
        "warehouse_code" => "CHR",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/products/variations/stocks', {
  product_variation_id: [
    1,
  ],
  warehouse_code: "CHR",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/stocks",
    body: {
        "product_variation_id": [
            1
        ],
        "warehouse_code": "CHR"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/products/variations/stocks' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "product_variation_id": [
        1
    ],
    "warehouse_code": "CHR"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "product_variation_id": 1,
            "warehouse_id": 1,
            "warehouse_code": "CHR",
            "warehouse_name": "Christchurch",
            "total": 156,
            "total_saleable": 140,
            "saleable": 134,
            "available": 121,
            "allocated": 10,
            "misc": 34,
            "expected": 100,
            "under_investigation": 1
        }
    ]
}

Fetches stock data for a set list of products.

Request Body

BulkGetVariationStockData

Return Type

array<ProductVariationStockDataSummary>

Types for the Request Body

BulkGetVariationStockData (root level)

Key Description Types Restrictions
product_variation_id List of product variation ID’s. array<number> required
not null
min count is 1
warehouse_code Warehouse code to limit the results to. If omitted or null, it won’t be applied as a filter. string min length is 1

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

List Product Variations

GET /v1/products/variations/stock_availability

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/variations/stock_availability?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/variations/stock_availability?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/stock_availability?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/variations/stock_availability?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "sku": "DEMO-SKU-01",
            "barcode": "0123456789012",
            "stocks": {
                "product_variation_id": 1,
                "warehouse_id": 1,
                "warehouse_code": "CHR",
                "total": 156,
                "available": 121
            }
        }
    ]
}

Get a list of product variations. Please note that all expands will be applied automatically.

Return Type

array<StockAvailability>

Filters

Field Operators Value List URL
search LIKE fuzzy search across selected attributes
id EQUALS, IN
sku EQUALS, IN
order_channel_id IN /v1/orders/channels

Sortings

Results can be sorted by the following keys: created, product.channel.name, sku, status.

Available expands

Field Return Type Description

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

Product Brands

Working with product brands.

List Product Brands

GET /v1/products/brands

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/brands", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/brands', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/brands",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/brands' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "name": "Demo Brand",
            "organisation_id": 1,
            "active": true,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        }
    ]
}

Retrieves a list of all the product brands.

Return Type

array<ProductBrands>

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

Create Product Brand

POST /v1/products/brands

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/products/brands", [
    "body" => json_encode([
        "name" => "Demo Brand Name.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/products/brands', {
  name: "Demo Brand Name.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/brands",
    body: {
        "name": "Demo Brand Name."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/products/brands' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "name": "Demo Brand Name."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "name": "Demo Brand",
        "organisation_id": 1,
        "active": true,
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z"
    }
}

Create a new product brand.

Request Body

CreateProductBrand

Return Type

ProductBrands

Types for the Request Body

CreateProductBrand (root level)

Key Description Types Restrictions
name The name of the product brand. string required
not null
max length is 200

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

Product Channels

Working with product channels.

List Product Channels

GET /v1/products/channels

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/channels", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/channels', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/channels",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/channels' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "organisation_id": 1,
            "status": "active",
            "outbound_email": "someone@example.com",
            "default_warehouse_id": 1,
            "default_product_brand_id": 1,
            "global": false,
            "name": "Demo Channel",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        }
    ]
}

List Product Channels.

Return Type

array<ProductChannels>

Filters

Field Operators Value List URL
search LIKE fuzzy search across selected attributes

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

Product Metadata

Working with product metadata.

List Product Metadata

GET /v1/products/variations/:id/metadata

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/variations/1234567/metadata", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/variations/1234567/metadata', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/1234567/metadata",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/variations/1234567/metadata' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "key": "my_key",
            "value": "some-value"
        }
    ]
}

Retrieves a list of all the metadata stored against a product.

Parameter Regular Expressions

Return Type

array<ProductResourceMetadatas>

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

Get Product Metadata

GET /v1/products/variations/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Retrieves a single piece of metadata stored against a product.

Parameter Regular Expressions

Return Type

ProductResourceMetadatas

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

Set Product Metadata

PUT /v1/products/variations/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key", [
    "body" => json_encode([
        "value" => "some-value",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key', {
  value: "some-value",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key",
    body: {
        "value": "some-value"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "value": "some-value"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Sets some metadata against a Product.

Parameter Regular Expressions

Request Body

UpdateResourceMetadata

Return Type

ProductResourceMetadatas

Types for the Request Body

UpdateResourceMetadata (root level)

Key Description Types Restrictions
value The value. string required
not null
max length is 65535

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

Delete Product Metadata

DELETE /v1/products/variations/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("DELETE", "https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.delete 'https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "DELETE",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request DELETE 'https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

null

Deletes some metadata against a product.

Parameter Regular Expressions

Return Type

Empty.

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

Product Custom Codes

Working with product custom codes.

List Customs Codes

GET /v1/products/customs

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/customs?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/customs?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/customs?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/customs?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "code": "8471",
            "name": "Personal computers",
            "duty_rate": 1.5,
            "organisation_id": 1,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        }
    ]
}

List Customs Codes.

Return Type

array<ProductComponentCustomsCodes>

Available expands

Field Return Type Description
organisation Organisations Organisation data.

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

Create Customs Code

POST /v1/products/customs

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/products/customs", [
    "body" => json_encode([
        "code" => "8471",
        "name" => "Personal computers",
        "duty_rate" => 1.5,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/products/customs', {
  code: "8471",
  name: "Personal computers",
  duty_rate: 1.5,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/customs",
    body: {
        "code": "8471",
        "name": "Personal computers",
        "duty_rate": 1.5
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/products/customs' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "code": "8471",
    "name": "Personal computers",
    "duty_rate": 1.5
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "code": "8471",
        "name": "Personal computers",
        "duty_rate": 1.5,
        "organisation_id": 1,
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z"
    }
}

Create a new customs code.

Request Body

CreateProductCustomsCode

Return Type

ProductComponentCustomsCodes

Types for the Request Body

CreateProductCustomsCode (root level)

Key Description Types Restrictions
code HS Code. string required
not null
min length is 4
name Name of the code. string required
not null
min length is 1
duty_rate The duty rate applied to this customs code. number required
not null
min is 0

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

Product DOQ Types

Working with product DOQ Types.

List Product DOQ Types

GET /v1/products/doqs

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/doqs", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/doqs', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/doqs",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/doqs' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "code": "INNER_PACK",
            "name": "Inner"
        }
    ]
}

List product DOQ types.

Return Type

array<ProductComponentDoqTypes>

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

Product Suppliers

Working with product suppliers.

List Product Suppliers

GET /v1/products/suppliers

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/suppliers", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/suppliers', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/suppliers",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/suppliers' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 6,
            "organisation_id": 1,
            "name": "Demo Supplier",
            "active": true,
            "port_id": 4,
            "currency_code": "GBP",
            "nominal_code": "5000",
            "xero_code": "ABC/9/99",
            "organisation_tax_id": 1
        }
    ]
}

List product suppliers.

Return Type

array<ProductComponentSuppliers>

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

Purchase Orders

Working with purchase orders.

List Purchase Orders

GET /v1/purchase_orders

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/purchase_orders?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/purchase_orders?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/purchase_orders?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 125,
        "product_channel_id": 12,
        "purchase_order_type_id": 1,
        "product_component_supplier_id": 500,
        "warehouse_id": 1,
        "currency_id": 1,
        "status": "open",
        "notification_email_addresses": "support.team@i-fulfilment.co.uk",
        "comments": "Sample comments.",
        "reject_reason": null,
        "approved_date": "2019-11-25T14:52:56.000Z",
        "completed_date": "2019-11-25T14:52:56.000Z",
        "discount": 0,
        "discount_type": "value",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "warehouse": {
            "short_code": "CHR",
            "name": "Christchurch"
        },
        "currency": {
            "code": "GBP",
            "name": "British Pound",
            "symbol": "£"
        },
        "channel": {
            "id": 1,
            "name": "Demo Channel",
            "default_warehouse_id": 1,
            "global": false
        },
        "type": {
            "id": 1,
            "code": "standard",
            "name": "Standard",
            "description": "Check-in and put away to locations"
        },
        "supplier": {
            "id": 6,
            "organisation_id": 1,
            "name": "Demo Supplier",
            "active": true,
            "port_id": 4,
            "currency_code": "GBP",
            "nominal_code": "5000",
            "xero_code": "ABC/9/99",
            "organisation_tax_id": 1
        },
        "goodsins": [
            {
                "id": 174,
                "source": "API",
                "shipping_company": "DHL",
                "tracking_number": "DHL-TN-1209341234",
                "expected_pallets": 32,
                "expected_cartons": 3200,
                "received_pallets": 32,
                "received_cartons": 3200,
                "received_container": "20FT",
                "container_shipment": true,
                "container_size": "full",
                "expected_delivery_date": "2019-11-25T14:52:56.000Z",
                "expected_delivery_time_slot": "am",
                "preferred_delivery_date": "2019-11-25T14:52:56.000Z",
                "preferred_delivery_time_slot": "am",
                "shipping_method": "sea",
                "port_id": 4,
                "purchase_order_goodsin_shipping_term_id": 1,
                "status": "completed",
                "is_third_party": false,
                "third_party_emails": null,
                "third_party_contact_name": null,
                "booking_requested": "2019-11-25T14:52:56.000Z",
                "booking_approved_by": 1,
                "booking_approved": "2019-11-25T14:52:56.000Z",
                "unique_booking_reference": "UQBR-2020/10934934",
                "check_in_by": "2019-11-25T14:52:56.000Z",
                "transport_costs_locked": "2019-11-25T14:52:56.000Z",
                "lock_user_id": 1,
                "receiving_started": "2019-11-25T14:52:56.000Z",
                "receiving_completed": "2019-11-25T14:52:56.000Z",
                "checkin_started": "2019-11-25T14:52:56.000Z",
                "checkin_completed": "2019-11-25T14:52:56.000Z",
                "putaway_started": "2019-11-25T14:52:56.000Z",
                "putaway_completed": "2019-11-25T14:52:56.000Z",
                "ignore_from_billing": false,
                "returns_damaged_count": 0,
                "returns_unidentifiable_count": 0,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "items": [
                    {
                        "id": 123124,
                        "product_component_id": 1,
                        "quantity": 34,
                        "expiry_date": null,
                        "product_component_batch_id": 52567,
                        "purchase_order_goodsin_item_issue_id": 78,
                        "product_component_cost_price_id": 54349,
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z",
                        "count_audit_ids": 0
                    }
                ]
            }
        ],
        "references": [
            {
                "name": "Supplier",
                "value": "SO25115481514"
            }
        ]
    }
}

List purchase orders.

Return Type

PurchaseOrders

Filters

Field Operators Value List URL
search LIKE fuzzy search across selected attributes
product_channel_id IN, NOT_IN /v1/products/channels
product_component_supplier_id IN, NOT_IN
status IN, NOT_IN
purchase_order_type_id IN, NOT_IN

Sortings

Results can be sorted by the following keys: created, id, warehouse.name.

Available expands

Field Return Type Description
channel CachedProductChannel Cached product channel.
currency SummarisedCurrency A currency.
goodsins array<PurchaseOrderGoodsins> One shipment to a purchase order.
goodsins.items array<PurchaseOrderGoodsinItems> Received items for a goodsin.
references array<PurchaseOrderReferences> Purchase order references.
supplier ProductComponentSuppliers Product Suppliers.
supplier.currency SummarisedCurrency A currency.
type PurchaseOrderTypes Types of purchase orders
warehouse SummarisedWarehouse A warehouse.
warehouse.country SummarisedCountry A country.

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::READ.

Create Purchase Order

POST /v1/purchase_orders

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/purchase_orders?expand=*", [
    "body" => json_encode([
        "product_channel_id" => 1,
        "product_component_supplier_id" => 6,
        "references" => [
            [
                "name" => "Supplier",
                "value" => "SO25115481514",
            ],
        ],
        "warehouse_code" => "CHR",
        "currency_code" => "GBP",
        "goodsin" => [
            "expected_pallets" => 32,
            "expected_cartons" => 3200,
            "shipping_company" => "DHL",
            "tracking_number" => "DHL-TN-1209341234",
            "shipping_method" => "sea",
            "expected_delivery_date" => "2025-03-18T13:50:21.950Z",
        ],
        "lines" => [
            [
                "sku" => "DEMO-SKU-01",
                "product_component_id" => null,
                "quantity" => 3200,
                "cost_price" => 156.5,
                "duty" => 14.5,
            ],
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/purchase_orders?expand=*', {
  product_channel_id: 1,
  product_component_supplier_id: 6,
  references: [
    {
      name: "Supplier",
      value: "SO25115481514",
    },
  ],
  warehouse_code: "CHR",
  currency_code: "GBP",
  goodsin: {
    expected_pallets: 32,
    expected_cartons: 3200,
    shipping_company: "DHL",
    tracking_number: "DHL-TN-1209341234",
    shipping_method: "sea",
    expected_delivery_date: "2025-03-18T13:50:21.950Z",
  },
  lines: [
    {
      sku: "DEMO-SKU-01",
      product_component_id: nil,
      quantity: 3200,
      cost_price: 156.5,
      duty: 14.5,
    },
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders?expand=*",
    body: {
        "product_channel_id": 1,
        "product_component_supplier_id": 6,
        "references": [
            {
                "name": "Supplier",
                "value": "SO25115481514"
            }
        ],
        "warehouse_code": "CHR",
        "currency_code": "GBP",
        "goodsin": {
            "expected_pallets": 32,
            "expected_cartons": 3200,
            "shipping_company": "DHL",
            "tracking_number": "DHL-TN-1209341234",
            "shipping_method": "sea",
            "expected_delivery_date": "2025-03-18T13:50:21.950Z"
        },
        "lines": [
            {
                "sku": "DEMO-SKU-01",
                "product_component_id": null,
                "quantity": 3200,
                "cost_price": 156.5,
                "duty": 14.5
            }
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/purchase_orders?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "product_channel_id": 1,
    "product_component_supplier_id": 6,
    "references": [
        {
            "name": "Supplier",
            "value": "SO25115481514"
        }
    ],
    "warehouse_code": "CHR",
    "currency_code": "GBP",
    "goodsin": {
        "expected_pallets": 32,
        "expected_cartons": 3200,
        "shipping_company": "DHL",
        "tracking_number": "DHL-TN-1209341234",
        "shipping_method": "sea",
        "expected_delivery_date": "2025-03-18T13:50:21.950Z"
    },
    "lines": [
        {
            "sku": "DEMO-SKU-01",
            "product_component_id": null,
            "quantity": 3200,
            "cost_price": 156.5,
            "duty": 14.5
        }
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 125,
        "product_channel_id": 12,
        "purchase_order_type_id": 1,
        "product_component_supplier_id": 500,
        "warehouse_id": 1,
        "currency_id": 1,
        "status": "open",
        "notification_email_addresses": "support.team@i-fulfilment.co.uk",
        "comments": "Sample comments.",
        "reject_reason": null,
        "approved_date": "2019-11-25T14:52:56.000Z",
        "completed_date": "2019-11-25T14:52:56.000Z",
        "discount": 0,
        "discount_type": "value",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "warehouse": {
            "short_code": "CHR",
            "name": "Christchurch"
        },
        "currency": {
            "code": "GBP",
            "name": "British Pound",
            "symbol": "£"
        },
        "channel": {
            "id": 1,
            "name": "Demo Channel",
            "default_warehouse_id": 1,
            "global": false
        },
        "type": {
            "id": 1,
            "code": "standard",
            "name": "Standard",
            "description": "Check-in and put away to locations"
        },
        "supplier": {
            "id": 6,
            "organisation_id": 1,
            "name": "Demo Supplier",
            "active": true,
            "port_id": 4,
            "currency_code": "GBP",
            "nominal_code": "5000",
            "xero_code": "ABC/9/99",
            "organisation_tax_id": 1
        },
        "lines": {
            "id": 3423,
            "product_component_id": 34309,
            "name": "Green ball",
            "quantity": 5000,
            "cost_price": 12.4,
            "duty": 0,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "component": {
                "id": 1,
                "status": "active",
                "sku": "DEMO-SKU-01",
                "barcode": "123123123000",
                "perishable": false,
                "fragile": false,
                "battery": false,
                "dangerous": false,
                "organic": false,
                "what_is_it": "Tape measure.",
                "made_of": "Synthetic rubber & Polyvinyl chloride",
                "used_for": "A tool for measuring distances.",
                "customs_country_of_origin_country_id": 1,
                "product_component_customs_code_id": 1,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "last_cost": {
                    "id": 2923,
                    "product_component_instance_id": 44309,
                    "product_component_id": 34309,
                    "net_cost_price": 12.4,
                    "cost_price_currency_code": "GBP",
                    "cost_currency": {
                        "id": 1,
                        "code": "GBP",
                        "name": "Great British Pounds",
                        "symbol": "£",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    },
                    "cost_price_duty_rate": 1,
                    "notes": "Example notes.",
                    "landed_price_currency_code": "GBP",
                    "landed_currency": {
                        "id": 1,
                        "code": "GBP",
                        "name": "Great British Pounds",
                        "symbol": "£",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    },
                    "stock": 1354,
                    "created": "2019-11-25T14:52:56.000Z",
                    "landed_price": 12.9
                },
                "stock": {
                    "total": 35,
                    "total_saleable": 34,
                    "saleable": 34,
                    "pickable": 34,
                    "available": 34,
                    "allocated": 0,
                    "reserved": 0,
                    "misc": 1,
                    "gistock": 0,
                    "expected": 5,
                    "picked": 0,
                    "under_investigation": 1
                },
                "count_product_component_batches": 1,
                "sales": {
                    "1_week": 54,
                    "1_month": 220,
                    "3_months": 583,
                    "6_months": 1124,
                    "1_year": 2930,
                    "lifetime": 2930
                }
            },
            "doq": {
                "id": 1,
                "quantity": 1,
                "weight": 1.45,
                "depth": 1000,
                "width": 1500,
                "height": 1000,
                "shippable": true,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            }
        },
        "payments": [
            {
                "id": 94324,
                "name": "30% deposit",
                "amount": 10000,
                "currency_code": "GBP",
                "effective_date": "2019-11-25T14:52:56.000Z",
                "currency": {
                    "code": "GBP",
                    "name": "British Pound",
                    "symbol": "£"
                }
            }
        ],
        "goodsins": [
            {
                "id": 174,
                "source": "API",
                "shipping_company": "DHL",
                "tracking_number": "DHL-TN-1209341234",
                "expected_pallets": 32,
                "expected_cartons": 3200,
                "received_pallets": 32,
                "received_cartons": 3200,
                "received_container": "20FT",
                "container_shipment": true,
                "container_size": "full",
                "expected_delivery_date": "2019-11-25T14:52:56.000Z",
                "expected_delivery_time_slot": "am",
                "preferred_delivery_date": "2019-11-25T14:52:56.000Z",
                "preferred_delivery_time_slot": "am",
                "shipping_method": "sea",
                "port_id": 4,
                "purchase_order_goodsin_shipping_term_id": 1,
                "status": "completed",
                "is_third_party": false,
                "third_party_emails": null,
                "third_party_contact_name": null,
                "booking_requested": "2019-11-25T14:52:56.000Z",
                "booking_approved_by": 1,
                "booking_approved": "2019-11-25T14:52:56.000Z",
                "unique_booking_reference": "UQBR-2020/10934934",
                "check_in_by": "2019-11-25T14:52:56.000Z",
                "transport_costs_locked": "2019-11-25T14:52:56.000Z",
                "lock_user_id": 1,
                "receiving_started": "2019-11-25T14:52:56.000Z",
                "receiving_completed": "2019-11-25T14:52:56.000Z",
                "checkin_started": "2019-11-25T14:52:56.000Z",
                "checkin_completed": "2019-11-25T14:52:56.000Z",
                "putaway_started": "2019-11-25T14:52:56.000Z",
                "putaway_completed": "2019-11-25T14:52:56.000Z",
                "ignore_from_billing": false,
                "returns_damaged_count": 0,
                "returns_unidentifiable_count": 0,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "items": [
                    {
                        "id": 123124,
                        "product_component_id": 1,
                        "quantity": 34,
                        "expiry_date": null,
                        "product_component_batch_id": 52567,
                        "purchase_order_goodsin_item_issue_id": 78,
                        "product_component_cost_price_id": 54349,
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z",
                        "count_audit_ids": 0
                    }
                ]
            }
        ],
        "tags": [
            {
                "id": 1,
                "name": "Processed",
                "shortcode": "PROCESSED",
                "description": "Marked a as processed by XYZ system",
                "created": "2019-11-25T14:52:56.000Z"
            }
        ],
        "references": [
            {
                "name": "Supplier",
                "value": "SO25115481514"
            }
        ]
    }
}

Creates a purchase order.

Request Body

CreatePurchaseOrder

Return Type

PurchaseOrders

Types for the Request Body

CreatePurchaseOrder (root level)

Key Description Types Restrictions
product_channel_id Product channel ID. number required
not null
product_component_supplier_id Supplier ID. number required
not null
references List of references. array<Reference> not null
warehouse_code Warehouse code. string required
not null
min length is 1
currency_code Currency code string required
not null
min length is 3
max length is 3
goodsin First goodsin. Goodsin required
not null
lines Products ordered. array<Line> not null

Goodsin

Key Description Types Restrictions
expected_pallets Number of expected pallets. integer required
not null
min is 0
expected_cartons Number of expected cartons. integer required
not null
min is 0
shipping_company Name of the shipping company. string not null
tracking_number Tracking number for the shipment. string not null
shipping_method Method of travel. enum(air, sea, road) required
not null
expected_delivery_date Expected delivery date. date required
not null

Line

Key Description Types Restrictions
sku Product SKU. string optionally required
not null
min length is 1
match is /^[0-9a-z_.-]+$/i
product_component_id Product component ID. integer optionally required
not null
min is 1
quantity Ordered quantity. integer required
not null
min is 1
cost_price Cost price. number not null
min is 0
duty Duty rate. number not null
min is 0

Reference

Key Description Types Restrictions
name Name. string required
not null
value Value. string required
not null

Available expands

Field Return Type Description
channel CachedProductChannel Cached product channel.
currency SummarisedCurrency A currency.
goodsins array<PurchaseOrderGoodsins> One shipment to a purchase order.
goodsins.consignment_qualities array<ConsignmentQualities> Consignment quality description.
goodsins.containers array<PurchaseOrderGoodsinContainers> A container for a goodsin.
goodsins.items array<PurchaseOrderGoodsinItems> Received items for a goodsin.
goodsins.items.batch ProductComponentBatches Description of a batch.
goodsins.items.component ProductComponents Product component.
goodsins.items.component.doqs array<ProductComponentDoqs> Product component DOQ.
goodsins.items.component.doqs.type ProductComponentDoqTypes Product component DOQ Types.
goodsins.items.component.last_cost ProductComponentLandedPrices Landed prices.
goodsins.items.component.last_cost.cost_currency Currencies Currency data.
goodsins.items.component.last_cost.landed_currency SummarisedCurrency A currency.
goodsins.items.component.sales ProductComponentSalesSummary Sales summary for a product.
goodsins.items.component.stock ProductComponentStockSummary Stock summary for a product component.
goodsins.items.cost ProductComponentCostPrices A cost price.
goodsins.items.cost.currency SummarisedCurrency A currency.
goodsins.items.cost.transports ProductComponentCostPriceTransports Transport costs.
goodsins.port Ports Shipping ports.
lines array<PurchaseOrderLines> An item ordered in a purchase order.
lines.component ProductComponents Product component.
lines.component.doqs array<ProductComponentDoqs> Product component DOQ.
lines.component.doqs.type ProductComponentDoqTypes Product component DOQ Types.
lines.component.last_cost ProductComponentLandedPrices Landed prices.
lines.component.last_cost.cost_currency Currencies Currency data.
lines.component.last_cost.landed_currency SummarisedCurrency A currency.
lines.component.sales ProductComponentSalesSummary Sales summary for a product.
lines.component.stock ProductComponentStockSummary Stock summary for a product component.
lines.doq ProductComponentDoqs Product component DOQ.
payments array<PurchaseOrderPayments> Payments made towards purchase order suppliers.
payments.currency SummarisedCurrency A currency.
references array<PurchaseOrderReferences> Purchase order references.
supplier ProductComponentSuppliers Product Suppliers.
supplier.currency SummarisedCurrency A currency.
tags array<Tags> A tag.
type PurchaseOrderTypes Types of purchase orders
warehouse SummarisedWarehouse A warehouse.
warehouse.country SummarisedCountry A country.

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::MANAGE.

Create Fast-Track Purchase Order

POST /v1/purchase_orders/fast_track

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/purchase_orders/fast_track?expand=*", [
    "body" => json_encode([
        "warehouse_code" => "CHR",
        "product_channel_id" => 1,
        "currency_code" => "GBP",
        "reference" => "SO25115481514",
        "lines" => [
            [
                "sku" => "DEMO-SKU-01",
                "quantity" => 3200,
            ],
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/purchase_orders/fast_track?expand=*', {
  warehouse_code: "CHR",
  product_channel_id: 1,
  currency_code: "GBP",
  reference: "SO25115481514",
  lines: [
    {
      sku: "DEMO-SKU-01",
      quantity: 3200,
    },
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders/fast_track?expand=*",
    body: {
        "warehouse_code": "CHR",
        "product_channel_id": 1,
        "currency_code": "GBP",
        "reference": "SO25115481514",
        "lines": [
            {
                "sku": "DEMO-SKU-01",
                "quantity": 3200
            }
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/purchase_orders/fast_track?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "warehouse_code": "CHR",
    "product_channel_id": 1,
    "currency_code": "GBP",
    "reference": "SO25115481514",
    "lines": [
        {
            "sku": "DEMO-SKU-01",
            "quantity": 3200
        }
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 125,
        "product_channel_id": 12,
        "purchase_order_type_id": 1,
        "product_component_supplier_id": 500,
        "warehouse_id": 1,
        "currency_id": 1,
        "status": "open",
        "notification_email_addresses": "support.team@i-fulfilment.co.uk",
        "comments": "Sample comments.",
        "reject_reason": null,
        "approved_date": "2019-11-25T14:52:56.000Z",
        "completed_date": "2019-11-25T14:52:56.000Z",
        "discount": 0,
        "discount_type": "value",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "warehouse": {
            "short_code": "CHR",
            "name": "Christchurch"
        },
        "currency": {
            "code": "GBP",
            "name": "British Pound",
            "symbol": "£"
        },
        "channel": {
            "id": 1,
            "name": "Demo Channel",
            "default_warehouse_id": 1,
            "global": false
        },
        "type": {
            "id": 1,
            "code": "standard",
            "name": "Standard",
            "description": "Check-in and put away to locations"
        },
        "supplier": {
            "id": 6,
            "organisation_id": 1,
            "name": "Demo Supplier",
            "active": true,
            "port_id": 4,
            "currency_code": "GBP",
            "nominal_code": "5000",
            "xero_code": "ABC/9/99",
            "organisation_tax_id": 1
        },
        "lines": {
            "id": 3423,
            "product_component_id": 34309,
            "name": "Green ball",
            "quantity": 5000,
            "cost_price": 12.4,
            "duty": 0,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "component": {
                "id": 1,
                "status": "active",
                "sku": "DEMO-SKU-01",
                "barcode": "123123123000",
                "perishable": false,
                "fragile": false,
                "battery": false,
                "dangerous": false,
                "organic": false,
                "what_is_it": "Tape measure.",
                "made_of": "Synthetic rubber & Polyvinyl chloride",
                "used_for": "A tool for measuring distances.",
                "customs_country_of_origin_country_id": 1,
                "product_component_customs_code_id": 1,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "last_cost": {
                    "id": 2923,
                    "product_component_instance_id": 44309,
                    "product_component_id": 34309,
                    "net_cost_price": 12.4,
                    "cost_price_currency_code": "GBP",
                    "cost_currency": {
                        "id": 1,
                        "code": "GBP",
                        "name": "Great British Pounds",
                        "symbol": "£",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    },
                    "cost_price_duty_rate": 1,
                    "notes": "Example notes.",
                    "landed_price_currency_code": "GBP",
                    "landed_currency": {
                        "id": 1,
                        "code": "GBP",
                        "name": "Great British Pounds",
                        "symbol": "£",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    },
                    "stock": 1354,
                    "created": "2019-11-25T14:52:56.000Z",
                    "landed_price": 12.9
                },
                "stock": {
                    "total": 35,
                    "total_saleable": 34,
                    "saleable": 34,
                    "pickable": 34,
                    "available": 34,
                    "allocated": 0,
                    "reserved": 0,
                    "misc": 1,
                    "gistock": 0,
                    "expected": 5,
                    "picked": 0,
                    "under_investigation": 1
                },
                "count_product_component_batches": 1,
                "sales": {
                    "1_week": 54,
                    "1_month": 220,
                    "3_months": 583,
                    "6_months": 1124,
                    "1_year": 2930,
                    "lifetime": 2930
                }
            },
            "doq": {
                "id": 1,
                "quantity": 1,
                "weight": 1.45,
                "depth": 1000,
                "width": 1500,
                "height": 1000,
                "shippable": true,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            }
        },
        "payments": [
            {
                "id": 94324,
                "name": "30% deposit",
                "amount": 10000,
                "currency_code": "GBP",
                "effective_date": "2019-11-25T14:52:56.000Z",
                "currency": {
                    "code": "GBP",
                    "name": "British Pound",
                    "symbol": "£"
                }
            }
        ],
        "goodsins": [
            {
                "id": 174,
                "source": "API",
                "shipping_company": "DHL",
                "tracking_number": "DHL-TN-1209341234",
                "expected_pallets": 32,
                "expected_cartons": 3200,
                "received_pallets": 32,
                "received_cartons": 3200,
                "received_container": "20FT",
                "container_shipment": true,
                "container_size": "full",
                "expected_delivery_date": "2019-11-25T14:52:56.000Z",
                "expected_delivery_time_slot": "am",
                "preferred_delivery_date": "2019-11-25T14:52:56.000Z",
                "preferred_delivery_time_slot": "am",
                "shipping_method": "sea",
                "port_id": 4,
                "purchase_order_goodsin_shipping_term_id": 1,
                "status": "completed",
                "is_third_party": false,
                "third_party_emails": null,
                "third_party_contact_name": null,
                "booking_requested": "2019-11-25T14:52:56.000Z",
                "booking_approved_by": 1,
                "booking_approved": "2019-11-25T14:52:56.000Z",
                "unique_booking_reference": "UQBR-2020/10934934",
                "check_in_by": "2019-11-25T14:52:56.000Z",
                "transport_costs_locked": "2019-11-25T14:52:56.000Z",
                "lock_user_id": 1,
                "receiving_started": "2019-11-25T14:52:56.000Z",
                "receiving_completed": "2019-11-25T14:52:56.000Z",
                "checkin_started": "2019-11-25T14:52:56.000Z",
                "checkin_completed": "2019-11-25T14:52:56.000Z",
                "putaway_started": "2019-11-25T14:52:56.000Z",
                "putaway_completed": "2019-11-25T14:52:56.000Z",
                "ignore_from_billing": false,
                "returns_damaged_count": 0,
                "returns_unidentifiable_count": 0,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "items": [
                    {
                        "id": 123124,
                        "product_component_id": 1,
                        "quantity": 34,
                        "expiry_date": null,
                        "product_component_batch_id": 52567,
                        "purchase_order_goodsin_item_issue_id": 78,
                        "product_component_cost_price_id": 54349,
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z",
                        "count_audit_ids": 0
                    }
                ]
            }
        ],
        "tags": [
            {
                "id": 1,
                "name": "Processed",
                "shortcode": "PROCESSED",
                "description": "Marked a as processed by XYZ system",
                "created": "2019-11-25T14:52:56.000Z"
            }
        ],
        "references": [
            {
                "name": "Supplier",
                "value": "SO25115481514"
            }
        ]
    }
}

Creates a fast-track purchase order.

Fast track Purchase Orders are a simplified purchase order that can only be used if enabled in a warehouse and on an organisation using our SaaS product.They should only be used with authorisation from your SaaS Account Manager. For further details please contact the SaaS team.

Request Body

CreateFastTrackPurchaseOrder

Return Type

PurchaseOrders

Types for the Request Body

CreateFastTrackPurchaseOrder (root level)

Key Description Types Restrictions
warehouse_code Warehouse code. string required
not null
min length is 1
product_channel_id Product channel ID. number required
not null
currency_code Currency code string required
not null
min length is 3
max length is 3
reference Reference value. string required
not null
lines Products ordered. array<Line> required
not null
min count is 1

Line

Key Description Types Restrictions
sku Product SKU. string required
not null
min length is 1
match is /^[0-9a-z_-]+$/i
quantity Ordered quantity. integer required
not null
min is 1

Available expands

Field Return Type Description
channel CachedProductChannel Cached product channel.
currency SummarisedCurrency A currency.
goodsins array<PurchaseOrderGoodsins> One shipment to a purchase order.
goodsins.consignment_qualities array<ConsignmentQualities> Consignment quality description.
goodsins.containers array<PurchaseOrderGoodsinContainers> A container for a goodsin.
goodsins.items array<PurchaseOrderGoodsinItems> Received items for a goodsin.
goodsins.items.batch ProductComponentBatches Description of a batch.
goodsins.items.component ProductComponents Product component.
goodsins.items.component.doqs array<ProductComponentDoqs> Product component DOQ.
goodsins.items.component.doqs.type ProductComponentDoqTypes Product component DOQ Types.
goodsins.items.component.last_cost ProductComponentLandedPrices Landed prices.
goodsins.items.component.last_cost.cost_currency Currencies Currency data.
goodsins.items.component.last_cost.landed_currency SummarisedCurrency A currency.
goodsins.items.component.sales ProductComponentSalesSummary Sales summary for a product.
goodsins.items.component.stock ProductComponentStockSummary Stock summary for a product component.
goodsins.items.cost ProductComponentCostPrices A cost price.
goodsins.items.cost.currency SummarisedCurrency A currency.
goodsins.items.cost.transports ProductComponentCostPriceTransports Transport costs.
goodsins.port Ports Shipping ports.
lines array<PurchaseOrderLines> An item ordered in a purchase order.
lines.component ProductComponents Product component.
lines.component.doqs array<ProductComponentDoqs> Product component DOQ.
lines.component.doqs.type ProductComponentDoqTypes Product component DOQ Types.
lines.component.last_cost ProductComponentLandedPrices Landed prices.
lines.component.last_cost.cost_currency Currencies Currency data.
lines.component.last_cost.landed_currency SummarisedCurrency A currency.
lines.component.sales ProductComponentSalesSummary Sales summary for a product.
lines.component.stock ProductComponentStockSummary Stock summary for a product component.
lines.doq ProductComponentDoqs Product component DOQ.
payments array<PurchaseOrderPayments> Payments made towards purchase order suppliers.
payments.currency SummarisedCurrency A currency.
references array<PurchaseOrderReferences> Purchase order references.
supplier ProductComponentSuppliers Product Suppliers.
supplier.currency SummarisedCurrency A currency.
tags array<Tags> A tag.
type PurchaseOrderTypes Types of purchase orders
warehouse SummarisedWarehouse A warehouse.
warehouse.country SummarisedCountry A country.

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::MANAGE.

View Purchase Order

GET /v1/purchase_orders/:id

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/purchase_orders/125?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/purchase_orders/125?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders/125?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/purchase_orders/125?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 125,
        "product_channel_id": 12,
        "purchase_order_type_id": 1,
        "product_component_supplier_id": 500,
        "warehouse_id": 1,
        "currency_id": 1,
        "status": "open",
        "notification_email_addresses": "support.team@i-fulfilment.co.uk",
        "comments": "Sample comments.",
        "reject_reason": null,
        "approved_date": "2019-11-25T14:52:56.000Z",
        "completed_date": "2019-11-25T14:52:56.000Z",
        "discount": 0,
        "discount_type": "value",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "warehouse": {
            "short_code": "CHR",
            "name": "Christchurch"
        },
        "currency": {
            "code": "GBP",
            "name": "British Pound",
            "symbol": "£"
        },
        "channel": {
            "id": 1,
            "name": "Demo Channel",
            "default_warehouse_id": 1,
            "global": false
        },
        "type": {
            "id": 1,
            "code": "standard",
            "name": "Standard",
            "description": "Check-in and put away to locations"
        },
        "supplier": {
            "id": 6,
            "organisation_id": 1,
            "name": "Demo Supplier",
            "active": true,
            "port_id": 4,
            "currency_code": "GBP",
            "nominal_code": "5000",
            "xero_code": "ABC/9/99",
            "organisation_tax_id": 1
        },
        "lines": {
            "id": 3423,
            "product_component_id": 34309,
            "name": "Green ball",
            "quantity": 5000,
            "cost_price": 12.4,
            "duty": 0,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "component": {
                "id": 1,
                "status": "active",
                "sku": "DEMO-SKU-01",
                "barcode": "123123123000",
                "perishable": false,
                "fragile": false,
                "battery": false,
                "dangerous": false,
                "organic": false,
                "what_is_it": "Tape measure.",
                "made_of": "Synthetic rubber & Polyvinyl chloride",
                "used_for": "A tool for measuring distances.",
                "customs_country_of_origin_country_id": 1,
                "product_component_customs_code_id": 1,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "last_cost": {
                    "id": 2923,
                    "product_component_instance_id": 44309,
                    "product_component_id": 34309,
                    "net_cost_price": 12.4,
                    "cost_price_currency_code": "GBP",
                    "cost_currency": {
                        "id": 1,
                        "code": "GBP",
                        "name": "Great British Pounds",
                        "symbol": "£",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    },
                    "cost_price_duty_rate": 1,
                    "notes": "Example notes.",
                    "landed_price_currency_code": "GBP",
                    "landed_currency": {
                        "id": 1,
                        "code": "GBP",
                        "name": "Great British Pounds",
                        "symbol": "£",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    },
                    "stock": 1354,
                    "created": "2019-11-25T14:52:56.000Z",
                    "landed_price": 12.9
                },
                "stock": {
                    "total": 35,
                    "total_saleable": 34,
                    "saleable": 34,
                    "pickable": 34,
                    "available": 34,
                    "allocated": 0,
                    "reserved": 0,
                    "misc": 1,
                    "gistock": 0,
                    "expected": 5,
                    "picked": 0,
                    "under_investigation": 1
                },
                "count_product_component_batches": 1,
                "sales": {
                    "1_week": 54,
                    "1_month": 220,
                    "3_months": 583,
                    "6_months": 1124,
                    "1_year": 2930,
                    "lifetime": 2930
                }
            },
            "doq": {
                "id": 1,
                "quantity": 1,
                "weight": 1.45,
                "depth": 1000,
                "width": 1500,
                "height": 1000,
                "shippable": true,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            }
        },
        "payments": [
            {
                "id": 94324,
                "name": "30% deposit",
                "amount": 10000,
                "currency_code": "GBP",
                "effective_date": "2019-11-25T14:52:56.000Z",
                "currency": {
                    "code": "GBP",
                    "name": "British Pound",
                    "symbol": "£"
                }
            }
        ],
        "goodsins": [
            {
                "id": 174,
                "source": "API",
                "shipping_company": "DHL",
                "tracking_number": "DHL-TN-1209341234",
                "expected_pallets": 32,
                "expected_cartons": 3200,
                "received_pallets": 32,
                "received_cartons": 3200,
                "received_container": "20FT",
                "container_shipment": true,
                "container_size": "full",
                "expected_delivery_date": "2019-11-25T14:52:56.000Z",
                "expected_delivery_time_slot": "am",
                "preferred_delivery_date": "2019-11-25T14:52:56.000Z",
                "preferred_delivery_time_slot": "am",
                "shipping_method": "sea",
                "port_id": 4,
                "purchase_order_goodsin_shipping_term_id": 1,
                "status": "completed",
                "is_third_party": false,
                "third_party_emails": null,
                "third_party_contact_name": null,
                "booking_requested": "2019-11-25T14:52:56.000Z",
                "booking_approved_by": 1,
                "booking_approved": "2019-11-25T14:52:56.000Z",
                "unique_booking_reference": "UQBR-2020/10934934",
                "check_in_by": "2019-11-25T14:52:56.000Z",
                "transport_costs_locked": "2019-11-25T14:52:56.000Z",
                "lock_user_id": 1,
                "receiving_started": "2019-11-25T14:52:56.000Z",
                "receiving_completed": "2019-11-25T14:52:56.000Z",
                "checkin_started": "2019-11-25T14:52:56.000Z",
                "checkin_completed": "2019-11-25T14:52:56.000Z",
                "putaway_started": "2019-11-25T14:52:56.000Z",
                "putaway_completed": "2019-11-25T14:52:56.000Z",
                "ignore_from_billing": false,
                "returns_damaged_count": 0,
                "returns_unidentifiable_count": 0,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "items": [
                    {
                        "id": 123124,
                        "product_component_id": 1,
                        "quantity": 34,
                        "expiry_date": null,
                        "product_component_batch_id": 52567,
                        "purchase_order_goodsin_item_issue_id": 78,
                        "product_component_cost_price_id": 54349,
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z",
                        "count_audit_ids": 0
                    }
                ]
            }
        ],
        "tags": [
            {
                "id": 1,
                "name": "Processed",
                "shortcode": "PROCESSED",
                "description": "Marked a as processed by XYZ system",
                "created": "2019-11-25T14:52:56.000Z"
            }
        ],
        "references": [
            {
                "name": "Supplier",
                "value": "SO25115481514"
            }
        ]
    }
}

Retrieve one purchase order.

Parameter Regular Expressions

Return Type

PurchaseOrders

Available expands

Field Return Type Description
channel CachedProductChannel Cached product channel.
currency SummarisedCurrency A currency.
goodsins array<PurchaseOrderGoodsins> One shipment to a purchase order.
goodsins.consignment_qualities array<ConsignmentQualities> Consignment quality description.
goodsins.containers array<PurchaseOrderGoodsinContainers> A container for a goodsin.
goodsins.items array<PurchaseOrderGoodsinItems> Received items for a goodsin.
goodsins.items.batch ProductComponentBatches Description of a batch.
goodsins.items.component ProductComponents Product component.
goodsins.items.component.doqs array<ProductComponentDoqs> Product component DOQ.
goodsins.items.component.doqs.type ProductComponentDoqTypes Product component DOQ Types.
goodsins.items.component.last_cost ProductComponentLandedPrices Landed prices.
goodsins.items.component.last_cost.cost_currency Currencies Currency data.
goodsins.items.component.last_cost.landed_currency SummarisedCurrency A currency.
goodsins.items.component.sales ProductComponentSalesSummary Sales summary for a product.
goodsins.items.component.stock ProductComponentStockSummary Stock summary for a product component.
goodsins.items.cost ProductComponentCostPrices A cost price.
goodsins.items.cost.currency SummarisedCurrency A currency.
goodsins.items.cost.transports ProductComponentCostPriceTransports Transport costs.
goodsins.port Ports Shipping ports.
lines array<PurchaseOrderLines> An item ordered in a purchase order.
lines.component ProductComponents Product component.
lines.component.doqs array<ProductComponentDoqs> Product component DOQ.
lines.component.doqs.type ProductComponentDoqTypes Product component DOQ Types.
lines.component.last_cost ProductComponentLandedPrices Landed prices.
lines.component.last_cost.cost_currency Currencies Currency data.
lines.component.last_cost.landed_currency SummarisedCurrency A currency.
lines.component.sales ProductComponentSalesSummary Sales summary for a product.
lines.component.stock ProductComponentStockSummary Stock summary for a product component.
lines.doq ProductComponentDoqs Product component DOQ.
payments array<PurchaseOrderPayments> Payments made towards purchase order suppliers.
payments.currency SummarisedCurrency A currency.
references array<PurchaseOrderReferences> Purchase order references.
supplier ProductComponentSuppliers Product Suppliers.
supplier.currency SummarisedCurrency A currency.
tags array<Tags> A tag.
type PurchaseOrderTypes Types of purchase orders
warehouse SummarisedWarehouse A warehouse.
warehouse.country SummarisedCountry A country.

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::READ.

Apply Purchase Order Tag

POST /v1/purchase_orders/:id/tags

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/purchase_orders/:id/tags", [
    "body" => json_encode([
        "shortcode" => "PROCESSED",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/purchase_orders/:id/tags', {
  shortcode: "PROCESSED",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders/:id/tags",
    body: {
        "shortcode": "PROCESSED"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/purchase_orders/:id/tags' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "shortcode": "PROCESSED"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "name": "Processed",
        "shortcode": "PROCESSED",
        "description": "Marked a as processed by XYZ system",
        "created": "2019-11-25T14:52:56.000Z"
    }
}

Applies a tag to a purchase order.

Parameter Regular Expressions

Request Body

ApplyTag

Return Type

PurchaseOrderTags

Types for the Request Body

ApplyTag (root level)

Key Description Types Restrictions
shortcode The tag shortcode. string required
not null
min length is 1

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::MANAGE.

Remove Purchase Order Tag

DELETE /v1/purchase_orders/:id/tags/:tagShortcode

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("DELETE", "https://public-api.bladepro.io/v1/purchase_orders/1234567/tags/PROCESSED", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.delete 'https://public-api.bladepro.io/v1/purchase_orders/1234567/tags/PROCESSED', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "DELETE",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders/1234567/tags/PROCESSED",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request DELETE 'https://public-api.bladepro.io/v1/purchase_orders/1234567/tags/PROCESSED' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

null

Remove a tag from a purchase order.

Parameter Regular Expressions

Return Type

Empty.

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::MANAGE.

Add Purchase Order Timeline

POST /v1/purchase_orders/:id/timeline

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/purchase_orders/1234567/timeline", [
    "body" => json_encode([
        "message" => "Marked as processed with in system XYZ.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/purchase_orders/1234567/timeline', {
  message: "Marked as processed with in system XYZ.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders/1234567/timeline",
    body: {
        "message": "Marked as processed with in system XYZ."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/purchase_orders/1234567/timeline' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "message": "Marked as processed with in system XYZ."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "message": "Marked as processed with in system XYZ."
    }
}

Add a message or note to the timeline.

Parameter Regular Expressions

Request Body

CreateAudit

Return Type

PurchaseOrderAudits

Types for the Request Body

CreateAudit (root level)

Key Description Types Restrictions
message The message or note to be added to the timeline. string required
not null
max length is 65535

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::MANAGE.

Purchase Order Metadata

Working with purchase orders metadata.

List Purchase Order Metadata

GET /v1/purchase_orders/:id/metadata

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "key": "my_key",
            "value": "some-value"
        }
    ]
}

Retrieves a list of all the metadata stored against a purchase order.

Parameter Regular Expressions

Return Type

array<PurchaseOrderResourceMetadatas>

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::READ.

Get Purchase Order Metadata

GET /v1/purchase_orders/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Retrieves a single piece of metadata stored against a purchase order.

Parameter Regular Expressions

Return Type

PurchaseOrderResourceMetadatas

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::READ.

Set Purchase Order Metadata

PUT /v1/purchase_orders/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key", [
    "body" => json_encode([
        "value" => "some-value",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key', {
  value: "some-value",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key",
    body: {
        "value": "some-value"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "value": "some-value"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Sets some metadata against a Purchase Order.

Parameter Regular Expressions

Request Body

UpdateResourceMetadata

Return Type

PurchaseOrderResourceMetadatas

Types for the Request Body

UpdateResourceMetadata (root level)

Key Description Types Restrictions
value The value. string required
not null
max length is 65535

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::MANAGE.

Delete Purchase Order Metadata

DELETE /v1/purchase_orders/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("DELETE", "https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.delete 'https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "DELETE",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request DELETE 'https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

null

Deletes some metadata against a purchase order.

Parameter Regular Expressions

Return Type

Empty.

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::MANAGE.

Returns

Working with returns.

List Order Returns

GET /v1/orders/returns

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/returns?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/returns?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/returns?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/returns?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "order_id": 1,
            "shipping_address_id": 1,
            "warehouse_id": 1,
            "status": "pending",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "warehouse": {
                "id": 1,
                "name": "Christchurch",
                "short_code": "CHR",
                "latitude": 50.739492,
                "longitude": -1.734224,
                "country_id": 1,
                "active": true,
                "currency_id": 1,
                "virtual": false,
                "return_warehouse_id": 1,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            },
            "order": {
                "id": 1234567,
                "reference": "#154254",
                "status": "open",
                "channel": {
                    "id": 321,
                    "organisation_id": 321,
                    "name": "Demo Channel",
                    "short_code": "DEMO",
                    "status": "active",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z",
                    "organisation": {
                        "id": 1,
                        "name": "Demo",
                        "active": true,
                        "vat_number": "GB999 9999 73",
                        "notes": "Demo account...",
                        "contact_name": "Mr Joe Bloggs",
                        "contact_phone": "+44 01425 000 000",
                        "contact_mobile": "+44 00000000",
                        "contact_email": "joe.bloggs@example.com",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    }
                }
            },
            "order_return_items": [
                {
                    "id": 1,
                    "order_return_id": 1,
                    "order_goodsout_line_item_id": 1,
                    "order_goodsout_line_id": 1,
                    "product_component_id": 1,
                    "sku": "DEMO-SKU-01",
                    "exchanged_product_component_id": 1,
                    "expected_quantity": 2,
                    "received_quantity": 2,
                    "expiry_date": "2019-11-25T14:52:56.000Z",
                    "received_date": "2019-11-25T14:52:56.000Z",
                    "action": "refund",
                    "order_return_item_reason_id": 1,
                    "description": "Damaged in box",
                    "correct_item": "YES",
                    "resellable": "NO",
                    "status": "pending",
                    "authorisation_required": "NO",
                    "rejected_reason": "Outside agreed return window",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            ],
            "tags": [
                {
                    "name": "Processed",
                    "shortcode": "processed",
                    "description": "Processed by a 3rd party system"
                }
            ]
        }
    ]
}

List order returns

Return Type

array<OrderReturns>

Filters

Field Operators Value List URL
search LIKE fuzzy search across selected attributes
status IN, NOT_IN
order.channel.organisation.id IN, NOT_IN
order.channel.id IN, NOT_IN
warehouse.id IN
tags.shortcode IN, NOT_IN

Sortings

Results can be sorted by the following keys: id, received_date.

Available expands

Field Return Type Description
order Orders Customer order groups.
order.channel OrderChannels Customer order groups.
order.channel.organisation Organisations Organisation data.
order_return_items array<OrderReturnItems> Order Return Items.
order_return_items.component ProductComponents Product component.
order_return_items.exchange_component ProductComponents Product component.
order_return_items.reason OrderReturnItemReasons Order Return Item Reasons.
tags array<SummarisedTag> A tag.
warehouse Warehouses A warehouse.

Scopes

This endpoint is only available for users with scope APP::RETURNS::READ.

View Order Return

GET /v1/orders/returns/:id

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/returns/1234567?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/returns/1234567?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/returns/1234567?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/returns/1234567?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "order_id": 1,
        "shipping_address_id": 1,
        "warehouse_id": 1,
        "status": "pending",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "warehouse": {
            "id": 1,
            "name": "Christchurch",
            "short_code": "CHR",
            "latitude": 50.739492,
            "longitude": -1.734224,
            "country_id": 1,
            "active": true,
            "currency_id": 1,
            "virtual": false,
            "return_warehouse_id": 1,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        },
        "order": {
            "id": 1234567,
            "reference": "#154254",
            "status": "open",
            "channel": {
                "id": 321,
                "organisation_id": 321,
                "name": "Demo Channel",
                "short_code": "DEMO",
                "status": "active",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        },
        "order_return_items": [
            {
                "id": 1,
                "order_return_id": 1,
                "order_goodsout_line_item_id": 1,
                "order_goodsout_line_id": 1,
                "product_component_id": 1,
                "sku": "DEMO-SKU-01",
                "exchanged_product_component_id": 1,
                "expected_quantity": 2,
                "received_quantity": 2,
                "expiry_date": "2019-11-25T14:52:56.000Z",
                "received_date": "2019-11-25T14:52:56.000Z",
                "action": "refund",
                "order_return_item_reason_id": 1,
                "description": "Damaged in box",
                "correct_item": "YES",
                "resellable": "NO",
                "status": "pending",
                "authorisation_required": "NO",
                "rejected_reason": "Outside agreed return window",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            }
        ]
    }
}

View order return

Parameter Regular Expressions

Return Type

OrderReturns

Available expands

Field Return Type Description
order Orders Customer order groups.
order.channel OrderChannels Customer order groups.
order.channel.organisation Organisations Organisation data.
order_return_items array<OrderReturnItems> Order Return Items.
order_return_items.component ProductComponents Product component.
order_return_items.exchange_component ProductComponents Product component.
order_return_items.reason OrderReturnItemReasons Order Return Item Reasons.
warehouse Warehouses A warehouse.

Scopes

This endpoint is only available for users with scope APP::RETURNS::READ.

Create Return

POST /v1/orders/returns

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/orders/returns?expand=*", [
    "body" => json_encode([
        "reference" => "#154254",
        "items" => [
            [
                "sku" => "GREEN-BALL",
                "quantity" => 4,
                "action" => "Refund",
                "reason" => "Size and fit - too large",
                "description" => "I need a size XL",
            ],
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/orders/returns?expand=*', {
  reference: "#154254",
  items: [
    {
      sku: "GREEN-BALL",
      quantity: 4,
      action: "Refund",
      reason: "Size and fit - too large",
      description: "I need a size XL",
    },
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/returns?expand=*",
    body: {
        "reference": "#154254",
        "items": [
            {
                "sku": "GREEN-BALL",
                "quantity": 4,
                "action": "Refund",
                "reason": "Size and fit - too large",
                "description": "I need a size XL"
            }
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/orders/returns?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "reference": "#154254",
    "items": [
        {
            "sku": "GREEN-BALL",
            "quantity": 4,
            "action": "Refund",
            "reason": "Size and fit - too large",
            "description": "I need a size XL"
        }
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "order_id": 1,
        "shipping_address_id": 1,
        "warehouse_id": 1,
        "status": "pending",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "order_return_items": [
            {
                "id": 1,
                "order_return_id": 1,
                "order_goodsout_line_item_id": 1,
                "order_goodsout_line_id": 1,
                "product_component_id": 1,
                "sku": "DEMO-SKU-01",
                "exchanged_product_component_id": 1,
                "expected_quantity": 2,
                "received_quantity": 2,
                "expiry_date": "2019-11-25T14:52:56.000Z",
                "received_date": "2019-11-25T14:52:56.000Z",
                "action": "refund",
                "order_return_item_reason_id": 1,
                "description": "Damaged in box",
                "correct_item": "YES",
                "resellable": "NO",
                "status": "pending",
                "authorisation_required": "NO",
                "rejected_reason": "Outside agreed return window",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            }
        ]
    }
}

Creates a return.

Request Body

CreateReturn

Return Type

OrderReturns

Types for the Request Body

CreateReturn (root level)

Key Description Types Restrictions
reference Order specific reference. string required
not null
min length is 1
items List of items. array<Item> required
not null
min count is 1

Item

Key Description Types Restrictions
sku The product’s stock keeping unit (SKU). string required
not null
min length is 1
quantity The quantity to return. integer required
not null
min is 1
action The return action. enum(refund, exchange, stock) required
not null
reason The reason for return. string required
not null
min length is 1
description The description of why the item is being returned. string not null
min length is 1

Available expands

Field Return Type Description
order_return_items array<OrderReturnItems> Order Return Items.

Scopes

This endpoint is only available for users with scope APP::RETURNS::MANAGE.

Apply Return Tag

POST /v1/orders/returns/:id/tags

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/orders/returns/:id/tags", [
    "body" => json_encode([
        "shortcode" => "PROCESSED",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/orders/returns/:id/tags', {
  shortcode: "PROCESSED",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/returns/:id/tags",
    body: {
        "shortcode": "PROCESSED"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/orders/returns/:id/tags' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "shortcode": "PROCESSED"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "name": "Processed",
        "shortcode": "PROCESSED",
        "description": "Marked a as processed by XYZ system",
        "created": "2019-11-25T14:52:56.000Z"
    }
}

Applies a tag to a return.

Parameter Regular Expressions

Request Body

ApplyTag

Return Type

OrderReturnTags

Types for the Request Body

ApplyTag (root level)

Key Description Types Restrictions
shortcode The tag shortcode. string required
not null
min length is 1

Scopes

This endpoint is only available for users with scope APP::RETURNS::MANAGE.

Remove Return Tag

DELETE /v1/orders/returns/:id/tags/:tagShortcode

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("DELETE", "https://public-api.bladepro.io/v1/orders/returns/1234567/tags/PROCESSED", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.delete 'https://public-api.bladepro.io/v1/orders/returns/1234567/tags/PROCESSED', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "DELETE",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/returns/1234567/tags/PROCESSED",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request DELETE 'https://public-api.bladepro.io/v1/orders/returns/1234567/tags/PROCESSED' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

null

Remove a tag from a return.

Parameter Regular Expressions

Return Type

Empty.

Scopes

This endpoint is only available for users with scope APP::RETURNS::MANAGE.

Return Metadata

Working with return metadata.

List Return Metadata

GET /v1/orders/returns/:id/metadata

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/returns/1234567/metadata", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/returns/1234567/metadata', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/returns/1234567/metadata",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/returns/1234567/metadata' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "key": "my_key",
            "value": "some-value"
        }
    ]
}

Retrieves a list of all the metadata stored against a return.

Parameter Regular Expressions

Return Type

array<ReturnResourceMetadatas>

Scopes

This endpoint is only available for users with scope APP:RETURNS::READ.

Get Return Metadata

GET /v1/orders/returns/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Retrieves a single piece of metadata stored against a return.

Parameter Regular Expressions

Return Type

ReturnResourceMetadatas

Scopes

This endpoint is only available for users with scope APP:RETURNS::READ.

Set Return Metadata

PUT /v1/orders/returns/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key", [
    "body" => json_encode([
        "value" => "some-value",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key', {
  value: "some-value",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key",
    body: {
        "value": "some-value"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "value": "some-value"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Sets some metadata against a return.

Parameter Regular Expressions

Request Body

UpdateResourceMetadata

Return Type

ReturnResourceMetadatas

Types for the Request Body

UpdateResourceMetadata (root level)

Key Description Types Restrictions
value The value. string required
not null
max length is 65535

Scopes

This endpoint is only available for users with scope APP:RETURNS::MANAGE.

Delete Return Metadata

DELETE /v1/orders/returns/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("DELETE", "https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.delete 'https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "DELETE",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request DELETE 'https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

null

Deletes some metadata against a return.

Parameter Regular Expressions

Return Type

Empty.

Scopes

This endpoint is only available for users with scope APP:RETURNS::MANAGE.

Vendors Orders

Working with vendor orders.

List Vendor Orders

GET /v1/vendor_orders

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/vendor_orders?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/vendor_orders?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/vendor_orders?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 123,
            "code": "QWER123ASD",
            "status": "processing",
            "vendor": "VEN-01",
            "ordered_on": "2025-03-13T13:50:31.737Z",
            "deliver_from": "2025-03-18T13:50:31.737Z",
            "deliver_to": "2025-03-23T13:50:31.737Z",
            "freight_terms": null,
            "payment_method": null,
            "payment_terms": null,
            "purchasing_entity": null,
            "delivery_party": null,
            "order_channel_id": 1,
            "currency_id": 1,
            "warehouse_id": 1,
            "finalised": null,
            "address_first_name": "Amazon",
            "address_last_name": "Inc.",
            "address_company": null,
            "address_line_one": "1 Amazon Rd",
            "address_line_two": null,
            "address_line_three": null,
            "address_postcode": "BH23 4FL",
            "address_town": "Christchurch",
            "address_county": "Dorset",
            "address_country_id": 231,
            "created": "2025-03-13T13:50:31.737Z",
            "modified": "2025-03-13T13:50:31.737Z"
        }
    ]
}

Retrieves a list of stored vendor orders.

Return Type

array<VendorOrders>

Filters

Field Operators Value List URL
status IN, NOT_IN
order_channel_id IN, NOT_IN
ordered_on ON_DATE, LESS_THAN, MORE_THAN
finalised ON_DATE, LESS_THAN, MORE_THAN
code EQUALS, LIKE

Sortings

Results can be sorted by the following keys: finalised, ordered_on.

Available expands

Field Return Type Description
address_country Countries A country.
currency Currencies Currency data.
items array<VendorOrderItems> A line in a vendor order.
items.product_variation ProductVariations Marketplace listable products’ data.
items.status VendorOrderItemStatuses A status for a vendor order item.
order_channel OrderChannels Customer order groups.
warehouse Warehouses A warehouse.

Scopes

This endpoint is only available for users with scope APP::VENDOR-ORDERS::READ.

Create Vendor Order

POST /v1/vendor_orders

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/vendor_orders", [
    "body" => json_encode([
        "order_channel_id" => 3,
        "vendor_order" => [
            "code" => "QWER123ASD",
            "vendor" => "VEN-01",
            "warehouse" => "CHR",
            "ordered_on" => "2025-05-20T00:00:00.000Z",
            "deliver_from" => "2025-05-20T00:00:00.000Z",
            "deliver_to" => "2025-05-27T00:00:00.000Z",
            "freight_terms" => null,
            "payment_method" => null,
            "payment_terms" => null,
            "purchasing_entity" => "#",
            "delivery_party" => "#",
            "currency_id" => "GBP",
            "items" => [
                [
                    "product_variation_id" => 1,
                    "model_number" => "MODEL_30845",
                    "asin" => "ASIN34w5-068",
                    "sku" => "SKU_01",
                    "name" => "Example Product 01",
                    "expected_delivery_date" => "2025-03-18T13:50:31.739Z",
                    "submitted_quantity" => 1000,
                    "unit_cost" => 12.34,
                ],
            ],
            "address_first_name" => "Amazon",
            "address_last_name" => "Inc.",
            "address_company" => null,
            "address_line_one" => "1 Amazon Rd",
            "address_line_two" => null,
            "address_line_three" => null,
            "address_postcode" => "BH23 4FL",
            "address_town" => "Christchurch",
            "address_country" => "GB",
            "address_county" => "Dorset",
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/vendor_orders', {
  order_channel_id: 3,
  vendor_order: {
    code: "QWER123ASD",
    vendor: "VEN-01",
    warehouse: "CHR",
    ordered_on: "2025-05-20T00:00:00.000Z",
    deliver_from: "2025-05-20T00:00:00.000Z",
    deliver_to: "2025-05-27T00:00:00.000Z",
    freight_terms: nil,
    payment_method: nil,
    payment_terms: nil,
    purchasing_entity: "#",
    delivery_party: "#",
    currency_id: "GBP",
    items: [
      {
        product_variation_id: 1,
        model_number: "MODEL_30845",
        asin: "ASIN34w5-068",
        sku: "SKU_01",
        name: "Example Product 01",
        expected_delivery_date: "2025-03-18T13:50:31.739Z",
        submitted_quantity: 1000,
        unit_cost: 12.34,
      },
    ],
    address_first_name: "Amazon",
    address_last_name: "Inc.",
    address_company: nil,
    address_line_one: "1 Amazon Rd",
    address_line_two: nil,
    address_line_three: nil,
    address_postcode: "BH23 4FL",
    address_town: "Christchurch",
    address_country: "GB",
    address_county: "Dorset",
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders",
    body: {
        "order_channel_id": 3,
        "vendor_order": {
            "code": "QWER123ASD",
            "vendor": "VEN-01",
            "warehouse": "CHR",
            "ordered_on": "2025-05-20T00:00:00.000Z",
            "deliver_from": "2025-05-20T00:00:00.000Z",
            "deliver_to": "2025-05-27T00:00:00.000Z",
            "freight_terms": null,
            "payment_method": null,
            "payment_terms": null,
            "purchasing_entity": "#",
            "delivery_party": "#",
            "currency_id": "GBP",
            "items": [
                {
                    "product_variation_id": 1,
                    "model_number": "MODEL_30845",
                    "asin": "ASIN34w5-068",
                    "sku": "SKU_01",
                    "name": "Example Product 01",
                    "expected_delivery_date": "2025-03-18T13:50:31.739Z",
                    "submitted_quantity": 1000,
                    "unit_cost": 12.34
                }
            ],
            "address_first_name": "Amazon",
            "address_last_name": "Inc.",
            "address_company": null,
            "address_line_one": "1 Amazon Rd",
            "address_line_two": null,
            "address_line_three": null,
            "address_postcode": "BH23 4FL",
            "address_town": "Christchurch",
            "address_country": "GB",
            "address_county": "Dorset"
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/vendor_orders' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "order_channel_id": 3,
    "vendor_order": {
        "code": "QWER123ASD",
        "vendor": "VEN-01",
        "warehouse": "CHR",
        "ordered_on": "2025-05-20T00:00:00.000Z",
        "deliver_from": "2025-05-20T00:00:00.000Z",
        "deliver_to": "2025-05-27T00:00:00.000Z",
        "freight_terms": null,
        "payment_method": null,
        "payment_terms": null,
        "purchasing_entity": "#",
        "delivery_party": "#",
        "currency_id": "GBP",
        "items": [
            {
                "product_variation_id": 1,
                "model_number": "MODEL_30845",
                "asin": "ASIN34w5-068",
                "sku": "SKU_01",
                "name": "Example Product 01",
                "expected_delivery_date": "2025-03-18T13:50:31.739Z",
                "submitted_quantity": 1000,
                "unit_cost": 12.34
            }
        ],
        "address_first_name": "Amazon",
        "address_last_name": "Inc.",
        "address_company": null,
        "address_line_one": "1 Amazon Rd",
        "address_line_two": null,
        "address_line_three": null,
        "address_postcode": "BH23 4FL",
        "address_town": "Christchurch",
        "address_country": "GB",
        "address_county": "Dorset"
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 123,
        "code": "QWER123ASD",
        "status": "processing",
        "vendor": "VEN-01",
        "ordered_on": "2025-03-13T13:50:31.738Z",
        "deliver_from": "2025-03-18T13:50:31.738Z",
        "deliver_to": "2025-03-23T13:50:31.738Z",
        "freight_terms": null,
        "payment_method": null,
        "payment_terms": null,
        "purchasing_entity": null,
        "delivery_party": null,
        "order_channel_id": 1,
        "currency_id": 1,
        "warehouse_id": 1,
        "finalised": null,
        "address_first_name": "Amazon",
        "address_last_name": "Inc.",
        "address_company": null,
        "address_line_one": "1 Amazon Rd",
        "address_line_two": null,
        "address_line_three": null,
        "address_postcode": "BH23 4FL",
        "address_town": "Christchurch",
        "address_county": "Dorset",
        "address_country_id": 231,
        "created": "2025-03-13T13:50:31.738Z",
        "modified": "2025-03-13T13:50:31.738Z"
    }
}

Creates a new vendor order.

Request Body

CreateVendorOrderPayload

Return Type

VendorOrders

Types for the Request Body

CreateVendorOrderPayload (root level)

Key Description Types Restrictions
order_channel_id Target order channel ID. integer required
not null
min is 1
vendor_order The vendor order. VendorOrder required
not null

Item

Key Description Types Restrictions
product_variation_id ID of the product variation. integer required
min is 1
model_number Model number. string required
min length is 1
max length is 191
asin ASIN. string required
min length is 1
max length is 191
sku SKU. string required
min length is 1
max length is 191
name Product name. string required
min length is 1
max length is 191
expected_delivery_date Expected delivery date. date required
submitted_quantity Submitted quantity. integer required
not null
min is 1
unit_cost Unit cost. number required
not null

VendorOrder

Key Description Types Restrictions
code Third party ID. string required
not null
min length is 1
max length is 100
vendor Description of the vendor. string required
not null
min length is 1
max length is 191
warehouse Delivery destination. string required
min length is 1
max length is 191
ordered_on Date of ordering as described by the third party. date required
not null
deliver_from Start date of requested delivery window. date required
not null
deliver_to End date of requested delivery window. date required
not null
freight_terms Freight terms. string required
min length is 1
max length is 191
payment_method Payment method. string required
min length is 1
max length is 191
payment_terms Payment terms. string required
min length is 1
max length is 191
purchasing_entity Purchasing entity. string required
min length is 1
max length is 191
delivery_party Delivery Party. string required
min length is 1
max length is 191
currency_id ISO code of currency. string required
not null
min length is 2
max length is 3
match is /^[A-Z]{2,3}$/i
items Vendor order items. array<Item> required
not null
min count is 1
address_first_name First name of address. string required
address_last_name Last name of address. string required
address_company Company name of address. string required
address_line_one Address line one. string required
address_line_two Address line two. string required
address_line_three Address line three. string required
address_postcode Postcode of address. string required
address_town Town of address. string required
address_country Country ISO of address. string required
min length is 2
max length is 3
match is /^[a-z]{2,3}$/i
address_county County or region of address. string required

Scopes

This endpoint is only available for users with scope APP::VENDOR-ORDERS::MANAGE.

Get Vendor Order

GET /v1/vendor_orders/:vendorOrderId

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/vendor_orders/123", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/vendor_orders/123', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders/123",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/vendor_orders/123' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 123,
        "code": "QWER123ASD",
        "status": "processing",
        "vendor": "VEN-01",
        "ordered_on": "2025-03-13T13:50:31.740Z",
        "deliver_from": "2025-03-18T13:50:31.740Z",
        "deliver_to": "2025-03-23T13:50:31.740Z",
        "freight_terms": null,
        "payment_method": null,
        "payment_terms": null,
        "purchasing_entity": null,
        "delivery_party": null,
        "order_channel_id": 1,
        "currency_id": 1,
        "warehouse_id": 1,
        "finalised": null,
        "address_first_name": "Amazon",
        "address_last_name": "Inc.",
        "address_company": null,
        "address_line_one": "1 Amazon Rd",
        "address_line_two": null,
        "address_line_three": null,
        "address_postcode": "BH23 4FL",
        "address_town": "Christchurch",
        "address_county": "Dorset",
        "address_country_id": 231,
        "created": "2025-03-13T13:50:31.740Z",
        "modified": "2025-03-13T13:50:31.740Z"
    }
}

Retrieves a single vendor order.

Parameter Regular Expressions

Return Type

VendorOrders

Scopes

This endpoint is only available for users with scope APP::VENDOR-ORDERS::READ.

Confirm Vendor Order

PUT /v1/vendor_orders/:vendorOrderId/complete

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/vendor_orders/123/complete", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/vendor_orders/123/complete', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders/123/complete",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/vendor_orders/123/complete' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 123,
        "code": "QWER123ASD",
        "status": "processing",
        "vendor": "VEN-01",
        "ordered_on": "2025-03-13T13:50:31.740Z",
        "deliver_from": "2025-03-18T13:50:31.740Z",
        "deliver_to": "2025-03-23T13:50:31.740Z",
        "freight_terms": null,
        "payment_method": null,
        "payment_terms": null,
        "purchasing_entity": null,
        "delivery_party": null,
        "order_channel_id": 1,
        "currency_id": 1,
        "warehouse_id": 1,
        "finalised": null,
        "address_first_name": "Amazon",
        "address_last_name": "Inc.",
        "address_company": null,
        "address_line_one": "1 Amazon Rd",
        "address_line_two": null,
        "address_line_three": null,
        "address_postcode": "BH23 4FL",
        "address_town": "Christchurch",
        "address_county": "Dorset",
        "address_country_id": 231,
        "created": "2025-03-13T13:50:31.741Z",
        "modified": "2025-03-13T13:50:31.741Z"
    }
}

Marks a vendor order as confirmed.

Parameter Regular Expressions

Request Body

Ignored.

Return Type

VendorOrders

Scopes

This endpoint is only available for users with scope vendor-orders.

Vendor Order Items

Working with vendor orders items.

List Vendor Order Items

GET /v1/vendor_orders/:vendorOrderId/items

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/vendor_orders/123/items?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/vendor_orders/123/items?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders/123/items?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/vendor_orders/123/items?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 4567,
            "vendor_order_id": 123,
            "vendor_order_item_status_id": 1,
            "model_number": "MODEL_309845",
            "asin": "ASIN34w5-068",
            "sku": "SKU_01",
            "product_variation_id": 687,
            "name": "Example Product 01",
            "expected_delivery_date": "2025-03-18T13:50:31.741Z",
            "confirmed_delivery_date": "2025-03-19T13:50:31.741Z",
            "submitted_quantity": 1000,
            "accepted_quantity": 850,
            "received_quantity": null,
            "unit_cost": 12.34,
            "created": "2025-03-13T13:50:31.741Z",
            "modified": "2025-03-13T13:50:31.741Z"
        }
    ]
}

Extracts a list of items in a given vendor order.

Parameter Regular Expressions

Return Type

array<VendorOrderItems>

Available expands

Field Return Type Description
product_variation ProductVariations Marketplace listable products’ data.

Scopes

This endpoint is only available for users with scope APP::VENDOR-ORDERS::READ.

Get Vendor Order Item

GET /v1/vendor_orders/:vendorOrderId/items/:vendorOrderItemId

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/vendor_orders/123/items/4567", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/vendor_orders/123/items/4567', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders/123/items/4567",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/vendor_orders/123/items/4567' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 4567,
        "vendor_order_id": 123,
        "vendor_order_item_status_id": 1,
        "model_number": "MODEL_309845",
        "asin": "ASIN34w5-068",
        "sku": "SKU_01",
        "product_variation_id": 687,
        "name": "Example Product 01",
        "expected_delivery_date": "2025-03-18T13:50:31.742Z",
        "confirmed_delivery_date": "2025-03-19T13:50:31.742Z",
        "submitted_quantity": 1000,
        "accepted_quantity": 850,
        "received_quantity": null,
        "unit_cost": 12.34,
        "created": "2025-03-13T13:50:31.742Z",
        "modified": "2025-03-13T13:50:31.742Z"
    }
}

Retrieves a single vendor order item.

Parameter Regular Expressions

Return Type

VendorOrderItems

Scopes

This endpoint is only available for users with scope APP::VENDOR-ORDERS::READ.

Update Vendor Order Item

PUT /v1/vendor_orders/:vendorOrderId/items/:vendorOrderItemId

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/vendor_orders/123/items/4567", [
    "body" => json_encode([
        "vendor_order_item_status_id" => 1,
        "accepted_quantity" => 850,
        "expected_delivery_date" => "2025-03-18T13:50:31.743Z",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/vendor_orders/123/items/4567', {
  vendor_order_item_status_id: 1,
  accepted_quantity: 850,
  expected_delivery_date: "2025-03-18T13:50:31.743Z",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders/123/items/4567",
    body: {
        "vendor_order_item_status_id": 1,
        "accepted_quantity": 850,
        "expected_delivery_date": "2025-03-18T13:50:31.743Z"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/vendor_orders/123/items/4567' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "vendor_order_item_status_id": 1,
    "accepted_quantity": 850,
    "expected_delivery_date": "2025-03-18T13:50:31.743Z"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 4567,
        "vendor_order_id": 123,
        "vendor_order_item_status_id": 1,
        "model_number": "MODEL_309845",
        "asin": "ASIN34w5-068",
        "sku": "SKU_01",
        "product_variation_id": 687,
        "name": "Example Product 01",
        "expected_delivery_date": "2025-03-18T13:50:31.743Z",
        "confirmed_delivery_date": "2025-03-19T13:50:31.743Z",
        "submitted_quantity": 1000,
        "accepted_quantity": 850,
        "received_quantity": null,
        "unit_cost": 12.34,
        "created": "2025-03-13T13:50:31.743Z",
        "modified": "2025-03-13T13:50:31.743Z"
    }
}

Parameter Regular Expressions

Request Body

UpdateVendorOrderItem

Return Type

VendorOrderItems

Types for the Request Body

UpdateVendorOrderItem (root level)

Key Description Types Restrictions
vendor_order_item_status_id ID of the status the item needs to take. integer required
not null
min is 1
accepted_quantity Accepted quantity. integer required
not null
min is 0
expected_delivery_date Expected delivery date. date required
not null

Scopes

This endpoint is only available for users with scope APP::VENDOR-ORDERS::MANAGE.

Vendor Order Metadata

Working with vendor orders metadata.

List Vendor Order Metadata

GET /v1/vendor_orders/:id/metadata

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "key": "my_key",
            "value": "some-value"
        }
    ]
}

Retrieves a list of all the metadata stored against a vendor order.

Parameter Regular Expressions

Return Type

array<VendorOrderResourceMetadatas>

Scopes

This endpoint is only available for users with scope APP::VENDOR-ORDERS::READ.

Get Vendor Order Metadata

GET /v1/vendor_orders/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Retrieves a single piece of metadata stored against a vendor order.

Parameter Regular Expressions

Return Type

VendorOrderResourceMetadatas

Scopes

This endpoint is only available for users with scope APP::VENDOR-ORDERS::READ.

Set Vendor Order Metadata

PUT /v1/vendor_orders/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key", [
    "body" => json_encode([
        "value" => "some-value",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key', {
  value: "some-value",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key",
    body: {
        "value": "some-value"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "value": "some-value"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Sets some metadata against a Vendor.

Parameter Regular Expressions

Request Body

UpdateResourceMetadata

Return Type

VendorOrderResourceMetadatas

Types for the Request Body

UpdateResourceMetadata (root level)

Key Description Types Restrictions
value The value. string required
not null
max length is 65535

Scopes

This endpoint is only available for users with scope APP::VENDOR-ORDERS::MANAGE.

Delete Vendor Order Metadata

DELETE /v1/vendor_orders/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("DELETE", "https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.delete 'https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "DELETE",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request DELETE 'https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

null

Deletes some metadata against a vendor order.

Parameter Regular Expressions

Return Type

Empty.

Scopes

This endpoint is only available for users with scope APP::VENDOR-ORDERS::MANAGE.

Virtual Warehouses

Working with virtual warehouses

List Virtual Warehouses

GET /v1/warehouses/virtual

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/warehouses/virtual", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/warehouses/virtual', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/warehouses/virtual' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "name": "Amazon FBA",
            "description": "Stock shipped to Amazon.",
            "active": true,
            "api_managed_only": true,
            "location_creation_enabled": false,
            "created": "2019-11-25T14:52:56.000Z"
        }
    ]
}

Lists virtual warehouses.

Return Type

array<VirtualWarehouses>

Filters

Field Operators Value List URL
active EQUALS

Sortings

Results can be sorted by the following keys: name.

Scopes

This endpoint is only available for users with scope APP::MISC.

Create Virtual Warehouse

POST /v1/warehouses/virtual

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/warehouses/virtual?expand=*", [
    "body" => json_encode([
        "warehouse" => [
            "name" => "Amazon FBA",
            "description" => "Stock shipped to Amazon.",
            "api_managed_only" => true,
            "location_creation_enabled" => true,
        ],
        "location" => [
            "barcode" => "SHOWROOM",
            "sellable" => true,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/warehouses/virtual?expand=*', {
  warehouse: {
    name: "Amazon FBA",
    description: "Stock shipped to Amazon.",
    api_managed_only: true,
    location_creation_enabled: true,
  },
  location: {
    barcode: "SHOWROOM",
    sellable: true,
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual?expand=*",
    body: {
        "warehouse": {
            "name": "Amazon FBA",
            "description": "Stock shipped to Amazon.",
            "api_managed_only": true,
            "location_creation_enabled": true
        },
        "location": {
            "barcode": "SHOWROOM",
            "sellable": true
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/warehouses/virtual?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "warehouse": {
        "name": "Amazon FBA",
        "description": "Stock shipped to Amazon.",
        "api_managed_only": true,
        "location_creation_enabled": true
    },
    "location": {
        "barcode": "SHOWROOM",
        "sellable": true
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "name": "Amazon FBA",
        "description": "Stock shipped to Amazon.",
        "active": true,
        "api_managed_only": true,
        "location_creation_enabled": false,
        "created": "2019-11-25T14:52:56.000Z",
        "locations": [
            {
                "id": 1,
                "barcode": "SHOWROOM",
                "virtual_warehouse_id": 1,
                "active": true,
                "sellable": true,
                "created": "2019-11-25T14:52:56.000Z"
            }
        ]
    }
}

Create virtual warehouses.

Request Body

CreateVirtualWarehouse

Return Type

VirtualWarehouses

Types for the Request Body

CreateVirtualWarehouse (root level)

Key Description Types Restrictions
warehouse Warehouse details. Warehouse required
not null
location Location details. CreateVirtualWarehouseLocation required
not null

CreateVirtualWarehouseLocation

Key Description Types Restrictions
barcode Identifier of the location the virtual warehouse starts out with. string required
not null
min length is 1
sellable Should the stock in this location be considered sellable? boolean required
not null

Warehouse

Key Description Types Restrictions
name Name. string required
not null
min length is 1
description Description. string required
not null
min length is 0
api_managed_only Is this warehouse managed by an API? boolean required
not null
location_creation_enabled Is creating additional locations allowed? boolean required
not null

Available expands

Field Return Type Description
locations array<VirtualWarehouseLocations> A location in a virtual warehouse.

Scopes

This endpoint is only available for users with scope APP::MISC.

Void Virtual Warehouse

PUT /v1/warehouses/virtual/:warehouseId/void

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/warehouses/virtual/1/void", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/warehouses/virtual/1/void', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual/1/void",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/warehouses/virtual/1/void' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "name": "Amazon FBA",
        "description": "Stock shipped to Amazon.",
        "active": true,
        "api_managed_only": true,
        "location_creation_enabled": false,
        "created": "2019-11-25T14:52:56.000Z"
    }
}

Deactivates a virtual warehouse.

Parameter Regular Expressions

Request Body

Ignored.

Return Type

VirtualWarehouses

Scopes

This endpoint is only available for users with scope APP::MISC.

List Locations

GET /v1/warehouses/virtual/:warehouseId/locations

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/warehouses/virtual/1/locations", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/warehouses/virtual/1/locations', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual/1/locations",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/warehouses/virtual/1/locations' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "barcode": "SHOWROOM",
            "virtual_warehouse_id": 1,
            "active": true,
            "sellable": true,
            "created": "2019-11-25T14:52:56.000Z"
        }
    ]
}

Lists virtual warehouse locations.

Parameter Regular Expressions

Return Type

array<VirtualWarehouseLocations>

Filters

Field Operators Value List URL
active EQUALS
barcode EQUALS, LIKE, NOT_LIKE, IN, NOT_IN
sellable EQUALS

Sortings

Results can be sorted by the following keys: barcode.

Scopes

This endpoint is only available for users with scope APP::MISC.

Create Location

POST /v1/warehouses/virtual/:warehouseId/locations

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/warehouses/virtual/1/locations", [
    "body" => json_encode([
        "barcode" => "SHOWROOM",
        "sellable" => true,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/warehouses/virtual/1/locations', {
  barcode: "SHOWROOM",
  sellable: true,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual/1/locations",
    body: {
        "barcode": "SHOWROOM",
        "sellable": true
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/warehouses/virtual/1/locations' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "barcode": "SHOWROOM",
    "sellable": true
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "barcode": "SHOWROOM",
        "virtual_warehouse_id": 1,
        "active": true,
        "sellable": true,
        "created": "2019-11-25T14:52:56.000Z"
    }
}

Create a location for a virtual warehouse.

Parameter Regular Expressions

Request Body

CreateVirtualWarehouseLocation

Return Type

VirtualWarehouseLocations

Types for the Request Body

CreateVirtualWarehouseLocation (root level)

Key Description Types Restrictions
barcode Identifier of the location the virtual warehouse starts out with. string required
not null
min length is 1
sellable Should the stock in this location be considered sellable? boolean required
not null

Scopes

This endpoint is only available for users with scope APP::MISC.

Void Virtual Warehouse Location

PUT /v1/warehouses/virtual/:warehouseId/locations/:locationId/void

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/void", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/void', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/void",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/void' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "barcode": "SHOWROOM",
        "virtual_warehouse_id": 1,
        "active": true,
        "sellable": true,
        "created": "2019-11-25T14:52:56.000Z"
    }
}

Deactivates a virtual warehouse location.

Parameter Regular Expressions

Request Body

Ignored.

Return Type

VirtualWarehouseLocations

Scopes

This endpoint is only available for users with scope APP::MISC.

List Virtual Stock

GET /v1/warehouses/virtual/stocks

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/warehouses/virtual/stocks?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/warehouses/virtual/stocks?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual/stocks?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/warehouses/virtual/stocks?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "virtual_warehouse_location_id": 1,
            "product_variation_id": 1,
            "quantity": 1000,
            "expiry_date": null,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "location": {
                "id": 1,
                "barcode": "SHOWROOM",
                "virtual_warehouse_id": 1,
                "active": true,
                "sellable": true,
                "created": "2019-11-25T14:52:56.000Z",
                "warehouse": {
                    "id": 1,
                    "name": "Amazon FBA",
                    "description": "Stock shipped to Amazon.",
                    "active": true,
                    "api_managed_only": true,
                    "location_creation_enabled": false,
                    "created": "2019-11-25T14:52:56.000Z"
                }
            },
            "product_variation": {
                "id": 1,
                "product_id": 1,
                "status": "active",
                "sku": "DEMO-SKU-01",
                "barcode": "0123456789012",
                "product_variation_type_id": 1,
                "discontinued_date": "2019-11-25T14:52:56.000Z",
                "despatch_instructions": "Always pack facing upwards.",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            }
        }
    ]
}

Lists virtual stock.

Return Type

array<VirtualStocks>

Filters

Field Operators Value List URL
quantity LESS_THAN, EQUALS, MORE_THAN
expiry_date LESS_THAN, MORE_THAN, ON_DATE
location.barcode EQUALS, LIKE, NOT_LIKE, IN, NOT_IN
location.virtual_warehouse_id IN
product_variation.sku LIKE, NOT_LIKE, IN

Available expands

Field Return Type Description
location VirtualWarehouseLocations A location in a virtual warehouse.
location.warehouse VirtualWarehouses Storages that are outside of BladePRO’s control, such as showrooms, or stock at Amazon’s warehouse.
product_variation ProductVariations Marketplace listable products’ data.

Scopes

This endpoint is only available for users with scope APP::MISC.

Adjust Virtual Stock - Delta

PUT /v1/warehouses/virtual/:warehouseId/locations/:locationId/stocks/:variationId/adjust

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/stocks/1/adjust", [
    "body" => json_encode([
        "quantity" => -10,
        "expiry_date" => null,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/stocks/1/adjust', {
  quantity: -10,
  expiry_date: nil,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/stocks/1/adjust",
    body: {
        "quantity": -10,
        "expiry_date": null
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/stocks/1/adjust' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "quantity": -10,
    "expiry_date": null
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "virtual_warehouse_location_id": 1,
        "product_variation_id": 1,
        "quantity": 1000,
        "expiry_date": null,
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z"
    }
}

Adjusts stock by a delta value.

Parameter Regular Expressions

Request Body

AdjustVirtualStockDelta

Return Type

VirtualStocks

Types for the Request Body

AdjustVirtualStockDelta (root level)

Key Description Types Restrictions
quantity Quantity to adjust the stock by. integer required
not null
not equals is 0
expiry_date Expiry date. date

Scopes

This endpoint is only available for users with scope APP::MISC.

Adjust Virtual Stock - Absolute

PUT /v1/warehouses/virtual/:warehouseId/locations/:locationId/stocks/:variationId/set

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/stocks/1/set", [
    "body" => json_encode([
        "quantity" => 1000,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/stocks/1/set', {
  quantity: 1000,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/stocks/1/set",
    body: {
        "quantity": 1000
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/stocks/1/set' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "quantity": 1000
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "virtual_warehouse_location_id": 1,
        "product_variation_id": 1,
        "quantity": 1000,
        "expiry_date": null,
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z"
    }
}

Adjusts stock to an absolute value.

Parameter Regular Expressions

Request Body

AdjustVirtualStockAbsolute

Return Type

VirtualStocks

Types for the Request Body

AdjustVirtualStockAbsolute (root level)

Key Description Types Restrictions
quantity Quantity to set the value to. integer required
not null
min is 0
expiry_date Expiry date. date

Scopes

This endpoint is only available for users with scope APP::MISC.

Bulk Adjust Virtual Stock - Delta

PUT /v1/warehouses/virtual/:warehouseId/stocks/adjust

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/warehouses/virtual/1/stocks/adjust", [
    "body" => json_encode([
        [
            "location_id" => 1,
            "product_variation_id" => 1,
            "quantity" => -15,
            "expiry_date" => null,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/warehouses/virtual/1/stocks/adjust', [
  {
    location_id: 1,
    product_variation_id: 1,
    quantity: -15,
    expiry_date: nil,
  },
], {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual/1/stocks/adjust",
    body: [
        {
            "location_id": 1,
            "product_variation_id": 1,
            "quantity": -15,
            "expiry_date": null
        }
    ],
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/warehouses/virtual/1/stocks/adjust' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '[
    {
        "location_id": 1,
        "product_variation_id": 1,
        "quantity": -15,
        "expiry_date": null
    }
]'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "affected": 15
    }
}

Adjust stock by a delta value.

Parameter Regular Expressions

Request Body

array<BulkAdjustVirtualStockDelta>

Return Type

BulkAdjustVirtualStockResult

Types for the Request Body

BulkAdjustVirtualStockDelta

Key Description Types Restrictions
location_id Virtual warehouse location ID. Required if the warehouse allows for multiple locations. integer not null
min is 1
product_variation_id Product variation ID. integer required
not null
min is 1
quantity Quantity to adjust the stock by. integer required
not null
not equals is 0
expiry_date Expiry date. date

Scopes

This endpoint is only available for users with scope APP::MISC.

Bulk Adjust Virtual Stock - Absolute

PUT /v1/warehouses/virtual/:warehouseId/stocks/set

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/warehouses/virtual/1/stocks/set", [
    "body" => json_encode([
        "stocks" => [
            [
                "location_id" => 1,
                "product_variation_id" => 1,
                "quantity" => 1000,
                "expiry_date" => null,
            ],
        ],
        "set_skipped_skus_to_zero" => true,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/warehouses/virtual/1/stocks/set', {
  stocks: [
    {
      location_id: 1,
      product_variation_id: 1,
      quantity: 1000,
      expiry_date: nil,
    },
  ],
  set_skipped_skus_to_zero: true,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual/1/stocks/set",
    body: {
        "stocks": [
            {
                "location_id": 1,
                "product_variation_id": 1,
                "quantity": 1000,
                "expiry_date": null
            }
        ],
        "set_skipped_skus_to_zero": true
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/warehouses/virtual/1/stocks/set' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "stocks": [
        {
            "location_id": 1,
            "product_variation_id": 1,
            "quantity": 1000,
            "expiry_date": null
        }
    ],
    "set_skipped_skus_to_zero": true
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "affected": 15
    }
}

Adjust stock to an absolute value.

Parameter Regular Expressions

Request Body

BulkAdjustVirtualStockAbsolute

Return Type

BulkAdjustVirtualStockResult

Types for the Request Body

BulkAdjustVirtualStockAbsolute (root level)

Key Description Types Restrictions
stocks Values to be set. array<Stock> required
not null
min count is 1
set_skipped_skus_to_zero Should unlisted products in the listed locations be set to 0 quantity? boolean required
not null

Stock

Key Description Types Restrictions
location_id Virtual warehouse location ID. Required if the warehouse allows for multiple locations. integer not null
min is 1
product_variation_id Product variation ID. integer required
not null
min is 1
quantity Quantity to set the stock to. integer required
not null
min is 0
expiry_date Expiry date. date

Scopes

This endpoint is only available for users with scope APP::MISC.

Warehouses

Working with warehouses

List Warehouses

GET /v1/warehouses

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/warehouses?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/warehouses?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/warehouses?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "name": "Christchurch",
            "short_code": "CHR",
            "latitude": 50.739492,
            "longitude": -1.734224,
            "country_id": 1,
            "active": true,
            "currency_id": 1,
            "virtual": false,
            "return_warehouse_id": 1,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "currency": {
                "id": 1,
                "code": "GBP",
                "name": "Great British Pounds",
                "symbol": "£",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            },
            "country": {
                "id": 1,
                "name": "United Kingdom",
                "iso_2": "GB",
                "iso_3": "GBR",
                "region_id": 1,
                "currency_id": 1,
                "block": "EU"
            }
        }
    ]
}

List all warehouses.

Return Type

array<Warehouses>

Available expands

Field Return Type Description
country Countries A country.
currency Currencies Currency data.

Scopes

This endpoint is only available for users with scope APP::MISC.

List Carton Label Types

GET /v1/warehouses/carton_label_types

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/warehouses/carton_label_types?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/warehouses/carton_label_types?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/carton_label_types?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/warehouses/carton_label_types?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "id": 1,
            "name": "Nordstrom",
            "active": 1,
            "carton_label_type_references": [
                {
                    "name": "Carrier",
                    "code": "CARR",
                    "type": "text",
                    "validation_pattern": "[a-zA-Z0-9_ -]*"
                }
            ]
        }
    ]
}

Lists carton label types.

Return Type

array<CartonLabelTypes>

Available expands

Field Return Type Description
carton_label_type_references array<CartonLabelTypeReferences> References for carton label types.

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Marketplaces

Marketplaces

Sync marketplace listings

POST /v1/marketplaces/listings/sync

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/marketplaces/listings/sync", [
    "body" => json_encode([
        [
            "listing_reference" => "ABC-123",
            "listing_variation_reference" => "ABC-123",
            "sku" => "ACME_BICY",
            "title" => "ACME Bicycle",
            "quantity" => 50,
            "price" => 122.99,
            "status" => "live",
            "metadata" => [
                [
                    "key" => "GRAPHQL_ID",
                    "value" => "http://my-graphql-id/132163",
                ],
            ],
            "locations" => [
                [
                    "marketplace_location_id" => 81,
                    "quantity" => 0,
                    "marketplace_reference" => null,
                ],
            ],
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/marketplaces/listings/sync', [
  {
    listing_reference: "ABC-123",
    listing_variation_reference: "ABC-123",
    sku: "ACME_BICY",
    title: "ACME Bicycle",
    quantity: 50,
    price: 122.99,
    status: "live",
    metadata: [
      {
        key: "GRAPHQL_ID",
        value: "http://my-graphql-id/132163",
      },
    ],
    locations: [
      {
        marketplace_location_id: 81,
        quantity: 0,
        marketplace_reference: nil,
      },
    ],
  },
], {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/sync",
    body: [
        {
            "listing_reference": "ABC-123",
            "listing_variation_reference": "ABC-123",
            "sku": "ACME_BICY",
            "title": "ACME Bicycle",
            "quantity": 50,
            "price": 122.99,
            "status": "live",
            "metadata": [
                {
                    "key": "GRAPHQL_ID",
                    "value": "http://my-graphql-id/132163"
                }
            ],
            "locations": [
                {
                    "marketplace_location_id": 81,
                    "quantity": 0,
                    "marketplace_reference": null
                }
            ]
        }
    ],
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/marketplaces/listings/sync' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '[
    {
        "listing_reference": "ABC-123",
        "listing_variation_reference": "ABC-123",
        "sku": "ACME_BICY",
        "title": "ACME Bicycle",
        "quantity": 50,
        "price": 122.99,
        "status": "live",
        "metadata": [
            {
                "key": "GRAPHQL_ID",
                "value": "http://my-graphql-id/132163"
            }
        ],
        "locations": [
            {
                "marketplace_location_id": 81,
                "quantity": 0,
                "marketplace_reference": null
            }
        ]
    }
]'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "listing_reference": "ABC-123",
            "listing_variation_reference": "ABC-123",
            "sku": "ABC",
            "result": "updated",
            "error": "Failed to look up SKU: ABC-XYX. Please ensure this product is set in BladePRO before importing the listing."
        }
    ]
}

Sync listings from the marketplace down to BladePRO.

Request Body

array<SyncMarketplaceListingValidator>

Return Type

array<SyncedMarketplaceListing>

Types for the Request Body

Location

Key Description Types Restrictions
marketplace_location_id ID of the marketplace location mapping. integer required
not null
min is 1
quantity Current quantity. integer required
not null
min is 0
marketplace_reference Marketplace reference for the link between the listing variation and the marketplace location. string

ResourceMetadata

Key Description Types Restrictions
key Key of the resource metadata. string required
not null
min length is 1
value Value of the resource metadata. string required
not null
min length is 1

SyncMarketplaceListingValidator

Key Description Types Restrictions
listing_reference Parent or first reference provided by the 3rd party marketplace. string required
not null
min length is 1
listing_variation_reference Child or second reference provided by the 3rd party marketplace. You may repeat the first reference if there’s only one. string required
not null
min length is 1
sku Current marketplace SKU. string required
not null
min length is 1
title Current marketplace title. string required
not null
min length is 1
quantity Current marketplace stock level. integer required
not null
min is 0
price Current marketplace price. number required
not null
min is 0
status Current marketplace status. string not null
metadata List of resource metadatas. array<ResourceMetadata>
locations List of resource locations. array<Location>

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Import marketplace listings

POST /v1/marketplaces/listings/import

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/marketplaces/listings/import?expand=*", [
    "body" => json_encode([
        "marketplace_reference" => "FOREIGN_ID",
        "attributes" => [
            [
                "code" => "ASIN",
                "value" => "ASODAIY12371938",
                "label" => "ASIN",
            ],
        ],
        "options" => [
            "Frame Colour",
        ],
        "resource_metadatas" => [
            [
                "key" => "GRAPHQL_ID",
                "value" => "http://my-graphql-id/132163",
            ],
        ],
        "variations" => [
            [
                "product_variation_id" => 8435,
                "sku" => "ACME_BICY",
                "title" => "ACME Bicycle",
                "subtitle" => null,
                "description" => "A brand new ACME bicycle.",
                "marketplace_reference" => "FOREIGN_ID",
                "quantity" => 50,
                "price" => 122.99,
                "status" => "live",
                "keep_price" => true,
                "keep_title" => true,
                "keep_description" => true,
                "options" => [
                    "Sky Blue",
                ],
                "attributes" => [
                    [
                        "code" => "ASIN",
                        "value" => "ASODAIY12371938",
                        "label" => "ASIN",
                    ],
                ],
                "resource_metadatas" => [
                    [
                        "key" => "GRAPHQL_ID",
                        "value" => "http://my-graphql-id/132163",
                    ],
                ],
                "images" => [
                    "https://some-cdn/image01.jpeg",
                ],
                "locations" => [
                    [
                        "marketplace_location_id" => 81,
                        "quantity" => 0,
                        "marketplace_reference" => null,
                    ],
                ],
            ],
        ],
        "product_category_id" => 8435,
        "images" => [
            "https://some-cdn/image01.jpeg",
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/marketplaces/listings/import?expand=*', {
  marketplace_reference: "FOREIGN_ID",
  attributes: [
    {
      code: "ASIN",
      value: "ASODAIY12371938",
      label: "ASIN",
    },
  ],
  options: [
    "Frame Colour",
  ],
  resource_metadatas: [
    {
      key: "GRAPHQL_ID",
      value: "http://my-graphql-id/132163",
    },
  ],
  variations: [
    {
      product_variation_id: 8435,
      sku: "ACME_BICY",
      title: "ACME Bicycle",
      subtitle: nil,
      description: "A brand new ACME bicycle.",
      marketplace_reference: "FOREIGN_ID",
      quantity: 50,
      price: 122.99,
      status: "live",
      keep_price: true,
      keep_title: true,
      keep_description: true,
      options: [
        "Sky Blue",
      ],
      attributes: [
        {
          code: "ASIN",
          value: "ASODAIY12371938",
          label: "ASIN",
        },
      ],
      resource_metadatas: [
        {
          key: "GRAPHQL_ID",
          value: "http://my-graphql-id/132163",
        },
      ],
      images: [
        "https://some-cdn/image01.jpeg",
      ],
      locations: [
        {
          marketplace_location_id: 81,
          quantity: 0,
          marketplace_reference: nil,
        },
      ],
    },
  ],
  product_category_id: 8435,
  images: [
    "https://some-cdn/image01.jpeg",
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/import?expand=*",
    body: {
        "marketplace_reference": "FOREIGN_ID",
        "attributes": [
            {
                "code": "ASIN",
                "value": "ASODAIY12371938",
                "label": "ASIN"
            }
        ],
        "options": [
            "Frame Colour"
        ],
        "resource_metadatas": [
            {
                "key": "GRAPHQL_ID",
                "value": "http://my-graphql-id/132163"
            }
        ],
        "variations": [
            {
                "product_variation_id": 8435,
                "sku": "ACME_BICY",
                "title": "ACME Bicycle",
                "subtitle": null,
                "description": "A brand new ACME bicycle.",
                "marketplace_reference": "FOREIGN_ID",
                "quantity": 50,
                "price": 122.99,
                "status": "live",
                "keep_price": true,
                "keep_title": true,
                "keep_description": true,
                "options": [
                    "Sky Blue"
                ],
                "attributes": [
                    {
                        "code": "ASIN",
                        "value": "ASODAIY12371938",
                        "label": "ASIN"
                    }
                ],
                "resource_metadatas": [
                    {
                        "key": "GRAPHQL_ID",
                        "value": "http://my-graphql-id/132163"
                    }
                ],
                "images": [
                    "https://some-cdn/image01.jpeg"
                ],
                "locations": [
                    {
                        "marketplace_location_id": 81,
                        "quantity": 0,
                        "marketplace_reference": null
                    }
                ]
            }
        ],
        "product_category_id": 8435,
        "images": [
            "https://some-cdn/image01.jpeg"
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/marketplaces/listings/import?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "marketplace_reference": "FOREIGN_ID",
    "attributes": [
        {
            "code": "ASIN",
            "value": "ASODAIY12371938",
            "label": "ASIN"
        }
    ],
    "options": [
        "Frame Colour"
    ],
    "resource_metadatas": [
        {
            "key": "GRAPHQL_ID",
            "value": "http://my-graphql-id/132163"
        }
    ],
    "variations": [
        {
            "product_variation_id": 8435,
            "sku": "ACME_BICY",
            "title": "ACME Bicycle",
            "subtitle": null,
            "description": "A brand new ACME bicycle.",
            "marketplace_reference": "FOREIGN_ID",
            "quantity": 50,
            "price": 122.99,
            "status": "live",
            "keep_price": true,
            "keep_title": true,
            "keep_description": true,
            "options": [
                "Sky Blue"
            ],
            "attributes": [
                {
                    "code": "ASIN",
                    "value": "ASODAIY12371938",
                    "label": "ASIN"
                }
            ],
            "resource_metadatas": [
                {
                    "key": "GRAPHQL_ID",
                    "value": "http://my-graphql-id/132163"
                }
            ],
            "images": [
                "https://some-cdn/image01.jpeg"
            ],
            "locations": [
                {
                    "marketplace_location_id": 81,
                    "quantity": 0,
                    "marketplace_reference": null
                }
            ]
        }
    ],
    "product_category_id": 8435,
    "images": [
        "https://some-cdn/image01.jpeg"
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 123,
        "marketplace_reference": "FOREIGN_ID",
        "product_category_id": 4,
        "marketplace_listing_variations": [
            {
                "id": 1235,
                "title": "ACME Bicycle",
                "subtitle": null,
                "description": "A brand new ACME bicycle.",
                "listing_mode": "keep_in_sync",
                "stock_mode": "keep_in_sync",
                "marketplace_reference": "FOREIGN_ID",
                "price": 122.99,
                "product_variation_id": 8435,
                "quantity": 50,
                "sku": "ACME_BICY",
                "status": "live",
                "options": [
                    {
                        "id": 34512,
                        "marketplace_listing_option_id": 9745,
                        "value": "Sky Blue"
                    }
                ]
            }
        ],
        "options": [
            {
                "id": 9745,
                "name": "Frame colour"
            }
        ]
    }
}

Creates a marketplace listings with all the marketplace references. This endpoint always expands all expandables.

Request Body

ImportMarketplaceListing

Return Type

ImportMarketplaceListing

Types for the Request Body

ImportMarketplaceListing (root level)

Key Description Types Restrictions
marketplace_reference Marketplace ID. string required
not null
min length is 1
attributes List of attributes. array<Attribute>
options List of option labels. array<string>
resource_metadatas List of resource metadatas. array<ResourceMetadata>
variations List of marketplace listing variations. array<Variation>
product_category_id The ID for the product category. integer required
min is 1
images List of image URLs. array<string>

Attribute

Key Description Types Restrictions
code Code to reference the attribute by. string required
not null
min length is 1
value Value of the attribute. string required
min length is 0
label Label of the attribute. string required
min length is 0

MarketplaceLocation

Key Description Types Restrictions
marketplace_location_id ID of the marketplace location mapping. integer required
not null
min is 1
quantity Current quantity. integer required
not null
min is 0
marketplace_reference Marketplace reference for the link between the listing variation and the marketplace location. string

ResourceMetadata

Key Description Types Restrictions
key Key of the resource metadata. string required
not null
min length is 1
value Value of the resource metadata. string required
not null
min length is 1

Variation

Key Description Types Restrictions
product_variation_id The ID for the product variation. integer required
not null
min is 1
sku Current marketplace SKU. string required
not null
min length is 1
title Current marketplace title. string required
not null
min length is 1
subtitle Current marketplace subtitle. string min length is 1
description Current marketplace description. string min length is 0
marketplace_reference The marketplace reference. string required
not null
min length is 1
quantity Current marketplace stock level. integer required
not null
min is 0
price Current marketplace price. number required
not null
min is 0
status The listing status. enum(draft, live, void, pending_live, pending_void) required
not null
keep_price Should BladePRO keep the price. boolean required
not null
keep_title Should BladePRO keep the title. boolean required
not null
keep_description Should BladePRO keep the description. boolean required
not null
options List of option values. array<string>
attributes List of attributes array<Attribute>
resource_metadatas List of resource metadatas. array<ResourceMetadata>
images List of image URLs. array<string>
locations List of marketplace location mappings. array<MarketplaceLocation>

Available expands

Field Return Type Description
marketplace_listing_variations array<ImportMarketplaceListingVariation> A marketplace listing variation during import.
marketplace_listing_variations.options array<ImportMarketplaceListingVariationOption> A marketplace listing variation option during import.
options array<ImportMarketplaceListingOption> A marketplace listing option during import.

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Get marketplace listing variations

GET /v1/marketplaces/listings/variations

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/marketplaces/listings/variations?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/marketplaces/listings/variations?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/variations?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/marketplaces/listings/variations?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": "123",
            "marketplace_listing_id": "123",
            "marketplace_reference": "123456",
            "sku": "ABC_123",
            "price": "12.99",
            "status": "live",
            "listing_mode": "keep_in_sync",
            "stock_mode": "keep_in_sync",
            "marketplace_listing": {
                "id": "123",
                "marketplace_reference": "123456",
                "attributes": [
                    {
                        "label_json": "{}",
                        "value": "f376ji34G4F",
                        "attribute": {
                            "id": "4324",
                            "name": "External Product Code",
                            "description": "The code of the product as defined on Amazon.",
                            "code": "EXTERNAL_PRODUCT_CODE"
                        }
                    }
                ],
                "options": [
                    {
                        "id": 1234,
                        "name": "Colour"
                    }
                ],
                "images": [
                    {
                        "primary": false,
                        "sequence": false,
                        "url": false
                    }
                ],
                "related_listing_variations": [
                    {
                        "id": 67834,
                        "marketplace_reference": "ABC123",
                        "status": "pending_live",
                        "sku": "RED-CAR-001"
                    }
                ]
            },
            "product_variation": {
                "id": 432,
                "sku": "RED-CAR-001",
                "aspects": [
                    {
                        "value": "red",
                        "label": "Red",
                        "aspect": {
                            "name": "Colour",
                            "code": "21234_CAR_COLOUR",
                            "required": true,
                            "type": "dropdown"
                        }
                    }
                ],
                "category": {
                    "id": 32,
                    "name": "Bikes",
                    "preferences": [
                        {
                            "value": "red",
                            "label": "Red",
                            "preference": {
                                "name": "Colour",
                                "code": "21234_CAR_COLOUR"
                            }
                        }
                    ]
                }
            },
            "attributes": [
                {
                    "label_json": "{}",
                    "value": "f376ji34G4F",
                    "attribute": {
                        "id": "4324",
                        "name": "External Product Code",
                        "description": "The code of the product as defined on Amazon.",
                        "code": "EXTERNAL_PRODUCT_CODE"
                    }
                }
            ],
            "options": [
                {
                    "id": 12345,
                    "marketplace_listing_option_id": 1234,
                    "value": "Sky blue",
                    "option": {
                        "id": 1234,
                        "name": "Colour"
                    }
                }
            ],
            "images": [
                {
                    "primary": false,
                    "sequence": false,
                    "url": false
                }
            ]
        }
    ]
}

Retrieves a list of marketplace listing variations.

Return Type

array<CachedMarketplaceListingVariation>

Filters

Field Operators Value List URL
id IN
marketplace_reference IN
sku IN
marketplace_listing_id IN
status IN, NOT_IN
product_variation.id IN

Available expands

Field Return Type Description
attributes array<CachedMarketplaceListingVariationAttribute> Marketplace listing variation attributes
attributes.attribute CachedApplicationMarketplaceAttribute Marketplace attribute
images array<CachedMarketplaceListingVariationImage> Marketplace listing variation images
marketplace_listing CachedMarketplaceListing Marketplace listing
marketplace_listing.attributes array<CachedMarketplaceListingAttribute> Marketplace listing attributes
marketplace_listing.attributes.attribute CachedApplicationMarketplaceAttribute Marketplace attribute
marketplace_listing.images array<CachedMarketplaceListingImage> Marketplace listing variation images
marketplace_listing.options array<CachedMarketplaceListingOption> Marketplace listing option definition.
marketplace_listing.related_listing_variations array<CachedMarketplaceListingVariationRelatedVariation> Related listing variations that belong to the same parent marketplace_listing
options array<CachedMarketplaceListingVariationOption> Value for a marketplace listing option.
options.option CachedMarketplaceListingOption Marketplace listing option definition.
product_variation CachedMarketplaceListingVariationProductVariation Marketplace listing variation attributes
product_variation.aspects array<CachedMarketplaceListingVariationProductVariationAspects> Marketplace listing variation aspects
product_variation.aspects.aspect CachedApplicationMarketplaceAttribute Marketplace attribute
product_variation.category CachedMarketplaceListingVariationProductVariationCategory Marketplace listing variation category
product_variation.category.preferences array<CachedMarketplaceListingVariationProductVariationCategoryPreferences> Marketplace listing variation category preferences
product_variation.category.preferences.preference CachedMarketplaceListingVariationProductVariationCategoryPreferencesPreference Marketplace listing variation aspects

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::READ.

Purge marketplace listings

PUT /v1/marketplaces/listings/variations/purge

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/variations/purge", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/variations/purge', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/variations/purge",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/variations/purge' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "success": true
    }
}

Detach all listings in BladePRO from the marketplace.

Request Body

Ignored.

Return Type

MarketplaceListingPurge

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Set reference

PUT /v1/marketplaces/listings/:listingId/variations/:listingVariationId/marketplace_reference

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/marketplace_reference", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/marketplace_reference', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/marketplace_reference",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/marketplace_reference' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": "123",
        "marketplace_reference": "7x34nu03248n0",
        "price": "11.99",
        "status": "LIVE",
        "sku": "RED_CAR_01",
        "product_variation_id": "21",
        "quantity": "323"
    }
}

Set the listing variation marketplace reference.

Parameter Regular Expressions

Request Body

SetMarketplaceReference

Return Type

MarketplaceListingVariation

Types for the Request Body

SetMarketplaceReference (root level)

Key Description Types Restrictions
marketplace_reference The new reference. string required
not null

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Mark As Live

PUT /v1/marketplaces/listings/:listingId/variations/:listingVariationId/mark_as_live

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/mark_as_live", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/mark_as_live', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/mark_as_live",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/mark_as_live' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": "123",
        "marketplace_reference": "7x34nu03248n0",
        "price": "11.99",
        "status": "LIVE",
        "sku": "RED_CAR_01",
        "product_variation_id": "21",
        "quantity": "323"
    }
}

Set the listing variation status to live.

Parameter Regular Expressions

Request Body

Ignored.

Return Type

MarketplaceListingVariation

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Mark As Void

PUT /v1/marketplaces/listings/:listingId/variations/:listingVariationId/mark_as_void

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/mark_as_void", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/mark_as_void', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/mark_as_void",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/mark_as_void' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": "123",
        "marketplace_reference": "7x34nu03248n0",
        "price": "11.99",
        "status": "LIVE",
        "sku": "RED_CAR_01",
        "product_variation_id": "21",
        "quantity": "323"
    }
}

Set the listing variation status to void.

Parameter Regular Expressions

Request Body

Ignored.

Return Type

MarketplaceListingVariation

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Set reference

PUT /v1/marketplaces/listings/:listingId/marketplace_reference

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/marketplace_reference", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/marketplace_reference', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/marketplace_reference",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/marketplace_reference' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": "123",
        "marketplace_reference": "7x34nu03248n0"
    }
}

Set the listing marketplace reference.

Parameter Regular Expressions

Request Body

SetMarketplaceReference

Return Type

MarketplaceListings

Types for the Request Body

SetMarketplaceReference (root level)

Key Description Types Restrictions
marketplace_reference The new reference. string required
not null

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Bulk get marketplace listing stock

GET /v1/marketplaces/listings/stock/:mode

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/marketplaces/listings/stock/:mode?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/marketplaces/listings/stock/:mode?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/stock/:mode?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/marketplaces/listings/stock/:mode?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "id": "123",
            "marketplace_reference": "123456",
            "resource_metadatas": [
                {
                    "key": "my_key",
                    "value": "some-value"
                }
            ],
            "variations": [
                {
                    "id": 123,
                    "marketplace_reference": "123456",
                    "sku": "DEMO-SKU-01",
                    "product_variation_id": "456",
                    "current_listed_quantity": 12,
                    "quantity_to_list": 10,
                    "resource_metadatas": [
                        {
                            "key": "my_key",
                            "value": "some-value"
                        }
                    ],
                    "marketplace_locations": [
                        {
                            "marketplace_location_id": 567,
                            "current_listed_quantity": 12,
                            "quantity_to_list": 10
                        }
                    ]
                }
            ]
        }
    ]
}

Retrieves a simplified list of every marketplace listing.

Parameter Regular Expressions

Return Type

array<MarketplaceListingStock>

Available expands

Field Return Type Description
resource_metadatas array<MarketplaceListingResourceMetadatas> Stores arbitrary data against a marketplace listing.
variations array<MarketplaceListingVariationStock> Marketplace listing variation stock
variations.marketplace_locations array<MarketplaceListingVariationStockMarketplaceLocations> Marketplace listing variation’s location-based stock
variations.resource_metadatas array<MarketplaceListingVariationResourceMetadatas> Stores arbitrary data against a marketplace listing variation.

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::READ.

Get listing variation stock

GET /v1/marketplaces/listings/:listingId/variations/:listingVariationId/stock

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/stock", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/stock', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/stock",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/stock' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 123,
        "marketplace_reference": "123456",
        "sku": "DEMO-SKU-01",
        "product_variation_id": "456",
        "current_listed_quantity": 12,
        "quantity_to_list": 10
    }
}

Retrieves a simplified stock record for a single marketplace listing variation.

Parameter Regular Expressions

Return Type

MarketplaceListingVariationStock

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::READ.

Get unclaimed marketplace listing updates

GET /v1/marketplaces/listings/updates/unclaimed

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/marketplaces/listings/updates/unclaimed?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/marketplaces/listings/updates/unclaimed?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/updates/unclaimed?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/marketplaces/listings/updates/unclaimed?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "id": "123",
            "code": "PRICE",
            "listing_id": "44",
            "variation_id": "55",
            "old_value": "12",
            "new_value": "10",
            "status": "pending",
            "marketplace_listing": {
                "id": "2332",
                "marketplace_reference": "abcdefg-1234567",
                "attributes": [
                    {
                        "code": "PRODUCT_ASIN",
                        "name": "Product ASIN",
                        "value": "LIVE"
                    }
                ]
            },
            "marketplace_listing_variation": {
                "id": "2332",
                "marketplace_reference": "gfd4352gfd54-434-gfddfg",
                "sku": "RED-CAR-01",
                "price": "21.99",
                "status": "LIVE",
                "attributes": [
                    {
                        "code": "PRODUCT_ASIN",
                        "name": "Product ASIN",
                        "value": "LIVE"
                    }
                ]
            }
        }
    ]
}

Retrieves a list of the listing’s unclaimed updates.

Return Type

array<MarketplaceListingUpdates>

Available expands

Field Return Type Description
marketplace_listing MarketplaceListingUpdateListings Marketplace listing updates
marketplace_listing.attributes array<MarketplaceListingUpdateAttributes> Marketplace attribute
marketplace_listing_variation MarketplaceListingUpdateListingVariations Marketplace listing updates
marketplace_listing_variation.attributes array<MarketplaceListingUpdateAttributes> Marketplace attribute

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::READ.

Bulk update listed quantities

PUT /v1/marketplaces/listings/updates/bulk_update_listed_quantities

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/updates/bulk_update_listed_quantities", [
    "body" => json_encode([
        [
            "marketplace_listing_variation_id" => 1,
            "quantity" => 142,
            "marketplace_location_id" => null,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/updates/bulk_update_listed_quantities', [
  {
    marketplace_listing_variation_id: 1,
    quantity: 142,
    marketplace_location_id: nil,
  },
], {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/updates/bulk_update_listed_quantities",
    body: [
        {
            "marketplace_listing_variation_id": 1,
            "quantity": 142,
            "marketplace_location_id": null
        }
    ],
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/updates/bulk_update_listed_quantities' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '[
    {
        "marketplace_listing_variation_id": 1,
        "quantity": 142,
        "marketplace_location_id": null
    }
]'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "success": true
        }
    ]
}

Updated the listed quantity in BladePRO for marketplace listings in bulk.

Request Body

array<BulkUpdateListedQuantity>

Return Type

array<MarketplaceListingBulkUpdateQuantities>

Types for the Request Body

BulkUpdateListedQuantity

Key Description Types Restrictions
marketplace_listing_variation_id The marketplace listing variation id. integer required
not null
min is 1
quantity The listed quantity. integer required
not null
min is 0
marketplace_location_id The marketplace location ID, if enabled in the app. integer required
min is 1

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Finalize update

PUT /v1/marketplaces/listings/updates/:updateId/complete

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/updates/:updateId/complete?expand=*", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/updates/:updateId/complete?expand=*', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/updates/:updateId/complete?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/updates/:updateId/complete?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": "123",
        "code": "PRICE",
        "listing_id": "44",
        "variation_id": "55",
        "old_value": "12",
        "new_value": "10",
        "status": "pending"
    }
}

Mark update as completed.

Parameter Regular Expressions

Request Body

Ignored.

Return Type

MarketplaceListingUpdates

Available expands

Field Return Type Description

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Fail update

PUT /v1/marketplaces/listings/updates/:updateId/fail

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/updates/:updateId/fail?expand=*", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/updates/:updateId/fail?expand=*', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/updates/:updateId/fail?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/updates/:updateId/fail?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": "123",
        "code": "PRICE",
        "listing_id": "44",
        "variation_id": "55",
        "old_value": "12",
        "new_value": "10",
        "status": "pending"
    }
}

Mark update as failed.

Parameter Regular Expressions

Request Body

FailListingUpdate

Return Type

MarketplaceListingUpdates

Types for the Request Body

FailListingUpdate (root level)

Key Description Types Restrictions
reason The reason for the failure. string required
not null

Available expands

Field Return Type Description

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Finalize updates

PUT /v1/marketplaces/listings/updates/bulk/complete

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/updates/bulk/complete?expand=*", [
    "body" => json_encode([
        "updates" => [
            1,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/updates/bulk/complete?expand=*', {
  updates: [
    1,
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/updates/bulk/complete?expand=*",
    body: {
        "updates": [
            1
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/updates/bulk/complete?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "updates": [
        1
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "id": "123",
            "code": "PRICE",
            "listing_id": "44",
            "variation_id": "55",
            "old_value": "12",
            "new_value": "10",
            "status": "pending"
        }
    ]
}

Mark updates as completed.

Request Body

CompleteMarketplaceListingUpdates

Return Type

array<MarketplaceListingUpdates>

Types for the Request Body

CompleteMarketplaceListingUpdates (root level)

Key Description Types Restrictions
updates List of update IDs. array<number> required
not null
min count is 1

Available expands

Field Return Type Description

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Bulk render marketplace listing templates

PUT /v1/marketplaces/listings/templates/render/bulk

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/templates/render/bulk", [
    "body" => json_encode([
        "marketplace_listing_variation_ids" => [
            1,
            2,
            3,
        ],
        "locales" => [
            "en",
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/templates/render/bulk', {
  marketplace_listing_variation_ids: [
    1,
    2,
    3,
  ],
  locales: [
    "en",
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/templates/render/bulk",
    body: {
        "marketplace_listing_variation_ids": [
            1,
            2,
            3
        ],
        "locales": [
            "en"
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/templates/render/bulk' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "marketplace_listing_variation_ids": [
        1,
        2,
        3
    ],
    "locales": [
        "en"
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "marketplace_listing_variation_id": "1",
            "locale": "EN",
            "title": "Refrigerator",
            "subtitle": "Great deal",
            "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
        }
    ]
}

Return a list of rendered templates grouped by marketplace listing variation.

Request Body

RenderMarketplaceListingTemplatesBulk

Return Type

array<MarketplaceListingTemplates>

Types for the Request Body

RenderMarketplaceListingTemplatesBulk (root level)

Key Description Types Restrictions
marketplace_listing_variation_ids List of marketplace listing variation IDs. array<number> required
not null
min count is 1
locales List of locale codes. array<string> required
not null
min count is 1

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::READ.

Render marketplace listing templates

PUT /v1/marketplaces/listings/templates/render

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/templates/render", [
    "body" => json_encode([
        "marketplace_listing_variation_id" => 1,
        "locale" => "en",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/templates/render', {
  marketplace_listing_variation_id: 1,
  locale: "en",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/templates/render",
    body: {
        "marketplace_listing_variation_id": 1,
        "locale": "en"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/templates/render' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "marketplace_listing_variation_id": 1,
    "locale": "en"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "marketplace_listing_variation_id": "1",
        "locale": "EN",
        "title": "Refrigerator",
        "subtitle": "Great deal",
        "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
    }
}

Return a list of rendered templates for a specific marketplace listing variation.

Request Body

RenderMarketplaceListingTemplates

Return Type

MarketplaceListingTemplates

Types for the Request Body

RenderMarketplaceListingTemplates (root level)

Key Description Types Restrictions
marketplace_listing_variation_id Marketplace listing variation ID. number required
not null
locale Locale code. string required
not null
match is /[a-zA-Z]{2}/

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::READ.

List marketplace locations

GET /v1/marketplaces/locations

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/marketplaces/locations?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/marketplaces/locations?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/locations?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/marketplaces/locations?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "id": 43,
            "despatch_warehouse_id": 1,
            "location_name": "Christchurch",
            "location_key": "uk-12a",
            "location_extra": "uk-12a",
            "default_stock_mode": "keep_in_sync",
            "despatch_warehouse": {
                "id": 1,
                "name": "Christchurch",
                "short_code": "CHR",
                "latitude": 50.739492,
                "longitude": -1.734224,
                "country_id": 1,
                "active": true,
                "currency_id": 1,
                "virtual": false,
                "return_warehouse_id": 1,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            },
            "stock_warehouses": [
                {
                    "id": 1,
                    "name": "Christchurch",
                    "short_code": "CHR",
                    "latitude": 50.739492,
                    "longitude": -1.734224,
                    "country_id": 1,
                    "active": true,
                    "currency_id": 1,
                    "virtual": false,
                    "return_warehouse_id": 1,
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            ]
        }
    ]
}

Retrieves a list of all the marketplace location mappings in BladePRO.

Return Type

array<MarketplaceLocations>

Available expands

Field Return Type Description
despatch_warehouse Warehouses A warehouse.
stock_warehouses array<Warehouses> A warehouse.

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::READ.

Tags

Working with tags.

List Tags

GET /v1/tags

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/tags", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/tags', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/tags",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/tags' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "name": "Processed",
            "shortcode": "PROCESSED",
            "description": "Marked a as processed by XYZ system",
            "created": "2019-11-25T14:52:56.000Z"
        }
    ]
}

List the Application tags.

Return Type

array<Tags>

Scopes

This endpoint is only available for users with scope APP::MISC.

Create Tag

POST /v1/tags

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/tags", [
    "body" => json_encode([
        "name" => "Processed",
        "description" => "Marked a as processed by XYZ system.",
        "shortcode" => "PROCESSED",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/tags', {
  name: "Processed",
  description: "Marked a as processed by XYZ system.",
  shortcode: "PROCESSED",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/tags",
    body: {
        "name": "Processed",
        "description": "Marked a as processed by XYZ system.",
        "shortcode": "PROCESSED"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/tags' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "name": "Processed",
    "description": "Marked a as processed by XYZ system.",
    "shortcode": "PROCESSED"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "name": "Processed",
        "shortcode": "PROCESSED",
        "description": "Marked a as processed by XYZ system",
        "created": "2019-11-25T14:52:56.000Z"
    }
}

Create a new tag.

Request Body

CreateTag

Return Type

Tags

Types for the Request Body

CreateTag (root level)

Key Description Types Restrictions
name Name of the tag. string required
not null
min length is 1
max length is 50
description Description of the tag. string required
not null
min length is 1
max length is 250
shortcode A unique code associated with the tag. string required
not null
min length is 1
max length is 20
match is /[a-zA-Z0-9_-]{3,20}/

Scopes

This endpoint is only available for users with scope APP::MISC.

Incident Blockers

Incidents allow apps to report issues directly.

Log incident

POST /v1/log/incident

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/log/incident", [
    "body" => json_encode([
        "message" => "This is a message worth saving to our incident.",
        "details" => [
            "x" => 0,
            "y" => 0,
            "z" => 4,
        ],
        "incident_bindings" => [
            "user" => 170,
            "vendor_order" => 1546,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/log/incident', {
  message: "This is a message worth saving to our incident.",
  details: {
    x: 0,
    y: 0,
    z: 4,
  },
  incident_bindings: {
    user: 170,
    vendor_order: 1546,
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/log/incident",
    body: {
        "message": "This is a message worth saving to our incident.",
        "details": {
            "x": 0,
            "y": 0,
            "z": 4
        },
        "incident_bindings": {
            "user": 170,
            "vendor_order": 1546
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/log/incident' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "message": "This is a message worth saving to our incident.",
    "details": {
        "x": 0,
        "y": 0,
        "z": 4
    },
    "incident_bindings": {
        "user": 170,
        "vendor_order": 1546
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "incident_id": 123
    }
}

Saves an incident.

Request Body

CreateIncident

Return Type

Incident

Types for the Request Body

CreateIncident (root level)

Key Description Types Restrictions
message The message to be recorded. string required
not null
min length is 1
details Additional data to be stored against the incident occurrence. object not null
task_reference The ID of the related task. string not null
match is /^[0-9a-z-]{36}$/
incident_bindings Bindings for the incident to be created. CreateIncidentBinding not null
incident_type_code Optional incident type code. string match is /^[0-9a-zA-Z_-]{1,200}$/

CreateIncidentBinding

Key Description Types Restrictions
user User ID. number not null
company Company ID. number not null
organisation Organisation ID. number not null
order_goodsout Order goodsout ID. number not null
order_channel Order channel ID. number not null
product_channel Product channel ID. number not null
product_variation Product variation ID. number not null
product_component Product component ID. number not null
listing Listing ID. number not null
vendor_order Vendor order ID. number not null
purchase_order Purchase order ID. number not null

Scopes

This endpoint is only available for users with scope APP::MISC.

Log incident import missing sku

POST /v1/log/incident/order_import/missing_sku

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/log/incident/order_import/missing_sku", [
    "body" => json_encode([
        "product_sku" => "ABC12335",
        "product_name" => "ABC Backpack.",
        "order_reference" => "#1234-123442",
        "order_channel_id" => 17,
        "details" => [
            "x" => 0,
            "y" => 0,
            "z" => 4,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/log/incident/order_import/missing_sku', {
  product_sku: "ABC12335",
  product_name: "ABC Backpack.",
  order_reference: "#1234-123442",
  order_channel_id: 17,
  details: {
    x: 0,
    y: 0,
    z: 4,
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/log/incident/order_import/missing_sku",
    body: {
        "product_sku": "ABC12335",
        "product_name": "ABC Backpack.",
        "order_reference": "#1234-123442",
        "order_channel_id": 17,
        "details": {
            "x": 0,
            "y": 0,
            "z": 4
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/log/incident/order_import/missing_sku' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "product_sku": "ABC12335",
    "product_name": "ABC Backpack.",
    "order_reference": "#1234-123442",
    "order_channel_id": 17,
    "details": {
        "x": 0,
        "y": 0,
        "z": 4
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "incident_id": 123
    }
}

Saves an incident related to order import missing SKU.

Request Body

CreateIncidentImportMissingSku

Return Type

Incident

Types for the Request Body

CreateIncidentImportMissingSku (root level)

Key Description Types Restrictions
product_sku The product SKU to be stored against the incident occurrence. string required
not null
min length is 1
product_name The product name to be stored against the incident occurrence. string not null
order_reference The product order reference. string required
not null
min length is 1
max length is 120
order_channel_id Order channel id integer required
not null
min is 1
details Additional data to be stored against the incident occurrence. object

Scopes

This endpoint is only available for users with scope APP::MISC.

Log incident import missing tax rate

POST /v1/log/incident/order_import/missing_tax_rate

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/log/incident/order_import/missing_tax_rate", [
    "body" => json_encode([
        "tax_rate" => "12.2",
        "order_reference" => "#1234-123442",
        "order_channel_id" => 194,
        "details" => [
            "x" => 0,
            "y" => 0,
            "z" => 4,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/log/incident/order_import/missing_tax_rate', {
  tax_rate: "12.2",
  order_reference: "#1234-123442",
  order_channel_id: 194,
  details: {
    x: 0,
    y: 0,
    z: 4,
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/log/incident/order_import/missing_tax_rate",
    body: {
        "tax_rate": "12.2",
        "order_reference": "#1234-123442",
        "order_channel_id": 194,
        "details": {
            "x": 0,
            "y": 0,
            "z": 4
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/log/incident/order_import/missing_tax_rate' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "tax_rate": "12.2",
    "order_reference": "#1234-123442",
    "order_channel_id": 194,
    "details": {
        "x": 0,
        "y": 0,
        "z": 4
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "incident_id": 123
    }
}

Saves an incident related to order import missing tax rate.

Request Body

CreateIncidentImportMissingTaxRate

Return Type

Incident

Types for the Request Body

CreateIncidentImportMissingTaxRate (root level)

Key Description Types Restrictions
tax_rate The tax rate. number required
not null
min is 0.01
order_reference The product order reference. string required
not null
min length is 1
max length is 120
order_channel_id Order channel id integer required
not null
min is 1
details Additional data to be stored against the incident occurrence. object

Scopes

This endpoint is only available for users with scope APP::MISC.

Log incident import failure

POST /v1/log/incident/order_import/failure

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/log/incident/order_import/failure", [
    "body" => json_encode([
        "failure_message" => "No response from the shop url",
        "order_reference" => "#1234-123442",
        "order_channel_id" => 133,
        "details" => [
            "x" => 0,
            "y" => 0,
            "z" => 4,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/log/incident/order_import/failure', {
  failure_message: "No response from the shop url",
  order_reference: "#1234-123442",
  order_channel_id: 133,
  details: {
    x: 0,
    y: 0,
    z: 4,
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/log/incident/order_import/failure",
    body: {
        "failure_message": "No response from the shop url",
        "order_reference": "#1234-123442",
        "order_channel_id": 133,
        "details": {
            "x": 0,
            "y": 0,
            "z": 4
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/log/incident/order_import/failure' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "failure_message": "No response from the shop url",
    "order_reference": "#1234-123442",
    "order_channel_id": 133,
    "details": {
        "x": 0,
        "y": 0,
        "z": 4
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "incident_id": 123
    }
}

Saves an incident related to order import failure.

Request Body

CreateIncidentImportFailure

Return Type

Incident

Types for the Request Body

CreateIncidentImportFailure (root level)

Key Description Types Restrictions
failure_message Failure message. string required
not null
min length is 1
order_reference The product order reference. string required
not null
min length is 1
max length is 120
order_channel_id Order channel id integer required
not null
min is 1
details Additional data to be stored against the incident occurrence. object

Scopes

This endpoint is only available for users with scope APP::MISC.

Log incident with purchase order import failure

POST /v1/log/incident/purchase_order_import/failure

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/log/incident/purchase_order_import/failure", [
    "body" => json_encode([
        "failure_message" => "No response from the shop url",
        "order_reference" => "#1234-123442",
        "order_channel_id" => 172,
        "details" => [
            "x" => 0,
            "y" => 0,
            "z" => 4,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/log/incident/purchase_order_import/failure', {
  failure_message: "No response from the shop url",
  order_reference: "#1234-123442",
  order_channel_id: 172,
  details: {
    x: 0,
    y: 0,
    z: 4,
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/log/incident/purchase_order_import/failure",
    body: {
        "failure_message": "No response from the shop url",
        "order_reference": "#1234-123442",
        "order_channel_id": 172,
        "details": {
            "x": 0,
            "y": 0,
            "z": 4
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/log/incident/purchase_order_import/failure' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "failure_message": "No response from the shop url",
    "order_reference": "#1234-123442",
    "order_channel_id": 172,
    "details": {
        "x": 0,
        "y": 0,
        "z": 4
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "incident_id": 123
    }
}

Saves an incident related to purchase order import failure.

Request Body

CreateIncidentImportFailure

Return Type

Incident

Types for the Request Body

CreateIncidentImportFailure (root level)

Key Description Types Restrictions
failure_message Failure message. string required
not null
min length is 1
order_reference The product order reference. string required
not null
min length is 1
max length is 120
order_channel_id Order channel id integer required
not null
min is 1
details Additional data to be stored against the incident occurrence. object

Scopes

This endpoint is only available for users with scope APP::MISC.

Tasks

Working with tasks in BladePRO’s I/O system.

Log message

POST /v1/log

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/log", [
    "body" => json_encode([
        "severity" => "warning",
        "message" => "This is a message worth saving to our logs.",
        "payload" => [
            "x" => 0,
            "y" => 0,
            "z" => 4,
        ],
        "incident_bindings" => [
            "user" => 45,
            "vendor_order" => 1546,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/log', {
  severity: "warning",
  message: "This is a message worth saving to our logs.",
  payload: {
    x: 0,
    y: 0,
    z: 4,
  },
  incident_bindings: {
    user: 45,
    vendor_order: 1546,
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/log",
    body: {
        "severity": "warning",
        "message": "This is a message worth saving to our logs.",
        "payload": {
            "x": 0,
            "y": 0,
            "z": 4
        },
        "incident_bindings": {
            "user": 45,
            "vendor_order": 1546
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/log' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "severity": "warning",
    "message": "This is a message worth saving to our logs.",
    "payload": {
        "x": 0,
        "y": 0,
        "z": 4
    },
    "incident_bindings": {
        "user": 45,
        "vendor_order": 1546
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "success": true
    }
}

Saves a log entry and update the heartbeat of a task.

Request Body

CreateLog

Return Type

Log

Types for the Request Body

CreateLog (root level)

Key Description Types Restrictions
severity The severity of the log. string required
not null
message The message to be recorded. string required
not null
min length is 1
payload Additional data to be stored against the message. object not null
task_id The ID of the related task. string not null
match is /^[0-9a-z-]{36}$/
service Which service wrote the log message. string not null
incident_bindings Bindings for the incident to be created. CreateLogIncidentBinding not null

CreateLogIncidentBinding

Key Description Types Restrictions
user User ID. number not null
company Company ID. number not null
organisation Organisation ID. number not null
order_goodsout Order goodsout ID. number not null
order_channel Order channel ID. number not null
product_channel Product channel ID. number not null
product_variation Product variation ID. number not null
product_component Product component ID. number not null
listing Listing ID. number not null
vendor_order Vendor order ID. number not null
purchase_order Purchase order ID. number not null

Scopes

This endpoint is only available for users with scope APP::MISC.

Create task

POST /v1/tasks

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/tasks", [
    "body" => json_encode([
        "task" => "MYAPP:VENDOR:CREATE",
        "endpoint" => [
            "url" => "https://my-url.com/endpoint",
            "method" => "POST",
        ],
        "metadata" => [
            "meta1" => "value1",
            "meta2" => "value2",
            "meta3" => "value3",
        ],
        "payload" => true,
        "application" => [
            "id" => 1,
            "name" => "Application name",
            "instance_id" => 1,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/tasks', {
  task: "MYAPP:VENDOR:CREATE",
  endpoint: {
    url: "https://my-url.com/endpoint",
    method: "POST",
  },
  metadata: {
    meta1: "value1",
    meta2: "value2",
    meta3: "value3",
  },
  payload: true,
  application: {
    id: 1,
    name: "Application name",
    instance_id: 1,
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/tasks",
    body: {
        "task": "MYAPP:VENDOR:CREATE",
        "endpoint": {
            "url": "https://my-url.com/endpoint",
            "method": "POST"
        },
        "metadata": {
            "meta1": "value1",
            "meta2": "value2",
            "meta3": "value3"
        },
        "payload": true,
        "application": {
            "id": 1,
            "name": "Application name",
            "instance_id": 1
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/tasks' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "task": "MYAPP:VENDOR:CREATE",
    "endpoint": {
        "url": "https://my-url.com/endpoint",
        "method": "POST"
    },
    "metadata": {
        "meta1": "value1",
        "meta2": "value2",
        "meta3": "value3"
    },
    "payload": true,
    "application": {
        "id": 1,
        "name": "Application name",
        "instance_id": 1
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "task_reference": "12345678-abcd-9qwe-zx01-123456789abc"
    }
}

Calls the task system to create a new task.

Request Body

Task

Return Type

Tasks

Types for the Request Body

Task (root level)

Key Description Types Restrictions
task Task code. string required
not null
min length is 1
endpoint Endpoint to be hit. Endpoint required
not null
metadata Metadata. map<string, string> required
not null
min length is 0
payload Payload. boolean
or number
or object
or string
required
not null
application Definition of the application the task belongs to. Application required
not null

Application

Key Description Types Restrictions
id The ID of the application. number required
not null
name The name of the application. string required
not null
min length is 1
instance_id The ID of the application’s instance. number required
not null

Endpoint

Key Description Types Restrictions
url URL. string required
not null
min length is 1
method HTTP method. string required
not null
match is /^(POST|PUT)$/

Scopes

This endpoint is only available for users with scope APP::MISC.

Mark task as failed

PUT /v1/tasks/:task/failed

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/failed", [
    "body" => json_encode([
        "summary" => "Failed to update order, reference could not be matched on marketplace.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/failed', {
  summary: "Failed to update order, reference could not be matched on marketplace.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/failed",
    body: {
        "summary": "Failed to update order, reference could not be matched on marketplace."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/failed' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "summary": "Failed to update order, reference could not be matched on marketplace."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "task_reference": "12345678-abcd-9qwe-zx01-123456789abc"
    }
}

Reports a task to have failed.

Parameter Regular Expressions

Request Body

FailTask

Return Type

Tasks

Types for the Request Body

FailTask (root level)

Key Description Types Restrictions
summary A summary of why the task failed. string required
not null
min length is 1

Scopes

This endpoint is only available for users with scope APP::MISC.

Mark task as completed

PUT /v1/tasks/:task/complete

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/complete", [
    "body" => json_encode([
        "summary" => "Updated stock for 134 products.",
        "warning" => true,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/complete', {
  summary: "Updated stock for 134 products.",
  warning: true,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/complete",
    body: {
        "summary": "Updated stock for 134 products.",
        "warning": true
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/complete' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "summary": "Updated stock for 134 products.",
    "warning": true
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "task_reference": "12345678-abcd-9qwe-zx01-123456789abc"
    }
}

Reports a task to have completed.

Parameter Regular Expressions

Request Body

CompleteTask

Return Type

Tasks

Types for the Request Body

CompleteTask (root level)

Key Description Types Restrictions
summary A summary of the task’s outcome. string required
not null
min length is 1
warning Mark the task with a warning flag. boolean not null

Scopes

This endpoint is only available for users with scope APP::MISC.

Record task heartbeat

PUT /v1/tasks/:task/heartbeat

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/heartbeat", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/heartbeat', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/heartbeat",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/heartbeat' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "task_reference": "12345678-abcd-9qwe-zx01-123456789abc"
    }
}

Notifies BladePRO the processing of the task is still underway.

Parameter Regular Expressions

Request Body

Ignored.

Return Type

Tasks

Scopes

This endpoint is only available for users with scope APP::MISC.

Webhooks

Webhooks are events calling your apps. The payload your apps’ webhooks will receive are defined in the Return Types section.

ORDER:CANCELLED

Request Body

Example payload:

{
    "id": 1049789,
    "status": "cancelled",
    "date_placed": "2019-11-25T14:52:56.000Z",
    "source": "How the order was created.",
    "order": {
        "id": 1234567,
        "reference": "#154254",
        "status": "open",
        "order_channel_id": 321,
        "brand_id": 5,
        "currency": {
            "id": 1,
            "name": "British Pound",
            "code": "GBP",
            "symbol": "£"
        },
        "channel": {
            "id": 1,
            "organisation_id": 1,
            "name": "Artplants",
            "outbound_email": "sales.example@i-fulfilment.co.uk"
        }
    },
    "warehouse": {
        "id": 1,
        "name": "Christchurch",
        "short_code": "CHR",
        "country": {
            "id": 1,
            "name": "United Kingdom",
            "iso_2": "GB",
            "iso_3": "GBR"
        }
    },
    "shipping_address": {
        "first_name": "Support",
        "last_name": "Team",
        "company": "ACME LTD",
        "email": "support.team@i-fulfilment.co.uk",
        "country": {
            "id": 1,
            "name": "United Kingdom",
            "iso_2": "GB",
            "iso_3": "GBR"
        }
    },
    "attributes": [
        {
            "name": "Marketplace",
            "value": "222-99999999-9999999"
        }
    ],
    "tags": [
        {
            "id": 1,
            "name": "Processed",
            "shortcode": "PROCESSED"
        }
    ]
}

WebhookOrderCancelled

ORDER:CONFIRMED

Request Body

Example payload:

{
    "id": 1049789,
    "status": "awaiting_picking",
    "date_placed": "2019-11-25T14:52:56.000Z",
    "source": "How the order was created.",
    "order": {
        "id": 1234567,
        "reference": "#154254",
        "status": "open",
        "order_channel_id": 321,
        "brand_id": 5,
        "currency": {
            "id": 1,
            "name": "British Pound",
            "code": "GBP",
            "symbol": "£"
        }
    },
    "warehouse": {
        "id": 1,
        "name": "Christchurch",
        "short_code": "CHR",
        "country": {
            "id": 1,
            "name": "United Kingdom",
            "iso_2": "GB",
            "iso_3": "GBR"
        }
    },
    "shipping_address": {
        "first_name": "Support",
        "last_name": "Team",
        "company": "ACME LTD",
        "email": "support.team@i-fulfilment.co.uk",
        "country": {
            "id": 1,
            "name": "United Kingdom",
            "iso_2": "GB",
            "iso_3": "GBR"
        }
    },
    "attributes": [
        {
            "name": "Marketplace",
            "value": "222-99999999-9999999"
        }
    ],
    "tags": [
        {
            "id": 1,
            "name": "Processed",
            "shortcode": "PROCESSED"
        }
    ]
}

WebhookOrderConfirmed

ORDER:CREATED

Request Body

Example payload:

{
    "id": 1049789,
    "status": "awaiting_despatch",
    "date_placed": "2019-11-25T14:52:56.000Z",
    "source": "How the order was created.",
    "order": {
        "id": 1234567,
        "reference": "#154254",
        "status": "open",
        "channel": {
            "id": 321,
            "name": "Demo Channel",
            "short_code": "DEMO"
        },
        "brand": {
            "id": 5,
            "name": "Demo Brand"
        },
        "currency": {
            "id": 1,
            "name": "British Pound",
            "code": "GBP",
            "symbol": "£"
        }
    },
    "warehouse": {
        "id": 1,
        "name": "Christchurch",
        "short_code": "CHR",
        "country": {
            "id": 1,
            "name": "United Kingdom",
            "iso_2": "GB",
            "iso_3": "GBR"
        }
    },
    "shipping_address": {
        "first_name": "Support",
        "last_name": "Team",
        "company": "ACME LTD",
        "email": "support.team@i-fulfilment.co.uk",
        "country": {
            "id": 1,
            "name": "United Kingdom",
            "iso_2": "GB",
            "iso_3": "GBR"
        }
    },
    "lines": [
        {
            "id": 3450345,
            "transaction_sku": "GREEN-BALL",
            "quantity": 4,
            "net_unit_principal": 7.25,
            "net_unit_commission": 0.15,
            "status": "active",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "variation": {
                "id": 1,
                "product_id": 1,
                "sku": "DEMO-SKU-01"
            }
        }
    ],
    "attributes": [
        {
            "name": "Marketplace",
            "value": "222-99999999-9999999"
        }
    ],
    "tags": [
        {
            "id": 1,
            "name": "Processed",
            "shortcode": "PROCESSED"
        }
    ]
}

WebhookOrderCreated

ORDER:DESPATCHED

Request Body

Example payload:

{
    "id": 1049789,
    "status": "despatched",
    "date_placed": "2019-11-25T14:52:56.000Z",
    "despatch_date": "2019-11-25T14:52:56.000Z",
    "source": "How the order was created.",
    "order": {
        "id": 1234567,
        "reference": "#154254",
        "status": "open",
        "order_channel_id": 321,
        "brand_id": 5,
        "currency": {
            "id": 1,
            "name": "British Pound",
            "code": "GBP",
            "symbol": "£"
        },
        "channel": {
            "id": 1,
            "organisation_id": 1,
            "name": "Artplants",
            "outbound_email": "GBP"
        }
    },
    "warehouse": {
        "id": 1,
        "name": "Christchurch",
        "short_code": "CHR",
        "country": {
            "id": 1,
            "name": "United Kingdom",
            "iso_2": "GB",
            "iso_3": "GBR"
        }
    },
    "shipping_address": {
        "first_name": "Support",
        "last_name": "Team",
        "company": "ACME LTD",
        "email": "support.team@i-fulfilment.co.uk",
        "country": {
            "id": 1,
            "name": "United Kingdom",
            "iso_2": "GB",
            "iso_3": "GBR"
        }
    },
    "attributes": [
        {
            "name": "Marketplace",
            "value": "222-99999999-9999999"
        }
    ],
    "despatch_attributes": [
        {
            "sku": "DEMO-SKU-01",
            "attribute_name": "Colour",
            "attribute_value": "Red",
            "order_goodsout_line_id": 12234,
            "order_goodsout_line_item_id": 12234
        }
    ],
    "tags": [
        {
            "id": 1,
            "name": "Processed",
            "shortcode": "PROCESSED"
        }
    ],
    "shipping": [
        {
            "courier_name": "Royal Mail",
            "service_name": "ExPak1",
            "tracking": [
                {
                    "tracking_number": "46513135648745",
                    "tracking_url": "http://www.royalmail.com/trackdetails?trackNumber=46513135648745"
                }
            ]
        }
    ]
}

WebhookOrderDespatched

VENDOR_ORDER:FINALISED

Request Body

Example payload:

{
    "id": 123,
    "code": "QWER123ASD",
    "vendor": "VEN-01",
    "status": "confirmed",
    "delivery_party": null,
    "address_first_name": "Amazon",
    "address_last_name": "Inc.",
    "address_company": null,
    "address_line_one": "1 Amazon Rd",
    "address_line_two": null,
    "address_line_three": null,
    "address_postcode": "BH23 4FL",
    "address_town": "Christchurch",
    "address_county": "Dorset",
    "finalised": "2019-11-25T14:52:56.000Z",
    "order_channel": {
        "id": 321,
        "name": "Demo Channel"
    },
    "country": {
        "id": 231,
        "name": "United Kingdom",
        "iso_2": "GB",
        "iso_3": "GBR"
    },
    "selected_warehouse": {
        "id": 1,
        "name": "Christchurch",
        "country": {
            "id": 231,
            "name": "United Kingdom",
            "iso_2": "GB",
            "iso_3": "GBR"
        }
    },
    "currency": {
        "id": 1,
        "name": "British Pound",
        "code": "GBP",
        "symbol": "£"
    },
    "items": [
        {
            "id": 4567,
            "product_variation_id": 687,
            "sku": "MODEL_309845",
            "submitted_quantity": 1000,
            "accepted_quantity": 850,
            "unit_cost": 12.34,
            "status": "accepted_in_stock",
            "expected_delivery_date": "2019-11-25"
        }
    ]
}

WebhookVendorOrderFinalised

Applications

Working with apps core settings.

Get Preference Value

GET /v1/preferences/:code

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/preferences/my_preference", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/preferences/my_preference', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/preferences/my_preference",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/preferences/my_preference' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "value": "12.43",
        "modified": "2019-11-25T14:52:56.000Z"
    }
}

Returns the value of a preference.

Parameter Regular Expressions

Return Type

ApplicationInstancePreferences

Scopes

This endpoint is only available for users with scope APP::MISC.

Set Preference Value

PUT /v1/preferences/:code

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/preferences/my_preference", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/preferences/my_preference', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/preferences/my_preference",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/preferences/my_preference' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "value": "12.43",
        "modified": "2019-11-25T14:52:56.000Z"
    }
}

Sets the value of a preference.

Parameter Regular Expressions

Request Body

SetValue

Return Type

ApplicationInstancePreferences

Types for the Request Body

SetValue (root level)

Key Description Types Restrictions
value The value. string required

Scopes

This endpoint is only available for users with scope APP::MISC.

Activate Application

PUT /v1/apps/activate

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/apps/activate", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/apps/activate', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/apps/activate",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/apps/activate' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "name": "Active",
        "code": "ACTIVE",
        "description": "The application is live and active."
    }
}

Mark the application’s installation as active.

Request Body

Ignored.

Return Type

ApplicationInstanceStatuses

Scopes

This endpoint is only available for users with scope APP::MISC.

Deactivate Application

PUT /v1/apps/deactivate

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/apps/deactivate", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/apps/deactivate', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/apps/deactivate",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/apps/deactivate' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "name": "Active",
        "code": "ACTIVE",
        "description": "The application is live and active."
    }
}

Mark the application’s installation as deactivated.

Request Body

Ignored.

Return Type

ApplicationInstanceStatuses

Scopes

This endpoint is only available for users with scope APP::MISC.

App Instance Info

GET /v1/apps/info

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/apps/info?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/apps/info?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/apps/info?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/apps/info?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "nickname": "My web store",
        "status": {
            "name": "Active",
            "code": "ACTIVE",
            "description": "The application is live and active."
        }
    }
}

Get a summary of the logged in application instance.

Return Type

ApplicationInstanceInfos

Available expands

Field Return Type Description
status ApplicationInstanceStatuses Represents a status for an application instance.

Scopes

This endpoint is only available for users with scope APP::MISC.

Get Marketplace Application Settings

GET /v1/apps/marketplace/settings

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/apps/marketplace/settings?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/apps/marketplace/settings?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/apps/marketplace/settings?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/apps/marketplace/settings?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "currency_id": 1,
        "locale_id": 1,
        "order_channel_id": 321,
        "primary_warehouse_id": 1,
        "order_import_grace_period_minutes": 0,
        "ignore_orders_created_before": null,
        "allow_multi_location_support": 0,
        "currency": {
            "code": "GBP",
            "name": "British Pound",
            "symbol": "£"
        },
        "locale": {
            "id": 1,
            "name": "English",
            "code": "en",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        },
        "order_channel": {
            "id": 321,
            "organisation_id": 321,
            "name": "Demo Channel",
            "short_code": "DEMO",
            "status": "active",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "tax": {
                "id": 1,
                "name": "standard",
                "code": "20",
                "rate": 20,
                "description": "standard 20%",
                "active": true,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            }
        },
        "primary_warehouse": {
            "short_code": "CHR",
            "name": "Christchurch"
        },
        "warehouses": [
            {
                "short_code": "CHR",
                "name": "Christchurch"
            }
        ]
    }
}

Returns the main configuration settings for an app of type Marketplace.

Return Type

MarketplaceApplicationInstanceSettings

Available expands

Field Return Type Description
currency SummarisedCurrency A currency.
locale SummarisedLocale Locale / Language.
order_channel OrderChannels Customer order groups.
order_channel.tax OrganisationTaxes Organisation tax data.
primary_warehouse SummarisedWarehouse A warehouse.
primary_warehouse.country SummarisedCountry A country.
warehouses array<SummarisedWarehouse> A warehouse.
warehouses.country SummarisedCountry A country.

Scopes

This endpoint is only available for users with scope APP::MISC.

Get Demand Planning Application Settings

GET /v1/apps/demand_planning/settings

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/apps/demand_planning/settings", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/apps/demand_planning/settings', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/apps/demand_planning/settings",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/apps/demand_planning/settings' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "product_channel_id": 123,
        "organisation_id": 123,
        "warehouse_code": "TRAI"
    }
}

Returns the main configuration settings for an app of type Demand Planning.

Return Type

DemandPlanningApplicationInstanceSettings

Scopes

This endpoint is only available for users with any of these scopes: APP::PRODUCTS::MANAGE, APP:PURCHASE-ORDERS::MANAGE.

Miscellaneous

Uncategorised endpoints.

List Countries

GET /v1/countries

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/countries", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/countries', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/countries",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/countries' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "name": "United Kingdom",
            "iso_2": "GB",
            "iso_3": "GBR",
            "region_id": 1,
            "currency_id": 1,
            "block": "EU"
        }
    ]
}

Retrieves a list of all the countries BladePRO can accept shipping destinations for.

Return Type

array<Countries>

Scopes

This endpoint is only available for users with scope APP::MISC.

List Currencies

GET /v1/currencies

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/currencies", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/currencies', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/currencies",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/currencies' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "code": "GBP",
            "name": "Great British Pounds",
            "symbol": "£",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        }
    ]
}

List Currencies.

Return Type

array<Currencies>

Scopes

This endpoint is only available for users with scope APP::MISC.

POST /v1/orders/goodsouts/from_file

Request Body

Ignored.

Return Type

Empty or untyped.

Scopes

This endpoint is available to all users.

List Tax Rates

GET /v1/taxes

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/taxes", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/taxes', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/taxes",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/taxes' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "name": "standard",
            "code": "20",
            "rate": 20,
            "description": "standard 20%",
            "active": true,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        }
    ]
}

List Tax Rates.

Return Type

array<OrganisationTaxes>

Scopes

This endpoint is only available for users with scope APP::MISC.

List Brands

GET /v1/brands

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/brands", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/brands', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/brands",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/brands' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 5,
            "name": "Demo Brand"
        }
    ]
}

Retrieves a list of all the organisational brands.

Return Type

array<Brands>

Scopes

This endpoint is only available for users with scope APP::MISC.

List Locales

GET /v1/locales

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/locales", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/locales', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/locales",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/locales' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "id": 1,
            "name": "English",
            "code": "en",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        }
    ]
}

Lists available locales.

Return Type

array<Locales>

Scopes

This endpoint is only available for users with scope APP::MISC.

List templates

GET /v1/templates

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/templates", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/templates', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/templates",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/templates' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "organisation_id": 1,
        "template_category_id": 1,
        "template_category_code": "DESPATCH_NOTE",
        "name": "Default despatch note",
        "status": "portrait",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z"
    }
}

Return a list of templates

Return Type

Templates

Filters

Field Operators Value List URL
organisation_id IN, NOT_IN
template_category_id IN, NOT_IN
template_category_code IN, NOT_IN
name LIKE

Scopes

This endpoint is only available for users with scope APP::TEMPLATES::READ.

Return rendered template

PUT /v1/templates/render

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/templates/render", [
    "body" => json_encode([
        "template_id" => "en",
        "resource_ids" => [
            1,
        ],
        "locales" => [
            "en",
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/templates/render', {
  template_id: "en",
  resource_ids: [
    1,
  ],
  locales: [
    "en",
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/templates/render",
    body: {
        "template_id": "en",
        "resource_ids": [
            1
        ],
        "locales": [
            "en"
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/templates/render' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "template_id": "en",
    "resource_ids": [
        1
    ],
    "locales": [
        "en"
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "organisation_id": 1,
        "template_category_id": 1,
        "template_category_code": "DESPATCH_NOTE",
        "name": "Default despatch note",
        "status": "portrait",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z"
    }
}

Return a template rendered for different resources and languages

Request Body

RenderTemplate

Return Type

Templates

Types for the Request Body

RenderTemplate (root level)

Key Description Types Restrictions
template_id ID of template. integer required
not null
min is 1
resource_ids List of resource ID’s. array<number> required
not null
min count is 1
locales List of resource ID’s. array<string> required
not null
min count is 1

Scopes

This endpoint is only available for users with scope APP::TEMPLATES::READ.

List File Order Importer Mapping Templates

GET /v1/mappings

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/mappings", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/mappings', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/mappings",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/mappings' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "id": 1,
            "slug": "default",
            "name": "Default",
            "organisation_id": 1,
            "fields": {},
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        }
    ]
}

List the mapping templates for File Order Importer.

Return Type

array<Mappings>

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Return Types

This section lists the return types that the API uses. Every endpoint describes which type it returns.

Field Descriptions

ApplicationInstanceInfos

Represents a status for an application instance.

Fields

Key Description Type Expanding
nickname Nickname. string No
status The current status. ApplicationInstanceStatuses Yes

ApplicationInstancePreferences

Represents an application instance preference.

Fields

Key Description Type Expanding
value The value. string No
modified Last modified date. date No

ApplicationInstanceStatuses

Represents a status for an application instance.

Fields

Key Description Type Expanding
name Name of the status. string No
code Internal code of the status. string No
description Description. string No

Auth

Fields

Key Description Type Expanding
session_token Session token to pass into API calls. string No
expiry Session expiry time. date No

Brands

Brand data.

Fields

Key Description Type Expanding
id ID of the brand. number No
name Name of the brand. string No

BulkAdjustVirtualStockResult

Holds data about the results of a bulk virtual stock adjustment.

Fields

Key Description Type Expanding
affected The number of items affected by the bulk action. number No

BulkCheckOrderExists

Check if an order reference already exists on a channel.

Fields

Key Description Type Expanding
order_reference Order reference. string No
order_id BladePRO Order Id. number No
exists Does the order exists. boolean No

BulkImportOrdersFile

Confirmation of a file upload.

Fields

Key Description Type Expanding
success Pass an order export to import orders in bulk. boolean No

BulkListAllOpenOrders

List all the ‘open’ orders for a given channel. Can be used to do a pre-cursive check for order importer functions to filter out orders have been previously imported.

Fields

Key Description Type Expanding
order_id Order id. number No
reference Order reference. string No
goodsouts List of related goodsouts. array<BulkListAllOpenOrdersGoodsout> Yes

BulkListAllOpenOrdersGoodsout

Fields

Key Description Type Expanding
order_goodsout_id Order Goodsout id. string No
status Goodsout status. string No
metadata List of related metadata created by this app instance. array<BulkListAllOpenOrdersGoodsoutMetadata> Yes

BulkListAllOpenOrdersGoodsoutMetadata

Fields

Key Description Type Expanding
key Metadata Key. string No
value Metadata Value. string No

BulkOrderStatuses

Defines a status against an order goodsout.

Fields

Key Description Type Expanding
order_goodsout_id Order goodsout ID. number No
status List of tracking numbers. enum * see below No

Enums

Field Values
status draft, awaiting_allocation, hung, returned, awaiting_payment, awaiting_picking, awaiting_despatch, backorder_release, backorder, cancelled, return_open, item_refunded, item_replaced, awaiting_collection, despatched

BulkOrderTrackingNumbers

Defines a list of tracking numbers against an order goodsout.

Fields

Key Description Type Expanding
order_goodsout_id Order goodsout ID. number No
despatch_date Despatch date. date No
courier Courier name. string No
external_tracking_enabled Trackable flag. boolean No
service Shipping service name. string No
tracking_numbers List of tracking numbers. array<CachedCourierTracking> Yes

BulkOrderTrackingNumbersByReference

Defines a list of tracking numbers against an order goodsout.

Fields

Key Description Type Expanding
reference Order reference. string No
order_goodsout_id Order goodsout ID. number No
despatch_date Despatch date. date No
status Goodsout status. enum * see below No
courier Courier name. string No
service Shipping service name. string No
external_tracking_enabled Trackable flag. boolean No
tracking_numbers List of tracking numbers. array<CachedCourierTracking> Yes

Enums

Field Values
status draft, awaiting_allocation, hung, returned, awaiting_payment, awaiting_picking, awaiting_despatch, backorder_release, backorder, cancelled, return_open, item_refunded, item_replaced, awaiting_collection, despatched

CachedAddress

An address.

Fields

Key Description Type Expanding
first_name First name. string No
last_name Last name. string No
company Company name. string No
address_one Address line one. string No
address_two Address line two. string No
address_three Address line three. string No
town Town. string No
county County or state. string No
postcode Postcode. string No
email Email address. string No
mobile Mobile telephone. string No
telephone Telephone. string No
secondary_telephone Secondary telephone. string No
contact BladePRO contact data. CachedAddressContact Yes
country Country. SummarisedCountry Yes

CachedAddressContact

A BladePRO contact.

Fields

Key Description Type Expanding
name Name. string No
group Group name. string No

CachedApplicationMarketplaceAttribute

Marketplace attribute

Fields

Key Description Type Expanding
id Attribute definition id. number No
name Name of the attribute. string No
description Description of the attribute. string No
code Code representing the attribute. string No

CachedAttribute

An attribute.

Fields

Key Description Type Expanding
name Name. string No
value Value. string No

CachedBrand

A brand.

Fields

Key Description Type Expanding
name Name. string No

CachedCourier

A courier.

Fields

Key Description Type Expanding
name Name. string No
code Code. string No
service Service details. CachedShippingService Yes
tracking Tracking details. array<CachedCourierTracking> Yes

CachedCourierTracking

Tracking details.

Fields

Key Description Type Expanding
courier Courier name. string No
code The tracking number. string No
url Tracking URL. string No

CachedGoodsout

An order goodsout.

Fields

Key Description Type Expanding
id Goodsout ID. number No
bid Full BladePRO ID. string No
creator Who created the goodsout. string No
status Goodsout status. enum * see below No
date_placed Placed date. date No
despatch_date Despatch date. date No
despatch_on_date Despatch on date. date No
warehouse Fulfilment warehouse. SummarisedWarehouse Yes
courier Courier. CachedCourier Yes
tags List of applied tags. array<SummarisedTag> Yes
attributes List of applied attributes. array<CachedAttribute> Yes
shipping_address The shipping address. CachedAddress Yes
order The parent order. CachedOrder Yes
lines Summaries of the active goodsout lines that describe products. No extras or packaging are listed. array<CachedGoodsoutLine> Yes

Enums

Field Values
status draft, awaiting_allocation, hung, returned, awaiting_payment, awaiting_picking, awaiting_despatch, backorder_release, backorder, cancelled, return_open, item_refunded, item_replaced, awaiting_collection, despatched

CachedGoodsoutLine

An order goodsout line summary.

Fields

Key Description Type Expanding
id ID of the line. number No
product_variation_id ID of the product variation. number No
sku SKU of the product variation. string No
name English description of the product variation. string No
quantity Ordered quantity. number No

CachedMarketplaceListing

Marketplace listing

Fields

Key Description Type Expanding
id The marketplace listing variation ID. number No
marketplace_reference The marketplace reference of the listing variation. string No
attributes Listing attributes. array<CachedMarketplaceListingAttribute> Yes
options Listing option definitions. array<CachedMarketplaceListingOption> Yes
images Variation images. array<CachedMarketplaceListingImage> Yes
related_listing_variations Related listing variations that belong to the same parent marketplace_listing array<CachedMarketplaceListingVariationRelatedVariation> Yes

CachedMarketplaceListingAttribute

Marketplace listing attributes

Fields

Key Description Type Expanding
label_json JSON string defining the label of the attribute value. string No
value The attribute value. string No
attribute The attribute definition. CachedApplicationMarketplaceAttribute Yes

CachedMarketplaceListingImage

Marketplace listing variation images

Fields

Key Description Type Expanding
primary Id this the primary image for the listing . boolean No
sequence The ordered sequence for this image. number No
url The url to access this image. string No

CachedMarketplaceListingOption

Marketplace listing option definition.

Fields

Key Description Type Expanding
id The marketplace listing option ID. number No
name The name of the option. string No

CachedMarketplaceListingVariation

Marketplace listing summary

Fields

Key Description Type Expanding
id The marketplace listing variation ID. number No
marketplace_listing_id The parent marketplace listing ID. number No
marketplace_reference The marketplace reference of the listing variation. string No
sku The listed SKU. string No
price The listed Price. number No
status The status of the listing. enum * see below No
listing_mode The listing mode of the listing. enum * see below No
stock_mode The stock mode of the listing. enum * see below No
marketplace_listing The parent listing. CachedMarketplaceListing Yes
product_variation The related product variation. CachedMarketplaceListingVariationProductVariation Yes
attributes Variation attributes. array<CachedMarketplaceListingVariationAttribute> Yes
options Variation options. array<CachedMarketplaceListingVariationOption> Yes
images Variation images. array<CachedMarketplaceListingVariationImage> Yes

Enums

Field Values
status draft, live, void
listing_mode keep_in_sync, do_not_sync
stock_mode keep_in_sync, do_not_sync, always_in_stock, never_in_stock

CachedMarketplaceListingVariationAttribute

Marketplace listing variation attributes

Fields

Key Description Type Expanding
label_json JSON string defining the label of the attribute value. string No
value The attribute value. string No
attribute The attribute definition. CachedApplicationMarketplaceAttribute Yes

CachedMarketplaceListingVariationImage

Marketplace listing variation images

Fields

Key Description Type Expanding
primary Id this the primary image for the listing variation. boolean No
sequence The ordered sequence for this image. number No
url The url to access this image. string No

CachedMarketplaceListingVariationOption

Value for a marketplace listing option.

Fields

Key Description Type Expanding
id The marketplace listing variation option ID. number No
marketplace_listing_option_id The owning marketplace listing option ID. number No
value The value of the option. string No
option The option type. CachedMarketplaceListingOption Yes

CachedMarketplaceListingVariationProductVariation

Marketplace listing variation attributes

Fields

Key Description Type Expanding
id The product variations’s ID. number No
sku The product’s SKU. string No
aspects Marketplace application aspects. array<CachedMarketplaceListingVariationProductVariationAspects> Yes
category The product’s category. CachedMarketplaceListingVariationProductVariationCategory Yes

CachedMarketplaceListingVariationProductVariationAspects

Marketplace listing variation aspects

Fields

Key Description Type Expanding
value The aspect value. string No
label The aspects label. string No
aspect The attribute definition. CachedApplicationMarketplaceAttribute Yes

CachedMarketplaceListingVariationProductVariationCategory

Marketplace listing variation category

Fields

Key Description Type Expanding
id The category id. number No
name The category name. string No
preferences Marketplace application aspects. array<CachedMarketplaceListingVariationProductVariationCategoryPreferences> Yes

CachedMarketplaceListingVariationProductVariationCategoryPreferences

Marketplace listing variation category preferences

Fields

Key Description Type Expanding
value The preference value. string No
label The preference label. string No
preference The preference definition. CachedMarketplaceListingVariationProductVariationCategoryPreferencesPreference Yes

CachedMarketplaceListingVariationProductVariationCategoryPreferencesPreference

Marketplace listing variation aspects

Fields

Key Description Type Expanding
name The preference name. string No
code The preference short code reference. string No

CachedMarketplaceListingVariationRelatedVariation

Related listing variations that belong to the same parent marketplace_listing

Fields

Key Description Type Expanding
id The listing variation id. number No
marketplace_reference The listing variation marketplace reference. string No
status The BladePRO status for the listing variation. string No
sku The listing variations listed sku. string No

CachedNameAndCode

Holds a name and a code field.

Fields

Key Description Type Expanding
name Name. string No
code Code. string No

CachedOrder

An order.

Fields

Key Description Type Expanding
id Order ID. number No
reference Unique reference. string No
status Order status. enum * see below No
channel Order channel. CachedOrderChannel Yes
currency Currency. SummarisedCurrency Yes
brand Brand. CachedBrand Yes

Enums

Field Values
status draft, open, complete, cancelled

CachedOrderChannel

An order channel.

Fields

Key Description Type Expanding
id Id. number No
short_code Code. string No
name Name. string No

CachedProduct

Top level product data.

Fields

Key Description Type Expanding
id The product id. number No
channel The product channel. CachedProductChannel Yes

CachedProductChannel

Cached product channel.

Fields

Key Description Type Expanding
id The product channel id. number No
name Product channel name. string No
default_warehouse_id Default warehouse id. number No
global Is it a global shared product. boolean No
organisation Organisation that the product channel belongs to. CachedProductChannelOrganisation Yes

CachedProductChannelOrganisation

Top level product data.

Fields

Key Description Type Expanding
id Organisation id. number No
name Organisation name. string No

CachedProductVariation

Variation specific data.

Fields

Key Description Type Expanding
id The product variation id. number No
sku The product SKU. string No
name The product name. string No
is_primary Is this a primary product. boolean No
status The status of the product. enum * see below No
created The created date. CachedProductVariationCreated Yes
product Parent product. CachedProduct Yes
tags List of applied tags. array<SummarisedTag> Yes
descriptions List of descriptions. array<CachedProductVariationDescription> Yes
components List of components. array<CachedProductVariationComponent> Yes
type The product type. SummarisedProductVariationType Yes
primary_product_category The primary product category. SummarisedProductCategory Yes

Enums

Field Values
status active, draft, discontinued

CachedProductVariationComponent

Variation component.

Fields

Key Description Type Expanding
id The product component id. number No
sku The component SKU. string No
name The component name. string No
barcode The component barcode. string No
quantity The quantity of this component used in the product variation. number No

CachedProductVariationCreated

Variation specific data.

Fields

Key Description Type Expanding
date Date string. string No
timezone Timezone. string No

CachedProductVariationDescription

Variation descriptions.

Fields

Key Description Type Expanding
id The product variation id. number No
product_variation_id The product variation id. number No
locale_id The description locale. number No
name The product name. string No
full_description The description of the product. string No
created The created date. date No
modified The last modified date. date No
locale The locale for this description. SummarisedLocale No

CachedShippingService

Holds data about a shipping service.

Fields

Key Description Type Expanding
name Name. string No
code Code. string No
tracked Whether this service is tracked. boolean No
signed Wheter this service requires signing by the recipient. boolean No

CartonLabelTypeReferences

References for carton label types.

Fields

Key Description Type Expanding
name Descriptive name of the reference. string No
code The code the reference can be addressed by. string No
type Type of the reference. enum * see below No
validation_pattern Regular expression used to validate the value. string No

Enums

Field Values
type text, barcode

CartonLabelTypes

Carton label types data.

Fields

Key Description Type Expanding
id ID of the carton label type. number No
name Descriptive name of the carton label type. string No
active If the carton label type is active. number No
carton_label_type_references References of the carton label type. array<CartonLabelTypeReferences> Yes

ConsignmentQualities

Consignment quality description.

Fields

Key Description Type Expanding
name Name. string No
group Quality group. string No
description Details. string No
active Is it active? boolean No

Countries

A country.

Fields

Key Description Type Expanding
id The country’s unique identifier. number No
name Name. string No
iso_2 ISO2 description. string No
iso_3 ISO3 description. string No
region_id ID of the region. number No
currency_id ID of the country’s currency. number No
block Trade block. enum * see below No
region The region. Regions Yes
currency The country’s currency. Currencies Yes

Enums

Field Values
block EU

Currencies

Currency data.

Fields

Key Description Type Expanding
id ID of the currency. number No
code ISO code of the currency. string No
name Descriptive name of the currency. string No
symbol Symbol to render next to values. string No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No

DemandPlanningApplicationInstanceSettings

Stores data about the current application instance.

Fields

Key Description Type Expanding
product_channel_id Product channel ID. number No
organisation_id Organisation ID. number No
warehouse_code Warehouse short code. string No

DespatchedOrders

An order goodsout.

Fields

Key Description Type Expanding
id Goodsout ID. number No
status Status. string No
bid BID. string No
despatch_date Despatch date. date No
courier Courier. CachedCourier Yes
attributes List of applied attributes. array<CachedAttribute> Yes
order The parent order. CachedOrder Yes

Fields

Importer Mapping Fields

Fields

Key Description Type Expanding
source Source field name. string No
destination Destination field name. string No
default_value Default Value string No
manipulations Manipulations object No
default_format Default Format string No
value_replacements Value Replacements object No

Gdpr

Fields

Key Description Type Expanding
id The concern id representing this GDPR request. string No

ImportMarketplaceListing

Import marketplace listing

Fields

Key Description Type Expanding
id The ID of the listing. number No
marketplace_reference The marketplace reference. string No
product_category_id The ID of the product category. number No
marketplace_listing_variations List of marketplace listing variations. array<ImportMarketplaceListingVariation> Yes
options List of options created for the listing. array<ImportMarketplaceListingOption> Yes

ImportMarketplaceListingOption

A marketplace listing option during import.

Fields

Key Description Type Expanding
id The ID of the option. number No
name The name of the option. string No

ImportMarketplaceListingVariation

A marketplace listing variation during import.

Fields

Key Description Type Expanding
id The ID of the listing variation. number No
title The title of the listing. string No
subtitle The subtitle of the listing. string No
description The subtitle of the listing. string No
listing_mode The listing mode of the listing variation. enum * see below No
stock_mode The stock mode of the listing variation. enum * see below No
marketplace_reference The marketplace reference. string No
price The marketplace price of the product. number No
product_variation_id The product variation the listing is linked to. number No
quantity Current marketplace stock level. number No
sku Current marketplace SKU. string No
status The status of the listing variation. enum * see below No
options List of options created for the variation. array<ImportMarketplaceListingVariationOption> Yes

Enums

Field Values
listing_mode keep_in_sync, do_not_sync
stock_mode keep_in_sync, do_not_sync, always_in_stock, never_in_stock
status draft, live, void, pending_live, pending_void

ImportMarketplaceListingVariationOption

A marketplace listing variation option during import.

Fields

Key Description Type Expanding
id The ID of the variation option. number No
marketplace_listing_option_id The ID of the marketplace listing option. number No
value The value of the option. string No

Incident

Represents the result of logging an incident request.

Fields

Key Description Type Expanding
incident_id The related incident’s ID, if applicable. number No

Locales

Locale data.

Fields

Key Description Type Expanding
id ID of the locale. number No
name Name of the locale. string No
code Unique short code of the locale. string No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No

Log

Represents the result of a logging request.

Fields

Key Description Type Expanding
success Holds true if the log entry was saved successfully. boolean No

Mappings

File Mapping data.

Fields

Key Description Type Expanding
id ID of the mapping. number No
slug Slug of the mapping. string No
name Name of the mapping. string No
organisation_id Organisation ID. number No
fields Mappings Fields Fields No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No

MarketplaceApplicationInstanceSettings

Stores data about the current application instance.

Fields

Key Description Type Expanding
currency_id Currency ID. number No
locale_id Locale ID. number No
order_channel_id Order channel ID. number No
primary_warehouse_id Primary warehouse’s ID. number No
order_import_grace_period_minutes Grace period in minutes for ignoring orders. number No
ignore_orders_created_before Ignore orders created before a certain date. date No
allow_multi_location_support Is the multi location support enabled for this integration. boolean No
currency Currency. SummarisedCurrency Yes
locale Locale. SummarisedLocale Yes
order_channel Order channel. OrderChannels Yes
primary_warehouse Primary warehouse. SummarisedWarehouse Yes
warehouses Configured warehouses for this specific integration. array<SummarisedWarehouse> Yes

MarketplaceListingBulkUpdateQuantities

Marketplace listing bulk update listed quantity

Fields

Key Description Type Expanding
success Was the bulk update successful. boolean No

MarketplaceListingPurge

Marketplace listing purge

Fields

Key Description Type Expanding
success Was the purge update successful. boolean No

MarketplaceListingResourceMetadatas

Stores arbitrary data against a marketplace listing.

Fields

Key Description Type Expanding
key Key the piece of stored metadata is identified with. string No
value Stored data metadata. string No

MarketplaceListingStock

Marketplace listing stock

Fields

Key Description Type Expanding
id The marketplace listing ID. number No
marketplace_reference The marketplace reference of the listing. string No
resource_metadatas List of metadata keys and values set against the listing. array<MarketplaceListingResourceMetadatas> Yes
variations List of marketplace listing variations array<MarketplaceListingVariationStock> Yes

MarketplaceListingTemplates

Marketplace listing templates

Fields

Key Description Type Expanding
marketplace_listing_variation_id ID of the marketplace listing variation. number No
locale The locale of the template. string No
title Rendered titles by locale. object No
subtitle Rendered subtitles by locale. object No
description Rendered descriptions by locale. object No

MarketplaceListingUpdateAttributes

Marketplace attribute

Fields

Key Description Type Expanding
code The attribute code. string No
name The attribute name. string No
value The value of the attribute. string No

MarketplaceListingUpdateListingVariations

Marketplace listing updates

Fields

Key Description Type Expanding
id The marketplace listing variation id. number No
marketplace_reference The marketplace reference. string No
sku The listed SKU. string No
price The currently listed price. number No
status The status of the listing variation. string No
attributes Variation attributes. array<MarketplaceListingUpdateAttributes> Yes

MarketplaceListingUpdateListings

Marketplace listing updates

Fields

Key Description Type Expanding
id The marketplace listing id. number No
marketplace_reference The marketplace reference. string No
attributes Listing attributes. array<MarketplaceListingUpdateAttributes> Yes

MarketplaceListingUpdates

Marketplace listing updates

Fields

Key Description Type Expanding
id The marketplace listing update ID. number No
code The update type code. string No
listing_id The marketplace listing ID. number No
variation_id The marketplace variation ID. number No
old_value The old value of the updated field. string No
new_value The new value of the updated field. string No
status The marketplace listing update status. enum * see below No
claim_reference The reference ID of the claimed batch. string No
claimed Claimed date. number No
created Created date. date No
marketplace_listing The related listing. MarketplaceListingUpdateListings Yes
marketplace_listing_variation The related listing variation ( if applicable ) . MarketplaceListingUpdateListingVariations Yes

Enums

Field Values
status pending, cancelled, updating, completed, failed

MarketplaceListingVariation

Marketplace listing

Fields

Key Description Type Expanding
id The marketplace listing variation ID. number No
marketplace_reference The reference assigned by the 3rd part marketplace. string No
price The current listed price. number No
status The listing variation status. string No
sku The listed sku. string No
product_variation_id The linked product variation id. number No
quantity The currently listed quantity. number No
created Created date. date No

MarketplaceListingVariationResourceMetadatas

Stores arbitrary data against a marketplace listing variation.

Fields

Key Description Type Expanding
key Key the piece of stored metadata is identified with. string No
value Stored data metadata. string No

MarketplaceListingVariationStock

Marketplace listing variation stock

Fields

Key Description Type Expanding
id The marketplace listing variation ID. number No
marketplace_reference The marketplace reference of the product variation. string No
sku The product SKU. string No
product_variation_id The product variation ID. number No
current_listed_quantity What quantity BladePRO think is currently listed. number No
quantity_to_list What quantity BladePRO thinks should be listed. number No
resource_metadatas List of metadata keys and values set against the listing variation. array<MarketplaceListingVariationResourceMetadatas> Yes
marketplace_locations List of locations if multi location is enabled. array<MarketplaceListingVariationStockMarketplaceLocations> Yes

MarketplaceListingVariationStockMarketplaceLocations

Marketplace listing variation’s location-based stock

Fields

Key Description Type Expanding
marketplace_location_id ID of the location from the app’s global linking. number No
current_listed_quantity What quantity BladePRO think is currently listed. number No
quantity_to_list What quantity BladePRO thinks should be listed. number No

MarketplaceListings

Marketplace listing

Fields

Key Description Type Expanding
id The marketplace listing ID. number No
marketplace_reference The reference assigned by the 3rd part marketplace. string No
created Created date. date No

MarketplaceLocations

Acts as a link between BladePRO warehouses and marketplace locations.

Fields

Key Description Type Expanding
id BladePRO ID for the location mapping. number No
despatch_warehouse_id ID of the warehouse the items need to be despatched from. number No
location_name User-defined, friendly name for the mapping. string No
location_key Identifier from the marketplace. string No
location_extra Extra arbitrary data stored for this location mapping. string No
default_stock_mode The default stock mode to use when importing a new listing for this location only. enum * see below No
despatch_warehouse The despatch warehouse. Warehouses Yes
stock_warehouses List of warehouses stock need to be used from. array<Warehouses> Yes

Enums

Field Values
default_stock_mode keep_in_sync, do_not_sync, always_in_stock, never_in_stock

OrderChannels

Customer order groups.

Fields

Key Description Type Expanding
id ID of the channel. number No
organisation_id ID of the organisation the channel belongs to. number No
name The name of the channel. string No
short_code A short string identifier of the channel. string No
status The status of the channel. enum * see below No
created Created timestamp in BladePRO. date No
modified Last modified timestamp in BladePRO. date No
brands List of related brands array<Brands> Yes
organisation List of related brands Organisations Yes
tax Default tax rate OrganisationTaxes Yes

Enums

Field Values
status active, inactive

OrderGoodsoutAddresses

Data related to an address.

Fields

Key Description Type Expanding
id The address’ unique identifier. number No
title Title. string No
first_name First name. string No
last_name Last name. string No
company Company name. string No
address_one First line of address. string No
address_two Second line of address. string No
address_three Third line of address. string No
town Town. string No
county County name. string No
postcode Postcode. string No
country_id ID of the country. number No
email Email. string No
mobile Mobile number. string No
telephone Landline number. string No
secondary_telephone Secondary telephone number. string No
vat_number VAT number. string No
modified Last modified timestamp in BladePRO. date No
country The address country. Countries Yes

OrderGoodsoutAudits

Add a message to the order timeline.

Fields

Key Description Type Expanding
message The timeline entry. string No

OrderGoodsoutDespatchAttributes

Despatch attribute for an order item

Fields

Key Description Type Expanding
sku Product SKU. string No
product_name Product name. string No
attribute_name Attribute name. string No
attribute_value Attribute value. string No

OrderGoodsoutDocumentUploadConfirmation

Confirmation of a file upload.

Fields

Key Description Type Expanding
success Whether the upload was successful or not. boolean No

OrderGoodsoutLineItemDespatchedStocks

Stock despatched for an specific line item.

Fields

Key Description Type Expanding
id ID. number No
quantity Quantity despatched. number No
expiry_date The expiry date despatched date No
batch The batch code despatched. ProductComponentBatches Yes

OrderGoodsoutLineItems

An item inside a goodsout line.

Fields

Key Description Type Expanding
id ID. number No
quantity Quantity ordered. number No
expiry_date The expiry date specified date No
principal_tax Tax rate applied to the line item. OrganisationTaxes Yes
component The product component. ProductComponents Yes
batch The batch code specified. ProductComponentBatches Yes
despatched_stocks Despatched Stock. array<OrderGoodsoutLineItemDespatchedStocks> Yes

OrderGoodsoutLines

An order for a product.

Fields

Key Description Type Expanding
id ID. number No
transaction_sku SKU used during the transaction. string No
quantity Quantity ordered. number No
discount_type Discount type. number No
discount Discount amount. number No
net_unit_principal Net unit price. number No
principal_tax Tax rate applied to the line. OrganisationTaxes Yes
status Line status. enum * see below No
variation Product variation. ProductVariations Yes
items Line items. array<OrderGoodsoutLineItems> Yes

Enums

Field Values
status active, void

OrderGoodsoutPackingListBox

A box with products packed into it.

Fields

Key Description Type Expanding
pallet If the box was placed on a pallet, the pallet’s data. OrderGoodsoutPackingListPallet Yes
carton_reference The sequence number of the current box. number No
carton_product_variation_id The product variation ID of the current box. number No
sku The SKU of the current box. string No
sscc_18 The SSCC-18 barcode of the carton, if exists. string No
weight Weight of the box in kilograms. string No
height Height of the box in millimetres. string No
width Width of the box in millimetres. string No
depth Depth of the box in millimetres. string No
contains List of products packed into the box. array<OrderGoodsoutPackingListProduct> Yes

OrderGoodsoutPackingListPallet

A pallet on a packing list.

Fields

Key Description Type Expanding
pallet_product_variation_id The product variation ID of the pallet. number No
pallet_reference The sequence number of the pallet. number No
sku The SKU of the pallet. string No
weight_kg Weight of the pallet in kilograms. string No

OrderGoodsoutPackingListProduct

A pallet on a packing list.

Fields

Key Description Type Expanding
product_component_id The product component ID of the physical product. number No
sku The SKU of the product component. string No
name Name. string No
quantity Quantity of the product in the box. number No
colour Colour. number No
size Size. number No
style Style. number No
type Type. number No
quality Quality. number No

OrderGoodsoutShipmentTracking

A shipment tracking update of an order goodsout.

Fields

Key Description Type Expanding
message A summary text that describes the tracking event. string No
location A text summary of where (location) the update has occurred. string No
tracking_number The specific tracking number for the update. string No
timestamp The date/time of when the update was created (UTC format only). date No

OrderGoodsoutTags

A tag linked to a order goodsout.

Fields

Key Description Type Expanding
id Tag ID. number No
name The tag name. string No
shortcode The tag code. string No
description The tag description. string No
created The date the tag was added created. date No

OrderGoodsouts

Customer order shipments.

Fields

Key Description Type Expanding
id ID. number No
status Status. enum * see below No
date_placed Placed date. date No
despatch_date Despatch date. date No
cancellation_date The date a goodsout was cancelled. date No
despatch_on_date Despatch on date. date No
source Source. string No
delivery_instructions Delivery instructions. string No
gift_message Gift message. string No
attributes List of attributes. array<CachedAttribute> Yes
shipments List of shipments. array<Shipments> Yes
lines List of lines. array<OrderGoodsoutLines> Yes
tags Applied tags. array<Tags> Yes
warehouse Warehouse. SummarisedWarehouse Yes
order Order. Orders Yes
shipping_address Shipping Address. OrderGoodsoutAddresses Yes

Enums

Field Values
status draft, awaiting_allocation, hung, returned, awaiting_payment, awaiting_picking, awaiting_despatch, backorder_release, backorder, cancelled, return_open, item_refunded, item_replaced, awaiting_collection, despatched

OrderLineResourceMetadatas

Stores arbitrary data against a order line.

Fields

Key Description Type Expanding
key Key the piece of stored metadata is identified with. string No
value Stored data metadata. string No

OrderResourceMetadatas

Stores arbitrary data against a order.

Fields

Key Description Type Expanding
key Key the piece of stored metadata is identified with. string No
value Stored data metadata. string No

OrderReturnItemReasons

Order Return Item Reasons.

Fields

Key Description Type Expanding
id ID. number No
name The reason for returning an item string No
short_name Name to represent the return reason. string No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No

OrderReturnItems

Order Return Items.

Fields

Key Description Type Expanding
id ID. number No
order_return_id Order Return Id the item is attached to. number No
order_goodsout_line_item_id The original goodsout line item the return is for. number No
order_goodsout_line_id The original goodsout line the return is for. number No
product_component_id The product component id. number No
sku SKU of the product component. string No
exchanged_product_component_id The product component that is being sent in exchange. number No
expected_quantity The quantity expected number No
received_quantity The quantity received number No
expiry_date The expiry date of the product date No
received_date The date the item was received into the warehouse date No
action The action for this item enum * see below No
order_return_item_reason_id The return reason id number No
description Description of the returned item string No
correct_item Was the item sent correct? enum * see below No
resellable Is the item in a resellable state? enum * see below No
status The status of the return item enum * see below No
authorisation_required Does the return item require authorisation? enum * see below No
rejected_reason Reason for rejecting the return of this item string No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
reason The reason for returning the item. OrderReturnItemReasons Yes
component The product component being returned. ProductComponents Yes
exchange_component The product component being sent in exchange. ProductComponents Yes

Enums

Field Values
action refund, exchange, stock
correct_item YES, NO, NOT_RECEIVED
resellable YES, NO
status pending, received, complete, void, draft, rejected, pending_refund, not_received
authorisation_required YES, NO

OrderReturnTags

A tag linked to a return.

Fields

Key Description Type Expanding
id Tag ID. number No
name The tag name. string No
shortcode The tag code. string No
description The tag description. string No
created The date the tag was added created. date No

OrderReturns

Order Returns.

Fields

Key Description Type Expanding
id ID. number No
order_id Order Id the return is attached to. number No
shipping_address_id Shipping Address Record. number No
warehouse_id The warehouse dealing with the return. number No
status Status of the return enum * see below No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
warehouse The warehouse dealing with the return. Warehouses Yes
order The order related to the return. Orders Yes
order_return_items The items being returned. array<OrderReturnItems> Yes
tags Tags attached to the return. array<SummarisedTag> Yes

Enums

Field Values
status draft, pending, received, rejected, awaiting_despatch, complete, delivered, customer_service

Orders

Customer order groups.

Fields

Key Description Type Expanding
id ID. number No
reference Unique reference. string No
status Order status. enum * see below No
goodsouts List of goodsouts. array<OrderGoodsouts> Yes
channel Order Channel. OrderChannels Yes

Enums

Field Values
status draft, open, complete, cancelled

OrganisationTaxes

Organisation tax data.

Fields

Key Description Type Expanding
id ID of the tax. number No
name Name of the tax. string No
code Code of the tax. string No
rate Rate of the tax. number No
description The description of the tax. string No
active Is this tax currently active? boolean No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No

Organisations

Organisation data.

Fields

Key Description Type Expanding
id ID of the organisation. number No
name Name of the organisation. string No
active Is the organisation currently active? boolean No
vat_number VAT number. string No
notes Notes. string No
contact_name Name of contact staff. string No
contact_phone Telephone number of contact staff. string No
contact_mobile Mobile number contact staff. string No
contact_email Email address of contact staff. string No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No

Ports

Shipping ports.

Fields

Key Description Type Expanding
id ID. number No
name Name. string No
cbm CBM. number No

ProductAudits

Add a message to the product timeline.

Fields

Key Description Type Expanding
message The timeline entry. string No

ProductBrands

Product brand data.

Fields

Key Description Type Expanding
id ID of the product brand. number No
name Name of the product brand. string No
organisation_id ID of the parent organisation. number No
active Is the product brand currently active? boolean No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
organisation The parent organisation. Organisations Yes

ProductChannelCategories

Product channel category data.

Fields

Key Description Type Expanding
id ID of the product channel category. number No
name Name of the product channel category. string No
parent_id ID of the parent product channel category. number No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
parent The parent product channel category. ProductChannelCategories Yes

ProductChannelVariations

Marketplace listable products’ search data.

Fields

Key Description Type Expanding
channel The product channel id. number No
sku The unique stock keeping unit. string No
product_component_sku The unique stock keeping unit. string No
product_component_supplier_id The component supplier id. number No
product_component_id The component id. number No
warehouse_id The warehouse id. number No

ProductChannels

Geographical region data.

Fields

Key Description Type Expanding
id ID of the product channel. number No
organisation_id ID of the parent organisation. number No
status The status of the product channel. enum * see below No
outbound_email The email address used for outbound messages. string No
default_warehouse_id ID of the default warehouse. number No
default_product_brand_id ID of the default brand. number No
global Is this channel global to all clients? boolean No
name The name of the product channel. string No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
default_product_brand The default brand. ProductBrands Yes
default_warehouse The default warehouse. Warehouses Yes
organisation The parent organisation. Organisations Yes

Enums

Field Values
status active, inactive

ProductComponentBatches

Description of a batch.

Fields

Key Description Type Expanding
id ID. number No
reference Reference. string No
description Description. string No
created Created date. date No
modified Last modified date. date No

ProductComponentCostPriceTransports

Transport costs.

Fields

Key Description Type Expanding
id ID. number No
description Description. string No
net_price Net price. number No
tax_id Tax ID. number No
currency_code Currency code. string No
created Created date. date No
modified Last modified date. date No

ProductComponentCostPrices

A cost price.

Fields

Key Description Type Expanding
id ID. number No
notes Notes. string No
net_cost_price Net cost price. number No
currency_code Currency code. string No
cost_price_duty_rate Duty rate. number No
created Created date. date No
modified Last modified date. date No
currency Currency. SummarisedCurrency Yes
transports Transports. ProductComponentCostPriceTransports Yes
transport_total Summary of goodsin item’s transport costs in the warehouse’s currency. number No
transport_total_po_curr Summary of goodsin item’s transport costs in the purchase order’s currency. number No

ProductComponentCustomsCodes

Product component customs codes.

Fields

Key Description Type Expanding
id ID of the customs code. number No
code The HS code. string No
name Name of the code. string No
duty_rate The duty rate applied to this customs code. number No
organisation_id The organisation that this code applies to. number No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
organisation Organisation Organisations Yes

ProductComponentDoqTypes

Product component DOQ Types.

Fields

Key Description Type Expanding
id ID of the component DOQ. number No
code Short code for the DOQ. enum * see below No
name Name of the DOQ type. string No

Enums

Field Values
code INNER_PACK, MASTER_CASE, PALLET, SINGLE_PRODUCT

ProductComponentDoqs

Product component DOQ.

Fields

Key Description Type Expanding
id ID of the component DOQ. number No
quantity Quantity represented by the DOQ. number No
weight Total weight in KG. number No
depth Total depth in MM. number No
width Total width in MM. number No
height Total height in MM. number No
shippable Can this DOQ value be shipped without additional packaging. boolean No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
type DOQ type. ProductComponentDoqTypes Yes

ProductComponentInstances

Component instance.

Fields

Key Description Type Expanding
id The component instance id. number No
product_component_id The component this instance is attached to. number No
component The product component. ProductComponents Yes

ProductComponentLandedPrices

Landed prices.

Fields

Key Description Type Expanding
id ID. number No
product_component_instance_id Product component instnace ID. number No
product_component_id Product component ID. number No
net_cost_price Net cost price. number No
cost_price_currency_code Cost price currency code. string No
cost_currency Cost price currency. Currencies Yes
cost_price_duty_rate Cost price duty rate. number No
notes Notes. string No
landed_price_currency_code Landed price currency code. string No
landed_currency Landed price currency. SummarisedCurrency Yes
stock Stock. number No
created Created date in BladePRO. date No
landed_price Landed price. number No

ProductComponentSalesSummary

Sales summary for a product.

Fields

Key Description Type Expanding
1_week Sold in the last week. number No
1_month Sold in the last month. number No
3_months Sold in the last three months. number No
6_months Sold in the last six months. number No
1_year Sold in the last year. number No
lifetime Sold in the product’s lifetime. number No

ProductComponentStockSummary

Stock summary for a product component.

Fields

Key Description Type Expanding
total Total stock. number No
total_saleable Total saleable stock. number No
saleable Saleable stock. number No
pickable Pickable stock. number No
available Available stock. number No
allocated Allocated stock. number No
reserved Reserved stock. number No
misc Miscellaneous stock. number No
gistock Goodsin stock. number No
expected Stock expected to arrive. number No
picked Picked stock. number No
under_investigation Stock under investigation. number No

ProductComponentSuppliers

Product Suppliers.

Fields

Key Description Type Expanding
id ID. number No
organisation_id Parent organisation ID. number No
name Name. string No
active Is the supplier active? boolean No
port_id ID of shipping port. number No
currency_code Code of currency. string No
nominal_code Nominal code. string No
xero_code Accounting code. string No
organisation_tax_id Tax ID. number No
currency Currency. SummarisedCurrency Yes

ProductComponents

Product component.

Fields

Key Description Type Expanding
id ID of the product variation. number No
status The status of the product component. enum * see below No
sku The unique stock keeping unit. string No
barcode Picking Barcode. string No
perishable Is the product perishable. boolean No
fragile Is the product fragile. boolean No
battery Does the product contain a battery. boolean No
dangerous Is the product dangerous. boolean No
organic Is the product organic. boolean No
what_is_it Customs - What is the product. string No
made_of Customs - What is the product made of. string No
used_for Customs - What is the product used for. string No
customs_country_of_origin_country_id Customs - Country of origin. number No
product_component_customs_code_id Customs - HS Code. number No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
doqs Component DOQs. array<ProductComponentDoqs> Yes
last_cost Last cost. ProductComponentLandedPrices Yes
stock Stock summary. ProductComponentStockSummary Yes
count_product_component_batches Count of batches. number No
sales Sales summary. ProductComponentSalesSummary Yes

Enums

Field Values
status active, draft, discontinued

ProductResourceMetadatas

Stores arbitrary data against a product.

Fields

Key Description Type Expanding
key Key the piece of stored metadata is identified with. string No
value Stored data metadata. string No

ProductVariationComponents

Variation component.

Fields

Key Description Type Expanding
product_variation_id The variation that the component is attached to. number No
product_component_instance_id The component instance. number No
quantity Total quantity of this component inside the variation. number No
instance The product component instance. ProductComponentInstances Yes

ProductVariationDescriptions

Variation descriptions.

Fields

Key Description Type Expanding
id The product variation description id. number No
product_variation_id The product variation id. number No
locale_id The description locale. number No
name The product name. string No
full_description The description of the product. string No
created The created date. date No
modified The last modified date. date No
locale The locale for this description. Locales Yes

ProductVariationStockDataSummary

Variation stock breakdown.

Fields

Key Description Type Expanding
product_variation_id Product variation ID. number No
warehouse_id Warehouse ID. number No
warehouse_code Warehouse code. string No
warehouse_name Warehouse name. string No
total Total number of units available. number No
total_saleable Total number of units saleable. number No
saleable Saleable units. number No
available Available units. number No
allocated Allocated units. number No
misc Misc units. number No
expected Expected units. number No
under_investigation Stock under investigation. number No

ProductVariationTags

A tag linked to a product variation.

Fields

Key Description Type Expanding
id Tag ID. number No
name The tag name. string No
shortcode The tag code. string No
description The tag description. string No
created The date the tag was added created. date No

ProductVariationTypes

Product variation type data.

Fields

Key Description Type Expanding
id ID of the variation type. number No
name Name of the product variation type. string No
type Category of the product variation type. string No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No

ProductVariations

Marketplace listable products’ data.

Fields

Key Description Type Expanding
id ID of the product variation. number No
product_id ID of the parent product. number No
status The status of the product variation. enum * see below No
sku The unique stock keeping unit. string No
barcode The product variation barcode. string No
product_variation_type_id ID of the product variation type. number No
discontinued_date The date the product was discontinued on. date No
despatch_instructions Instructions for the staff. string No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
product Product. Products Yes
type The product variation type. ProductVariationTypes Yes
components The variation components. array<ProductVariationComponents> Yes
descriptions The variation descriptions. array<ProductVariationDescriptions> Yes
primary_component The primary component. array<ProductComponents> Yes
tags The variation tags. array<Tags> Yes
stock_data_summaries Stock. array<ProductVariationStockDataSummary> Yes

Enums

Field Values
status active, draft, discontinued

Products

Product data. Products are grouping entries and may represent multiple different kinds of physical products.

Fields

Key Description Type Expanding
id ID of the product. number No
product_channel_id ID of the product channel. number No
product_brand_id ID of the parent brand. number No
product_category_id ID of the parent product category. number No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
channel The parent product channel. ProductChannels Yes
brand The parent brand. ProductBrands Yes
product_category The parent product category. ProductChannelCategories Yes
variations The product variations. array<ProductVariations> Yes

PurchaseOrderAudits

Add a message to the purchase order timeline.

Fields

Key Description Type Expanding
message The timeline entry. string No

PurchaseOrderGoodsinContainers

A container for a goodsin.

Fields

Key Description Type Expanding
id ID. number No
size Size. enum * see below No
expected_quantity Expected quantity. number No
received_quantity Expected quantity. number No
created Created date in BladePRO. date No
modified Last modified date. date No

Enums

Field Values
size 20FT, 40FT, 40FT-HC

PurchaseOrderGoodsinItemIssues

Identified issue during receiving.

Fields

Key Description Type Expanding
id ID. number No
name Name. string No
description Description. string No
photo_required Is a photo required when this issue is encountered? boolean No

PurchaseOrderGoodsinItems

Received items for a goodsin.

Fields

Key Description Type Expanding
id ID. number No
product_component_id Product component ID. number No
quantity Received quantity. number No
expiry_date Expiry date. date No
product_component_batch_id Batch ID. number No
purchase_order_goodsin_item_issue_id Issue ID. number No
product_component_cost_price_id Cost price ID. number No
created Created date. date No
modified Last modified date. date No
component Product component. ProductComponents Yes
batch Product component batch. ProductComponentBatches Yes
issue Identified issue during receiving. PurchaseOrderGoodsinItemIssues Yes
cost Cost price used. ProductComponentCostPrices Yes
count_audit_ids Count of timeline items against the goodsin item. number No

PurchaseOrderGoodsins

One shipment to a purchase order.

Fields

Key Description Type Expanding
id ID. number No
source Source. string No
shipping_company Shipping company. string No
tracking_number Tracking number. string No
expected_pallets Number of expected pallets. number No
expected_cartons Number of expected cartons. number No
received_pallets Number of received pallets. number No
received_cartons Number of received cartons. number No
received_container Type of received container. enum * see below No
container_shipment Is this a container shipment? boolean No
container_size Size of the container. enum * see below No
expected_delivery_date Expected delivery date. date No
expected_delivery_time_slot Expected delivery time slot. enum * see below No
preferred_delivery_date Preferred delivery date. date No
preferred_delivery_time_slot Preferred delivery time slot. enum * see below No
shipping_method Shipping method. enum * see below No
port_id ID of the port. number No
purchase_order_goodsin_shipping_term_id Shipping term ID. number No
status Goodsin status. enum * see below No
is_third_party Is this a third party goodsin? boolean No
third_party_emails Third party email addresses. string No
third_party_contact_name Third party contact names. string No
booking_requested Booking requested date. date No
booking_approved_by User ID. number No
booking_approved Booking approved date. date No
unique_booking_reference Booking reference. string No
check_in_by Check in by date. date No
transport_costs_locked Date the transport costs have been locked on. date No
lock_user_id ID of the locking user. number No
receiving_started Date of the start of receving. date No
receiving_completed Date of the end of receving. date No
checkin_started Date of the start of checkin. date No
checkin_completed Date of the end of checkin. date No
putaway_started Date of the start of putaway. date No
putaway_completed Date of the end of putaway. date No
ignore_from_billing Should the goodsin be ignored from billing? boolean No
returns_damaged_count The amount returned because of damage. number No
returns_unidentifiable_count The amount returned because the items had been unidentifiable. number No
created Created date. date No
modified Last modified date. date No
containers Received containers. array<PurchaseOrderGoodsinContainers> Yes
port Shipping port. Ports Yes
consignment_qualities Quality descriptions. array<ConsignmentQualities> Yes
items Received items. array<PurchaseOrderGoodsinItems> Yes

Enums

Field Values
received_container 20FT, 40FT, 40FT-HC
container_size none, half, full
expected_delivery_time_slot am, pm
preferred_delivery_time_slot am, pm
shipping_method air, sea, road, ```` |
status awaiting_booking, awaiting_shipping, awaiting_receiving, awaiting_checkin, awaiting_putaway, completed, cancelled, awaiting_collection

PurchaseOrderLines

An item ordered in a purchase order.

Fields

Key Description Type Expanding
id ID. number No
product_component_id Product component ID. number No
name Product component name. string No
quantity Requested quantity. number No
cost_price Cost price. number No
duty Duty. number No
created Created date in BladePRO. date No
modified Last modified date. date No
component Product component. ProductComponents Yes
count_audit_ids Count of timeline entries against the line. number No
doq Denominations of quantity. ProductComponentDoqs Yes

PurchaseOrderPayments

Payments made towards purchase order suppliers.

Fields

Key Description Type Expanding
id ID. number No
name Name. string No
amount Amount paid. number No
currency_code Currency code. string No
effective_date Effective date. date No
currency Currency. SummarisedCurrency Yes

PurchaseOrderReferences

Purchase order references.

Fields

Key Description Type Expanding
name Name. string No
value Value. string No

PurchaseOrderResourceMetadatas

Stores arbitrary data against a purchase order.

Fields

Key Description Type Expanding
key Key the piece of stored metadata is identified with. string No
value Stored data metadata. string No

PurchaseOrderTags

A tag linked to a purchase order.

Fields

Key Description Type Expanding
id Tag ID. number No
name The tag name. string No
shortcode The tag code. string No
description The tag description. string No
created The date the tag was added created. date No

PurchaseOrderTypes

Types of purchase orders

Fields

Key Description Type Expanding
id ID. number No
code Code. string No
name Name. string No
description Description. string No

PurchaseOrders

Purchase orders.

Fields

Key Description Type Expanding
id ID. number No
product_channel_id ID of the product channel. number No
purchase_order_type_id ID of the purchase order type. number No
product_component_supplier_id Supplier ID. number No
warehouse_id Warehouse ID. number No
currency_id Currency ID. number No
status Purchase order status. enum * see below No
notification_email_addresses Notification email address. string No
comments Comments. string No
reject_reason Reason for rejecting the purchase order. string No
approved_date Date the purchase order was accepted on. date No
completed_date Date of completion. date No
discount Discount amount. number No
discount_type Discount type. enum * see below No
created Created date. date No
modified Last modified date. date No
warehouse Warehouse. SummarisedWarehouse Yes
currency Currency. SummarisedCurrency Yes
channel Product channel details. CachedProductChannel Yes
type Purchase order type. PurchaseOrderTypes Yes
supplier Supplier. ProductComponentSuppliers Yes
lines Ordered lines. array<PurchaseOrderLines> Yes
payments Payments made to suppliers. array<PurchaseOrderPayments> Yes
goodsins List of goodsins. array<PurchaseOrderGoodsins> Yes
tags List of applied tags. array<Tags> Yes
references List of references. array<PurchaseOrderReferences> Yes

Enums

Field Values
status draft, cancelled, awaiting_approval, awaiting_booking, rejected, open, completed, discrepancies, pending_completion
discount_type percentage, value

RegionSettings

Settings data for geographical regions.

Fields

Key Description Type Expanding
id ID of the region setting. number No
region_id The ID of the region the setting relates to. number No
region The region the setting relates to. Regions Yes
setting Descriptive name of the setting. string No
value Value of the setting. string No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No

Regions

Geographical region data.

Fields

Key Description Type Expanding
id ID of the region. number No
name Descriptive name of the region. string No
region_settings Settings of the region. array<RegionSettings> Yes

ReturnResourceMetadatas

Stores arbitrary data against a return.

Fields

Key Description Type Expanding
key Key the piece of stored metadata is identified with. string No
value Stored data metadata. string No

Shipments

Data related to a shipment.

Fields

Key Description Type Expanding
shipping_service Shipping service used. ShippingServices Yes

ShippingCourierAccounts

Shipping courier account data.

Fields

Key Description Type Expanding
name Account name. string No
courier The courier. CachedNameAndCode Yes

ShippingServices

Customer order shipments.

Fields

Key Description Type Expanding
name Service name. string No
code Service code. string No
courier_account Courier account. ShippingCourierAccounts Yes

StockAvailability

Variation specific data.

Fields

Key Description Type Expanding
id The product variation id. number No
sku The product SKU. string No
barcode The product variation barcode. string No
stocks Stocks. array Yes

SummarisedCountry

A country.

Fields

Key Description Type Expanding
name Name. string No
iso_2 The 2-letter ISO abbreviation. string No
iso_3 The 3-letter ISO abbreviation. string No

SummarisedCurrency

A currency.

Fields

Key Description Type Expanding
code Code. string No
name Name. string No
symbol Symbol. string No

SummarisedLocale

Locale / Language.

Fields

Key Description Type Expanding
id Locale id. number No
name Name of the locale. string No
code Short code for the locale. string No
created When the locale was created. date No
modified When the locale was modified. date No

SummarisedProductCategory

Summary of a product category.

Fields

Key Description Type Expanding
id The ID of the product category. number No
name The name of the product category. string No

SummarisedProductVariationType

Top level product data.

Fields

Key Description Type Expanding
id The product type id. number No
name The product type name. string No
type Category of the product variation type. string No

SummarisedTag

A tag.

Fields

Key Description Type Expanding
name Name. string No
shortcode Short code. string No
description Short description. string No

SummarisedWarehouse

A warehouse.

Fields

Key Description Type Expanding
short_code Code. string No
name Name. string No
country Country. SummarisedCountry Yes

SyncedMarketplaceListing

Sync marketplace listing

Fields

Key Description Type Expanding
listing_reference The parent or first marketplace reference for the listing as provided in the request. string No
listing_variation_reference The child or second marketplace reference for the listing as provided in the request. string No
sku The product SKU for the listing. string No
result The outcome for this listing. enum * see below No
error The marketplace reference for the listing as provided in the request. string No

Enums

Field Values
result unchanged, created, updated, removed, errored

Tags

A tag.

Fields

Key Description Type Expanding
id Tag ID. number No
name The tag name. string No
shortcode The tag code. string No
description The tag description. string No
created The date the tag was added created. date No

Templates

Template.

Fields

Key Description Type Expanding
id ID of the template. number No
organisation_id ID of the organisation. number No
template_category_id ID of the template category. number No
template_category_code Code of the template category. number No
name Name of the template. string No
status Orientation. enum * see below No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No

Enums

Field Values
status portrait, landscape

VendorOrderItemStatuses

A status for a vendor order item.

Fields

Key Description Type Expanding
id The status’ unique identifier. number No
name Name of the status. string No
group Name of the status’ group. string No
accepted Has the vendor order line been accepted? boolean No
created Created timestamp in BladePRO. date No
modified Last modified timestamp in BladePRO. date No

VendorOrderItems

A line in a vendor order.

Fields

Key Description Type Expanding
id The vendor order item’s unique identifier. number No
vendor_order_id The vendor order’s unique identifier. number No
vendor_order_item_status_id The vendor order item status’ unique identifier. number No
model_number The product’s model number. string No
asin The product’s ASIN. string No
sku The product’s SKU. string No
product_variation_id The product variation’s unique identifier. number No
name The product’s name. string No
expected_delivery_date Expected delivery date. date No
confirmed_delivery_date Confirmed delivery date. date No
submitted_quantity Submitted quantity, as requested by the vendor. number No
accepted_quantity Accepted quantity, as confirmed. number No
received_quantity Received quantity. number No
unit_cost Unit cost. number No
created Created timestamp in BladePRO. date No
modified Last modified timestamp in BladePRO. date No
vendor_order The vendor order. VendorOrders Yes
status The vendor order item status. VendorOrderItemStatuses Yes
product_variation The product variation. ProductVariations Yes

VendorOrderResourceMetadatas

Stores arbitrary data against a vendor order.

Fields

Key Description Type Expanding
key Key the piece of stored metadata is identified with. string No
value Stored data metadata. string No

VendorOrders

A vendor order.

Fields

Key Description Type Expanding
id The vendor order’s unique identifier. number No
code Identifier created by vendor. string No
status Status in BladePRO. enum * see below No
vendor Vendor identifier. string No
ordered_on Vendor order created date at vendor’s side. date No
deliver_from Delivery window’s start date. date No
deliver_to Delivery window’s end date. date No
freight_terms Vendor’s freight terms. string No
payment_method Vendor’s payment method. string No
payment_terms Vendor’s payment terms. string No
purchasing_entity Vendor description. string No
delivery_party Delivery Party. string No
order_channel_id Order channel’s unique identifier. number No
currency_id ID of the currency. number No
warehouse_id ID of the fulfilling warehouse. number No
finalised Finalised date. date No
address_first_name First name part of the address. string No
address_last_name Last name part of the address. string No
address_company Company part of the address. string No
address_line_one Line one of the address. string No
address_line_two Line two of the address. string No
address_line_three Line three of the address. string No
address_postcode Postcode part of the address. string No
address_town Town part of the address. string No
address_county County part of the address. string No
address_country_id ID of the country of the address. string No
created Created timestamp in BladePRO. date No
modified Last modified timestamp in BladePRO. date No
order_channel The order channel. OrderChannels Yes
currency The currency. Currencies Yes
warehouse The fulfilling warehouse. Warehouses Yes
address_country The address country. Countries Yes
items List of items in the vendor order. array<VendorOrderItems> Yes

Enums

Field Values
status unconfirmed, processing, confirmed, void

VirtualStocks

A stock entry.

Fields

Key Description Type Expanding
id ID. number No
virtual_warehouse_location_id Location ID. number No
product_variation_id Product variation ID. number No
quantity Quantity in stock. number No
expiry_date Expiry date. date No
created Created timestamp in BladePRO. date No
modified Last modified date. date No
location The virtual warehouse location. VirtualWarehouseLocations Yes
product_variation Product variation. ProductVariations Yes

VirtualWarehouseLocations

A location in a virtual warehouse.

Fields

Key Description Type Expanding
id ID. number No
barcode Identifier of the location. string No
virtual_warehouse_id The ID of the virtual warehouse the location belongs to. number No
active Is the location active? boolean No
sellable Should the stock in this location be considered sellable? boolean No
created Created timestamp in BladePRO. date No
warehouse The virtual warehouse. VirtualWarehouses Yes

VirtualWarehouses

Storages that are outside of BladePRO’s control, such as showrooms, or stock at Amazon’s warehouse.

Fields

Key Description Type Expanding
id ID. number No
name Name. string No
description Description. string No
active Is the warehouse currently active? boolean No
api_managed_only Is the warehouse managed by an API? boolean No
location_creation_enabled Is it possible to create locations? boolean No
created Created timestamp in BladePRO. date No
locations List of locations. array<VirtualWarehouseLocations> Yes

Warehouses

A warehouse.

Fields

Key Description Type Expanding
id The warehouse’s unique identifier. number No
name Name. string No
short_code Unique short code. string No
latitude Latitude coordinate. number No
longitude Longitude coordinate. number No
country_id ID of the warehouse’s country. number No
active Is the warehouse switched on? boolean No
currency_id ID of the warehouse’s currency. number No
virtual Is the warehouse virtual? boolean No
return_warehouse_id ID of the return warehouse, if the returns for this warehouse are redirected. number No
created Created timestamp in BladePRO. date No
modified Last modified timestamp in BladePRO. date No
currency The warehouse’s currency. Currencies Yes
country The warehouse’s country. Countries Yes
return_warehouse The return warehouse, if the returns for this warehouse are redirected. Warehouses Yes

Tasks

Fields

Key Description Type Expanding
task_reference Reference for accessing the task. string No

WebhookOrderCancelled

Order cancelled webhook.

Fields

Key Description Type Expanding
id ID. number No
status Status. enum * see below No
date_placed Placed date. date No
source Source. string No
order Order parent. WebhookOrderCancelledOrder Yes
warehouse Warehouse. WebhookOrderCancelledWarehouse Yes
shipping_address Shipping address. WebhookOrderCancelledAddress Yes
attributes Attributes. array<WebhookOrderCancelledAttribute> Yes
tags Tags. array<WebhookOrderCancelledTag> Yes

Enums

Field Values
status draft, awaiting_allocation, hung, returned, awaiting_payment, awaiting_picking, awaiting_despatch, backorder_release, backorder, cancelled, return_open, item_refunded, item_replaced, awaiting_collection, despatched

WebhookOrderCancelledAddress

Address data.

Fields

Key Description Type Expanding
first_name First name. string No
last_name Last name. string No
company Company name. string No
email Email. string No
country The address country. WebhookOrderCancelledCountry Yes

WebhookOrderCancelledAttribute

An attribute stored against an order.

Fields

Key Description Type Expanding
name Name. string No
value Value. string No

WebhookOrderCancelledCountry

Country data.

Fields

Key Description Type Expanding
id The country’s unique identifier. number No
name Name. string No
iso_2 ISO2 description. string No
iso_3 ISO3 description. string No

WebhookOrderCancelledOrder

Parent order.

Fields

Key Description Type Expanding
id ID. number No
reference Unique reference. string No
status Order status. enum * see below No
order_channel_id Order channel ID. number No
brand_id Brand ID. number No
currency Currency. WebhookOrderCancelledOrderCurrency Yes
channel Channel. WebhookOrderCancelledOrderChannel Yes

Enums

Field Values
status draft, open, complete, cancelled

WebhookOrderCancelledOrderChannel

Channel data.

Fields

Key Description Type Expanding
id BladePRO id for channel. number No
organisation_id Organisation id. number No
name Name. string No
outbound_email Outbound email. string No

WebhookOrderCancelledOrderCurrency

Currency data.

Fields

Key Description Type Expanding
id BladePRO id for currency. number No
name Name. string No
code Code. string No
symbol Symbol. string No

WebhookOrderCancelledTag

Tag on order.

Fields

Key Description Type Expanding
id Tag ID. number No
name The tag name. string No
shortcode The tag code. string No

WebhookOrderCancelledWarehouse

Warehouse data.

Fields

Key Description Type Expanding
id The warehouse’s unique identifier. number No
name Name. string No
short_code Unique short code. string No
country The warehouse’s country. WebhookOrderCancelledCountry Yes

WebhookOrderConfirmed

Order confirmed webhook.

Fields

Key Description Type Expanding
id ID. number No
status Status. enum * see below No
date_placed Placed date. date No
source Source. string No
order Order parent. WebhookOrderConfirmedOrder Yes
warehouse Warehouse. WebhookOrderConfirmedWarehouse Yes
shipping_address Shipping address. WebhookOrderConfirmedAddress Yes
attributes Attributes. array<WebhookOrderConfirmedAttribute> Yes
tags Tags. array<WebhookOrderConfirmedTag> Yes

Enums

Field Values
status draft, awaiting_allocation, hung, returned, awaiting_payment, awaiting_picking, awaiting_despatch, backorder_release, backorder, cancelled, return_open, item_refunded, item_replaced, awaiting_collection, despatched

WebhookOrderConfirmedAddress

Address data.

Fields

Key Description Type Expanding
first_name First name. string No
last_name Last name. string No
company Company name. string No
email Email. string No
country The address country. WebhookOrderConfirmedCountry Yes

WebhookOrderConfirmedAttribute

An attribute stored against an order.

Fields

Key Description Type Expanding
name Name. string No
value Value. string No

WebhookOrderConfirmedCountry

Country data.

Fields

Key Description Type Expanding
id The country’s unique identifier. number No
name Name. string No
iso_2 ISO2 description. string No
iso_3 ISO3 description. string No

WebhookOrderConfirmedOrder

Parent order.

Fields

Key Description Type Expanding
id ID. number No
reference Unique reference. string No
status Order status. enum * see below No
order_channel_id Order channel ID. number No
brand_id Brand ID. number No
currency Currency. WebhookOrderConfirmedOrderCurrency Yes

Enums

Field Values
status draft, open, complete, cancelled

WebhookOrderConfirmedOrderCurrency

Currency data.

Fields

Key Description Type Expanding
id BladePRO id for currency. number No
name Name. string No
code Code. string No
symbol Symbol. string No

WebhookOrderConfirmedTag

Tag on order.

Fields

Key Description Type Expanding
id Tag ID. number No
name The tag name. string No
shortcode The tag code. string No

WebhookOrderConfirmedWarehouse

Warehouse data.

Fields

Key Description Type Expanding
id The warehouse’s unique identifier. number No
name Name. string No
short_code Unique short code. string No
country The warehouse’s country. WebhookOrderConfirmedCountry Yes

WebhookOrderCreated

Order created webhook.

Fields

Key Description Type Expanding
id ID. number No
status Status. enum * see below No
date_placed Placed date. date No
source Source. string No
order Order parent. WebhookOrderCreatedOrder Yes
warehouse Warehouse. WebhookOrderCreatedWarehouse Yes
shipping_address Shipping address. WebhookOrderCreatedAddress Yes
lines Lines. array<WebhookOrderCreatedLine> Yes
attributes Attributes. array<WebhookOrderCreatedAttribute> Yes
tags Tags. array<WebhookOrderCreatedTag> Yes

Enums

Field Values
status draft, awaiting_allocation, hung, returned, awaiting_payment, awaiting_picking, awaiting_despatch, backorder_release, backorder, cancelled, return_open, item_refunded, item_replaced, awaiting_collection, despatched

WebhookOrderCreatedAddress

Address data.

Fields

Key Description Type Expanding
first_name First name. string No
last_name Last name. string No
company Company name. string No
email Email. string No
country The address country. WebhookOrderCreatedCountry Yes

WebhookOrderCreatedAttribute

An attribute stored against an order.

Fields

Key Description Type Expanding
name Name. string No
value Value. string No

WebhookOrderCreatedCountry

Country data.

Fields

Key Description Type Expanding
id The country’s unique identifier. number No
name Name. string No
iso_2 ISO2 description. string No
iso_3 ISO3 description. string No

WebhookOrderCreatedLine

Order line data.

Fields

Key Description Type Expanding
id ID. number No
transaction_sku SKU used during the transaction. string No
quantity Quantity ordered. number No
net_unit_principal Net unit principle. number No
net_unit_commission Net unit commission. number No
status Line status. enum * see below No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
variation Product variation. WebhookOrderCreatedProductVariation Yes

Enums

Field Values
status active, void

WebhookOrderCreatedOrder

Parent order.

Fields

Key Description Type Expanding
id ID. number No
reference Unique reference. string No
status Order status. enum * see below No
channel Order channel. WebhookOrderCreatedOrderChannel Yes
brand Brand. WebhookOrderCreatedOrderBrand Yes
currency Currency. WebhookOrderCreatedOrderCurrency Yes

Enums

Field Values
status draft, open, complete, cancelled

WebhookOrderCreatedOrderBrand

Brand data.

Fields

Key Description Type Expanding
id ID of the brand. number No
name Name of the brand. string No

WebhookOrderCreatedOrderChannel

Order channel data.

Fields

Key Description Type Expanding
id ID of the channel. number No
name The name of the channel. string No
short_code A short string identifier of the channel. string No

WebhookOrderCreatedOrderCurrency

Currency data.

Fields

Key Description Type Expanding
id BladePRO id for currency. number No
name Name. string No
code Code. string No
symbol Symbol. string No

WebhookOrderCreatedProductVariation

Product variation data.

Fields

Key Description Type Expanding
id ID of the product variation. number No
product_id ID of the parent product. number No
sku The unique stock keeping unit. string No

WebhookOrderCreatedTag

Tag on order.

Fields

Key Description Type Expanding
id Tag ID. number No
name The tag name. string No
shortcode The tag code. string No

WebhookOrderCreatedWarehouse

Warehouse data.

Fields

Key Description Type Expanding
id The warehouse’s unique identifier. number No
name Name. string No
short_code Unique short code. string No
country The warehouse’s country. WebhookOrderCreatedCountry Yes

WebhookOrderDespatched

Order despatched webhook.

Fields

Key Description Type Expanding
id ID. number No
status Status. enum * see below No
date_placed Placed date. date No
despatch_date Despatched date. date No
source Source. string No
order Order parent. WebhookOrderDespatchedOrder Yes
warehouse Warehouse. WebhookOrderDespatchedWarehouse Yes
shipping_address Shipping address. WebhookOrderDespatchedAddress Yes
attributes Attributes. array<WebhookOrderDespatchedAttribute> Yes
despatch_attributes Product Component Despatched Attributes. array<WebhookOrderProductComponentDespatchedAttribute> Yes
tags Tags. array<WebhookOrderDespatchedTag> Yes
shipping Shipping details. WebhookOrderDespatchedShipping Yes

Enums

Field Values
status draft, awaiting_allocation, hung, returned, awaiting_payment, awaiting_picking, awaiting_despatch, backorder_release, backorder, cancelled, return_open, item_refunded, item_replaced, awaiting_collection, despatched

WebhookOrderDespatchedAddress

Address data.

Fields

Key Description Type Expanding
first_name First name. string No
last_name Last name. string No
company Company name. string No
email Email. string No
country The address country. WebhookOrderDespatchedCountry Yes

WebhookOrderDespatchedAttribute

An attribute stored against an order.

Fields

Key Description Type Expanding
name Name. string No
value Value. string No

WebhookOrderDespatchedCountry

Country data.

Fields

Key Description Type Expanding
id The country’s unique identifier. number No
name Name. string No
iso_2 ISO2 description. string No
iso_3 ISO3 description. string No

WebhookOrderDespatchedOrder

Parent order.

Fields

Key Description Type Expanding
id ID. number No
reference Unique reference. string No
status Order status. enum * see below No
order_channel_id Order channel ID. number No
brand_id Brand ID. number No
currency Currency. WebhookOrderDespatchedOrderCurrency Yes
channel Channel. WebhookOrderDespatchedOrderChannel Yes

Enums

Field Values
status draft, open, complete, cancelled

WebhookOrderDespatchedOrderChannel

Channel data.

Fields

Key Description Type Expanding
id BladePRO id for channel. number No
organisation_id Organisation id. number No
name Name. string No
outbound_email Outbound email. string No

WebhookOrderDespatchedOrderCurrency

Currency data.

Fields

Key Description Type Expanding
id BladePRO id for currency. number No
name Name. string No
code Code. string No
symbol Symbol. string No

WebhookOrderDespatchedShipping

Shipping details.

Fields

Key Description Type Expanding
courier_name Name of the shipping courier. string No
service_name Name of the shipping service. string No
tracking Tracking numbers. array<WebhookOrderDespatchedShippingTracking> Yes

WebhookOrderDespatchedShippingTracking

Tracking details.

Fields

Key Description Type Expanding
tracking_number Tracking number. string No
tracking_url Tracking url. string No

WebhookOrderDespatchedTag

Tag on order.

Fields

Key Description Type Expanding
id Tag ID. number No
name The tag name. string No
shortcode The tag code. string No

WebhookOrderDespatchedWarehouse

Warehouse data.

Fields

Key Description Type Expanding
id The warehouse’s unique identifier. number No
name Name. string No
short_code Unique short code. string No
country The warehouse’s country. WebhookOrderDespatchedCountry Yes

WebhookOrderProductComponentDespatchedAttribute

Attribute of Despatched Product Component.

Fields

Key Description Type Expanding
sku Product SKU. string No
attribute_name Attribute name. string No
attribute_value Attribute value. string No
order_goodsout_line_id The line reference that the attribute was applied to. number No
order_goodsout_line_item_id The line item reference that the attribute was applied to. number No

WebhookVendorOrderFinalised

Vendor order finalise webhook.

Fields

Key Description Type Expanding
id Unique BladePRO identifier for the vendor order. number No
code Reference for the vendor order. string No
vendor Vendor. string No
status Status of the vendor order. string No
delivery_party Delivery Party. string No
address_first_name Delivery Address: First name. string No
address_last_name Delivery Address: Last name. string No
address_company Delivery Address: Company. string No
address_line_one Delivery Address: Line one. string No
address_line_two Delivery Address: Line two. string No
address_line_three Delivery Address: Line three. string No
address_postcode Delivery Address: Postcode. string No
address_town Delivery Address: Town. string No
address_county Delivery Address: county. string No
finalised Datetime for when the vendor order was finalised. date No
order_channel The vendor order channel. WebhookVendorOrderFinalisedOrderChannel Yes
country Delivery country. WebhookVendorOrderFinalisedCountry Yes
selected_warehouse The warehouse from where the stock will be despatched from. WebhookVendorOrderFinalisedWarehouse Yes
currency Currency of the vendor order. WebhookVendorOrderFinalisedCurrency Yes
items Vendor items. array<WebhookVendorOrderFinalisedItem> Yes

WebhookVendorOrderFinalisedCountry

Delivery location.

Fields

Key Description Type Expanding
id BladePRO identifier for the country. number No
name Name of the country. string No
iso_2 ISO 2 Code. string No
iso_3 ISO 3 code. string No

WebhookVendorOrderFinalisedCurrency

vendor order currency.

Fields

Key Description Type Expanding
id BladePRO id for currency. number No
name Name. string No
code Code. string No
symbol Symbol. string No

WebhookVendorOrderFinalisedItem

item.

Fields

Key Description Type Expanding
id BladePRO identifier for the vendor order item. number No
product_variation_id BladePRO identifier for product. number No
sku sku. string No
submitted_quantity Vendor Submitted Quantity. number No
accepted_quantity Quantity accepted in BladePRO. number No
unit_cost Net Unit Cost number No
status Status string No
expected_delivery_date Expected Delivery Date date No

WebhookVendorOrderFinalisedOrderChannel

vendor order finalise webhook.

Fields

Key Description Type Expanding
id Channel id for the vendor order. number No
name Channel name for the vendor order. string No

WebhookVendorOrderFinalisedWarehouse

Warehouse from which the vendor order will be despatched from.

Fields

Key Description Type Expanding
id BladePRO identifier for the warehouse. number No
name Name of the warehouse. string No
country Warehouse location. WebhookVendorOrderFinalisedWarehouseCountry Yes

WebhookVendorOrderFinalisedWarehouseCountry

Warehouse location.

Fields

Key Description Type Expanding
id BladePRO identifier for the country. number No
name Name of the country. string No
iso_2 ISO 2 Code. string No
iso_3 ISO 3 code. string No

Get Preference Value

GET /v1/preferences/:code

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/preferences/my_preference", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/preferences/my_preference', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/preferences/my_preference",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/preferences/my_preference' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "value": "12.43",
        "modified": "2019-11-25T14:52:56.000Z"
    }
}

Returns the value of a preference.

Parameter Regular Expressions

Return Type

ApplicationInstancePreferences

Scopes

This endpoint is only available for users with scope APP::MISC.

Set Preference Value

PUT /v1/preferences/:code

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/preferences/my_preference", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/preferences/my_preference', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/preferences/my_preference",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/preferences/my_preference' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "value": "12.43",
        "modified": "2019-11-25T14:52:56.000Z"
    }
}

Sets the value of a preference.

Parameter Regular Expressions

Request Body

SetValue

Return Type

ApplicationInstancePreferences

Types for the Request Body

SetValue (root level)

Key Description Types Restrictions
value The value. string required

Scopes

This endpoint is only available for users with scope APP::MISC.

Activate Application

PUT /v1/apps/activate

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/apps/activate", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/apps/activate', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/apps/activate",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/apps/activate' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "name": "Active",
        "code": "ACTIVE",
        "description": "The application is live and active."
    }
}

Mark the application’s installation as active.

Request Body

Ignored.

Return Type

ApplicationInstanceStatuses

Scopes

This endpoint is only available for users with scope APP::MISC.

Deactivate Application

PUT /v1/apps/deactivate

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/apps/deactivate", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/apps/deactivate', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/apps/deactivate",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/apps/deactivate' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "name": "Active",
        "code": "ACTIVE",
        "description": "The application is live and active."
    }
}

Mark the application’s installation as deactivated.

Request Body

Ignored.

Return Type

ApplicationInstanceStatuses

Scopes

This endpoint is only available for users with scope APP::MISC.

App Instance Info

GET /v1/apps/info

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/apps/info?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/apps/info?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/apps/info?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/apps/info?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "nickname": "My web store",
        "status": {
            "name": "Active",
            "code": "ACTIVE",
            "description": "The application is live and active."
        }
    }
}

Get a summary of the logged in application instance.

Return Type

ApplicationInstanceInfos

Available expands

Field Return Type Description
status ApplicationInstanceStatuses Represents a status for an application instance.

Scopes

This endpoint is only available for users with scope APP::MISC.

Get Marketplace Application Settings

GET /v1/apps/marketplace/settings

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/apps/marketplace/settings?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/apps/marketplace/settings?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/apps/marketplace/settings?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/apps/marketplace/settings?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "currency_id": 1,
        "locale_id": 1,
        "order_channel_id": 321,
        "primary_warehouse_id": 1,
        "order_import_grace_period_minutes": 0,
        "ignore_orders_created_before": null,
        "allow_multi_location_support": 0,
        "currency": {
            "code": "GBP",
            "name": "British Pound",
            "symbol": "£"
        },
        "locale": {
            "id": 1,
            "name": "English",
            "code": "en",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        },
        "order_channel": {
            "id": 321,
            "organisation_id": 321,
            "name": "Demo Channel",
            "short_code": "DEMO",
            "status": "active",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "tax": {
                "id": 1,
                "name": "standard",
                "code": "20",
                "rate": 20,
                "description": "standard 20%",
                "active": true,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            }
        },
        "primary_warehouse": {
            "short_code": "CHR",
            "name": "Christchurch"
        },
        "warehouses": [
            {
                "short_code": "CHR",
                "name": "Christchurch"
            }
        ]
    }
}

Returns the main configuration settings for an app of type Marketplace.

Return Type

MarketplaceApplicationInstanceSettings

Available expands

Field Return Type Description
currency SummarisedCurrency A currency.
locale SummarisedLocale Locale / Language.
order_channel OrderChannels Customer order groups.
order_channel.tax OrganisationTaxes Organisation tax data.
primary_warehouse SummarisedWarehouse A warehouse.
primary_warehouse.country SummarisedCountry A country.
warehouses array<SummarisedWarehouse> A warehouse.
warehouses.country SummarisedCountry A country.

Scopes

This endpoint is only available for users with scope APP::MISC.

Get Demand Planning Application Settings

GET /v1/apps/demand_planning/settings

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/apps/demand_planning/settings", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/apps/demand_planning/settings', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/apps/demand_planning/settings",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/apps/demand_planning/settings' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "product_channel_id": 123,
        "organisation_id": 123,
        "warehouse_code": "TRAI"
    }
}

Returns the main configuration settings for an app of type Demand Planning.

Return Type

DemandPlanningApplicationInstanceSettings

Scopes

This endpoint is only available for users with any of these scopes: APP::PRODUCTS::MANAGE, APP:PURCHASE-ORDERS::MANAGE.

Login

POST /v1/auth/login

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/auth/login", [
    "body" => json_encode([
        "username" => "my-login",
        "password" => "my-password",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/auth/login', {
  username: "my-login",
  password: "my-password",
}, {
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/auth/login",
    body: {
        "username": "my-login",
        "password": "my-password"
    },
    headers: {
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/auth/login' \
--header 'Content-Type: application/json' \
--data-raw '{
    "username": "my-login",
    "password": "my-password"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "session_token": "wH45uWbrWvIQN6ivBBGlbN5jJ3c83vWaXsOL0OkdvMCvw8SM3ZKhrWjrhArys6OgRcO7sYOQNIRba5a3KZSsXp4fxZRbzaoyXs6Y",
        "expiry": "2025-05-13T13:50:31.000Z"
    }
}

Log into BladePRO.

Request Body

Login

Return Type

Auth

Types for the Request Body

Login (root level)

Key Description Types Restrictions
username The username. string required
not null
min length is 2
password The password. string required
not null
min length is 3

Scopes

This endpoint is available to all users.

GDPR Request

POST /v1/gdpr

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/gdpr", [
    "body" => json_encode([
        "message" => "Customer John Smith (#23) has requested a redaction.",
        "details" => [
            "name" => "John Smith",
            "id" => "23",
            "email" => "john.smith@nowhere.com",
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/gdpr', {
  message: "Customer John Smith (#23) has requested a redaction.",
  details: {
    name: "John Smith",
    id: "23",
    email: "john.smith@nowhere.com",
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/gdpr",
    body: {
        "message": "Customer John Smith (#23) has requested a redaction.",
        "details": {
            "name": "John Smith",
            "id": "23",
            "email": "john.smith@nowhere.com"
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/gdpr' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "message": "Customer John Smith (#23) has requested a redaction.",
    "details": {
        "name": "John Smith",
        "id": "23",
        "email": "john.smith@nowhere.com"
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 34
    }
}

Submit a GDPR request.

Request Body

GdprRequest

Return Type

Gdpr

Types for the Request Body

GdprRequest (root level)

Key Description Types Restrictions
message Details regarding the request. string required
not null
details Specific request details in a Key/Value object. object required
not null

Scopes

This endpoint is only available for users with scope APP::MISC.

Log incident

POST /v1/log/incident

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/log/incident", [
    "body" => json_encode([
        "message" => "This is a message worth saving to our incident.",
        "details" => [
            "x" => 0,
            "y" => 0,
            "z" => 4,
        ],
        "incident_bindings" => [
            "user" => 170,
            "vendor_order" => 1546,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/log/incident', {
  message: "This is a message worth saving to our incident.",
  details: {
    x: 0,
    y: 0,
    z: 4,
  },
  incident_bindings: {
    user: 170,
    vendor_order: 1546,
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/log/incident",
    body: {
        "message": "This is a message worth saving to our incident.",
        "details": {
            "x": 0,
            "y": 0,
            "z": 4
        },
        "incident_bindings": {
            "user": 170,
            "vendor_order": 1546
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/log/incident' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "message": "This is a message worth saving to our incident.",
    "details": {
        "x": 0,
        "y": 0,
        "z": 4
    },
    "incident_bindings": {
        "user": 170,
        "vendor_order": 1546
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "incident_id": 123
    }
}

Saves an incident.

Request Body

CreateIncident

Return Type

Incident

Types for the Request Body

CreateIncident (root level)

Key Description Types Restrictions
message The message to be recorded. string required
not null
min length is 1
details Additional data to be stored against the incident occurrence. object not null
task_reference The ID of the related task. string not null
match is /^[0-9a-z-]{36}$/
incident_bindings Bindings for the incident to be created. CreateIncidentBinding not null
incident_type_code Optional incident type code. string match is /^[0-9a-zA-Z_-]{1,200}$/

CreateIncidentBinding

Key Description Types Restrictions
user User ID. number not null
company Company ID. number not null
organisation Organisation ID. number not null
order_goodsout Order goodsout ID. number not null
order_channel Order channel ID. number not null
product_channel Product channel ID. number not null
product_variation Product variation ID. number not null
product_component Product component ID. number not null
listing Listing ID. number not null
vendor_order Vendor order ID. number not null
purchase_order Purchase order ID. number not null

Scopes

This endpoint is only available for users with scope APP::MISC.

Log incident import missing sku

POST /v1/log/incident/order_import/missing_sku

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/log/incident/order_import/missing_sku", [
    "body" => json_encode([
        "product_sku" => "ABC12335",
        "product_name" => "ABC Backpack.",
        "order_reference" => "#1234-123442",
        "order_channel_id" => 17,
        "details" => [
            "x" => 0,
            "y" => 0,
            "z" => 4,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/log/incident/order_import/missing_sku', {
  product_sku: "ABC12335",
  product_name: "ABC Backpack.",
  order_reference: "#1234-123442",
  order_channel_id: 17,
  details: {
    x: 0,
    y: 0,
    z: 4,
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/log/incident/order_import/missing_sku",
    body: {
        "product_sku": "ABC12335",
        "product_name": "ABC Backpack.",
        "order_reference": "#1234-123442",
        "order_channel_id": 17,
        "details": {
            "x": 0,
            "y": 0,
            "z": 4
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/log/incident/order_import/missing_sku' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "product_sku": "ABC12335",
    "product_name": "ABC Backpack.",
    "order_reference": "#1234-123442",
    "order_channel_id": 17,
    "details": {
        "x": 0,
        "y": 0,
        "z": 4
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "incident_id": 123
    }
}

Saves an incident related to order import missing SKU.

Request Body

CreateIncidentImportMissingSku

Return Type

Incident

Types for the Request Body

CreateIncidentImportMissingSku (root level)

Key Description Types Restrictions
product_sku The product SKU to be stored against the incident occurrence. string required
not null
min length is 1
product_name The product name to be stored against the incident occurrence. string not null
order_reference The product order reference. string required
not null
min length is 1
max length is 120
order_channel_id Order channel id integer required
not null
min is 1
details Additional data to be stored against the incident occurrence. object

Scopes

This endpoint is only available for users with scope APP::MISC.

Log incident import missing tax rate

POST /v1/log/incident/order_import/missing_tax_rate

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/log/incident/order_import/missing_tax_rate", [
    "body" => json_encode([
        "tax_rate" => "12.2",
        "order_reference" => "#1234-123442",
        "order_channel_id" => 194,
        "details" => [
            "x" => 0,
            "y" => 0,
            "z" => 4,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/log/incident/order_import/missing_tax_rate', {
  tax_rate: "12.2",
  order_reference: "#1234-123442",
  order_channel_id: 194,
  details: {
    x: 0,
    y: 0,
    z: 4,
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/log/incident/order_import/missing_tax_rate",
    body: {
        "tax_rate": "12.2",
        "order_reference": "#1234-123442",
        "order_channel_id": 194,
        "details": {
            "x": 0,
            "y": 0,
            "z": 4
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/log/incident/order_import/missing_tax_rate' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "tax_rate": "12.2",
    "order_reference": "#1234-123442",
    "order_channel_id": 194,
    "details": {
        "x": 0,
        "y": 0,
        "z": 4
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "incident_id": 123
    }
}

Saves an incident related to order import missing tax rate.

Request Body

CreateIncidentImportMissingTaxRate

Return Type

Incident

Types for the Request Body

CreateIncidentImportMissingTaxRate (root level)

Key Description Types Restrictions
tax_rate The tax rate. number required
not null
min is 0.01
order_reference The product order reference. string required
not null
min length is 1
max length is 120
order_channel_id Order channel id integer required
not null
min is 1
details Additional data to be stored against the incident occurrence. object

Scopes

This endpoint is only available for users with scope APP::MISC.

Log incident import failure

POST /v1/log/incident/order_import/failure

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/log/incident/order_import/failure", [
    "body" => json_encode([
        "failure_message" => "No response from the shop url",
        "order_reference" => "#1234-123442",
        "order_channel_id" => 133,
        "details" => [
            "x" => 0,
            "y" => 0,
            "z" => 4,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/log/incident/order_import/failure', {
  failure_message: "No response from the shop url",
  order_reference: "#1234-123442",
  order_channel_id: 133,
  details: {
    x: 0,
    y: 0,
    z: 4,
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/log/incident/order_import/failure",
    body: {
        "failure_message": "No response from the shop url",
        "order_reference": "#1234-123442",
        "order_channel_id": 133,
        "details": {
            "x": 0,
            "y": 0,
            "z": 4
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/log/incident/order_import/failure' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "failure_message": "No response from the shop url",
    "order_reference": "#1234-123442",
    "order_channel_id": 133,
    "details": {
        "x": 0,
        "y": 0,
        "z": 4
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "incident_id": 123
    }
}

Saves an incident related to order import failure.

Request Body

CreateIncidentImportFailure

Return Type

Incident

Types for the Request Body

CreateIncidentImportFailure (root level)

Key Description Types Restrictions
failure_message Failure message. string required
not null
min length is 1
order_reference The product order reference. string required
not null
min length is 1
max length is 120
order_channel_id Order channel id integer required
not null
min is 1
details Additional data to be stored against the incident occurrence. object

Scopes

This endpoint is only available for users with scope APP::MISC.

Log incident with purchase order import failure

POST /v1/log/incident/purchase_order_import/failure

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/log/incident/purchase_order_import/failure", [
    "body" => json_encode([
        "failure_message" => "No response from the shop url",
        "order_reference" => "#1234-123442",
        "order_channel_id" => 172,
        "details" => [
            "x" => 0,
            "y" => 0,
            "z" => 4,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/log/incident/purchase_order_import/failure', {
  failure_message: "No response from the shop url",
  order_reference: "#1234-123442",
  order_channel_id: 172,
  details: {
    x: 0,
    y: 0,
    z: 4,
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/log/incident/purchase_order_import/failure",
    body: {
        "failure_message": "No response from the shop url",
        "order_reference": "#1234-123442",
        "order_channel_id": 172,
        "details": {
            "x": 0,
            "y": 0,
            "z": 4
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/log/incident/purchase_order_import/failure' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "failure_message": "No response from the shop url",
    "order_reference": "#1234-123442",
    "order_channel_id": 172,
    "details": {
        "x": 0,
        "y": 0,
        "z": 4
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "incident_id": 123
    }
}

Saves an incident related to purchase order import failure.

Request Body

CreateIncidentImportFailure

Return Type

Incident

Types for the Request Body

CreateIncidentImportFailure (root level)

Key Description Types Restrictions
failure_message Failure message. string required
not null
min length is 1
order_reference The product order reference. string required
not null
min length is 1
max length is 120
order_channel_id Order channel id integer required
not null
min is 1
details Additional data to be stored against the incident occurrence. object

Scopes

This endpoint is only available for users with scope APP::MISC.

List Marketplace Listing Metadata

GET /v1/marketplaces/listings/:id/metadata

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/marketplaces/listings/1234567/metadata", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/marketplaces/listings/1234567/metadata', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/1234567/metadata",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/marketplaces/listings/1234567/metadata' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "key": "my_key",
            "value": "some-value"
        }
    ]
}

Retrieves a list of all the metadata stored against a marketplace listing.

Parameter Regular Expressions

Return Type

array<MarketplaceListingResourceMetadatas>

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::READ.

Get Marketplace Listing Metadata

GET /v1/marketplaces/listings/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/marketplaces/listings/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/marketplaces/listings/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/marketplaces/listings/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Retrieves a single piece of metadata stored against a marketplace listing.

Parameter Regular Expressions

Return Type

MarketplaceListingResourceMetadatas

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::READ.

Set Marketplace Listing Metadata

PUT /v1/marketplaces/listings/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/1234567/metadata/my_key", [
    "body" => json_encode([
        "value" => "some-value",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/1234567/metadata/my_key', {
  value: "some-value",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/1234567/metadata/my_key",
    body: {
        "value": "some-value"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "value": "some-value"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Sets some metadata against a marketplace listing.

Parameter Regular Expressions

Request Body

UpdateResourceMetadata

Return Type

MarketplaceListingResourceMetadatas

Types for the Request Body

UpdateResourceMetadata (root level)

Key Description Types Restrictions
value The value. string required
not null
max length is 65535

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Delete Marketplace Listing Metadata

DELETE /v1/marketplaces/listings/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("DELETE", "https://public-api.bladepro.io/v1/marketplaces/listings/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.delete 'https://public-api.bladepro.io/v1/marketplaces/listings/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "DELETE",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request DELETE 'https://public-api.bladepro.io/v1/marketplaces/listings/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

null

Deletes some metadata against a marketplace listing.

Parameter Regular Expressions

Return Type

Empty.

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

List Marketplace Listing Variation Metadata

GET /v1/marketplaces/listings/variations/:id/metadata

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/marketplaces/listings/variations/1234567/metadata", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/marketplaces/listings/variations/1234567/metadata', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/variations/1234567/metadata",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/marketplaces/listings/variations/1234567/metadata' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "key": "my_key",
            "value": "some-value"
        }
    ]
}

Retrieves a list of all the metadata stored against a marketplace listing variation.

Parameter Regular Expressions

Return Type

array<MarketplaceListingVariationResourceMetadatas>

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::READ.

Get Marketplace Listing Variation Metadata

GET /v1/marketplaces/listings/variations/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/marketplaces/listings/variations/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/marketplaces/listings/variations/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/variations/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/marketplaces/listings/variations/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Retrieves a single piece of metadata stored against a marketplace listing variation.

Parameter Regular Expressions

Return Type

MarketplaceListingVariationResourceMetadatas

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::READ.

Set Marketplace Listing Variation Metadata

PUT /v1/marketplaces/listings/variations/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/variations/1234567/metadata/my_key", [
    "body" => json_encode([
        "value" => "some-value",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/variations/1234567/metadata/my_key', {
  value: "some-value",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/variations/1234567/metadata/my_key",
    body: {
        "value": "some-value"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/variations/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "value": "some-value"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Sets some metadata against a marketplace listing variation.

Parameter Regular Expressions

Request Body

UpdateResourceMetadata

Return Type

MarketplaceListingVariationResourceMetadatas

Types for the Request Body

UpdateResourceMetadata (root level)

Key Description Types Restrictions
value The value. string required
not null
max length is 65535

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Delete Marketplace Listing Variation Metadata

DELETE /v1/marketplaces/listings/variations/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("DELETE", "https://public-api.bladepro.io/v1/marketplaces/listings/variations/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.delete 'https://public-api.bladepro.io/v1/marketplaces/listings/variations/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "DELETE",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/variations/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request DELETE 'https://public-api.bladepro.io/v1/marketplaces/listings/variations/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

null

Deletes some metadata against a marketplace listing variation.

Parameter Regular Expressions

Return Type

Empty.

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Sync marketplace listings

POST /v1/marketplaces/listings/sync

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/marketplaces/listings/sync", [
    "body" => json_encode([
        [
            "listing_reference" => "ABC-123",
            "listing_variation_reference" => "ABC-123",
            "sku" => "ACME_BICY",
            "title" => "ACME Bicycle",
            "quantity" => 50,
            "price" => 122.99,
            "status" => "live",
            "metadata" => [
                [
                    "key" => "GRAPHQL_ID",
                    "value" => "http://my-graphql-id/132163",
                ],
            ],
            "locations" => [
                [
                    "marketplace_location_id" => 81,
                    "quantity" => 0,
                    "marketplace_reference" => null,
                ],
            ],
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/marketplaces/listings/sync', [
  {
    listing_reference: "ABC-123",
    listing_variation_reference: "ABC-123",
    sku: "ACME_BICY",
    title: "ACME Bicycle",
    quantity: 50,
    price: 122.99,
    status: "live",
    metadata: [
      {
        key: "GRAPHQL_ID",
        value: "http://my-graphql-id/132163",
      },
    ],
    locations: [
      {
        marketplace_location_id: 81,
        quantity: 0,
        marketplace_reference: nil,
      },
    ],
  },
], {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/sync",
    body: [
        {
            "listing_reference": "ABC-123",
            "listing_variation_reference": "ABC-123",
            "sku": "ACME_BICY",
            "title": "ACME Bicycle",
            "quantity": 50,
            "price": 122.99,
            "status": "live",
            "metadata": [
                {
                    "key": "GRAPHQL_ID",
                    "value": "http://my-graphql-id/132163"
                }
            ],
            "locations": [
                {
                    "marketplace_location_id": 81,
                    "quantity": 0,
                    "marketplace_reference": null
                }
            ]
        }
    ],
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/marketplaces/listings/sync' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '[
    {
        "listing_reference": "ABC-123",
        "listing_variation_reference": "ABC-123",
        "sku": "ACME_BICY",
        "title": "ACME Bicycle",
        "quantity": 50,
        "price": 122.99,
        "status": "live",
        "metadata": [
            {
                "key": "GRAPHQL_ID",
                "value": "http://my-graphql-id/132163"
            }
        ],
        "locations": [
            {
                "marketplace_location_id": 81,
                "quantity": 0,
                "marketplace_reference": null
            }
        ]
    }
]'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "listing_reference": "ABC-123",
            "listing_variation_reference": "ABC-123",
            "sku": "ABC",
            "result": "updated",
            "error": "Failed to look up SKU: ABC-XYX. Please ensure this product is set in BladePRO before importing the listing."
        }
    ]
}

Sync listings from the marketplace down to BladePRO.

Request Body

array<SyncMarketplaceListingValidator>

Return Type

array<SyncedMarketplaceListing>

Types for the Request Body

Location

Key Description Types Restrictions
marketplace_location_id ID of the marketplace location mapping. integer required
not null
min is 1
quantity Current quantity. integer required
not null
min is 0
marketplace_reference Marketplace reference for the link between the listing variation and the marketplace location. string

ResourceMetadata

Key Description Types Restrictions
key Key of the resource metadata. string required
not null
min length is 1
value Value of the resource metadata. string required
not null
min length is 1

SyncMarketplaceListingValidator

Key Description Types Restrictions
listing_reference Parent or first reference provided by the 3rd party marketplace. string required
not null
min length is 1
listing_variation_reference Child or second reference provided by the 3rd party marketplace. You may repeat the first reference if there’s only one. string required
not null
min length is 1
sku Current marketplace SKU. string required
not null
min length is 1
title Current marketplace title. string required
not null
min length is 1
quantity Current marketplace stock level. integer required
not null
min is 0
price Current marketplace price. number required
not null
min is 0
status Current marketplace status. string not null
metadata List of resource metadatas. array<ResourceMetadata>
locations List of resource locations. array<Location>

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Import marketplace listings

POST /v1/marketplaces/listings/import

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/marketplaces/listings/import?expand=*", [
    "body" => json_encode([
        "marketplace_reference" => "FOREIGN_ID",
        "attributes" => [
            [
                "code" => "ASIN",
                "value" => "ASODAIY12371938",
                "label" => "ASIN",
            ],
        ],
        "options" => [
            "Frame Colour",
        ],
        "resource_metadatas" => [
            [
                "key" => "GRAPHQL_ID",
                "value" => "http://my-graphql-id/132163",
            ],
        ],
        "variations" => [
            [
                "product_variation_id" => 8435,
                "sku" => "ACME_BICY",
                "title" => "ACME Bicycle",
                "subtitle" => null,
                "description" => "A brand new ACME bicycle.",
                "marketplace_reference" => "FOREIGN_ID",
                "quantity" => 50,
                "price" => 122.99,
                "status" => "live",
                "keep_price" => true,
                "keep_title" => true,
                "keep_description" => true,
                "options" => [
                    "Sky Blue",
                ],
                "attributes" => [
                    [
                        "code" => "ASIN",
                        "value" => "ASODAIY12371938",
                        "label" => "ASIN",
                    ],
                ],
                "resource_metadatas" => [
                    [
                        "key" => "GRAPHQL_ID",
                        "value" => "http://my-graphql-id/132163",
                    ],
                ],
                "images" => [
                    "https://some-cdn/image01.jpeg",
                ],
                "locations" => [
                    [
                        "marketplace_location_id" => 81,
                        "quantity" => 0,
                        "marketplace_reference" => null,
                    ],
                ],
            ],
        ],
        "product_category_id" => 8435,
        "images" => [
            "https://some-cdn/image01.jpeg",
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/marketplaces/listings/import?expand=*', {
  marketplace_reference: "FOREIGN_ID",
  attributes: [
    {
      code: "ASIN",
      value: "ASODAIY12371938",
      label: "ASIN",
    },
  ],
  options: [
    "Frame Colour",
  ],
  resource_metadatas: [
    {
      key: "GRAPHQL_ID",
      value: "http://my-graphql-id/132163",
    },
  ],
  variations: [
    {
      product_variation_id: 8435,
      sku: "ACME_BICY",
      title: "ACME Bicycle",
      subtitle: nil,
      description: "A brand new ACME bicycle.",
      marketplace_reference: "FOREIGN_ID",
      quantity: 50,
      price: 122.99,
      status: "live",
      keep_price: true,
      keep_title: true,
      keep_description: true,
      options: [
        "Sky Blue",
      ],
      attributes: [
        {
          code: "ASIN",
          value: "ASODAIY12371938",
          label: "ASIN",
        },
      ],
      resource_metadatas: [
        {
          key: "GRAPHQL_ID",
          value: "http://my-graphql-id/132163",
        },
      ],
      images: [
        "https://some-cdn/image01.jpeg",
      ],
      locations: [
        {
          marketplace_location_id: 81,
          quantity: 0,
          marketplace_reference: nil,
        },
      ],
    },
  ],
  product_category_id: 8435,
  images: [
    "https://some-cdn/image01.jpeg",
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/import?expand=*",
    body: {
        "marketplace_reference": "FOREIGN_ID",
        "attributes": [
            {
                "code": "ASIN",
                "value": "ASODAIY12371938",
                "label": "ASIN"
            }
        ],
        "options": [
            "Frame Colour"
        ],
        "resource_metadatas": [
            {
                "key": "GRAPHQL_ID",
                "value": "http://my-graphql-id/132163"
            }
        ],
        "variations": [
            {
                "product_variation_id": 8435,
                "sku": "ACME_BICY",
                "title": "ACME Bicycle",
                "subtitle": null,
                "description": "A brand new ACME bicycle.",
                "marketplace_reference": "FOREIGN_ID",
                "quantity": 50,
                "price": 122.99,
                "status": "live",
                "keep_price": true,
                "keep_title": true,
                "keep_description": true,
                "options": [
                    "Sky Blue"
                ],
                "attributes": [
                    {
                        "code": "ASIN",
                        "value": "ASODAIY12371938",
                        "label": "ASIN"
                    }
                ],
                "resource_metadatas": [
                    {
                        "key": "GRAPHQL_ID",
                        "value": "http://my-graphql-id/132163"
                    }
                ],
                "images": [
                    "https://some-cdn/image01.jpeg"
                ],
                "locations": [
                    {
                        "marketplace_location_id": 81,
                        "quantity": 0,
                        "marketplace_reference": null
                    }
                ]
            }
        ],
        "product_category_id": 8435,
        "images": [
            "https://some-cdn/image01.jpeg"
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/marketplaces/listings/import?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "marketplace_reference": "FOREIGN_ID",
    "attributes": [
        {
            "code": "ASIN",
            "value": "ASODAIY12371938",
            "label": "ASIN"
        }
    ],
    "options": [
        "Frame Colour"
    ],
    "resource_metadatas": [
        {
            "key": "GRAPHQL_ID",
            "value": "http://my-graphql-id/132163"
        }
    ],
    "variations": [
        {
            "product_variation_id": 8435,
            "sku": "ACME_BICY",
            "title": "ACME Bicycle",
            "subtitle": null,
            "description": "A brand new ACME bicycle.",
            "marketplace_reference": "FOREIGN_ID",
            "quantity": 50,
            "price": 122.99,
            "status": "live",
            "keep_price": true,
            "keep_title": true,
            "keep_description": true,
            "options": [
                "Sky Blue"
            ],
            "attributes": [
                {
                    "code": "ASIN",
                    "value": "ASODAIY12371938",
                    "label": "ASIN"
                }
            ],
            "resource_metadatas": [
                {
                    "key": "GRAPHQL_ID",
                    "value": "http://my-graphql-id/132163"
                }
            ],
            "images": [
                "https://some-cdn/image01.jpeg"
            ],
            "locations": [
                {
                    "marketplace_location_id": 81,
                    "quantity": 0,
                    "marketplace_reference": null
                }
            ]
        }
    ],
    "product_category_id": 8435,
    "images": [
        "https://some-cdn/image01.jpeg"
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 123,
        "marketplace_reference": "FOREIGN_ID",
        "product_category_id": 4,
        "marketplace_listing_variations": [
            {
                "id": 1235,
                "title": "ACME Bicycle",
                "subtitle": null,
                "description": "A brand new ACME bicycle.",
                "listing_mode": "keep_in_sync",
                "stock_mode": "keep_in_sync",
                "marketplace_reference": "FOREIGN_ID",
                "price": 122.99,
                "product_variation_id": 8435,
                "quantity": 50,
                "sku": "ACME_BICY",
                "status": "live",
                "options": [
                    {
                        "id": 34512,
                        "marketplace_listing_option_id": 9745,
                        "value": "Sky Blue"
                    }
                ]
            }
        ],
        "options": [
            {
                "id": 9745,
                "name": "Frame colour"
            }
        ]
    }
}

Creates a marketplace listings with all the marketplace references. This endpoint always expands all expandables.

Request Body

ImportMarketplaceListing

Return Type

ImportMarketplaceListing

Types for the Request Body

ImportMarketplaceListing (root level)

Key Description Types Restrictions
marketplace_reference Marketplace ID. string required
not null
min length is 1
attributes List of attributes. array<Attribute>
options List of option labels. array<string>
resource_metadatas List of resource metadatas. array<ResourceMetadata>
variations List of marketplace listing variations. array<Variation>
product_category_id The ID for the product category. integer required
min is 1
images List of image URLs. array<string>

Attribute

Key Description Types Restrictions
code Code to reference the attribute by. string required
not null
min length is 1
value Value of the attribute. string required
min length is 0
label Label of the attribute. string required
min length is 0

MarketplaceLocation

Key Description Types Restrictions
marketplace_location_id ID of the marketplace location mapping. integer required
not null
min is 1
quantity Current quantity. integer required
not null
min is 0
marketplace_reference Marketplace reference for the link between the listing variation and the marketplace location. string

ResourceMetadata

Key Description Types Restrictions
key Key of the resource metadata. string required
not null
min length is 1
value Value of the resource metadata. string required
not null
min length is 1

Variation

Key Description Types Restrictions
product_variation_id The ID for the product variation. integer required
not null
min is 1
sku Current marketplace SKU. string required
not null
min length is 1
title Current marketplace title. string required
not null
min length is 1
subtitle Current marketplace subtitle. string min length is 1
description Current marketplace description. string min length is 0
marketplace_reference The marketplace reference. string required
not null
min length is 1
quantity Current marketplace stock level. integer required
not null
min is 0
price Current marketplace price. number required
not null
min is 0
status The listing status. enum(draft, live, void, pending_live, pending_void) required
not null
keep_price Should BladePRO keep the price. boolean required
not null
keep_title Should BladePRO keep the title. boolean required
not null
keep_description Should BladePRO keep the description. boolean required
not null
options List of option values. array<string>
attributes List of attributes array<Attribute>
resource_metadatas List of resource metadatas. array<ResourceMetadata>
images List of image URLs. array<string>
locations List of marketplace location mappings. array<MarketplaceLocation>

Available expands

Field Return Type Description
marketplace_listing_variations array<ImportMarketplaceListingVariation> A marketplace listing variation during import.
marketplace_listing_variations.options array<ImportMarketplaceListingVariationOption> A marketplace listing variation option during import.
options array<ImportMarketplaceListingOption> A marketplace listing option during import.

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Get marketplace listing variations

GET /v1/marketplaces/listings/variations

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/marketplaces/listings/variations?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/marketplaces/listings/variations?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/variations?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/marketplaces/listings/variations?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": "123",
            "marketplace_listing_id": "123",
            "marketplace_reference": "123456",
            "sku": "ABC_123",
            "price": "12.99",
            "status": "live",
            "listing_mode": "keep_in_sync",
            "stock_mode": "keep_in_sync",
            "marketplace_listing": {
                "id": "123",
                "marketplace_reference": "123456",
                "attributes": [
                    {
                        "label_json": "{}",
                        "value": "f376ji34G4F",
                        "attribute": {
                            "id": "4324",
                            "name": "External Product Code",
                            "description": "The code of the product as defined on Amazon.",
                            "code": "EXTERNAL_PRODUCT_CODE"
                        }
                    }
                ],
                "options": [
                    {
                        "id": 1234,
                        "name": "Colour"
                    }
                ],
                "images": [
                    {
                        "primary": false,
                        "sequence": false,
                        "url": false
                    }
                ],
                "related_listing_variations": [
                    {
                        "id": 67834,
                        "marketplace_reference": "ABC123",
                        "status": "pending_live",
                        "sku": "RED-CAR-001"
                    }
                ]
            },
            "product_variation": {
                "id": 432,
                "sku": "RED-CAR-001",
                "aspects": [
                    {
                        "value": "red",
                        "label": "Red",
                        "aspect": {
                            "name": "Colour",
                            "code": "21234_CAR_COLOUR",
                            "required": true,
                            "type": "dropdown"
                        }
                    }
                ],
                "category": {
                    "id": 32,
                    "name": "Bikes",
                    "preferences": [
                        {
                            "value": "red",
                            "label": "Red",
                            "preference": {
                                "name": "Colour",
                                "code": "21234_CAR_COLOUR"
                            }
                        }
                    ]
                }
            },
            "attributes": [
                {
                    "label_json": "{}",
                    "value": "f376ji34G4F",
                    "attribute": {
                        "id": "4324",
                        "name": "External Product Code",
                        "description": "The code of the product as defined on Amazon.",
                        "code": "EXTERNAL_PRODUCT_CODE"
                    }
                }
            ],
            "options": [
                {
                    "id": 12345,
                    "marketplace_listing_option_id": 1234,
                    "value": "Sky blue",
                    "option": {
                        "id": 1234,
                        "name": "Colour"
                    }
                }
            ],
            "images": [
                {
                    "primary": false,
                    "sequence": false,
                    "url": false
                }
            ]
        }
    ]
}

Retrieves a list of marketplace listing variations.

Return Type

array<CachedMarketplaceListingVariation>

Filters

Field Operators Value List URL
id IN
marketplace_reference IN
sku IN
marketplace_listing_id IN
status IN, NOT_IN
product_variation.id IN

Available expands

Field Return Type Description
attributes array<CachedMarketplaceListingVariationAttribute> Marketplace listing variation attributes
attributes.attribute CachedApplicationMarketplaceAttribute Marketplace attribute
images array<CachedMarketplaceListingVariationImage> Marketplace listing variation images
marketplace_listing CachedMarketplaceListing Marketplace listing
marketplace_listing.attributes array<CachedMarketplaceListingAttribute> Marketplace listing attributes
marketplace_listing.attributes.attribute CachedApplicationMarketplaceAttribute Marketplace attribute
marketplace_listing.images array<CachedMarketplaceListingImage> Marketplace listing variation images
marketplace_listing.options array<CachedMarketplaceListingOption> Marketplace listing option definition.
marketplace_listing.related_listing_variations array<CachedMarketplaceListingVariationRelatedVariation> Related listing variations that belong to the same parent marketplace_listing
options array<CachedMarketplaceListingVariationOption> Value for a marketplace listing option.
options.option CachedMarketplaceListingOption Marketplace listing option definition.
product_variation CachedMarketplaceListingVariationProductVariation Marketplace listing variation attributes
product_variation.aspects array<CachedMarketplaceListingVariationProductVariationAspects> Marketplace listing variation aspects
product_variation.aspects.aspect CachedApplicationMarketplaceAttribute Marketplace attribute
product_variation.category CachedMarketplaceListingVariationProductVariationCategory Marketplace listing variation category
product_variation.category.preferences array<CachedMarketplaceListingVariationProductVariationCategoryPreferences> Marketplace listing variation category preferences
product_variation.category.preferences.preference CachedMarketplaceListingVariationProductVariationCategoryPreferencesPreference Marketplace listing variation aspects

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::READ.

Purge marketplace listings

PUT /v1/marketplaces/listings/variations/purge

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/variations/purge", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/variations/purge', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/variations/purge",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/variations/purge' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "success": true
    }
}

Detach all listings in BladePRO from the marketplace.

Request Body

Ignored.

Return Type

MarketplaceListingPurge

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Set reference

PUT /v1/marketplaces/listings/:listingId/variations/:listingVariationId/marketplace_reference

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/marketplace_reference", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/marketplace_reference', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/marketplace_reference",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/marketplace_reference' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": "123",
        "marketplace_reference": "7x34nu03248n0",
        "price": "11.99",
        "status": "LIVE",
        "sku": "RED_CAR_01",
        "product_variation_id": "21",
        "quantity": "323"
    }
}

Set the listing variation marketplace reference.

Parameter Regular Expressions

Request Body

SetMarketplaceReference

Return Type

MarketplaceListingVariation

Types for the Request Body

SetMarketplaceReference (root level)

Key Description Types Restrictions
marketplace_reference The new reference. string required
not null

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Mark As Live

PUT /v1/marketplaces/listings/:listingId/variations/:listingVariationId/mark_as_live

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/mark_as_live", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/mark_as_live', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/mark_as_live",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/mark_as_live' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": "123",
        "marketplace_reference": "7x34nu03248n0",
        "price": "11.99",
        "status": "LIVE",
        "sku": "RED_CAR_01",
        "product_variation_id": "21",
        "quantity": "323"
    }
}

Set the listing variation status to live.

Parameter Regular Expressions

Request Body

Ignored.

Return Type

MarketplaceListingVariation

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Mark As Void

PUT /v1/marketplaces/listings/:listingId/variations/:listingVariationId/mark_as_void

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/mark_as_void", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/mark_as_void', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/mark_as_void",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/mark_as_void' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": "123",
        "marketplace_reference": "7x34nu03248n0",
        "price": "11.99",
        "status": "LIVE",
        "sku": "RED_CAR_01",
        "product_variation_id": "21",
        "quantity": "323"
    }
}

Set the listing variation status to void.

Parameter Regular Expressions

Request Body

Ignored.

Return Type

MarketplaceListingVariation

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Set reference

PUT /v1/marketplaces/listings/:listingId/marketplace_reference

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/marketplace_reference", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/marketplace_reference', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/marketplace_reference",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/marketplace_reference' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": "123",
        "marketplace_reference": "7x34nu03248n0"
    }
}

Set the listing marketplace reference.

Parameter Regular Expressions

Request Body

SetMarketplaceReference

Return Type

MarketplaceListings

Types for the Request Body

SetMarketplaceReference (root level)

Key Description Types Restrictions
marketplace_reference The new reference. string required
not null

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Bulk get marketplace listing stock

GET /v1/marketplaces/listings/stock/:mode

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/marketplaces/listings/stock/:mode?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/marketplaces/listings/stock/:mode?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/stock/:mode?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/marketplaces/listings/stock/:mode?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "id": "123",
            "marketplace_reference": "123456",
            "resource_metadatas": [
                {
                    "key": "my_key",
                    "value": "some-value"
                }
            ],
            "variations": [
                {
                    "id": 123,
                    "marketplace_reference": "123456",
                    "sku": "DEMO-SKU-01",
                    "product_variation_id": "456",
                    "current_listed_quantity": 12,
                    "quantity_to_list": 10,
                    "resource_metadatas": [
                        {
                            "key": "my_key",
                            "value": "some-value"
                        }
                    ],
                    "marketplace_locations": [
                        {
                            "marketplace_location_id": 567,
                            "current_listed_quantity": 12,
                            "quantity_to_list": 10
                        }
                    ]
                }
            ]
        }
    ]
}

Retrieves a simplified list of every marketplace listing.

Parameter Regular Expressions

Return Type

array<MarketplaceListingStock>

Available expands

Field Return Type Description
resource_metadatas array<MarketplaceListingResourceMetadatas> Stores arbitrary data against a marketplace listing.
variations array<MarketplaceListingVariationStock> Marketplace listing variation stock
variations.marketplace_locations array<MarketplaceListingVariationStockMarketplaceLocations> Marketplace listing variation’s location-based stock
variations.resource_metadatas array<MarketplaceListingVariationResourceMetadatas> Stores arbitrary data against a marketplace listing variation.

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::READ.

Get listing variation stock

GET /v1/marketplaces/listings/:listingId/variations/:listingVariationId/stock

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/stock", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/stock', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/stock",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/marketplaces/listings/:listingId/variations/:listingVariationId/stock' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 123,
        "marketplace_reference": "123456",
        "sku": "DEMO-SKU-01",
        "product_variation_id": "456",
        "current_listed_quantity": 12,
        "quantity_to_list": 10
    }
}

Retrieves a simplified stock record for a single marketplace listing variation.

Parameter Regular Expressions

Return Type

MarketplaceListingVariationStock

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::READ.

Get unclaimed marketplace listing updates

GET /v1/marketplaces/listings/updates/unclaimed

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/marketplaces/listings/updates/unclaimed?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/marketplaces/listings/updates/unclaimed?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/updates/unclaimed?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/marketplaces/listings/updates/unclaimed?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "id": "123",
            "code": "PRICE",
            "listing_id": "44",
            "variation_id": "55",
            "old_value": "12",
            "new_value": "10",
            "status": "pending",
            "marketplace_listing": {
                "id": "2332",
                "marketplace_reference": "abcdefg-1234567",
                "attributes": [
                    {
                        "code": "PRODUCT_ASIN",
                        "name": "Product ASIN",
                        "value": "LIVE"
                    }
                ]
            },
            "marketplace_listing_variation": {
                "id": "2332",
                "marketplace_reference": "gfd4352gfd54-434-gfddfg",
                "sku": "RED-CAR-01",
                "price": "21.99",
                "status": "LIVE",
                "attributes": [
                    {
                        "code": "PRODUCT_ASIN",
                        "name": "Product ASIN",
                        "value": "LIVE"
                    }
                ]
            }
        }
    ]
}

Retrieves a list of the listing’s unclaimed updates.

Return Type

array<MarketplaceListingUpdates>

Available expands

Field Return Type Description
marketplace_listing MarketplaceListingUpdateListings Marketplace listing updates
marketplace_listing.attributes array<MarketplaceListingUpdateAttributes> Marketplace attribute
marketplace_listing_variation MarketplaceListingUpdateListingVariations Marketplace listing updates
marketplace_listing_variation.attributes array<MarketplaceListingUpdateAttributes> Marketplace attribute

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::READ.

Bulk update listed quantities

PUT /v1/marketplaces/listings/updates/bulk_update_listed_quantities

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/updates/bulk_update_listed_quantities", [
    "body" => json_encode([
        [
            "marketplace_listing_variation_id" => 1,
            "quantity" => 142,
            "marketplace_location_id" => null,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/updates/bulk_update_listed_quantities', [
  {
    marketplace_listing_variation_id: 1,
    quantity: 142,
    marketplace_location_id: nil,
  },
], {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/updates/bulk_update_listed_quantities",
    body: [
        {
            "marketplace_listing_variation_id": 1,
            "quantity": 142,
            "marketplace_location_id": null
        }
    ],
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/updates/bulk_update_listed_quantities' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '[
    {
        "marketplace_listing_variation_id": 1,
        "quantity": 142,
        "marketplace_location_id": null
    }
]'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "success": true
        }
    ]
}

Updated the listed quantity in BladePRO for marketplace listings in bulk.

Request Body

array<BulkUpdateListedQuantity>

Return Type

array<MarketplaceListingBulkUpdateQuantities>

Types for the Request Body

BulkUpdateListedQuantity

Key Description Types Restrictions
marketplace_listing_variation_id The marketplace listing variation id. integer required
not null
min is 1
quantity The listed quantity. integer required
not null
min is 0
marketplace_location_id The marketplace location ID, if enabled in the app. integer required
min is 1

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Finalize update

PUT /v1/marketplaces/listings/updates/:updateId/complete

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/updates/:updateId/complete?expand=*", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/updates/:updateId/complete?expand=*', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/updates/:updateId/complete?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/updates/:updateId/complete?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": "123",
        "code": "PRICE",
        "listing_id": "44",
        "variation_id": "55",
        "old_value": "12",
        "new_value": "10",
        "status": "pending"
    }
}

Mark update as completed.

Parameter Regular Expressions

Request Body

Ignored.

Return Type

MarketplaceListingUpdates

Available expands

Field Return Type Description

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Fail update

PUT /v1/marketplaces/listings/updates/:updateId/fail

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/updates/:updateId/fail?expand=*", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/updates/:updateId/fail?expand=*', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/updates/:updateId/fail?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/updates/:updateId/fail?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": "123",
        "code": "PRICE",
        "listing_id": "44",
        "variation_id": "55",
        "old_value": "12",
        "new_value": "10",
        "status": "pending"
    }
}

Mark update as failed.

Parameter Regular Expressions

Request Body

FailListingUpdate

Return Type

MarketplaceListingUpdates

Types for the Request Body

FailListingUpdate (root level)

Key Description Types Restrictions
reason The reason for the failure. string required
not null

Available expands

Field Return Type Description

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Finalize updates

PUT /v1/marketplaces/listings/updates/bulk/complete

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/updates/bulk/complete?expand=*", [
    "body" => json_encode([
        "updates" => [
            1,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/updates/bulk/complete?expand=*', {
  updates: [
    1,
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/updates/bulk/complete?expand=*",
    body: {
        "updates": [
            1
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/updates/bulk/complete?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "updates": [
        1
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "id": "123",
            "code": "PRICE",
            "listing_id": "44",
            "variation_id": "55",
            "old_value": "12",
            "new_value": "10",
            "status": "pending"
        }
    ]
}

Mark updates as completed.

Request Body

CompleteMarketplaceListingUpdates

Return Type

array<MarketplaceListingUpdates>

Types for the Request Body

CompleteMarketplaceListingUpdates (root level)

Key Description Types Restrictions
updates List of update IDs. array<number> required
not null
min count is 1

Available expands

Field Return Type Description

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::MANAGE.

Bulk render marketplace listing templates

PUT /v1/marketplaces/listings/templates/render/bulk

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/templates/render/bulk", [
    "body" => json_encode([
        "marketplace_listing_variation_ids" => [
            1,
            2,
            3,
        ],
        "locales" => [
            "en",
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/templates/render/bulk', {
  marketplace_listing_variation_ids: [
    1,
    2,
    3,
  ],
  locales: [
    "en",
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/templates/render/bulk",
    body: {
        "marketplace_listing_variation_ids": [
            1,
            2,
            3
        ],
        "locales": [
            "en"
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/templates/render/bulk' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "marketplace_listing_variation_ids": [
        1,
        2,
        3
    ],
    "locales": [
        "en"
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "marketplace_listing_variation_id": "1",
            "locale": "EN",
            "title": "Refrigerator",
            "subtitle": "Great deal",
            "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
        }
    ]
}

Return a list of rendered templates grouped by marketplace listing variation.

Request Body

RenderMarketplaceListingTemplatesBulk

Return Type

array<MarketplaceListingTemplates>

Types for the Request Body

RenderMarketplaceListingTemplatesBulk (root level)

Key Description Types Restrictions
marketplace_listing_variation_ids List of marketplace listing variation IDs. array<number> required
not null
min count is 1
locales List of locale codes. array<string> required
not null
min count is 1

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::READ.

Render marketplace listing templates

PUT /v1/marketplaces/listings/templates/render

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/marketplaces/listings/templates/render", [
    "body" => json_encode([
        "marketplace_listing_variation_id" => 1,
        "locale" => "en",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/marketplaces/listings/templates/render', {
  marketplace_listing_variation_id: 1,
  locale: "en",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/listings/templates/render",
    body: {
        "marketplace_listing_variation_id": 1,
        "locale": "en"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/marketplaces/listings/templates/render' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "marketplace_listing_variation_id": 1,
    "locale": "en"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "marketplace_listing_variation_id": "1",
        "locale": "EN",
        "title": "Refrigerator",
        "subtitle": "Great deal",
        "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
    }
}

Return a list of rendered templates for a specific marketplace listing variation.

Request Body

RenderMarketplaceListingTemplates

Return Type

MarketplaceListingTemplates

Types for the Request Body

RenderMarketplaceListingTemplates (root level)

Key Description Types Restrictions
marketplace_listing_variation_id Marketplace listing variation ID. number required
not null
locale Locale code. string required
not null
match is /[a-zA-Z]{2}/

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::READ.

List marketplace locations

GET /v1/marketplaces/locations

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/marketplaces/locations?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/marketplaces/locations?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/marketplaces/locations?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/marketplaces/locations?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "id": 43,
            "despatch_warehouse_id": 1,
            "location_name": "Christchurch",
            "location_key": "uk-12a",
            "location_extra": "uk-12a",
            "default_stock_mode": "keep_in_sync",
            "despatch_warehouse": {
                "id": 1,
                "name": "Christchurch",
                "short_code": "CHR",
                "latitude": 50.739492,
                "longitude": -1.734224,
                "country_id": 1,
                "active": true,
                "currency_id": 1,
                "virtual": false,
                "return_warehouse_id": 1,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            },
            "stock_warehouses": [
                {
                    "id": 1,
                    "name": "Christchurch",
                    "short_code": "CHR",
                    "latitude": 50.739492,
                    "longitude": -1.734224,
                    "country_id": 1,
                    "active": true,
                    "currency_id": 1,
                    "virtual": false,
                    "return_warehouse_id": 1,
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            ]
        }
    ]
}

Retrieves a list of all the marketplace location mappings in BladePRO.

Return Type

array<MarketplaceLocations>

Available expands

Field Return Type Description
despatch_warehouse Warehouses A warehouse.
stock_warehouses array<Warehouses> A warehouse.

Scopes

This endpoint is only available for users with scope APP::MARKETPLACES::READ.

List Countries

GET /v1/countries

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/countries", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/countries', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/countries",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/countries' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "name": "United Kingdom",
            "iso_2": "GB",
            "iso_3": "GBR",
            "region_id": 1,
            "currency_id": 1,
            "block": "EU"
        }
    ]
}

Retrieves a list of all the countries BladePRO can accept shipping destinations for.

Return Type

array<Countries>

Scopes

This endpoint is only available for users with scope APP::MISC.

List Currencies

GET /v1/currencies

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/currencies", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/currencies', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/currencies",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/currencies' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "code": "GBP",
            "name": "Great British Pounds",
            "symbol": "£",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        }
    ]
}

List Currencies.

Return Type

array<Currencies>

Scopes

This endpoint is only available for users with scope APP::MISC.

POST /v1/orders/goodsouts/from_file

Request Body

Ignored.

Return Type

Empty or untyped.

Scopes

This endpoint is available to all users.

List Tax Rates

GET /v1/taxes

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/taxes", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/taxes', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/taxes",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/taxes' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "name": "standard",
            "code": "20",
            "rate": 20,
            "description": "standard 20%",
            "active": true,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        }
    ]
}

List Tax Rates.

Return Type

array<OrganisationTaxes>

Scopes

This endpoint is only available for users with scope APP::MISC.

List Brands

GET /v1/brands

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/brands", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/brands', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/brands",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/brands' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 5,
            "name": "Demo Brand"
        }
    ]
}

Retrieves a list of all the organisational brands.

Return Type

array<Brands>

Scopes

This endpoint is only available for users with scope APP::MISC.

List Locales

GET /v1/locales

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/locales", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/locales', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/locales",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/locales' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "id": 1,
            "name": "English",
            "code": "en",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        }
    ]
}

Lists available locales.

Return Type

array<Locales>

Scopes

This endpoint is only available for users with scope APP::MISC.

List templates

GET /v1/templates

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/templates", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/templates', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/templates",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/templates' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "organisation_id": 1,
        "template_category_id": 1,
        "template_category_code": "DESPATCH_NOTE",
        "name": "Default despatch note",
        "status": "portrait",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z"
    }
}

Return a list of templates

Return Type

Templates

Filters

Field Operators Value List URL
organisation_id IN, NOT_IN
template_category_id IN, NOT_IN
template_category_code IN, NOT_IN
name LIKE

Scopes

This endpoint is only available for users with scope APP::TEMPLATES::READ.

Return rendered template

PUT /v1/templates/render

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/templates/render", [
    "body" => json_encode([
        "template_id" => "en",
        "resource_ids" => [
            1,
        ],
        "locales" => [
            "en",
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/templates/render', {
  template_id: "en",
  resource_ids: [
    1,
  ],
  locales: [
    "en",
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/templates/render",
    body: {
        "template_id": "en",
        "resource_ids": [
            1
        ],
        "locales": [
            "en"
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/templates/render' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "template_id": "en",
    "resource_ids": [
        1
    ],
    "locales": [
        "en"
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "organisation_id": 1,
        "template_category_id": 1,
        "template_category_code": "DESPATCH_NOTE",
        "name": "Default despatch note",
        "status": "portrait",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z"
    }
}

Return a template rendered for different resources and languages

Request Body

RenderTemplate

Return Type

Templates

Types for the Request Body

RenderTemplate (root level)

Key Description Types Restrictions
template_id ID of template. integer required
not null
min is 1
resource_ids List of resource ID’s. array<number> required
not null
min count is 1
locales List of resource ID’s. array<string> required
not null
min count is 1

Scopes

This endpoint is only available for users with scope APP::TEMPLATES::READ.

List File Order Importer Mapping Templates

GET /v1/mappings

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/mappings", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/mappings', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/mappings",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/mappings' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "id": 1,
            "slug": "default",
            "name": "Default",
            "organisation_id": 1,
            "fields": {},
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        }
    ]
}

List the mapping templates for File Order Importer.

Return Type

array<Mappings>

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

List Order Channels

GET /v1/orders/channels

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/channels?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/channels?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/channels?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/channels?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 321,
            "organisation_id": 321,
            "name": "Demo Channel",
            "short_code": "DEMO",
            "status": "active",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "brands": [
                {
                    "id": 5,
                    "name": "Demo Brand"
                }
            ],
            "organisation": {
                "id": 1,
                "name": "Demo",
                "active": true,
                "vat_number": "GB999 9999 73",
                "notes": "Demo account...",
                "contact_name": "Mr Joe Bloggs",
                "contact_phone": "+44 01425 000 000",
                "contact_mobile": "+44 00000000",
                "contact_email": "joe.bloggs@example.com",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            },
            "tax": {
                "id": 1,
                "name": "standard",
                "code": "20",
                "rate": 20,
                "description": "standard 20%",
                "active": true,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            }
        }
    ]
}

List order channels

Return Type

array<OrderChannels>

Filters

Field Operators Value List URL
search LIKE fuzzy search across selected attributes
status EQUALS

Available expands

Field Return Type Description
brands array<Brands> Brand data.
organisation Organisations Organisation data.
tax OrganisationTaxes Organisation tax data.

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

List Order Line Metadata

GET /v1/orders/goodsouts/:id/lines/:lineId/metadata

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/123456/metadata", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/123456/metadata', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/123456/metadata",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/123456/metadata' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "key": "my_key",
            "value": "some-value"
        }
    ]
}

Retrieves a list of all the metadata stored against a order line.

Parameter Regular Expressions

Return Type

array<OrderLineResourceMetadatas>

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Get Order Line Metadata

GET /v1/orders/goodsouts/:id/lines/:lineId/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/123456/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/123456/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/123456/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/123456/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Retrieves a single piece of metadata stored against a order line.

Parameter Regular Expressions

Return Type

OrderLineResourceMetadatas

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Set Order Line Metadata

PUT /v1/orders/goodsouts/:id/lines/:lineId/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/123456/metadata/my_key", [
    "body" => json_encode([
        "value" => "some-value",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/123456/metadata/my_key', {
  value: "some-value",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/123456/metadata/my_key",
    body: {
        "value": "some-value"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/123456/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "value": "some-value"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Sets some metadata against a Order Line.

Parameter Regular Expressions

Request Body

UpdateResourceMetadata

Return Type

OrderLineResourceMetadatas

Types for the Request Body

UpdateResourceMetadata (root level)

Key Description Types Restrictions
value The value. string required
not null
max length is 65535

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Delete Order Line Metadata

DELETE /v1/orders/goodsouts/:id/lines/:lineId/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("DELETE", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/123456/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.delete 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/123456/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "DELETE",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/123456/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request DELETE 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/123456/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

null

Deletes some metadata against a order.

Parameter Regular Expressions

Return Type

Empty.

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Create Order Line

POST /v1/orders/goodsouts/:id/lines

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines", [
    "body" => json_encode([
        "variation" => [
            "sku" => "GREEN-BALL",
            "channel" => 1,
        ],
        "net_unit_principal" => 12.55,
        "principal_tax" => 12,
        "discount" => 0,
        "discount_type" => "value",
        "quantity" => 4,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines', {
  variation: {
    sku: "GREEN-BALL",
    channel: 1,
  },
  net_unit_principal: 12.55,
  principal_tax: 12,
  discount: 0,
  discount_type: "value",
  quantity: 4,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines",
    body: {
        "variation": {
            "sku": "GREEN-BALL",
            "channel": 1
        },
        "net_unit_principal": 12.55,
        "principal_tax": 12,
        "discount": 0,
        "discount_type": "value",
        "quantity": 4
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "variation": {
        "sku": "GREEN-BALL",
        "channel": 1
    },
    "net_unit_principal": 12.55,
    "principal_tax": 12,
    "discount": 0,
    "discount_type": "value",
    "quantity": 4
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 3450345,
        "transaction_sku": "GREEN-BALL",
        "quantity": 4,
        "discount_type": "percentage",
        "discount": 1.5,
        "net_unit_principal": 12,
        "status": "active"
    }
}

Adds a new line to an existing goodsout.

Parameter Regular Expressions

Request Body

CreateOrderGoodsoutLine

Return Type

OrderGoodsoutLines

Types for the Request Body

CreateOrderGoodsoutLine (root level)

Key Description Types Restrictions
variation Product description Variation required
not null
net_unit_principal The net amount paid for a single one of these items. number required
not null
min is 0
principal_tax The ID of the tax that should be applied to the line principal value. integer required
not null
min is 1
discount The amount of discount to be applied to the line principal value. number not null
min is 0
discount_type The type of discount to apply. enum(percentage, value) not null
quantity The quantity ordered. integer required
not null
min is 1

Variation

Key Description Types Restrictions
sku The product’s stock keeping unit (SKU). string required
not null
min length is 1
channel The product channel’s ID. integer required
not null
min is 1

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Update Order Line Quantity

PUT /v1/orders/goodsouts/:id/lines/:lineId/quantity

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/3450345/quantity", [
    "body" => json_encode([
        "quantity" => 4,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/3450345/quantity', {
  quantity: 4,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/3450345/quantity",
    body: {
        "quantity": 4
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/3450345/quantity' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "quantity": 4
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 3450345,
        "transaction_sku": "GREEN-BALL",
        "quantity": 4,
        "discount_type": "percentage",
        "discount": 1.5,
        "net_unit_principal": 12,
        "status": "active"
    }
}

Updates the quantity of an order goodsout line.

Parameter Regular Expressions

Request Body

UpdateGoodsoutLineQuantity

Return Type

OrderGoodsoutLines

Types for the Request Body

UpdateGoodsoutLineQuantity (root level)

Key Description Types Restrictions
quantity Quantity. integer required
not null
min is 1

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Cancel Order Line

PUT /v1/orders/goodsouts/:id/lines/:lineId/cancel

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/3450345/cancel", [
    "body" => json_encode([
        "reason" => "Item no longer wanted.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/3450345/cancel', {
  reason: "Item no longer wanted.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/3450345/cancel",
    body: {
        "reason": "Item no longer wanted."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/lines/3450345/cancel' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "reason": "Item no longer wanted."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 3450345,
        "transaction_sku": "GREEN-BALL",
        "quantity": 4,
        "discount_type": "percentage",
        "discount": 1.5,
        "net_unit_principal": 12,
        "status": "active"
    }
}

Cancel a order goodsout line.

Parameter Regular Expressions

Request Body

CancelGoodsoutLine

Return Type

OrderGoodsoutLines

Types for the Request Body

CancelGoodsoutLine (root level)

Key Description Types Restrictions
reason Reason for canceling the line. string required
not null
min length is 1
max length is 250

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

List Order Metadata

GET /v1/orders/goodsouts/:id/metadata

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "key": "my_key",
            "value": "some-value"
        }
    ]
}

Retrieves a list of all the metadata stored against a order.

Parameter Regular Expressions

Return Type

array<OrderResourceMetadatas>

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Get Order Metadata

GET /v1/orders/goodsouts/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Retrieves a single piece of metadata stored against a order.

Parameter Regular Expressions

Return Type

OrderResourceMetadatas

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Set Order Metadata

PUT /v1/orders/goodsouts/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key", [
    "body" => json_encode([
        "value" => "some-value",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key', {
  value: "some-value",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key",
    body: {
        "value": "some-value"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "value": "some-value"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Sets some metadata against a Order.

Parameter Regular Expressions

Request Body

UpdateResourceMetadata

Return Type

OrderResourceMetadatas

Types for the Request Body

UpdateResourceMetadata (root level)

Key Description Types Restrictions
value The value. string required
not null
max length is 65535

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Delete Order Metadata

DELETE /v1/orders/goodsouts/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("DELETE", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.delete 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "DELETE",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request DELETE 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

null

Deletes some metadata against a order.

Parameter Regular Expressions

Return Type

Empty.

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

List Goodsouts

GET /v1/orders/despatched

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/despatched?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/despatched?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/despatched?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/despatched?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1049789,
            "status": "despatched",
            "bid": "1049789-1049789",
            "despatch_date": null,
            "courier": {
                "name": "Royal Mail",
                "code": "RM",
                "service": {
                    "name": "CRL - Packet (24 Hr)",
                    "code": "1ST",
                    "tracked": false,
                    "signed": false
                },
                "tracking": [
                    {
                        "courier": "Royal Mail",
                        "code": "RMTN1134905823GB",
                        "url": "http://www.royalmail.com/trackdetails?trackNumber=RMTN1134905823GB"
                    }
                ]
            },
            "attributes": [
                {
                    "name": "Marketplace",
                    "value": "202-9999999-9995900"
                }
            ],
            "order": {
                "id": 1234567,
                "reference": "CustomerReference #154254",
                "status": "open",
                "currency": {
                    "code": "GBP",
                    "name": "British Pound",
                    "symbol": "£"
                }
            }
        }
    ]
}

List order goodsouts. Please note that all expands will be applied automatically.

Return Type

array<DespatchedOrders>

Filters

Field Operators Value List URL
search LIKE fuzzy search across selected attributes
id EQUALS
order.reference IN
order.channel.short_code IN, NOT_IN /v1/orders/channels
order.channel.id IN, NOT_IN
despatch_date LESS_THAN, ON_DATE, MORE_THAN
order.currency.code IN, NOT_IN
attributes.name IN, NOT_IN

Sortings

Results can be sorted by the following keys: bid, despatch_date, order.channel.name, order.status, placed_date, status, warehouse.name.

Available expands

Field Return Type Description
attributes array<CachedAttribute> An attribute.
courier CachedCourier A courier.
courier.service CachedShippingService Holds data about a shipping service.
courier.tracking array<CachedCourierTracking> Tracking details.
order CachedOrder An order.
order.currency SummarisedCurrency A currency.

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

List Goodsouts

GET /v1/orders/goodsouts

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/goodsouts?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/goodsouts?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/goodsouts?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1049789,
            "bid": "1234567-1049789",
            "creator": "Support Team",
            "status": "awaiting_despatch",
            "date_placed": "2019-11-25T14:52:56.000Z",
            "despatch_date": null,
            "despatch_on_date": null,
            "warehouse": "CHR",
            "courier": {
                "name": "Royal Mail",
                "code": "RM",
                "service": {
                    "name": "CRL - Packet (24 Hr)",
                    "code": "1ST",
                    "tracked": false,
                    "signed": false
                },
                "tracking": [
                    {
                        "courier": "Royal Mail",
                        "code": "RMTN1134905823GB",
                        "url": "http://www.royalmail.com/trackdetails?trackNumber=RMTN1134905823GB"
                    }
                ]
            },
            "tags": [
                {
                    "name": "Processed",
                    "shortcode": "processed",
                    "description": "Processed by a 3rd party system"
                }
            ],
            "attributes": [
                {
                    "name": "Marketplace",
                    "value": "202-9999999-9995900"
                }
            ],
            "shipping_address": {
                "first_name": "Support",
                "last_name": "Team",
                "company": null,
                "address_one": "Unit 4",
                "address_two": "Radar Way",
                "address_three": null,
                "town": "Christchurch",
                "county": "Dorset",
                "postcode": "BH234FL",
                "email": "support.team@i-fulfilment.co.uk",
                "mobile": null,
                "telephone": null,
                "secondary_telephone": null,
                "contact": {
                    "name": "Support Team",
                    "group": "I-Fulfilment"
                },
                "country": {
                    "name": "United Kingdom",
                    "iso_2": "GB",
                    "iso_3": "GBR"
                }
            },
            "order": {
                "id": 1234567,
                "reference": "CustomerReference #154254",
                "status": "open",
                "channel": {
                    "id": 342,
                    "short_code": "DEMO",
                    "name": "Demo Channel"
                },
                "currency": {
                    "code": "GBP",
                    "name": "British Pound",
                    "symbol": "£"
                },
                "brand": {
                    "name": "Demo Brand"
                }
            },
            "lines": {
                "id": 3450345,
                "product_variation_id": 1,
                "sku": "DEMO-SKU-01",
                "name": "Example product",
                "quantity": 1
            }
        }
    ]
}

List order goodsouts. Please note that all expands will be applied automatically.

Return Type

array<CachedGoodsout>

Filters

Field Operators Value List URL
search LIKE fuzzy search across selected attributes
id EQUALS
status IN, NOT_IN
order.reference IN
order.channel.short_code IN, NOT_IN /v1/orders/channels
order.channel.id IN, NOT_IN
shipping_address.country.iso_2 IN, NOT_IN
date_placed LESS_THAN, ON_DATE, MORE_THAN
despatch_date LESS_THAN, ON_DATE, MORE_THAN
order.currency.code IN, NOT_IN
tags.shortcode IN, NOT_IN
attributes.name IN, NOT_IN

Sortings

Results can be sorted by the following keys: bid, despatch_date, order.channel.name, order.status, placed_date, status, warehouse.name.

Available expands

Field Return Type Description
attributes array<CachedAttribute> An attribute.
courier CachedCourier A courier.
courier.service CachedShippingService Holds data about a shipping service.
courier.tracking array<CachedCourierTracking> Tracking details.
lines array<CachedGoodsoutLine> An order goodsout line summary.
order CachedOrder An order.
order.brand CachedBrand A brand.
order.channel CachedOrderChannel An order channel.
order.currency SummarisedCurrency A currency.
shipping_address CachedAddress An address.
shipping_address.contact CachedAddressContact A BladePRO contact.
shipping_address.country SummarisedCountry A country.
tags array<SummarisedTag> A tag.
warehouse SummarisedWarehouse A warehouse.
warehouse.country SummarisedCountry A country.

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Create Order

POST /v1/orders

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/orders?expand=*", [
    "body" => json_encode([
        "channel" => "DEMO",
        "reference" => "#154254",
        "currency" => "GBP",
        "goodsouts" => [
            [
                "warehouse" => "CHR",
                "date_placed" => "2020-03-31",
                "shipping_address" => [
                    "title" => "Mr",
                    "first_name" => "Support",
                    "last_name" => "Team",
                    "company" => "ACME LTD",
                    "address_one" => "Unit 4",
                    "address_two" => "Radar Way",
                    "address_three" => "Ind Est",
                    "town" => "Christchurch",
                    "country_id" => "GB",
                    "county" => "Dorset",
                    "postcode" => "BH23 4FL",
                    "email" => "support.team@i-fulfilment.co.uk",
                    "mobile" => "00000000000",
                    "telephone" => "00000000000",
                    "secondary_telephone" => "0000000000000",
                    "vat_number" => "GB999 9999 73",
                ],
                "lines" => [
                    [
                        "variation" => [
                            "sku" => "GREEN-BALL",
                            "channel" => 1,
                        ],
                        "net_unit_principal" => 12.55,
                        "principal_tax" => 12,
                        "discount" => 0,
                        "discount_type" => "value",
                        "quantity" => 4,
                        "expiry_date" => "2025-03-31",
                        "batch_code" => "ABC154254",
                        "packing_requirements" => [
                            "pack_together_reference" => "ABC1234",
                        ],
                    ],
                ],
                "attributes" => [
                    [
                        "name" => "my-attribute",
                        "value" => "LoremIpsum",
                    ],
                ],
                "picking_instructions" => null,
                "delivery_instructions" => "When not home put in shed.",
                "gift_message" => null,
                "shipping" => [
                    "customer_principal" => 0.99,
                    "shipping_code" => null,
                    "duty_paid" => true,
                ],
                "bulk_options" => [
                    "requires_palletisation" => true,
                    "single_sku_cartons_only" => true,
                    "distribution_branch_id" => "BRANCH_01",
                    "department_number" => "DEP01",
                    "store_location_number" => "41440",
                    "distribution_centre" => "DC49004",
                    "purchase_order_reference" => "PO6548967-46531",
                    "carton_label" => [
                        "type_id" => 1,
                        "references" => [
                            "dc" => "ABC",
                            "store" => "ABC",
                        ],
                    ],
                ],
                "tags" => [
                    "JIT",
                    "MyTag",
                ],
            ],
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/orders?expand=*', {
  channel: "DEMO",
  reference: "#154254",
  currency: "GBP",
  goodsouts: [
    {
      warehouse: "CHR",
      date_placed: "2020-03-31",
      shipping_address: {
        title: "Mr",
        first_name: "Support",
        last_name: "Team",
        company: "ACME LTD",
        address_one: "Unit 4",
        address_two: "Radar Way",
        address_three: "Ind Est",
        town: "Christchurch",
        country_id: "GB",
        county: "Dorset",
        postcode: "BH23 4FL",
        email: "support.team@i-fulfilment.co.uk",
        mobile: "00000000000",
        telephone: "00000000000",
        secondary_telephone: "0000000000000",
        vat_number: "GB999 9999 73",
      },
      lines: [
        {
          variation: {
            sku: "GREEN-BALL",
            channel: 1,
          },
          net_unit_principal: 12.55,
          principal_tax: 12,
          discount: 0,
          discount_type: "value",
          quantity: 4,
          expiry_date: "2025-03-31",
          batch_code: "ABC154254",
          packing_requirements: {
            pack_together_reference: "ABC1234",
          },
        },
      ],
      attributes: [
        {
          name: "my-attribute",
          value: "LoremIpsum",
        },
      ],
      picking_instructions: nil,
      delivery_instructions: "When not home put in shed.",
      gift_message: nil,
      shipping: {
        customer_principal: 0.99,
        shipping_code: nil,
        duty_paid: true,
      },
      bulk_options: {
        requires_palletisation: true,
        single_sku_cartons_only: true,
        distribution_branch_id: "BRANCH_01",
        department_number: "DEP01",
        store_location_number: "41440",
        distribution_centre: "DC49004",
        purchase_order_reference: "PO6548967-46531",
        carton_label: {
          type_id: 1,
          references: {
            dc: "ABC",
            store: "ABC",
          },
        },
      },
      tags: [
        "JIT",
        "MyTag",
      ],
    },
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders?expand=*",
    body: {
        "channel": "DEMO",
        "reference": "#154254",
        "currency": "GBP",
        "goodsouts": [
            {
                "warehouse": "CHR",
                "date_placed": "2020-03-31",
                "shipping_address": {
                    "title": "Mr",
                    "first_name": "Support",
                    "last_name": "Team",
                    "company": "ACME LTD",
                    "address_one": "Unit 4",
                    "address_two": "Radar Way",
                    "address_three": "Ind Est",
                    "town": "Christchurch",
                    "country_id": "GB",
                    "county": "Dorset",
                    "postcode": "BH23 4FL",
                    "email": "support.team@i-fulfilment.co.uk",
                    "mobile": "00000000000",
                    "telephone": "00000000000",
                    "secondary_telephone": "0000000000000",
                    "vat_number": "GB999 9999 73"
                },
                "lines": [
                    {
                        "variation": {
                            "sku": "GREEN-BALL",
                            "channel": 1
                        },
                        "net_unit_principal": 12.55,
                        "principal_tax": 12,
                        "discount": 0,
                        "discount_type": "value",
                        "quantity": 4,
                        "expiry_date": "2025-03-31",
                        "batch_code": "ABC154254",
                        "packing_requirements": {
                            "pack_together_reference": "ABC1234"
                        }
                    }
                ],
                "attributes": [
                    {
                        "name": "my-attribute",
                        "value": "LoremIpsum"
                    }
                ],
                "picking_instructions": null,
                "delivery_instructions": "When not home put in shed.",
                "gift_message": null,
                "shipping": {
                    "customer_principal": 0.99,
                    "shipping_code": null,
                    "duty_paid": false
                },
                "bulk_options": {
                    "requires_palletisation": true,
                    "single_sku_cartons_only": true,
                    "distribution_branch_id": "BRANCH_01",
                    "department_number": "DEP01",
                    "store_location_number": "41440",
                    "distribution_centre": "DC49004",
                    "purchase_order_reference": "PO6548967-46531",
                    "carton_label": {
                        "type_id": 1,
                        "references": {
                            "dc": "ABC",
                            "store": "ABC"
                        }
                    }
                },
                "tags": [
                    "JIT",
                    "MyTag"
                ]
            }
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/orders?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "channel": "DEMO",
    "reference": "#154254",
    "currency": "GBP",
    "goodsouts": [
        {
            "warehouse": "CHR",
            "date_placed": "2020-03-31",
            "shipping_address": {
                "title": "Mr",
                "first_name": "Support",
                "last_name": "Team",
                "company": "ACME LTD",
                "address_one": "Unit 4",
                "address_two": "Radar Way",
                "address_three": "Ind Est",
                "town": "Christchurch",
                "country_id": "GB",
                "county": "Dorset",
                "postcode": "BH23 4FL",
                "email": "support.team@i-fulfilment.co.uk",
                "mobile": "00000000000",
                "telephone": "00000000000",
                "secondary_telephone": "0000000000000",
                "vat_number": "GB999 9999 73"
            },
            "lines": [
                {
                    "variation": {
                        "sku": "GREEN-BALL",
                        "channel": 1
                    },
                    "net_unit_principal": 12.55,
                    "principal_tax": 12,
                    "discount": 0,
                    "discount_type": "value",
                    "quantity": 4,
                    "expiry_date": "2025-03-31",
                    "batch_code": "ABC154254",
                    "packing_requirements": {
                        "pack_together_reference": "ABC1234"
                    }
                }
            ],
            "attributes": [
                {
                    "name": "my-attribute",
                    "value": "LoremIpsum"
                }
            ],
            "picking_instructions": null,
            "delivery_instructions": "When not home put in shed.",
            "gift_message": null,
            "shipping": {
                "customer_principal": 0.99,
                "shipping_code": null,
                "duty_paid": false
            },
            "bulk_options": {
                "requires_palletisation": true,
                "single_sku_cartons_only": true,
                "distribution_branch_id": "BRANCH_01",
                "department_number": "DEP01",
                "store_location_number": "41440",
                "distribution_centre": "DC49004",
                "purchase_order_reference": "PO6548967-46531",
                "carton_label": {
                    "type_id": 1,
                    "references": {
                        "dc": "ABC",
                        "store": "ABC"
                    }
                }
            },
            "tags": [
                "JIT",
                "MyTag"
            ]
        }
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1234567,
        "reference": "#154254",
        "status": "open",
        "goodsouts": {
            "id": 1049789,
            "status": "awaiting_despatch",
            "date_placed": "2019-11-25T14:52:56.000Z",
            "despatch_date": null,
            "cancellation_date": "2019-11-25T14:52:56.000Z",
            "despatch_on_date": null,
            "source": "How the order was created.",
            "delivery_instructions": "When not home put in shed.",
            "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift.",
            "attributes": [
                {
                    "name": "Marketplace",
                    "value": "202-9999999-9995900"
                }
            ],
            "shipments": [
                {
                    "shipping_service": [
                        {
                            "name": "CRL - Packet (24 Hr)",
                            "code": "1ST",
                            "courier_account": [
                                {
                                    "name": "Royal Mail",
                                    "courier": {
                                        "name": "Royal Mail",
                                        "code": "RM"
                                    }
                                }
                            ]
                        }
                    ]
                }
            ],
            "lines": [
                {
                    "id": 3450345,
                    "transaction_sku": "GREEN-BALL",
                    "quantity": 4,
                    "discount_type": "percentage",
                    "discount": 1.5,
                    "net_unit_principal": 12,
                    "status": "active",
                    "variation": {
                        "id": 1,
                        "product_id": 1,
                        "status": "active",
                        "sku": "DEMO-SKU-01",
                        "barcode": "0123456789012",
                        "product_variation_type_id": 1,
                        "discontinued_date": "2019-11-25T14:52:56.000Z",
                        "despatch_instructions": "Always pack facing upwards.",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z",
                        "type": {
                            "id": 1,
                            "name": "Standard Product",
                            "type": "product",
                            "created": "2019-11-25T14:52:56.000Z",
                            "modified": "2019-11-25T14:52:56.000Z"
                        },
                        "descriptions": [
                            {
                                "id": 1,
                                "product_variation_id": 1,
                                "locale_id": 1,
                                "name": "Example product",
                                "full_description": "Example product description",
                                "created": "2019-11-25T14:52:56.000Z",
                                "modified": "2019-11-25T14:52:56.000Z",
                                "locale": {
                                    "id": 1,
                                    "name": "English",
                                    "code": "en",
                                    "created": "2019-11-25T14:52:56.000Z",
                                    "modified": "2019-11-25T14:52:56.000Z"
                                }
                            }
                        ]
                    }
                }
            ],
            "tags": [
                {
                    "id": 1,
                    "name": "Processed",
                    "shortcode": "PROCESSED",
                    "description": "Marked a as processed by XYZ system",
                    "created": "2019-11-25T14:52:56.000Z"
                }
            ],
            "warehouse": [
                {
                    "short_code": "CHR",
                    "name": "Christchurch"
                }
            ],
            "order": {
                "id": 1234567,
                "reference": "#154254",
                "status": "open",
                "channel": {
                    "id": 321,
                    "organisation_id": 321,
                    "name": "Demo Channel",
                    "short_code": "DEMO",
                    "status": "active",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z",
                    "organisation": {
                        "id": 1,
                        "name": "Demo",
                        "active": true,
                        "vat_number": "GB999 9999 73",
                        "notes": "Demo account...",
                        "contact_name": "Mr Joe Bloggs",
                        "contact_phone": "+44 01425 000 000",
                        "contact_mobile": "+44 00000000",
                        "contact_email": "joe.bloggs@example.com",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    }
                }
            },
            "shipping_address": {
                "title": "Mr",
                "first_name": "Support",
                "last_name": "Team",
                "company": "ACME LTD",
                "address_one": "Unit 4",
                "address_two": "Radar Way",
                "address_three": null,
                "town": "Christchurch",
                "county": "Dorset",
                "postcode": "BH23 4FL",
                "country_id": 1,
                "email": "support.team@i-fulfilment.co.uk",
                "mobile": "00000000000",
                "telephone": "00000000000",
                "secondary_telephone": "0000000000000",
                "vat_number": "GB999 9999 73",
                "country": {
                    "id": 1,
                    "name": "United Kingdom",
                    "iso_2": "GB",
                    "iso_3": "GBR",
                    "region_id": 1,
                    "currency_id": 1,
                    "block": "EU",
                    "region": {}
                }
            }
        }
    }
}

Creates an order.

Request Body

CreateOrder

Return Type

Orders

Types for the Request Body

CreateOrder (root level)

Key Description Types Restrictions
channel Channel’s unique short code or ID. string
or integer
required
not null
if type is string, then min length is 3
if type is integer, then min is 1
reference Order specific reference. string required
not null
min length is 1
currency Currency ISO code. string required
not null
min length is 3
goodsouts List of goodsouts to create on the order. array<Goodsout> required
not null
min count is 1

Address

Key Description Types Restrictions
title Title. string not null
first_name First name. string required
not null
last_name Last name. string required
not null
company Company name. string not null
address_one First line of address. string required
not null
address_two Second line of address. string not null
address_three Third line of address. string not null
town Town. string required
not null
country_id Country ISO 2 or ISO 3 code. string required
not null
min length is 2
max length is 3
county County. string not null
postcode Postcode. string required
not null
email Email. string not null
mobile Mobile number. string not null
telephone Landline number. string not null
secondary_telephone Secondary telephone number. string not null
vat_number VAT number. string not null

Attribute

Key Description Types Restrictions
name Name of the attribute string required
not null
min length is 1
value Value of the attribute string required
not null

BulkOptions

Key Description Types Restrictions
requires_palletisation Whether the goodsout needs palletisation. boolean
single_sku_cartons_only Are packed boxes only allowed to have a single SKU in them? boolean
distribution_branch_id Distribution branch ID. string
department_number Department number. string
store_location_number Store location number. string
distribution_centre Distribution centre. string
purchase_order_reference Purchase order reference. string
carton_label Carton label details. CartonLabel

CartonLabel

Key Description Types Restrictions
type_id Carton label type’s ID. integer required
not null
min is 1
references References required by the label type. Use their ‘code’ field as keys in this map. object required
not null

CreateOrderGoodsoutLinePackingRequirements

Key Description Types Restrictions
pack_together_reference The reference used to group items together that must be packed in the same box. string

Goodsout

Key Description Types Restrictions
warehouse Warehouse short code. string required
not null
min length is 3
date_placed Customer placed date. date required
not null
shipping_address Customer shipping address. Address required
not null
lines The list of products. array<Line> required
not null
min count is 1
attributes List of attributes. array<Attribute> not null
picking_instructions Picking instructions. string not null
despatch_instructions Despatch instructions. string not null
delivery_instructions Delivery instructions. string not null
gift_message Gift message. If presented, gift_message_template_shortcode is required. string optionally required
not null
gift_message_template_shortcode Shortcode for the gift message template to be used. If presented, gift_message is required. string optionally required
not null
shipping Shipping data. Shipping not null
bulk_options Options for bulk goodsouts. BulkOptions
tags List of tags to be applied to the goodsout. array<string>

Line

Key Description Types Restrictions
variation Product description Variation required
not null
net_unit_principal The net amount paid for a single one of these items. number required
not null
min is 0
principal_tax The ID of the tax that should be applied to the line principal value. integer required
not null
min is 1
discount The amount of discount to be applied to the line principal value. number not null
min is 0
discount_type The type of discount to apply. enum(percentage, value) not null
quantity The quantity ordered. integer required
not null
min is 1
expiry_date The required expiry date that must be picked. date not null
batch_code The required batch code that must be picked. string not null
min length is 1
packing_requirements Packing Requirements CreateOrderGoodsoutLinePackingRequirements

Shipping

Key Description Types Restrictions
customer_principal The net amount the customer paid for shipping. number required
not null
min is 0
shipping_code Shipping code. string not null
min length is 2
duty_paid Duty paid. boolean not null

Variation

Key Description Types Restrictions
sku The product’s stock keeping unit (SKU). string required
not null
min length is 1
channel The product channel’s ID. integer required
not null
min is 1

Available expands

Field Return Type Description
goodsouts array<OrderGoodsouts> Customer order shipments.
goodsouts.attributes array<CachedAttribute> An attribute.
goodsouts.lines array<OrderGoodsoutLines> An order for a product.
goodsouts.shipments array<Shipments> Data related to a shipment.
goodsouts.shipments.shipping_service ShippingServices Customer order shipments.
goodsouts.shipments.shipping_service.courier_account ShippingCourierAccounts Shipping courier account data.
goodsouts.shipments.shipping_service.courier_account.courier CachedNameAndCode Holds a name and a code field.

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Create Goodsout

POST /v1/orders/goodsouts

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/orders/goodsouts?expand=*", [
    "body" => json_encode([
        "warehouse" => "CHR",
        "order" => [
            "channel" => "DEMO",
            "reference" => "#154254",
            "currency" => "GBP",
        ],
        "date_placed" => "2020-03-31",
        "shipping_address" => [
            "title" => "Mr",
            "first_name" => "Support",
            "last_name" => "Team",
            "company" => "ACME LTD",
            "address_one" => "Unit 4",
            "address_two" => "Radar Way",
            "address_three" => "Ind Est",
            "town" => "Christchurch",
            "country_id" => "GB",
            "county" => "Dorset",
            "postcode" => "BH23 4FL",
            "email" => "support.team@i-fulfilment.co.uk",
            "mobile" => "00000000000",
            "telephone" => "00000000000",
            "secondary_telephone" => "0000000000000",
            "vat_number" => "GB999 9999 73",
        ],
        "lines" => [
            [
                "variation" => [
                    "sku" => "GREEN-BALL",
                    "channel" => 1,
                ],
                "net_unit_principal" => 12.55,
                "principal_tax" => 12,
                "discount" => 0,
                "discount_type" => "value",
                "quantity" => 4,
                "packing_requirements" => [
                    "pack_together_reference" => "ABC1234",
                ],
                "expiry_date" => "2025-03-31",
                "batch_code" => "ABC154254",
            ],
        ],
        "attributes" => [
            [
                "name" => "my-attribute",
                "value" => "LoremIpsum",
            ],
        ],
        "delivery_instructions" => "When not home put in shed.",
        "shipping" => [
            "customer_principal" => 0.99,
            "duty_paid" => true,
        ],
        "import_options" => [
            "fraud" => true,
        ],
        "bulk_options" => [
            "requires_palletisation" => true,
            "single_sku_cartons_only" => true,
            "distribution_branch_id" => "BRANCH_01",
            "department_number" => "DEP01",
            "store_location_number" => "41440",
            "distribution_centre" => "DC49004",
            "purchase_order_reference" => "PO6548967-46531",
            "carton_label" => [
                "type_id" => 1,
                "references" => [
                    "dc" => "ABC",
                    "store" => "ABC",
                ],
            ],
        ],
        "tags" => [
            "JIT",
            "MyTag",
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/orders/goodsouts?expand=*', {
  warehouse: "CHR",
  order: {
    channel: "DEMO",
    reference: "#154254",
    currency: "GBP",
  },
  date_placed: "2020-03-31",
  shipping_address: {
    title: "Mr",
    first_name: "Support",
    last_name: "Team",
    company: "ACME LTD",
    address_one: "Unit 4",
    address_two: "Radar Way",
    address_three: "Ind Est",
    town: "Christchurch",
    country_id: "GB",
    county: "Dorset",
    postcode: "BH23 4FL",
    email: "support.team@i-fulfilment.co.uk",
    mobile: "00000000000",
    telephone: "00000000000",
    secondary_telephone: "0000000000000",
    vat_number: "GB999 9999 73",
  },
  lines: [
    {
      variation: {
        sku: "GREEN-BALL",
        channel: 1,
      },
      net_unit_principal: 12.55,
      principal_tax: 12,
      discount: 0,
      discount_type: "value",
      quantity: 4,
      packing_requirements: {
        pack_together_reference: "ABC1234",
      },
      expiry_date: "2025-03-31",
      batch_code: "ABC154254",
    },
  ],
  attributes: [
    {
      name: "my-attribute",
      value: "LoremIpsum",
    },
  ],
  delivery_instructions: "When not home put in shed.",
  shipping: {
    customer_principal: 0.99,
    duty_paid: true,
  },
  import_options: {
    fraud: true,
  },
  bulk_options: {
    requires_palletisation: true,
    single_sku_cartons_only: true,
    distribution_branch_id: "BRANCH_01",
    department_number: "DEP01",
    store_location_number: "41440",
    distribution_centre: "DC49004",
    purchase_order_reference: "PO6548967-46531",
    carton_label: {
      type_id: 1,
      references: {
        dc: "ABC",
        store: "ABC",
      },
    },
  },
  tags: [
    "JIT",
    "MyTag",
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts?expand=*",
    body: {
        "warehouse": "CHR",
        "order": {
            "channel": "DEMO",
            "reference": "#154254",
            "currency": "GBP"
        },
        "date_placed": "2020-03-31",
        "shipping_address": {
            "title": "Mr",
            "first_name": "Support",
            "last_name": "Team",
            "company": "ACME LTD",
            "address_one": "Unit 4",
            "address_two": "Radar Way",
            "address_three": "Ind Est",
            "town": "Christchurch",
            "country_id": "GB",
            "county": "Dorset",
            "postcode": "BH23 4FL",
            "email": "support.team@i-fulfilment.co.uk",
            "mobile": "00000000000",
            "telephone": "00000000000",
            "secondary_telephone": "0000000000000",
            "vat_number": "GB999 9999 73"
        },
        "lines": [
            {
                "variation": {
                    "sku": "GREEN-BALL",
                    "channel": 1
                },
                "net_unit_principal": 12.55,
                "principal_tax": 12,
                "discount": 0,
                "discount_type": "value",
                "quantity": 4,
                "packing_requirements": {
                    "pack_together_reference": "ABC1234"
                },
                "expiry_date": "2025-03-31",
                "batch_code": "ABC154254"
            }
        ],
        "attributes": [
            {
                "name": "my-attribute",
                "value": "LoremIpsum"
            }
        ],
        "delivery_instructions": "When not home put in shed.",
        "shipping": {
            "customer_principal": 0.99,
            "duty_paid": false
        },
        "import_options": {
            "fraud": true
        },
        "bulk_options": {
            "requires_palletisation": true,
            "single_sku_cartons_only": true,
            "distribution_branch_id": "BRANCH_01",
            "department_number": "DEP01",
            "store_location_number": "41440",
            "distribution_centre": "DC49004",
            "purchase_order_reference": "PO6548967-46531",
            "carton_label": {
                "type_id": 1,
                "references": {
                    "dc": "ABC",
                    "store": "ABC"
                }
            }
        },
        "tags": [
            "JIT",
            "MyTag"
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/orders/goodsouts?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "warehouse": "CHR",
    "order": {
        "channel": "DEMO",
        "reference": "#154254",
        "currency": "GBP"
    },
    "date_placed": "2020-03-31",
    "shipping_address": {
        "title": "Mr",
        "first_name": "Support",
        "last_name": "Team",
        "company": "ACME LTD",
        "address_one": "Unit 4",
        "address_two": "Radar Way",
        "address_three": "Ind Est",
        "town": "Christchurch",
        "country_id": "GB",
        "county": "Dorset",
        "postcode": "BH23 4FL",
        "email": "support.team@i-fulfilment.co.uk",
        "mobile": "00000000000",
        "telephone": "00000000000",
        "secondary_telephone": "0000000000000",
        "vat_number": "GB999 9999 73"
    },
    "lines": [
        {
            "variation": {
                "sku": "GREEN-BALL",
                "channel": 1
            },
            "net_unit_principal": 12.55,
            "principal_tax": 12,
            "discount": 0,
            "discount_type": "value",
            "quantity": 4,
            "packing_requirements": {
                "pack_together_reference": "ABC1234"
            },
            "expiry_date": "2025-03-31",
            "batch_code": "ABC154254"
        }
    ],
    "attributes": [
        {
            "name": "my-attribute",
            "value": "LoremIpsum"
        }
    ],
    "delivery_instructions": "When not home put in shed.",
    "shipping": {
        "customer_principal": 0.99,
        "duty_paid": false
    },
    "import_options": {
        "fraud": true
    },
    "bulk_options": {
        "requires_palletisation": true,
        "single_sku_cartons_only": true,
        "distribution_branch_id": "BRANCH_01",
        "department_number": "DEP01",
        "store_location_number": "41440",
        "distribution_centre": "DC49004",
        "purchase_order_reference": "PO6548967-46531",
        "carton_label": {
            "type_id": 1,
            "references": {
                "dc": "ABC",
                "store": "ABC"
            }
        }
    },
    "tags": [
        "JIT",
        "MyTag"
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1049789,
        "status": "awaiting_despatch",
        "date_placed": "2019-11-25T14:52:56.000Z",
        "despatch_date": null,
        "cancellation_date": "2019-11-25T14:52:56.000Z",
        "despatch_on_date": null,
        "source": "How the order was created.",
        "delivery_instructions": "When not home put in shed.",
        "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift.",
        "attributes": [
            {
                "name": "Marketplace",
                "value": "202-9999999-9995900"
            }
        ],
        "shipments": [
            {
                "shipping_service": [
                    {
                        "name": "CRL - Packet (24 Hr)",
                        "code": "1ST",
                        "courier_account": [
                            {
                                "name": "Royal Mail",
                                "courier": {
                                    "name": "Royal Mail",
                                    "code": "RM"
                                }
                            }
                        ]
                    }
                ]
            }
        ],
        "lines": [
            {
                "id": 3450345,
                "transaction_sku": "GREEN-BALL",
                "quantity": 4,
                "discount_type": "percentage",
                "discount": 1.5,
                "net_unit_principal": 12,
                "status": "active",
                "variation": {
                    "id": 1,
                    "product_id": 1,
                    "status": "active",
                    "sku": "DEMO-SKU-01",
                    "barcode": "0123456789012",
                    "product_variation_type_id": 1,
                    "discontinued_date": "2019-11-25T14:52:56.000Z",
                    "despatch_instructions": "Always pack facing upwards.",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z",
                    "type": {
                        "id": 1,
                        "name": "Standard Product",
                        "type": "product",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    },
                    "descriptions": [
                        {
                            "id": 1,
                            "product_variation_id": 1,
                            "locale_id": 1,
                            "name": "Example product",
                            "full_description": "Example product description",
                            "created": "2019-11-25T14:52:56.000Z",
                            "modified": "2019-11-25T14:52:56.000Z",
                            "locale": {
                                "id": 1,
                                "name": "English",
                                "code": "en",
                                "created": "2019-11-25T14:52:56.000Z",
                                "modified": "2019-11-25T14:52:56.000Z"
                            }
                        }
                    ]
                }
            }
        ],
        "tags": [
            {
                "id": 1,
                "name": "Processed",
                "shortcode": "PROCESSED",
                "description": "Marked a as processed by XYZ system",
                "created": "2019-11-25T14:52:56.000Z"
            }
        ],
        "warehouse": [
            {
                "short_code": "CHR",
                "name": "Christchurch"
            }
        ],
        "order": {
            "id": 1234567,
            "reference": "#154254",
            "status": "open",
            "channel": {
                "id": 321,
                "organisation_id": 321,
                "name": "Demo Channel",
                "short_code": "DEMO",
                "status": "active",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        },
        "shipping_address": {
            "title": "Mr",
            "first_name": "Support",
            "last_name": "Team",
            "company": "ACME LTD",
            "address_one": "Unit 4",
            "address_two": "Radar Way",
            "address_three": null,
            "town": "Christchurch",
            "county": "Dorset",
            "postcode": "BH23 4FL",
            "country_id": 1,
            "email": "support.team@i-fulfilment.co.uk",
            "mobile": "00000000000",
            "telephone": "00000000000",
            "secondary_telephone": "0000000000000",
            "vat_number": "GB999 9999 73",
            "country": {
                "id": 1,
                "name": "United Kingdom",
                "iso_2": "GB",
                "iso_3": "GBR",
                "region_id": 1,
                "currency_id": 1,
                "block": "EU",
                "region": {}
            }
        }
    }
}

Creates an order goodsout.

Request Body

CreateGoodsout

Return Type

OrderGoodsouts

Types for the Request Body

CreateGoodsout (root level)

Key Description Types Restrictions
warehouse Warehouse short code. string required
not null
min length is 3
order Order. Order required
not null
date_placed Customer placed date. date required
not null
shipping_address Customer shipping address. Address required
not null
lines The list of products. array<Line> required
not null
min count is 1
attributes List of attributes. array<Attribute> not null
picking_instructions Picking instructions. string not null
despatch_instructions Despatch instructions. string not null
delivery_instructions Delivery instructions. string not null
gift_message Gift message. If presented, gift_message_template_shortcode is required. string optionally required
not null
gift_message_template_shortcode Shortcode for the gift message template to be used. If presented, gift_message is required. string optionally required
not null
shipping Shipping data. Shipping not null
import_options Import options. ImportOptions
metadata Goodsout metadata. array<OrderResourceMetadata>
bulk_options Options for bulk goodsouts. BulkOptions
tags List of tags to be applied to the goodsout. array<string>

Address

Key Description Types Restrictions
title Title. string
first_name First name. string
last_name Last name. string
company Company name. string
address_one First line of address. string
address_two Second line of address. string
address_three Third line of address. string
town Town. string
country_id Country ISO 2 or ISO 3 code. string min length is 0
max length is 3
county County. string
postcode Postcode. string
email Email. string
mobile Mobile number. string
telephone Landline number. string
secondary_telephone Secondary telephone number. string
vat_number VAT number. string

Attribute

Key Description Types Restrictions
name Name of the attribute string required
not null
min length is 1
value Value of the attribute string required
not null

BulkOptions

Key Description Types Restrictions
requires_palletisation Whether the goodsout needs palletisation. boolean
single_sku_cartons_only Are packed boxes only allowed to have a single SKU in them? boolean
distribution_branch_id Distribution branch ID. string
department_number Department number. string
store_location_number Store location number. string
distribution_centre Distribution centre. string
purchase_order_reference Purchase order reference. string
carton_label Carton label details. CartonLabel

CartonLabel

Key Description Types Restrictions
type_id Carton label type’s ID. integer required
not null
min is 1
references References required by the label type. Use their ‘code’ field as keys in this map. object required
not null

CreateOrderGoodsoutLinePackingRequirements

Key Description Types Restrictions
pack_together_reference The reference used to group items together that must be packed in the same box. string

ImportOptions

Key Description Types Restrictions
fraud If the order came in as a possible fraud order, set this to true. The order will be put on hold. boolean

Line

Key Description Types Restrictions
variation Product description Variation required
not null
net_unit_principal The net amount paid for a single one of these items. number required
not null
min is 0
principal_tax The ID of the tax that should be applied to the line principal value. integer required
not null
min is 1
discount The amount of discount to be applied to the line principal value. number not null
min is 0
discount_type The type of discount to apply. enum(percentage, value) not null
quantity The quantity ordered. integer required
not null
min is 1
packing_requirements Packing Requirements CreateOrderGoodsoutLinePackingRequirements
expiry_date The required expiry date that must be picked. date not null
batch_code The required batch code that must be picked. string not null
min length is 1

Order

Key Description Types Restrictions
channel Channel’s unique short code or ID. string
or integer
required
not null
if type is string, then min length is 3
if type is integer, then min is 1
reference Order specific reference. string required
not null
min length is 1
currency Currency ISO code. string required
not null
min length is 3

OrderResourceMetadata

Key Description Types Restrictions
key Metadata key. string required
not null
value Metadata value. string required
not null

Shipping

Key Description Types Restrictions
customer_principal The net amount the customer paid for shipping. number required
not null
min is 0
shipping_code Shipping code. string not null
min length is 2
duty_paid Duty paid. boolean not null

Variation

Key Description Types Restrictions
sku The product’s stock keeping unit (SKU). string required
not null
min length is 1
channel The product channel’s ID. integer required
not null
min is 1

Available expands

Field Return Type Description
attributes array<CachedAttribute> An attribute.
lines array<OrderGoodsoutLines> An order for a product.
lines.variation ProductVariations Marketplace listable products’ data.
lines.variation.descriptions array<ProductVariationDescriptions> Variation descriptions.
lines.variation.descriptions.locale Locales Locale data.
lines.variation.type ProductVariationTypes Product variation type data.
order Orders Customer order groups.
order.channel OrderChannels Customer order groups.
order.channel.organisation Organisations Organisation data.
shipments array<Shipments> Data related to a shipment.
shipments.shipping_service ShippingServices Customer order shipments.
shipments.shipping_service.courier_account ShippingCourierAccounts Shipping courier account data.
shipments.shipping_service.courier_account.courier CachedNameAndCode Holds a name and a code field.
shipping_address OrderGoodsoutAddresses Data related to an address.
shipping_address.country Countries A country.
shipping_address.country.region Regions Geographical region data.
tags array<Tags> A tag.
warehouse SummarisedWarehouse A warehouse.

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Bulk Import Orders

POST /v1/orders/goodsouts/from_file

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/orders/goodsouts/from_file", [
    "body" => json_encode([
        "file" => ":: FILE CONTENTS ::",
        "name" => "my_document.pdf",
        "extension" => "pdf",
        "mime" => "application/pdf",
        "category" => "document",
        "paper_size" => "A4",
        "print_at_despatch" => 1,
        "mapping_template_id" => 123,
        "organisation_id" => 123,
        "order_channel_id" => 123,
        "brand_id" => 123,
        "currency_id" => 123,
        "fields" => "[{\"name\":\"reference\",\"label\":\"Order Reference\",\"description\":\"The customer order reference.\",\"required\":true,\"type\":\"text\",\"key\":\"order.reference\",\"validations\":[null],\"possibleMappings\":[\"reference\",\"order_reference\"],\"primaryKey\":true}]",
        "slug" => "order",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/orders/goodsouts/from_file', {
  file: ":: FILE CONTENTS ::",
  name: "my_document.pdf",
  extension: "pdf",
  mime: "application/pdf",
  category: "document",
  paper_size: "A4",
  print_at_despatch: 1,
  mapping_template_id: 123,
  organisation_id: 123,
  order_channel_id: 123,
  brand_id: 123,
  currency_id: 123,
  fields: "[{\"name\":\"reference\",\"label\":\"Order Reference\",\"description\":\"The customer order reference.\",\"required\":true,\"type\":\"text\",\"key\":\"order.reference\",\"validations\":[null],\"possibleMappings\":[\"reference\",\"order_reference\"],\"primaryKey\":true}]",
  slug: "order",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/from_file",
    body: {
        "file": ":: FILE CONTENTS ::",
        "name": "my_document.pdf",
        "extension": "pdf",
        "mime": "application/pdf",
        "category": "document",
        "paper_size": "A4",
        "print_at_despatch": 1,
        "mapping_template_id": 123,
        "organisation_id": 123,
        "order_channel_id": 123,
        "brand_id": 123,
        "currency_id": 123,
        "fields": "[{\"name\":\"reference\",\"label\":\"Order Reference\",\"description\":\"The customer order reference.\",\"required\":true,\"type\":\"text\",\"key\":\"order.reference\",\"validations\":[null],\"possibleMappings\":[\"reference\",\"order_reference\"],\"primaryKey\":true}]",
        "slug": "order"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/orders/goodsouts/from_file' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "file": ":: FILE CONTENTS ::",
    "name": "my_document.pdf",
    "extension": "pdf",
    "mime": "application/pdf",
    "category": "document",
    "paper_size": "A4",
    "print_at_despatch": 1,
    "mapping_template_id": 123,
    "organisation_id": 123,
    "order_channel_id": 123,
    "brand_id": 123,
    "currency_id": 123,
    "fields": "[{\"name\":\"reference\",\"label\":\"Order Reference\",\"description\":\"The customer order reference.\",\"required\":true,\"type\":\"text\",\"key\":\"order.reference\",\"validations\":[null],\"possibleMappings\":[\"reference\",\"order_reference\"],\"primaryKey\":true}]",
    "slug": "order"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "success": true
    }
}

Uploads a file to be imported.

Request Body

BulkImportOrders

Return Type

BulkImportOrdersFile

Types for the Request Body

BulkImportOrders (root level)

Key Description Types Restrictions
file The file contents Base64 encoded. string required
not null
min length is 1
name The file name. string required
not null
min length is 1
extension The file extension. string required
not null
min length is 1
mime The file mime. string required
not null
min length is 1
category The document category. enum(document) required
not null
paper_size The paper size. enum(A4, 6x4) not null
print_at_despatch The number of copies to print at desptach. number not null
min is 0
mapping_template_id The ID for the mapping template. integer required
not null
min is 1
organisation_id The ID for the organisation. integer required
not null
min is 1
order_channel_id The ID for the order channel. integer required
not null
min is 1
brand_id The ID for the brand. integer required
not null
min is 1
currency_id The ID for the currency. integer required
not null
min is 1
fields The array of fields of the file. string required
not null
slug The slug. string required
not null

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

View Goodsout

GET /v1/orders/goodsouts/:id

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1049789,
        "status": "awaiting_despatch",
        "date_placed": "2019-11-25T14:52:56.000Z",
        "despatch_date": null,
        "cancellation_date": "2019-11-25T14:52:56.000Z",
        "despatch_on_date": null,
        "source": "How the order was created.",
        "delivery_instructions": "When not home put in shed.",
        "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift.",
        "attributes": [
            {
                "name": "Marketplace",
                "value": "202-9999999-9995900"
            }
        ],
        "shipments": [
            {
                "shipping_service": [
                    {
                        "name": "CRL - Packet (24 Hr)",
                        "code": "1ST",
                        "courier_account": [
                            {
                                "name": "Royal Mail",
                                "courier": {
                                    "name": "Royal Mail",
                                    "code": "RM"
                                }
                            }
                        ]
                    }
                ]
            }
        ],
        "lines": [
            {
                "id": 3450345,
                "transaction_sku": "GREEN-BALL",
                "quantity": 4,
                "discount_type": "percentage",
                "discount": 1.5,
                "net_unit_principal": 12,
                "status": "active",
                "variation": {
                    "id": 1,
                    "product_id": 1,
                    "status": "active",
                    "sku": "DEMO-SKU-01",
                    "barcode": "0123456789012",
                    "product_variation_type_id": 1,
                    "discontinued_date": "2019-11-25T14:52:56.000Z",
                    "despatch_instructions": "Always pack facing upwards.",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z",
                    "type": {
                        "id": 1,
                        "name": "Standard Product",
                        "type": "product",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    },
                    "descriptions": [
                        {
                            "id": 1,
                            "product_variation_id": 1,
                            "locale_id": 1,
                            "name": "Example product",
                            "full_description": "Example product description",
                            "created": "2019-11-25T14:52:56.000Z",
                            "modified": "2019-11-25T14:52:56.000Z",
                            "locale": {
                                "id": 1,
                                "name": "English",
                                "code": "en",
                                "created": "2019-11-25T14:52:56.000Z",
                                "modified": "2019-11-25T14:52:56.000Z"
                            }
                        }
                    ]
                }
            }
        ],
        "tags": [
            {
                "id": 1,
                "name": "Processed",
                "shortcode": "PROCESSED",
                "description": "Marked a as processed by XYZ system",
                "created": "2019-11-25T14:52:56.000Z"
            }
        ],
        "warehouse": [
            {
                "short_code": "CHR",
                "name": "Christchurch"
            }
        ],
        "order": {
            "id": 1234567,
            "reference": "#154254",
            "status": "open",
            "channel": {
                "id": 321,
                "organisation_id": 321,
                "name": "Demo Channel",
                "short_code": "DEMO",
                "status": "active",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        },
        "shipping_address": {
            "title": "Mr",
            "first_name": "Support",
            "last_name": "Team",
            "company": "ACME LTD",
            "address_one": "Unit 4",
            "address_two": "Radar Way",
            "address_three": null,
            "town": "Christchurch",
            "county": "Dorset",
            "postcode": "BH23 4FL",
            "country_id": 1,
            "email": "support.team@i-fulfilment.co.uk",
            "mobile": "00000000000",
            "telephone": "00000000000",
            "secondary_telephone": "0000000000000",
            "vat_number": "GB999 9999 73",
            "country": {
                "id": 1,
                "name": "United Kingdom",
                "iso_2": "GB",
                "iso_3": "GBR",
                "region_id": 1,
                "currency_id": 1,
                "block": "EU",
                "region": {}
            }
        }
    }
}

Retrieves a single goodsout.

Parameter Regular Expressions

Return Type

OrderGoodsouts

Available expands

Field Return Type Description
attributes array<CachedAttribute> An attribute.
lines array<OrderGoodsoutLines> An order for a product.
lines.items array<OrderGoodsoutLineItems> An item inside a goodsout line.
lines.items.batch ProductComponentBatches Description of a batch.
lines.items.component ProductComponents Product component.
lines.items.despatched_stocks array<OrderGoodsoutLineItemDespatchedStocks> Stock despatched for an specific line item.
lines.items.despatched_stocks.batch ProductComponentBatches Description of a batch.
lines.principal_tax OrganisationTaxes Organisation tax data.
lines.variation ProductVariations Marketplace listable products’ data.
lines.variation.descriptions array<ProductVariationDescriptions> Variation descriptions.
lines.variation.descriptions.locale Locales Locale data.
lines.variation.type ProductVariationTypes Product variation type data.
order Orders Customer order groups.
order.channel OrderChannels Customer order groups.
order.channel.organisation Organisations Organisation data.
shipments array<Shipments> Data related to a shipment.
shipments.shipping_service ShippingServices Customer order shipments.
shipments.shipping_service.courier_account ShippingCourierAccounts Shipping courier account data.
shipments.shipping_service.courier_account.courier CachedNameAndCode Holds a name and a code field.
shipping_address OrderGoodsoutAddresses Data related to an address.
shipping_address.country Countries A country.
shipping_address.country.region Regions Geographical region data.
tags array<Tags> A tag.
warehouse SummarisedWarehouse A warehouse.

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Upload Document

POST /v1/orders/goodsouts/:id/documents

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/documents", [
    "body" => json_encode([
        "file" => ":: FILE CONTENTS ::",
        "name" => "my_document.pdf",
        "extension" => "pdf",
        "mime" => "application/pdf",
        "category" => "document",
        "paper_size" => "A4",
        "print_at_despatch" => 1,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/documents', {
  file: ":: FILE CONTENTS ::",
  name: "my_document.pdf",
  extension: "pdf",
  mime: "application/pdf",
  category: "document",
  paper_size: "A4",
  print_at_despatch: 1,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/documents",
    body: {
        "file": ":: FILE CONTENTS ::",
        "name": "my_document.pdf",
        "extension": "pdf",
        "mime": "application/pdf",
        "category": "document",
        "paper_size": "A4",
        "print_at_despatch": 1
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/documents' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "file": ":: FILE CONTENTS ::",
    "name": "my_document.pdf",
    "extension": "pdf",
    "mime": "application/pdf",
    "category": "document",
    "paper_size": "A4",
    "print_at_despatch": 1
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "success": true
    }
}

Uploads a Base64 encoded document to a goodsout.

Parameter Regular Expressions

Request Body

Document

Return Type

OrderGoodsoutDocumentUploadConfirmation

Types for the Request Body

Document (root level)

Key Description Types Restrictions
file The file contents Base64 encoded. string required
not null
min length is 1
name The file name. string required
not null
min length is 1
extension The file extension. string required
not null
min length is 1
mime The file mime. string required
not null
min length is 1
category The document category. enum(document) required
not null
paper_size The paper size. enum(A4, 6x4) not null
print_at_despatch The number of copies to print at desptach. number not null
min is 0

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Cancel Goodsout

PUT /v1/orders/goodsouts/:id/cancel

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1049789/cancel", [
    "body" => json_encode([
        "reason" => "Example reason.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1049789/cancel', {
  reason: "Example reason.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1049789/cancel",
    body: {
        "reason": "Example reason."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1049789/cancel' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "reason": "Example reason."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1049789,
        "status": "awaiting_despatch",
        "date_placed": "2019-11-25T14:52:56.000Z",
        "despatch_date": null,
        "cancellation_date": "2019-11-25T14:52:56.000Z",
        "despatch_on_date": null,
        "source": "How the order was created.",
        "delivery_instructions": "When not home put in shed.",
        "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift."
    }
}

Cancels an order goodsout.

Parameter Regular Expressions

Request Body

Reason

Return Type

OrderGoodsouts

Types for the Request Body

Reason (root level)

Key Description Types Restrictions
reason The reason. string required
not null
min length is 1

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Update Delivery Instructions

PUT /v1/orders/goodsouts/:id/delivery_instructions

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/delivery_instructions", [
    "body" => json_encode([
        "delivery_instructions" => "When not home put in shed.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/delivery_instructions', {
  delivery_instructions: "When not home put in shed.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/delivery_instructions",
    body: {
        "delivery_instructions": "When not home put in shed."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/delivery_instructions' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "delivery_instructions": "When not home put in shed."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1049789,
        "status": "awaiting_despatch",
        "date_placed": "2019-11-25T14:52:56.000Z",
        "despatch_date": null,
        "cancellation_date": "2019-11-25T14:52:56.000Z",
        "despatch_on_date": null,
        "source": "How the order was created.",
        "delivery_instructions": "When not home put in shed.",
        "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift."
    }
}

Updates a goodsout’s delivery instructions.

Parameter Regular Expressions

Request Body

DeliveryInstructions

Return Type

OrderGoodsouts

Types for the Request Body

DeliveryInstructions (root level)

Key Description Types Restrictions
delivery_instructions Delivery instructions. string required
not null
min length is 0
max length is 30

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Update Gift Message

PUT /v1/orders/goodsouts/:id/gift_message

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/gift_message", [
    "body" => json_encode([
        "message" => "Happy birthday Sam!<br/>Hope you enjoy this gift.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/gift_message', {
  message: "Happy birthday Sam!<br/>Hope you enjoy this gift.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/gift_message",
    body: {
        "message": "Happy birthday Sam!<br/>Hope you enjoy this gift."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/gift_message' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "message": "Happy birthday Sam!<br/>Hope you enjoy this gift."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1049789,
        "status": "awaiting_despatch",
        "date_placed": "2019-11-25T14:52:56.000Z",
        "despatch_date": null,
        "cancellation_date": "2019-11-25T14:52:56.000Z",
        "despatch_on_date": null,
        "source": "How the order was created.",
        "delivery_instructions": "When not home put in shed.",
        "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift."
    }
}

Updates a goodsout’s gift message.

Parameter Regular Expressions

Request Body

UpdateGoodsoutGiftMessage

Return Type

OrderGoodsouts

Types for the Request Body

UpdateGoodsoutGiftMessage (root level)

Key Description Types Restrictions
message Gift Message. string required
not null
min length is 0
max length is 800

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Update Shipping Address

PUT /v1/orders/goodsouts/:id/shipping_address

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/shipping_address", [
    "body" => json_encode([
        "title" => "Mr",
        "first_name" => "Support",
        "last_name" => "Team",
        "company" => "ACME LTD",
        "address_one" => "Unit 4",
        "address_two" => "Radar Way",
        "address_three" => "Ind Est",
        "town" => "Christchurch",
        "country_id" => "GB",
        "county" => "Dorset",
        "postcode" => "BH23 4FL",
        "email" => "support.team@i-fulfilment.co.uk",
        "mobile" => "00000000000",
        "telephone" => "00000000000",
        "secondary_telephone" => "0000000000000",
        "vat_number" => "GB999 9999 73",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/shipping_address', {
  title: "Mr",
  first_name: "Support",
  last_name: "Team",
  company: "ACME LTD",
  address_one: "Unit 4",
  address_two: "Radar Way",
  address_three: "Ind Est",
  town: "Christchurch",
  country_id: "GB",
  county: "Dorset",
  postcode: "BH23 4FL",
  email: "support.team@i-fulfilment.co.uk",
  mobile: "00000000000",
  telephone: "00000000000",
  secondary_telephone: "0000000000000",
  vat_number: "GB999 9999 73",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/shipping_address",
    body: {
        "title": "Mr",
        "first_name": "Support",
        "last_name": "Team",
        "company": "ACME LTD",
        "address_one": "Unit 4",
        "address_two": "Radar Way",
        "address_three": "Ind Est",
        "town": "Christchurch",
        "country_id": "GB",
        "county": "Dorset",
        "postcode": "BH23 4FL",
        "email": "support.team@i-fulfilment.co.uk",
        "mobile": "00000000000",
        "telephone": "00000000000",
        "secondary_telephone": "0000000000000",
        "vat_number": "GB999 9999 73"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/shipping_address' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "title": "Mr",
    "first_name": "Support",
    "last_name": "Team",
    "company": "ACME LTD",
    "address_one": "Unit 4",
    "address_two": "Radar Way",
    "address_three": "Ind Est",
    "town": "Christchurch",
    "country_id": "GB",
    "county": "Dorset",
    "postcode": "BH23 4FL",
    "email": "support.team@i-fulfilment.co.uk",
    "mobile": "00000000000",
    "telephone": "00000000000",
    "secondary_telephone": "0000000000000",
    "vat_number": "GB999 9999 73"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "title": "Mr",
        "first_name": "Support",
        "last_name": "Team",
        "company": "ACME LTD",
        "address_one": "Unit 4",
        "address_two": "Radar Way",
        "address_three": null,
        "town": "Christchurch",
        "county": "Dorset",
        "postcode": "BH23 4FL",
        "country_id": 1,
        "email": "support.team@i-fulfilment.co.uk",
        "mobile": "00000000000",
        "telephone": "00000000000",
        "secondary_telephone": "0000000000000",
        "vat_number": "GB999 9999 73"
    }
}

Updates the shipping address of a goodsout.

Parameter Regular Expressions

Request Body

Address

Return Type

OrderGoodsoutAddresses

Types for the Request Body

Address (root level)

Key Description Types Restrictions
title Title. string not null
first_name First name. string required
not null
last_name Last name. string required
not null
company Company name. string not null
address_one First line of address. string required
not null
address_two Second line of address. string not null
address_three Third line of address. string not null
town Town. string required
not null
country_id Country ISO 2 or ISO 3 code. string required
not null
min length is 2
max length is 3
county County. string not null
postcode Postcode. string required
not null
email Email. string not null
mobile Mobile number. string not null
telephone Landline number. string not null
secondary_telephone Secondary telephone number. string not null
vat_number VAT number. string not null

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Update Goodsout Warehouse

PUT /v1/orders/goodsouts/:id/warehouse

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/warehouse?expand=*", [
    "body" => json_encode([
        "warehouse_code" => "CHR",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/warehouse?expand=*', {
  warehouse_code: "CHR",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/warehouse?expand=*",
    body: {
        "warehouse_code": "CHR"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/warehouse?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "warehouse_code": "CHR"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1049789,
        "status": "awaiting_despatch",
        "date_placed": "2019-11-25T14:52:56.000Z",
        "despatch_date": null,
        "cancellation_date": "2019-11-25T14:52:56.000Z",
        "despatch_on_date": null,
        "source": "How the order was created.",
        "delivery_instructions": "When not home put in shed.",
        "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift.",
        "warehouse": [
            {
                "short_code": "CHR",
                "name": "Christchurch"
            }
        ]
    }
}

Updates a goodsout’s warehouse.

Parameter Regular Expressions

Request Body

UpdateGoodsoutWarehousee

Return Type

OrderGoodsouts

Types for the Request Body

UpdateGoodsoutWarehousee (root level)

Key Description Types Restrictions
warehouse_code The warehouse short code. string required
not null
min length is 1

Available expands

Field Return Type Description
warehouse SummarisedWarehouse A warehouse.

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Hold Goodsout

PUT /v1/orders/goodsouts/:id/hold

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1049789/hold", [
    "body" => json_encode([
        "reason" => "Example reason.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1049789/hold', {
  reason: "Example reason.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1049789/hold",
    body: {
        "reason": "Example reason."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1049789/hold' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "reason": "Example reason."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1049789,
        "status": "awaiting_despatch",
        "date_placed": "2019-11-25T14:52:56.000Z",
        "despatch_date": null,
        "cancellation_date": "2019-11-25T14:52:56.000Z",
        "despatch_on_date": null,
        "source": "How the order was created.",
        "delivery_instructions": "When not home put in shed.",
        "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift."
    }
}

Holds an order goodsout.

Parameter Regular Expressions

Request Body

Reason

Return Type

OrderGoodsouts

Types for the Request Body

Reason (root level)

Key Description Types Restrictions
reason The reason. string required
not null
min length is 1

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Unhold Goodsout

PUT /v1/orders/goodsouts/:id/unhold

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1049789/unhold", [
    "body" => json_encode([
        "reason" => "Example reason.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1049789/unhold', {
  reason: "Example reason.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1049789/unhold",
    body: {
        "reason": "Example reason."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1049789/unhold' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "reason": "Example reason."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1049789,
        "status": "awaiting_despatch",
        "date_placed": "2019-11-25T14:52:56.000Z",
        "despatch_date": null,
        "cancellation_date": "2019-11-25T14:52:56.000Z",
        "despatch_on_date": null,
        "source": "How the order was created.",
        "delivery_instructions": "When not home put in shed.",
        "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift."
    }
}

Unholds an order goodsout.

Parameter Regular Expressions

Request Body

Reason

Return Type

OrderGoodsouts

Types for the Request Body

Reason (root level)

Key Description Types Restrictions
reason The reason. string required
not null
min length is 1

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Get Goodsout Despatch Attributes

GET /v1/orders/goodsouts/:id/despatch_attributes

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/goodsouts/1049789/despatch_attributes", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/goodsouts/1049789/despatch_attributes', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1049789/despatch_attributes",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/goodsouts/1049789/despatch_attributes' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "sku": "DEMO-SKU-01",
            "product_name": "Example Product",
            "attribute_name": "Color",
            "attribute_value": "Red"
        }
    ]
}

Get all despatch attributes for a goodsout.

Parameter Regular Expressions

Return Type

array<OrderGoodsoutDespatchAttributes>

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Require Quote on Goodsout

PUT /v1/orders/goodsouts/:id/require_quote

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/1049789/require_quote", [
    "body" => json_encode([
        "require_quote" => true,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/1049789/require_quote', {
  require_quote: true,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1049789/require_quote",
    body: {
        "require_quote": true
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/1049789/require_quote' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "require_quote": true
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1049789,
        "status": "awaiting_despatch",
        "date_placed": "2019-11-25T14:52:56.000Z",
        "despatch_date": null,
        "cancellation_date": "2019-11-25T14:52:56.000Z",
        "despatch_on_date": null,
        "source": "How the order was created.",
        "delivery_instructions": "When not home put in shed.",
        "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift."
    }
}

Require quote to an order goodsout.

Parameter Regular Expressions

Request Body

RequireQuote

Return Type

OrderGoodsouts

Types for the Request Body

RequireQuote (root level)

Key Description Types Restrictions
require_quote Require quote boolean required
not null

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Booking In Required

PUT /v1/orders/goodsouts/:id/set_booking_in_required

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/:id/set_booking_in_required", [
    "body" => json_encode([
        "booking_in_required" => true,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/:id/set_booking_in_required', {
  booking_in_required: true,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/:id/set_booking_in_required",
    body: {
        "booking_in_required": true
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/:id/set_booking_in_required' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "booking_in_required": true
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1049789,
        "status": "awaiting_despatch",
        "date_placed": "2019-11-25T14:52:56.000Z",
        "despatch_date": null,
        "cancellation_date": "2019-11-25T14:52:56.000Z",
        "despatch_on_date": null,
        "source": "How the order was created.",
        "delivery_instructions": "When not home put in shed.",
        "gift_message": "Happy birthday Sam!<br/>Hope you enjoy this gift."
    }
}

Add Booking In required tag to goodsout.

Parameter Regular Expressions

Request Body

BookingInRequired

Return Type

OrderGoodsouts

Types for the Request Body

BookingInRequired (root level)

Key Description Types Restrictions
booking_in_required Set booking in required tag. boolean required
not null

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Add Goodsout Timeline

POST /v1/orders/goodsouts/:id/timeline

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/timeline", [
    "body" => json_encode([
        "message" => "Marked as processed with in system XYZ.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/timeline', {
  message: "Marked as processed with in system XYZ.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/timeline",
    body: {
        "message": "Marked as processed with in system XYZ."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/timeline' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "message": "Marked as processed with in system XYZ."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "message": "Marked as processed with in system XYZ."
    }
}

Add a message or note to the timeline.

Parameter Regular Expressions

Request Body

CreateAudit

Return Type

OrderGoodsoutAudits

Types for the Request Body

CreateAudit (root level)

Key Description Types Restrictions
message The message or note to be added to the timeline. string required
not null
max length is 65535

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Apply Goodsout Tag

POST /v1/orders/goodsouts/:id/tags

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/orders/goodsouts/:id/tags", [
    "body" => json_encode([
        "shortcode" => "PROCESSED",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/orders/goodsouts/:id/tags', {
  shortcode: "PROCESSED",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/:id/tags",
    body: {
        "shortcode": "PROCESSED"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/orders/goodsouts/:id/tags' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "shortcode": "PROCESSED"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "name": "Processed",
        "shortcode": "PROCESSED",
        "description": "Marked a as processed by XYZ system",
        "created": "2019-11-25T14:52:56.000Z"
    }
}

Applies a tag to a goodsout.

Parameter Regular Expressions

Request Body

ApplyTag

Return Type

OrderGoodsoutTags

Types for the Request Body

ApplyTag (root level)

Key Description Types Restrictions
shortcode The tag shortcode. string required
not null
min length is 1

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Remove Goodsout Tag

DELETE /v1/orders/goodsouts/:id/tags/:tagShortcode

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("DELETE", "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/tags/PROCESSED", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.delete 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/tags/PROCESSED', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "DELETE",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/1234567/tags/PROCESSED",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request DELETE 'https://public-api.bladepro.io/v1/orders/goodsouts/1234567/tags/PROCESSED' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

null

Remove a tag from a goodsout.

Parameter Regular Expressions

Return Type

Empty.

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

Bulk List Tracking Numbers

PUT /v1/orders/goodsouts/bulk_tracking_numbers

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/bulk_tracking_numbers?expand=*", [
    "body" => json_encode([
        "order_goodsout_ids" => [
            1,
            2,
            3,
            4,
            5,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/bulk_tracking_numbers?expand=*', {
  order_goodsout_ids: [
    1,
    2,
    3,
    4,
    5,
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/bulk_tracking_numbers?expand=*",
    body: {
        "order_goodsout_ids": [
            1,
            2,
            3,
            4,
            5
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/bulk_tracking_numbers?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "order_goodsout_ids": [
        1,
        2,
        3,
        4,
        5
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "order_goodsout_id": 1049789,
            "despatch_date": "2021-01-26T14:52:56.000Z",
            "courier": "Royal Mail",
            "external_tracking_enabled": true,
            "service": "Tracked 48H Hour",
            "tracking_numbers": [
                {
                    "courier": "Royal Mail",
                    "code": "RMTN1134905823GB",
                    "url": "http://www.royalmail.com/trackdetails?trackNumber=RMTN1134905823GB"
                }
            ]
        }
    ]
}

Fetches all the tracking numbers for a set list of order goodsouts. This endpoint always expands all expandables.

Request Body

BulkGetGoodsoutData

Return Type

array<BulkOrderTrackingNumbers>

Types for the Request Body

BulkGetGoodsoutData (root level)

Key Description Types Restrictions
order_goodsout_ids List of order goodsout ID’s. array<number> required
not null
min count is 1

Available expands

Field Return Type Description
tracking_numbers array<CachedCourierTracking> Tracking details.

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Bulk List Tracking Numbers by Reference

PUT /v1/orders/goodsouts/bulk_tracking_numbers/by_reference

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/bulk_tracking_numbers/by_reference?expand=*", [
    "body" => json_encode([
        "references" => [
            "#154254",
            "#154234",
            "AB12314",
        ],
        "statuses" => [
            "awaiting_despatch",
            "despatched",
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/bulk_tracking_numbers/by_reference?expand=*', {
  references: [
    "#154254",
    "#154234",
    "AB12314",
  ],
  statuses: [
    "awaiting_despatch",
    "despatched",
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/bulk_tracking_numbers/by_reference?expand=*",
    body: {
        "references": [
            "#154254",
            "#154234",
            "AB12314"
        ],
        "statuses": [
            "awaiting_despatch",
            "despatched"
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/bulk_tracking_numbers/by_reference?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "references": [
        "#154254",
        "#154234",
        "AB12314"
    ],
    "statuses": [
        "awaiting_despatch",
        "despatched"
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "reference": "#154254",
            "order_goodsout_id": 1049789,
            "despatch_date": "2021-01-26T14:52:56.000Z",
            "status": "despatched",
            "courier": "Royal Mail",
            "service": "Tracked 48H Hour",
            "external_tracking_enabled": true,
            "tracking_numbers": [
                {
                    "courier": "Royal Mail",
                    "code": "RMTN1134905823GB",
                    "url": "http://www.royalmail.com/trackdetails?trackNumber=RMTN1134905823GB"
                }
            ]
        }
    ]
}

Fetches all the tracking numbers for a set list of order goodsouts. This endpoint always expands all expandables.

Request Body

BulkGetGoodsoutDataByReference

Return Type

array<BulkOrderTrackingNumbersByReference>

Types for the Request Body

BulkGetGoodsoutDataByReference (root level)

Key Description Types Restrictions
references List of order references. array<string> required
not null
min count is 1
statuses Limit to certain goodsout statuses. array<enum(draft, awaiting_allocation, hung, returned, awaiting_payment, awaiting_picking, awaiting_despatch, backorder_release, backorder, cancelled, return_open, item_refunded, item_replaced, awaiting_collection, despatched)> min count is 1

Available expands

Field Return Type Description
tracking_numbers array<CachedCourierTracking> Tracking details.

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Bulk List Goodsout Statuses

PUT /v1/orders/goodsouts/bulk_statuses

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/goodsouts/bulk_statuses", [
    "body" => json_encode([
        "order_goodsout_ids" => [
            1,
            2,
            3,
            4,
            5,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/goodsouts/bulk_statuses', {
  order_goodsout_ids: [
    1,
    2,
    3,
    4,
    5,
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/bulk_statuses",
    body: {
        "order_goodsout_ids": [
            1,
            2,
            3,
            4,
            5
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/goodsouts/bulk_statuses' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "order_goodsout_ids": [
        1,
        2,
        3,
        4,
        5
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "order_goodsout_id": 1049789,
            "status": "awaiting_despatch"
        }
    ]
}

Fetches the statuses for a set list of order goodsouts.

Request Body

BulkGetGoodsoutData

Return Type

array<BulkOrderStatuses>

Types for the Request Body

BulkGetGoodsoutData (root level)

Key Description Types Restrictions
order_goodsout_ids List of order goodsout ID’s. array<number> required
not null
min count is 1

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Bulk Check Order Exists

PUT /v1/orders/exists

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/exists", [
    "body" => json_encode([
        "order_channel_id" => 1,
        "order_references" => [
            "433-3450983-23443",
            "443-473470-972349",
            "43-45343-54543543543-001",
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/exists', {
  order_channel_id: 1,
  order_references: [
    "433-3450983-23443",
    "443-473470-972349",
    "43-45343-54543543543-001",
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/exists",
    body: {
        "order_channel_id": 1,
        "order_references": [
            "433-3450983-23443",
            "443-473470-972349",
            "43-45343-54543543543-001"
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/exists' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "order_channel_id": 1,
    "order_references": [
        "433-3450983-23443",
        "443-473470-972349",
        "43-45343-54543543543-001"
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "order_reference": "8674-7893278932798-68723",
            "order_id": 4374739234,
            "exists": false
        }
    ]
}

Check to see if an order reference exists on a specific channel.

Request Body

BulkCheckOrderExistsData

Return Type

array<BulkCheckOrderExists>

Types for the Request Body

BulkCheckOrderExistsData (root level)

Key Description Types Restrictions
order_channel_id Order channel to check against. integer required
not null
min is 1
order_references List of order references to check. array<string> required
not null
min count is 1

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Bulk List All Open Orders

PUT /v1/orders/open

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/open?expand=*", [
    "body" => json_encode([
        "order_channel_id" => 1,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/open?expand=*', {
  order_channel_id: 1,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/open?expand=*",
    body: {
        "order_channel_id": 1
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/open?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "order_channel_id": 1
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "order_id": "2333",
            "reference": "8674-7893278932798-68723",
            "goodsouts": [
                {
                    "order_goodsout_id": "2333",
                    "status": "awaiting_picking",
                    "metadata": [
                        {
                            "key": "import_data",
                            "value": "..."
                        }
                    ]
                }
            ]
        }
    ]
}

List all the ‘open’ orders for a given channel. Can be used to do a pre-cursive check when importing to filter quickly filter out known references.

Request Body

BulkListAllOpenOrderReferencesInput

Return Type

array<BulkListAllOpenOrders>

Types for the Request Body

BulkListAllOpenOrderReferencesInput (root level)

Key Description Types Restrictions
order_channel_id Order channel to check against. integer required
not null
min is 1

Available expands

Field Return Type Description
goodsouts array<BulkListAllOpenOrdersGoodsout> undefined
goodsouts.metadata array<BulkListAllOpenOrdersGoodsoutMetadata> undefined

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Get packing list.

GET /v1/orders/goodsouts/:id/packing_list

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/goodsouts/:id/packing_list?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/goodsouts/:id/packing_list?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/:id/packing_list?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/goodsouts/:id/packing_list?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "pallet": {
                "pallet_product_variation_id": 1,
                "pallet_reference": 1,
                "sku": "STD-PALLET",
                "weight_kg": "1.000"
            },
            "carton_reference": 1,
            "carton_product_variation_id": 1,
            "sku": "OWNPACK",
            "sscc_18": "012345600064565487",
            "weight": "1.421",
            "height": 200,
            "width": 300,
            "depth": 150,
            "contains": {
                "product_component_id": 1,
                "sku": "BLUE_CAR",
                "name": "Blue Toy Car",
                "quantity": 25,
                "colour": "Blue",
                "size": "1:46",
                "style": "Standard",
                "type": null,
                "quality": "medium"
            }
        }
    ]
}

Fetches all boxes the goodsout was packed into. This endpoint always expands all expandables.

Parameter Regular Expressions

Return Type

array<OrderGoodsoutPackingListBox>

Available expands

Field Return Type Description
contains array<OrderGoodsoutPackingListProduct> A pallet on a packing list.
pallet OrderGoodsoutPackingListPallet A pallet on a packing list.

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

Save Goodsout Shipment Tracking Update

POST /v1/shipping/tracking_update

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/shipping/tracking_update", [
    "body" => json_encode([
        "message" => "Shipment has arrived at regional facility.",
        "location" => "Christchurch",
        "tracking_number" => "123ABC",
        "timestamp_utc" => "2024-10-07T14:52:56.000Z",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/shipping/tracking_update', {
  message: "Shipment has arrived at regional facility.",
  location: "Christchurch",
  tracking_number: "123ABC",
  timestamp_utc: "2024-10-07T14:52:56.000Z",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/shipping/tracking_update",
    body: {
        "message": "Shipment has arrived at regional facility.",
        "location": "Christchurch",
        "tracking_number": "123ABC",
        "timestamp_utc": "2024-10-07T14:52:56.000Z"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/shipping/tracking_update' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "message": "Shipment has arrived at regional facility.",
    "location": "Christchurch",
    "tracking_number": "123ABC",
    "timestamp_utc": "2024-10-07T14:52:56.000Z"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "message": "Shipment has arrived at regional facility.",
        "location": "Christchurch",
        "tracking_number": "123ABC",
        "timestamp": "2024-10-07T14:52:56.000Z"
    }
}

Receives goodsout shipment tracking update.

Request Body

SaveGoodsoutShipmentTrackingUpdate

Return Type

OrderGoodsoutShipmentTracking

Types for the Request Body

SaveGoodsoutShipmentTrackingUpdate (root level)

Key Description Types Restrictions
message A summary text that describes the tracking event. string required
not null
min length is 1
location A text summary of where (location) the update has occurred. string required
not null
min length is 1
tracking_number The specific tracking number for the update. string required
not null
min length is 1
timestamp_utc The date/time of when the update was created (UTC format only). date required
not null

Scopes

This endpoint is only available for users with scope APP::ORDERS::MANAGE.

List Goodsout Shipment Tracking Updates

GET /v1/orders/goodsouts/:id/shipping/tracking_updates

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/goodsouts/:id/shipping/tracking_updates?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/goodsouts/:id/shipping/tracking_updates?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/goodsouts/:id/shipping/tracking_updates?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/goodsouts/:id/shipping/tracking_updates?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "message": "Shipment has arrived at regional facility.",
            "location": "Christchurch",
            "tracking_number": "123ABC",
            "timestamp": "2024-10-07T14:52:56.000Z"
        }
    ]
}

List goodsout shipment tracking updates.

Parameter Regular Expressions

Return Type

array<OrderGoodsoutShipmentTracking>

Available expands

Field Return Type Description

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

List Product Brands

GET /v1/products/brands

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/brands", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/brands', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/brands",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/brands' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "name": "Demo Brand",
            "organisation_id": 1,
            "active": true,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        }
    ]
}

Retrieves a list of all the product brands.

Return Type

array<ProductBrands>

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

Create Product Brand

POST /v1/products/brands

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/products/brands", [
    "body" => json_encode([
        "name" => "Demo Brand Name.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/products/brands', {
  name: "Demo Brand Name.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/brands",
    body: {
        "name": "Demo Brand Name."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/products/brands' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "name": "Demo Brand Name."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "name": "Demo Brand",
        "organisation_id": 1,
        "active": true,
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z"
    }
}

Create a new product brand.

Request Body

CreateProductBrand

Return Type

ProductBrands

Types for the Request Body

CreateProductBrand (root level)

Key Description Types Restrictions
name The name of the product brand. string required
not null
max length is 200

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

List Product Channels

GET /v1/products/channels

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/channels", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/channels', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/channels",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/channels' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "organisation_id": 1,
            "status": "active",
            "outbound_email": "someone@example.com",
            "default_warehouse_id": 1,
            "default_product_brand_id": 1,
            "global": false,
            "name": "Demo Channel",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        }
    ]
}

List Product Channels.

Return Type

array<ProductChannels>

Filters

Field Operators Value List URL
search LIKE fuzzy search across selected attributes

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

List Customs Codes

GET /v1/products/customs

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/customs?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/customs?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/customs?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/customs?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "code": "8471",
            "name": "Personal computers",
            "duty_rate": 1.5,
            "organisation_id": 1,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        }
    ]
}

List Customs Codes.

Return Type

array<ProductComponentCustomsCodes>

Available expands

Field Return Type Description
organisation Organisations Organisation data.

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

Create Customs Code

POST /v1/products/customs

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/products/customs", [
    "body" => json_encode([
        "code" => "8471",
        "name" => "Personal computers",
        "duty_rate" => 1.5,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/products/customs', {
  code: "8471",
  name: "Personal computers",
  duty_rate: 1.5,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/customs",
    body: {
        "code": "8471",
        "name": "Personal computers",
        "duty_rate": 1.5
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/products/customs' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "code": "8471",
    "name": "Personal computers",
    "duty_rate": 1.5
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "code": "8471",
        "name": "Personal computers",
        "duty_rate": 1.5,
        "organisation_id": 1,
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z"
    }
}

Create a new customs code.

Request Body

CreateProductCustomsCode

Return Type

ProductComponentCustomsCodes

Types for the Request Body

CreateProductCustomsCode (root level)

Key Description Types Restrictions
code HS Code. string required
not null
min length is 4
name Name of the code. string required
not null
min length is 1
duty_rate The duty rate applied to this customs code. number required
not null
min is 0

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

List Product DOQ Types

GET /v1/products/doqs

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/doqs", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/doqs', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/doqs",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/doqs' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "code": "INNER_PACK",
            "name": "Inner"
        }
    ]
}

List product DOQ types.

Return Type

array<ProductComponentDoqTypes>

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

List Product Metadata

GET /v1/products/variations/:id/metadata

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/variations/1234567/metadata", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/variations/1234567/metadata', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/1234567/metadata",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/variations/1234567/metadata' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "key": "my_key",
            "value": "some-value"
        }
    ]
}

Retrieves a list of all the metadata stored against a product.

Parameter Regular Expressions

Return Type

array<ProductResourceMetadatas>

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

Get Product Metadata

GET /v1/products/variations/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Retrieves a single piece of metadata stored against a product.

Parameter Regular Expressions

Return Type

ProductResourceMetadatas

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

Set Product Metadata

PUT /v1/products/variations/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key", [
    "body" => json_encode([
        "value" => "some-value",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key', {
  value: "some-value",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key",
    body: {
        "value": "some-value"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "value": "some-value"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Sets some metadata against a Product.

Parameter Regular Expressions

Request Body

UpdateResourceMetadata

Return Type

ProductResourceMetadatas

Types for the Request Body

UpdateResourceMetadata (root level)

Key Description Types Restrictions
value The value. string required
not null
max length is 65535

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

Delete Product Metadata

DELETE /v1/products/variations/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("DELETE", "https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.delete 'https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "DELETE",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request DELETE 'https://public-api.bladepro.io/v1/products/variations/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

null

Deletes some metadata against a product.

Parameter Regular Expressions

Return Type

Empty.

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

Create Product

POST /v1/products/variations

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/products/variations?expand=*", [
    "body" => json_encode([
        "sku" => "RED-BIKE-01A",
        "name" => "Red bike",
        "barcode" => "0793573679000",
        "brand" => 1,
        "channel" => 1,
        "new_component" => [
            "perishable" => true,
            "organic" => true,
            "dangerous" => true,
            "dutiable" => true,
            "hygiene" => true,
            "battery" => true,
            "fragile" => true,
            "what_is_it" => "Bicycle.",
            "made_of" => "metal, rubber, plastic",
            "used_for" => "sports",
            "customs_country_of_origin_country" => "GBR",
            "product_component_customs_code_id" => 1,
            "doqs" => [
                [
                    "length" => 2500,
                    "width" => 1000,
                    "height" => 4500,
                    "weight" => 1.45,
                    "quantity" => 10,
                    "type" => "INNER_PACK",
                    "shippable" => true,
                    "barcode" => "0793573679000",
                ],
            ],
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/products/variations?expand=*', {
  sku: "RED-BIKE-01A",
  name: "Red bike",
  barcode: "0793573679000",
  brand: 1,
  channel: 1,
  new_component: {
    perishable: true,
    organic: true,
    dangerous: true,
    dutiable: true,
    hygiene: true,
    battery: true,
    fragile: true,
    what_is_it: "Bicycle.",
    made_of: "metal, rubber, plastic",
    used_for: "sports",
    customs_country_of_origin_country: "GBR",
    product_component_customs_code_id: 1,
    doqs: [
      {
        length: 2500,
        width: 1000,
        height: 4500,
        weight: 1.45,
        quantity: 10,
        type: "INNER_PACK",
        shippable: true,
        barcode: "0793573679000",
      },
    ],
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations?expand=*",
    body: {
        "sku": "RED-BIKE-01A",
        "name": "Red bike",
        "barcode": "0793573679000",
        "brand": 1,
        "channel": 1,
        "new_component": {
            "perishable": false,
            "organic": false,
            "dangerous": false,
            "dutiable": false,
            "hygiene": false,
            "battery": false,
            "fragile": false,
            "what_is_it": "Bicycle.",
            "made_of": "metal, rubber, plastic",
            "used_for": "sports",
            "customs_country_of_origin_country": "GBR",
            "product_component_customs_code_id": 1,
            "doqs": [
                {
                    "length": 2500,
                    "width": 1000,
                    "height": 4500,
                    "weight": 1.45,
                    "quantity": 10,
                    "type": "INNER_PACK",
                    "shippable": true,
                    "barcode": "0793573679000"
                }
            ]
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/products/variations?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "sku": "RED-BIKE-01A",
    "name": "Red bike",
    "barcode": "0793573679000",
    "brand": 1,
    "channel": 1,
    "new_component": {
        "perishable": false,
        "organic": false,
        "dangerous": false,
        "dutiable": false,
        "hygiene": false,
        "battery": false,
        "fragile": false,
        "what_is_it": "Bicycle.",
        "made_of": "metal, rubber, plastic",
        "used_for": "sports",
        "customs_country_of_origin_country": "GBR",
        "product_component_customs_code_id": 1,
        "doqs": [
            {
                "length": 2500,
                "width": 1000,
                "height": 4500,
                "weight": 1.45,
                "quantity": 10,
                "type": "INNER_PACK",
                "shippable": true,
                "barcode": "0793573679000"
            }
        ]
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "product_id": 1,
        "status": "active",
        "sku": "DEMO-SKU-01",
        "barcode": "0123456789012",
        "product_variation_type_id": 1,
        "discontinued_date": "2019-11-25T14:52:56.000Z",
        "despatch_instructions": "Always pack facing upwards.",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "product": {
            "id": 1,
            "product_channel_id": 1,
            "product_brand_id": 1,
            "product_category_id": 1,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "channel": {
                "id": 1,
                "organisation_id": 1,
                "status": "active",
                "outbound_email": "someone@example.com",
                "default_warehouse_id": 1,
                "default_product_brand_id": 1,
                "global": false,
                "name": "Demo Channel",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            },
            "brand": {
                "id": 1,
                "name": "Demo Brand",
                "organisation_id": 1,
                "active": true,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        },
        "type": {
            "id": 1,
            "name": "Standard Product",
            "type": "product",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        },
        "components": [
            {
                "product_variation_id": 1,
                "product_component_instance_id": 1,
                "quantity": 1,
                "instance": {
                    "id": 1,
                    "product_component_id": 1,
                    "component": {
                        "id": 1,
                        "status": "active",
                        "sku": "DEMO-SKU-01",
                        "barcode": "123123123000",
                        "perishable": false,
                        "fragile": false,
                        "battery": false,
                        "dangerous": false,
                        "organic": false,
                        "what_is_it": "Tape measure.",
                        "made_of": "Synthetic rubber & Polyvinyl chloride",
                        "used_for": "A tool for measuring distances.",
                        "customs_country_of_origin_country_id": 1,
                        "product_component_customs_code_id": 1,
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z",
                        "count_product_component_batches": 1
                    }
                }
            }
        ],
        "descriptions": [
            {
                "id": 1,
                "product_variation_id": 1,
                "locale_id": 1,
                "name": "Example product",
                "full_description": "Example product description",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "locale": {
                    "id": 1,
                    "name": "English",
                    "code": "en",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        ],
        "primary_component": [
            {
                "id": 1,
                "status": "active",
                "sku": "DEMO-SKU-01",
                "barcode": "123123123000",
                "perishable": false,
                "fragile": false,
                "battery": false,
                "dangerous": false,
                "organic": false,
                "what_is_it": "Tape measure.",
                "made_of": "Synthetic rubber & Polyvinyl chloride",
                "used_for": "A tool for measuring distances.",
                "customs_country_of_origin_country_id": 1,
                "product_component_customs_code_id": 1,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "count_product_component_batches": 1
            }
        ],
        "tags": [
            {
                "id": 1,
                "name": "Processed",
                "shortcode": "PROCESSED",
                "description": "Marked a as processed by XYZ system",
                "created": "2019-11-25T14:52:56.000Z"
            }
        ],
        "stock_data_summaries": [
            {
                "product_variation_id": 1,
                "warehouse_id": 1,
                "warehouse_code": "CHR",
                "warehouse_name": "Christchurch",
                "total": 156,
                "total_saleable": 140,
                "saleable": 134,
                "available": 121,
                "allocated": 10,
                "misc": 34,
                "expected": 100,
                "under_investigation": 1
            }
        ]
    }
}

Creates a product.

Request Body

CreateProduct

Return Type

ProductVariations

Types for the Request Body

CreateProduct (root level)

Key Description Types Restrictions
sku The product’s Stock Keeping Unit. string required
not null
match is /^[a-z0-9\-_.]{2,}$/i
name The product’s name. string required
not null
min length is 3
barcode The product barcode. string required
not null
match is /^\d{3,20}$/
brand Product brand id. integer required
not null
min is 1
channel Product channel id. integer required
not null
min is 1
new_component Component data. Required when creating a new warehouse product. It can’t appear in the payload along with existing_components. NewComponent optionally required
not null
existing_components Components to use. Required when creating a new virtual product. It can’t appear in the payload along with new_component. array<ExistingComponent> optionally required
not null
min count is 1

Doq

Key Description Types Restrictions
length Length in MM. integer required
not null
min is 1
width Width in MM. integer required
not null
min is 1
height Height in MM. integer required
not null
min is 1
weight Weight in KG. number required
not null
min is 0.001
quantity Quantity. integer required
not null
min is 1
type Short code for the DOQ. enum(INNER_PACK, MASTER_CASE, PALLET, SINGLE_PRODUCT) required
not null
shippable Is this a shippable item? boolean required
not null
barcode Barcode. string not null
match is /^[0-9]{6,}$/

ExistingComponent

Key Description Types Restrictions
id The product component ID. integer required
not null
min is 1
quantity The quantity required to build the virtual product. integer required
not null
min is 1

NewComponent

Key Description Types Restrictions
perishable Is the product perishable? boolean required
not null
organic Is the product organic? boolean required
not null
dangerous Is the product dangerous? boolean not null
dutiable Is the product dutiable? boolean not null
hygiene Is the product for hygiene? boolean not null
battery Does the product have battery? boolean not null
fragile Is the product fragile? boolean not null
what_is_it Part of customs details: What is the product? string required
not null
min length is 1
made_of Part of customs details: What is the product made of? string required
not null
min length is 1
used_for Part of customs details: What is the product used for? string required
not null
min length is 1
customs_country_of_origin_country The ISO2 or ISO3 code or the ID of the country of origin. string
or integer
required
not null
if type is string, then min length is 1
if type is string, then max length is 3
if type is integer, then min is 1
product_component_customs_code_id Customs code ID. integer required
not null
min is 1
doqs List of product DOQs. array<Doq> required
not null
min count is 1

Available expands

Field Return Type Description
components array<ProductVariationComponents> Variation component.
components.instance ProductComponentInstances Component instance.
components.instance.component ProductComponents Product component.
components.instance.component.doqs array<ProductComponentDoqs> Product component DOQ.
components.instance.component.doqs.type ProductComponentDoqTypes Product component DOQ Types.
descriptions array<ProductVariationDescriptions> Variation descriptions.
descriptions.locale Locales Locale data.
primary_component array<ProductComponents> Product component.
product Products Product data. Products are grouping entries and may represent multiple different kinds of physical products.
product.brand ProductBrands Product brand data.
product.brand.organisation Organisations Organisation data.
product.channel ProductChannels Geographical region data.
product.channel.organisation Organisations Organisation data.
stock_data_summaries array<ProductVariationStockDataSummary> Variation stock breakdown.
tags array<Tags> A tag.
type ProductVariationTypes Product variation type data.

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

List Product Variations

GET /v1/products/variations

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/variations?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/variations?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/variations?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "sku": "DEMO-SKU-01",
            "name": "Example product",
            "is_primary": false,
            "status": "active",
            "created": {},
            "product": {
                "id": 1,
                "channel": {
                    "id": 1,
                    "name": "Demo Channel",
                    "default_warehouse_id": 1,
                    "global": false,
                    "organisation": {
                        "id": 1,
                        "name": "Demo Organisation"
                    }
                }
            },
            "tags": [
                {
                    "name": "Processed",
                    "shortcode": "processed",
                    "description": "Processed by a 3rd party system"
                }
            ],
            "descriptions": [
                {
                    "id": 1,
                    "product_variation_id": 1,
                    "locale_id": 1,
                    "name": "Example Product",
                    "full_description": "Example product description",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z",
                    "locale": {
                        "id": 1,
                        "name": "English",
                        "code": "en",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    }
                }
            ],
            "components": [
                {
                    "id": 1,
                    "sku": "DEMO-SKU-01",
                    "name": "Example Product",
                    "barcode": 1234567891020,
                    "quantity": 1
                }
            ],
            "type": {
                "id": 1,
                "name": "Standard Product",
                "type": "product"
            },
            "primary_product_category": {
                "id": 4,
                "name": "Bicycles"
            }
        }
    ]
}

Get a list of product variations. Please note that all expands will be applied automatically.

Return Type

array<CachedProductVariation>

Filters

Field Operators Value List URL
search LIKE fuzzy search across selected attributes
id EQUALS, IN
product.channel.id IN, NOT_IN
tags.shortcode IN, NOT_IN
status IN, NOT_IN
sku EQUALS, IN
type.id IN
is_primary EQUALS
order_channel_id IN /v1/orders/channels

Sortings

Results can be sorted by the following keys: created, product.channel.name, sku, status.

Available expands

Field Return Type Description
components array<CachedProductVariationComponent> Variation component.
created CachedProductVariationCreated Variation specific data.
descriptions array<CachedProductVariationDescription> Variation descriptions.
descriptions.locale SummarisedLocale Locale / Language.
primary_product_category SummarisedProductCategory Summary of a product category.
product CachedProduct Top level product data.
product.channel CachedProductChannel Cached product channel.
product.channel.organisation CachedProductChannelOrganisation Top level product data.
tags array<SummarisedTag> A tag.
type SummarisedProductVariationType Top level product data.

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

View Product Variation

GET /v1/products/variations/:id

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/variations/:id?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/variations/:id?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/:id?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/variations/:id?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "product_id": 1,
        "status": "active",
        "sku": "DEMO-SKU-01",
        "barcode": "0123456789012",
        "product_variation_type_id": 1,
        "discontinued_date": "2019-11-25T14:52:56.000Z",
        "despatch_instructions": "Always pack facing upwards.",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "product": {
            "id": 1,
            "product_channel_id": 1,
            "product_brand_id": 1,
            "product_category_id": 1,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "channel": {
                "id": 1,
                "organisation_id": 1,
                "status": "active",
                "outbound_email": "someone@example.com",
                "default_warehouse_id": 1,
                "default_product_brand_id": 1,
                "global": false,
                "name": "Demo Channel",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            },
            "brand": {
                "id": 1,
                "name": "Demo Brand",
                "organisation_id": 1,
                "active": true,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        },
        "type": {
            "id": 1,
            "name": "Standard Product",
            "type": "product",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        },
        "components": [
            {
                "product_variation_id": 1,
                "product_component_instance_id": 1,
                "quantity": 1,
                "instance": {
                    "id": 1,
                    "product_component_id": 1,
                    "component": {
                        "id": 1,
                        "status": "active",
                        "sku": "DEMO-SKU-01",
                        "barcode": "123123123000",
                        "perishable": false,
                        "fragile": false,
                        "battery": false,
                        "dangerous": false,
                        "organic": false,
                        "what_is_it": "Tape measure.",
                        "made_of": "Synthetic rubber & Polyvinyl chloride",
                        "used_for": "A tool for measuring distances.",
                        "customs_country_of_origin_country_id": 1,
                        "product_component_customs_code_id": 1,
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z",
                        "count_product_component_batches": 1
                    }
                }
            }
        ],
        "descriptions": [
            {
                "id": 1,
                "product_variation_id": 1,
                "locale_id": 1,
                "name": "Example product",
                "full_description": "Example product description",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "locale": {
                    "id": 1,
                    "name": "English",
                    "code": "en",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        ],
        "primary_component": [
            {
                "id": 1,
                "status": "active",
                "sku": "DEMO-SKU-01",
                "barcode": "123123123000",
                "perishable": false,
                "fragile": false,
                "battery": false,
                "dangerous": false,
                "organic": false,
                "what_is_it": "Tape measure.",
                "made_of": "Synthetic rubber & Polyvinyl chloride",
                "used_for": "A tool for measuring distances.",
                "customs_country_of_origin_country_id": 1,
                "product_component_customs_code_id": 1,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "count_product_component_batches": 1
            }
        ],
        "tags": [
            {
                "id": 1,
                "name": "Processed",
                "shortcode": "PROCESSED",
                "description": "Marked a as processed by XYZ system",
                "created": "2019-11-25T14:52:56.000Z"
            }
        ],
        "stock_data_summaries": [
            {
                "product_variation_id": 1,
                "warehouse_id": 1,
                "warehouse_code": "CHR",
                "warehouse_name": "Christchurch",
                "total": 156,
                "total_saleable": 140,
                "saleable": 134,
                "available": 121,
                "allocated": 10,
                "misc": 34,
                "expected": 100,
                "under_investigation": 1
            }
        ]
    }
}

View a single product variation.

Parameter Regular Expressions

Return Type

ProductVariations

Available expands

Field Return Type Description
components array<ProductVariationComponents> Variation component.
components.instance ProductComponentInstances Component instance.
components.instance.component ProductComponents Product component.
components.instance.component.doqs array<ProductComponentDoqs> Product component DOQ.
components.instance.component.doqs.type ProductComponentDoqTypes Product component DOQ Types.
descriptions array<ProductVariationDescriptions> Variation descriptions.
descriptions.locale Locales Locale data.
primary_component array<ProductComponents> Product component.
product Products Product data. Products are grouping entries and may represent multiple different kinds of physical products.
product.brand ProductBrands Product brand data.
product.brand.organisation Organisations Organisation data.
product.channel ProductChannels Geographical region data.
product.channel.organisation Organisations Organisation data.
stock_data_summaries array<ProductVariationStockDataSummary> Variation stock breakdown.
tags array<Tags> A tag.
type ProductVariationTypes Product variation type data.

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

Update Name and Description

PUT /v1/products/variations/:id/description

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/products/variations/12345/description?expand=*", [
    "body" => json_encode([
        "locale" => "en",
        "name" => "Red Ball",
        "full_description" => "A beautiful red ball.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/products/variations/12345/description?expand=*', {
  locale: "en",
  name: "Red Ball",
  full_description: "A beautiful red ball.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/12345/description?expand=*",
    body: {
        "locale": "en",
        "name": "Red Ball",
        "full_description": "A beautiful red ball."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/products/variations/12345/description?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "locale": "en",
    "name": "Red Ball",
    "full_description": "A beautiful red ball."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "product_variation_id": 1,
        "locale_id": 1,
        "name": "Example product",
        "full_description": "Example product description",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "locale": {
            "id": 1,
            "name": "English",
            "code": "en",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        }
    }
}

Updates product’s name and description.

Parameter Regular Expressions

Request Body

UpdateVariationNameAndDescription

Return Type

ProductVariationDescriptions

Types for the Request Body

UpdateVariationNameAndDescription (root level)

Key Description Types Restrictions
locale ID or code of locale. string
or integer
required
not null
if type is string, then min length is 2
if type is string, then max length is 2
if type is integer, then min is 1
name Name. string required
not null
min length is 1
full_description Description. string required
not null
min length is 0

Available expands

Field Return Type Description
locale Locales Locale data.

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

Activate Product Variation

PUT /v1/products/variations/:id/activate

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/products/variations/:id/activate?expand=*", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/products/variations/:id/activate?expand=*', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/:id/activate?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/products/variations/:id/activate?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "product_id": 1,
        "status": "active",
        "sku": "DEMO-SKU-01",
        "barcode": "0123456789012",
        "product_variation_type_id": 1,
        "discontinued_date": "2019-11-25T14:52:56.000Z",
        "despatch_instructions": "Always pack facing upwards.",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "product": {
            "id": 1,
            "product_channel_id": 1,
            "product_brand_id": 1,
            "product_category_id": 1,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "channel": {
                "id": 1,
                "organisation_id": 1,
                "status": "active",
                "outbound_email": "someone@example.com",
                "default_warehouse_id": 1,
                "default_product_brand_id": 1,
                "global": false,
                "name": "Demo Channel",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            },
            "brand": {
                "id": 1,
                "name": "Demo Brand",
                "organisation_id": 1,
                "active": true,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        },
        "type": {
            "id": 1,
            "name": "Standard Product",
            "type": "product",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        },
        "components": [
            {
                "product_variation_id": 1,
                "product_component_instance_id": 1,
                "quantity": 1,
                "instance": {
                    "id": 1,
                    "product_component_id": 1,
                    "component": {
                        "id": 1,
                        "status": "active",
                        "sku": "DEMO-SKU-01",
                        "barcode": "123123123000",
                        "perishable": false,
                        "fragile": false,
                        "battery": false,
                        "dangerous": false,
                        "organic": false,
                        "what_is_it": "Tape measure.",
                        "made_of": "Synthetic rubber & Polyvinyl chloride",
                        "used_for": "A tool for measuring distances.",
                        "customs_country_of_origin_country_id": 1,
                        "product_component_customs_code_id": 1,
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z",
                        "count_product_component_batches": 1
                    }
                }
            }
        ],
        "descriptions": [
            {
                "id": 1,
                "product_variation_id": 1,
                "locale_id": 1,
                "name": "Example product",
                "full_description": "Example product description",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "locale": {
                    "id": 1,
                    "name": "English",
                    "code": "en",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        ],
        "primary_component": [
            {
                "id": 1,
                "status": "active",
                "sku": "DEMO-SKU-01",
                "barcode": "123123123000",
                "perishable": false,
                "fragile": false,
                "battery": false,
                "dangerous": false,
                "organic": false,
                "what_is_it": "Tape measure.",
                "made_of": "Synthetic rubber & Polyvinyl chloride",
                "used_for": "A tool for measuring distances.",
                "customs_country_of_origin_country_id": 1,
                "product_component_customs_code_id": 1,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "count_product_component_batches": 1
            }
        ],
        "tags": [
            {
                "id": 1,
                "name": "Processed",
                "shortcode": "PROCESSED",
                "description": "Marked a as processed by XYZ system",
                "created": "2019-11-25T14:52:56.000Z"
            }
        ],
        "stock_data_summaries": [
            {
                "product_variation_id": 1,
                "warehouse_id": 1,
                "warehouse_code": "CHR",
                "warehouse_name": "Christchurch",
                "total": 156,
                "total_saleable": 140,
                "saleable": 134,
                "available": 121,
                "allocated": 10,
                "misc": 34,
                "expected": 100,
                "under_investigation": 1
            }
        ]
    }
}

Set the product variation’s status to “active”.

Parameter Regular Expressions

Request Body

Ignored.

Return Type

ProductVariations

Available expands

Field Return Type Description
components array<ProductVariationComponents> Variation component.
components.instance ProductComponentInstances Component instance.
components.instance.component ProductComponents Product component.
components.instance.component.doqs array<ProductComponentDoqs> Product component DOQ.
components.instance.component.doqs.type ProductComponentDoqTypes Product component DOQ Types.
descriptions array<ProductVariationDescriptions> Variation descriptions.
descriptions.locale Locales Locale data.
primary_component array<ProductComponents> Product component.
product Products Product data. Products are grouping entries and may represent multiple different kinds of physical products.
product.brand ProductBrands Product brand data.
product.brand.organisation Organisations Organisation data.
product.channel ProductChannels Geographical region data.
product.channel.organisation Organisations Organisation data.
stock_data_summaries array<ProductVariationStockDataSummary> Variation stock breakdown.
tags array<Tags> A tag.
type ProductVariationTypes Product variation type data.

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

Discontinue Product Variation

PUT /v1/products/variations/:id/discontinue

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/products/variations/:id/discontinue?expand=*", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/products/variations/:id/discontinue?expand=*', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/:id/discontinue?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/products/variations/:id/discontinue?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "product_id": 1,
        "status": "active",
        "sku": "DEMO-SKU-01",
        "barcode": "0123456789012",
        "product_variation_type_id": 1,
        "discontinued_date": "2019-11-25T14:52:56.000Z",
        "despatch_instructions": "Always pack facing upwards.",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "product": {
            "id": 1,
            "product_channel_id": 1,
            "product_brand_id": 1,
            "product_category_id": 1,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "channel": {
                "id": 1,
                "organisation_id": 1,
                "status": "active",
                "outbound_email": "someone@example.com",
                "default_warehouse_id": 1,
                "default_product_brand_id": 1,
                "global": false,
                "name": "Demo Channel",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            },
            "brand": {
                "id": 1,
                "name": "Demo Brand",
                "organisation_id": 1,
                "active": true,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        },
        "type": {
            "id": 1,
            "name": "Standard Product",
            "type": "product",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        },
        "components": [
            {
                "product_variation_id": 1,
                "product_component_instance_id": 1,
                "quantity": 1,
                "instance": {
                    "id": 1,
                    "product_component_id": 1,
                    "component": {
                        "id": 1,
                        "status": "active",
                        "sku": "DEMO-SKU-01",
                        "barcode": "123123123000",
                        "perishable": false,
                        "fragile": false,
                        "battery": false,
                        "dangerous": false,
                        "organic": false,
                        "what_is_it": "Tape measure.",
                        "made_of": "Synthetic rubber & Polyvinyl chloride",
                        "used_for": "A tool for measuring distances.",
                        "customs_country_of_origin_country_id": 1,
                        "product_component_customs_code_id": 1,
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z",
                        "count_product_component_batches": 1
                    }
                }
            }
        ],
        "descriptions": [
            {
                "id": 1,
                "product_variation_id": 1,
                "locale_id": 1,
                "name": "Example product",
                "full_description": "Example product description",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "locale": {
                    "id": 1,
                    "name": "English",
                    "code": "en",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        ],
        "primary_component": [
            {
                "id": 1,
                "status": "active",
                "sku": "DEMO-SKU-01",
                "barcode": "123123123000",
                "perishable": false,
                "fragile": false,
                "battery": false,
                "dangerous": false,
                "organic": false,
                "what_is_it": "Tape measure.",
                "made_of": "Synthetic rubber & Polyvinyl chloride",
                "used_for": "A tool for measuring distances.",
                "customs_country_of_origin_country_id": 1,
                "product_component_customs_code_id": 1,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "count_product_component_batches": 1
            }
        ],
        "tags": [
            {
                "id": 1,
                "name": "Processed",
                "shortcode": "PROCESSED",
                "description": "Marked a as processed by XYZ system",
                "created": "2019-11-25T14:52:56.000Z"
            }
        ],
        "stock_data_summaries": [
            {
                "product_variation_id": 1,
                "warehouse_id": 1,
                "warehouse_code": "CHR",
                "warehouse_name": "Christchurch",
                "total": 156,
                "total_saleable": 140,
                "saleable": 134,
                "available": 121,
                "allocated": 10,
                "misc": 34,
                "expected": 100,
                "under_investigation": 1
            }
        ]
    }
}

Set the product variation’s status to “discontinued”.

Parameter Regular Expressions

Request Body

Ignored.

Return Type

ProductVariations

Available expands

Field Return Type Description
components array<ProductVariationComponents> Variation component.
components.instance ProductComponentInstances Component instance.
components.instance.component ProductComponents Product component.
components.instance.component.doqs array<ProductComponentDoqs> Product component DOQ.
components.instance.component.doqs.type ProductComponentDoqTypes Product component DOQ Types.
descriptions array<ProductVariationDescriptions> Variation descriptions.
descriptions.locale Locales Locale data.
primary_component array<ProductComponents> Product component.
product Products Product data. Products are grouping entries and may represent multiple different kinds of physical products.
product.brand ProductBrands Product brand data.
product.brand.organisation Organisations Organisation data.
product.channel ProductChannels Geographical region data.
product.channel.organisation Organisations Organisation data.
stock_data_summaries array<ProductVariationStockDataSummary> Variation stock breakdown.
tags array<Tags> A tag.
type ProductVariationTypes Product variation type data.

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

Add Product Timeline

POST /v1/products/variations/:id/timeline

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/products/variations/1234567/timeline", [
    "body" => json_encode([
        "message" => "Marked as processed with in system XYZ.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/products/variations/1234567/timeline', {
  message: "Marked as processed with in system XYZ.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/1234567/timeline",
    body: {
        "message": "Marked as processed with in system XYZ."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/products/variations/1234567/timeline' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "message": "Marked as processed with in system XYZ."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "message": "Marked as processed with in system XYZ."
    }
}

Add a message or note to the timeline.

Parameter Regular Expressions

Request Body

CreateAudit

Return Type

ProductAudits

Types for the Request Body

CreateAudit (root level)

Key Description Types Restrictions
message The message or note to be added to the timeline. string required
not null
max length is 65535

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

Apply Product Tag

POST /v1/products/variations/:id/tags

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/products/variations/12345/tags", [
    "body" => json_encode([
        "shortcode" => "PROCESSED",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/products/variations/12345/tags', {
  shortcode: "PROCESSED",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/12345/tags",
    body: {
        "shortcode": "PROCESSED"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/products/variations/12345/tags' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "shortcode": "PROCESSED"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "name": "Processed",
        "shortcode": "PROCESSED",
        "description": "Marked a as processed by XYZ system",
        "created": "2019-11-25T14:52:56.000Z"
    }
}

Applies a tag to a product variation.

Parameter Regular Expressions

Request Body

ApplyTag

Return Type

ProductVariationTags

Types for the Request Body

ApplyTag (root level)

Key Description Types Restrictions
shortcode The tag shortcode. string required
not null
min length is 1

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

Remove Product Tag

DELETE /v1/products/variations/:id/tags/:tagShortcode

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("DELETE", "https://public-api.bladepro.io/v1/products/variations/1234567/tags/PROCESSED", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.delete 'https://public-api.bladepro.io/v1/products/variations/1234567/tags/PROCESSED', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "DELETE",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/1234567/tags/PROCESSED",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request DELETE 'https://public-api.bladepro.io/v1/products/variations/1234567/tags/PROCESSED' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

null

Remove a tag from a product variation.

Parameter Regular Expressions

Return Type

Empty.

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::MANAGE.

Find variations with suppliers

GET /v1/products/variations/suppliers

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/variations/suppliers", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/variations/suppliers', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/suppliers",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/variations/suppliers' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "channel": 123,
            "sku": "DEMO-SKU-01",
            "product_component_sku": "DEMO-SKU-01",
            "product_component_supplier_id": 123,
            "product_component_id": 123,
            "warehouse_id": 123
        }
    ]
}

Retrieves basic data about the list of available marketplace listable products.

Return Type

array<ProductChannelVariations>

Filters

Field Operators Value List URL
sku LIKE, NOT_LIKE, IN
channel IN, NOT_IN

Scopes

This endpoint is available to all users.

Bulk List Stock

PUT /v1/products/variations/stocks

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/products/variations/stocks", [
    "body" => json_encode([
        "product_variation_id" => [
            1,
        ],
        "warehouse_code" => "CHR",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/products/variations/stocks', {
  product_variation_id: [
    1,
  ],
  warehouse_code: "CHR",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/stocks",
    body: {
        "product_variation_id": [
            1
        ],
        "warehouse_code": "CHR"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/products/variations/stocks' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "product_variation_id": [
        1
    ],
    "warehouse_code": "CHR"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "product_variation_id": 1,
            "warehouse_id": 1,
            "warehouse_code": "CHR",
            "warehouse_name": "Christchurch",
            "total": 156,
            "total_saleable": 140,
            "saleable": 134,
            "available": 121,
            "allocated": 10,
            "misc": 34,
            "expected": 100,
            "under_investigation": 1
        }
    ]
}

Fetches stock data for a set list of products.

Request Body

BulkGetVariationStockData

Return Type

array<ProductVariationStockDataSummary>

Types for the Request Body

BulkGetVariationStockData (root level)

Key Description Types Restrictions
product_variation_id List of product variation ID’s. array<number> required
not null
min count is 1
warehouse_code Warehouse code to limit the results to. If omitted or null, it won’t be applied as a filter. string min length is 1

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

List Product Variations

GET /v1/products/variations/stock_availability

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/variations/stock_availability?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/variations/stock_availability?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/variations/stock_availability?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/variations/stock_availability?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "sku": "DEMO-SKU-01",
            "barcode": "0123456789012",
            "stocks": {
                "product_variation_id": 1,
                "warehouse_id": 1,
                "warehouse_code": "CHR",
                "total": 156,
                "available": 121
            }
        }
    ]
}

Get a list of product variations. Please note that all expands will be applied automatically.

Return Type

array<StockAvailability>

Filters

Field Operators Value List URL
search LIKE fuzzy search across selected attributes
id EQUALS, IN
sku EQUALS, IN
order_channel_id IN /v1/orders/channels

Sortings

Results can be sorted by the following keys: created, product.channel.name, sku, status.

Available expands

Field Return Type Description

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

List Product Suppliers

GET /v1/products/suppliers

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/products/suppliers", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/products/suppliers', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/products/suppliers",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/products/suppliers' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 6,
            "organisation_id": 1,
            "name": "Demo Supplier",
            "active": true,
            "port_id": 4,
            "currency_code": "GBP",
            "nominal_code": "5000",
            "xero_code": "ABC/9/99",
            "organisation_tax_id": 1
        }
    ]
}

List product suppliers.

Return Type

array<ProductComponentSuppliers>

Scopes

This endpoint is only available for users with scope APP::PRODUCTS::READ.

List Purchase Order Metadata

GET /v1/purchase_orders/:id/metadata

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "key": "my_key",
            "value": "some-value"
        }
    ]
}

Retrieves a list of all the metadata stored against a purchase order.

Parameter Regular Expressions

Return Type

array<PurchaseOrderResourceMetadatas>

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::READ.

Get Purchase Order Metadata

GET /v1/purchase_orders/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Retrieves a single piece of metadata stored against a purchase order.

Parameter Regular Expressions

Return Type

PurchaseOrderResourceMetadatas

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::READ.

Set Purchase Order Metadata

PUT /v1/purchase_orders/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key", [
    "body" => json_encode([
        "value" => "some-value",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key', {
  value: "some-value",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key",
    body: {
        "value": "some-value"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "value": "some-value"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Sets some metadata against a Purchase Order.

Parameter Regular Expressions

Request Body

UpdateResourceMetadata

Return Type

PurchaseOrderResourceMetadatas

Types for the Request Body

UpdateResourceMetadata (root level)

Key Description Types Restrictions
value The value. string required
not null
max length is 65535

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::MANAGE.

Delete Purchase Order Metadata

DELETE /v1/purchase_orders/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("DELETE", "https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.delete 'https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "DELETE",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request DELETE 'https://public-api.bladepro.io/v1/purchase_orders/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

null

Deletes some metadata against a purchase order.

Parameter Regular Expressions

Return Type

Empty.

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::MANAGE.

List Purchase Orders

GET /v1/purchase_orders

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/purchase_orders?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/purchase_orders?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/purchase_orders?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 125,
        "product_channel_id": 12,
        "purchase_order_type_id": 1,
        "product_component_supplier_id": 500,
        "warehouse_id": 1,
        "currency_id": 1,
        "status": "open",
        "notification_email_addresses": "support.team@i-fulfilment.co.uk",
        "comments": "Sample comments.",
        "reject_reason": null,
        "approved_date": "2019-11-25T14:52:56.000Z",
        "completed_date": "2019-11-25T14:52:56.000Z",
        "discount": 0,
        "discount_type": "value",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "warehouse": {
            "short_code": "CHR",
            "name": "Christchurch"
        },
        "currency": {
            "code": "GBP",
            "name": "British Pound",
            "symbol": "£"
        },
        "channel": {
            "id": 1,
            "name": "Demo Channel",
            "default_warehouse_id": 1,
            "global": false
        },
        "type": {
            "id": 1,
            "code": "standard",
            "name": "Standard",
            "description": "Check-in and put away to locations"
        },
        "supplier": {
            "id": 6,
            "organisation_id": 1,
            "name": "Demo Supplier",
            "active": true,
            "port_id": 4,
            "currency_code": "GBP",
            "nominal_code": "5000",
            "xero_code": "ABC/9/99",
            "organisation_tax_id": 1
        },
        "goodsins": [
            {
                "id": 174,
                "source": "API",
                "shipping_company": "DHL",
                "tracking_number": "DHL-TN-1209341234",
                "expected_pallets": 32,
                "expected_cartons": 3200,
                "received_pallets": 32,
                "received_cartons": 3200,
                "received_container": "20FT",
                "container_shipment": true,
                "container_size": "full",
                "expected_delivery_date": "2019-11-25T14:52:56.000Z",
                "expected_delivery_time_slot": "am",
                "preferred_delivery_date": "2019-11-25T14:52:56.000Z",
                "preferred_delivery_time_slot": "am",
                "shipping_method": "sea",
                "port_id": 4,
                "purchase_order_goodsin_shipping_term_id": 1,
                "status": "completed",
                "is_third_party": false,
                "third_party_emails": null,
                "third_party_contact_name": null,
                "booking_requested": "2019-11-25T14:52:56.000Z",
                "booking_approved_by": 1,
                "booking_approved": "2019-11-25T14:52:56.000Z",
                "unique_booking_reference": "UQBR-2020/10934934",
                "check_in_by": "2019-11-25T14:52:56.000Z",
                "transport_costs_locked": "2019-11-25T14:52:56.000Z",
                "lock_user_id": 1,
                "receiving_started": "2019-11-25T14:52:56.000Z",
                "receiving_completed": "2019-11-25T14:52:56.000Z",
                "checkin_started": "2019-11-25T14:52:56.000Z",
                "checkin_completed": "2019-11-25T14:52:56.000Z",
                "putaway_started": "2019-11-25T14:52:56.000Z",
                "putaway_completed": "2019-11-25T14:52:56.000Z",
                "ignore_from_billing": false,
                "returns_damaged_count": 0,
                "returns_unidentifiable_count": 0,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "items": [
                    {
                        "id": 123124,
                        "product_component_id": 1,
                        "quantity": 34,
                        "expiry_date": null,
                        "product_component_batch_id": 52567,
                        "purchase_order_goodsin_item_issue_id": 78,
                        "product_component_cost_price_id": 54349,
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z",
                        "count_audit_ids": 0
                    }
                ]
            }
        ],
        "references": [
            {
                "name": "Supplier",
                "value": "SO25115481514"
            }
        ]
    }
}

List purchase orders.

Return Type

PurchaseOrders

Filters

Field Operators Value List URL
search LIKE fuzzy search across selected attributes
product_channel_id IN, NOT_IN /v1/products/channels
product_component_supplier_id IN, NOT_IN
status IN, NOT_IN
purchase_order_type_id IN, NOT_IN

Sortings

Results can be sorted by the following keys: created, id, warehouse.name.

Available expands

Field Return Type Description
channel CachedProductChannel Cached product channel.
currency SummarisedCurrency A currency.
goodsins array<PurchaseOrderGoodsins> One shipment to a purchase order.
goodsins.items array<PurchaseOrderGoodsinItems> Received items for a goodsin.
references array<PurchaseOrderReferences> Purchase order references.
supplier ProductComponentSuppliers Product Suppliers.
supplier.currency SummarisedCurrency A currency.
type PurchaseOrderTypes Types of purchase orders
warehouse SummarisedWarehouse A warehouse.
warehouse.country SummarisedCountry A country.

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::READ.

Create Purchase Order

POST /v1/purchase_orders

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/purchase_orders?expand=*", [
    "body" => json_encode([
        "product_channel_id" => 1,
        "product_component_supplier_id" => 6,
        "references" => [
            [
                "name" => "Supplier",
                "value" => "SO25115481514",
            ],
        ],
        "warehouse_code" => "CHR",
        "currency_code" => "GBP",
        "goodsin" => [
            "expected_pallets" => 32,
            "expected_cartons" => 3200,
            "shipping_company" => "DHL",
            "tracking_number" => "DHL-TN-1209341234",
            "shipping_method" => "sea",
            "expected_delivery_date" => "2025-03-18T13:50:21.950Z",
        ],
        "lines" => [
            [
                "sku" => "DEMO-SKU-01",
                "product_component_id" => null,
                "quantity" => 3200,
                "cost_price" => 156.5,
                "duty" => 14.5,
            ],
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/purchase_orders?expand=*', {
  product_channel_id: 1,
  product_component_supplier_id: 6,
  references: [
    {
      name: "Supplier",
      value: "SO25115481514",
    },
  ],
  warehouse_code: "CHR",
  currency_code: "GBP",
  goodsin: {
    expected_pallets: 32,
    expected_cartons: 3200,
    shipping_company: "DHL",
    tracking_number: "DHL-TN-1209341234",
    shipping_method: "sea",
    expected_delivery_date: "2025-03-18T13:50:21.950Z",
  },
  lines: [
    {
      sku: "DEMO-SKU-01",
      product_component_id: nil,
      quantity: 3200,
      cost_price: 156.5,
      duty: 14.5,
    },
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders?expand=*",
    body: {
        "product_channel_id": 1,
        "product_component_supplier_id": 6,
        "references": [
            {
                "name": "Supplier",
                "value": "SO25115481514"
            }
        ],
        "warehouse_code": "CHR",
        "currency_code": "GBP",
        "goodsin": {
            "expected_pallets": 32,
            "expected_cartons": 3200,
            "shipping_company": "DHL",
            "tracking_number": "DHL-TN-1209341234",
            "shipping_method": "sea",
            "expected_delivery_date": "2025-03-18T13:50:21.950Z"
        },
        "lines": [
            {
                "sku": "DEMO-SKU-01",
                "product_component_id": null,
                "quantity": 3200,
                "cost_price": 156.5,
                "duty": 14.5
            }
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/purchase_orders?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "product_channel_id": 1,
    "product_component_supplier_id": 6,
    "references": [
        {
            "name": "Supplier",
            "value": "SO25115481514"
        }
    ],
    "warehouse_code": "CHR",
    "currency_code": "GBP",
    "goodsin": {
        "expected_pallets": 32,
        "expected_cartons": 3200,
        "shipping_company": "DHL",
        "tracking_number": "DHL-TN-1209341234",
        "shipping_method": "sea",
        "expected_delivery_date": "2025-03-18T13:50:21.950Z"
    },
    "lines": [
        {
            "sku": "DEMO-SKU-01",
            "product_component_id": null,
            "quantity": 3200,
            "cost_price": 156.5,
            "duty": 14.5
        }
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 125,
        "product_channel_id": 12,
        "purchase_order_type_id": 1,
        "product_component_supplier_id": 500,
        "warehouse_id": 1,
        "currency_id": 1,
        "status": "open",
        "notification_email_addresses": "support.team@i-fulfilment.co.uk",
        "comments": "Sample comments.",
        "reject_reason": null,
        "approved_date": "2019-11-25T14:52:56.000Z",
        "completed_date": "2019-11-25T14:52:56.000Z",
        "discount": 0,
        "discount_type": "value",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "warehouse": {
            "short_code": "CHR",
            "name": "Christchurch"
        },
        "currency": {
            "code": "GBP",
            "name": "British Pound",
            "symbol": "£"
        },
        "channel": {
            "id": 1,
            "name": "Demo Channel",
            "default_warehouse_id": 1,
            "global": false
        },
        "type": {
            "id": 1,
            "code": "standard",
            "name": "Standard",
            "description": "Check-in and put away to locations"
        },
        "supplier": {
            "id": 6,
            "organisation_id": 1,
            "name": "Demo Supplier",
            "active": true,
            "port_id": 4,
            "currency_code": "GBP",
            "nominal_code": "5000",
            "xero_code": "ABC/9/99",
            "organisation_tax_id": 1
        },
        "lines": {
            "id": 3423,
            "product_component_id": 34309,
            "name": "Green ball",
            "quantity": 5000,
            "cost_price": 12.4,
            "duty": 0,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "component": {
                "id": 1,
                "status": "active",
                "sku": "DEMO-SKU-01",
                "barcode": "123123123000",
                "perishable": false,
                "fragile": false,
                "battery": false,
                "dangerous": false,
                "organic": false,
                "what_is_it": "Tape measure.",
                "made_of": "Synthetic rubber & Polyvinyl chloride",
                "used_for": "A tool for measuring distances.",
                "customs_country_of_origin_country_id": 1,
                "product_component_customs_code_id": 1,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "last_cost": {
                    "id": 2923,
                    "product_component_instance_id": 44309,
                    "product_component_id": 34309,
                    "net_cost_price": 12.4,
                    "cost_price_currency_code": "GBP",
                    "cost_currency": {
                        "id": 1,
                        "code": "GBP",
                        "name": "Great British Pounds",
                        "symbol": "£",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    },
                    "cost_price_duty_rate": 1,
                    "notes": "Example notes.",
                    "landed_price_currency_code": "GBP",
                    "landed_currency": {
                        "id": 1,
                        "code": "GBP",
                        "name": "Great British Pounds",
                        "symbol": "£",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    },
                    "stock": 1354,
                    "created": "2019-11-25T14:52:56.000Z",
                    "landed_price": 12.9
                },
                "stock": {
                    "total": 35,
                    "total_saleable": 34,
                    "saleable": 34,
                    "pickable": 34,
                    "available": 34,
                    "allocated": 0,
                    "reserved": 0,
                    "misc": 1,
                    "gistock": 0,
                    "expected": 5,
                    "picked": 0,
                    "under_investigation": 1
                },
                "count_product_component_batches": 1,
                "sales": {
                    "1_week": 54,
                    "1_month": 220,
                    "3_months": 583,
                    "6_months": 1124,
                    "1_year": 2930,
                    "lifetime": 2930
                }
            },
            "doq": {
                "id": 1,
                "quantity": 1,
                "weight": 1.45,
                "depth": 1000,
                "width": 1500,
                "height": 1000,
                "shippable": true,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            }
        },
        "payments": [
            {
                "id": 94324,
                "name": "30% deposit",
                "amount": 10000,
                "currency_code": "GBP",
                "effective_date": "2019-11-25T14:52:56.000Z",
                "currency": {
                    "code": "GBP",
                    "name": "British Pound",
                    "symbol": "£"
                }
            }
        ],
        "goodsins": [
            {
                "id": 174,
                "source": "API",
                "shipping_company": "DHL",
                "tracking_number": "DHL-TN-1209341234",
                "expected_pallets": 32,
                "expected_cartons": 3200,
                "received_pallets": 32,
                "received_cartons": 3200,
                "received_container": "20FT",
                "container_shipment": true,
                "container_size": "full",
                "expected_delivery_date": "2019-11-25T14:52:56.000Z",
                "expected_delivery_time_slot": "am",
                "preferred_delivery_date": "2019-11-25T14:52:56.000Z",
                "preferred_delivery_time_slot": "am",
                "shipping_method": "sea",
                "port_id": 4,
                "purchase_order_goodsin_shipping_term_id": 1,
                "status": "completed",
                "is_third_party": false,
                "third_party_emails": null,
                "third_party_contact_name": null,
                "booking_requested": "2019-11-25T14:52:56.000Z",
                "booking_approved_by": 1,
                "booking_approved": "2019-11-25T14:52:56.000Z",
                "unique_booking_reference": "UQBR-2020/10934934",
                "check_in_by": "2019-11-25T14:52:56.000Z",
                "transport_costs_locked": "2019-11-25T14:52:56.000Z",
                "lock_user_id": 1,
                "receiving_started": "2019-11-25T14:52:56.000Z",
                "receiving_completed": "2019-11-25T14:52:56.000Z",
                "checkin_started": "2019-11-25T14:52:56.000Z",
                "checkin_completed": "2019-11-25T14:52:56.000Z",
                "putaway_started": "2019-11-25T14:52:56.000Z",
                "putaway_completed": "2019-11-25T14:52:56.000Z",
                "ignore_from_billing": false,
                "returns_damaged_count": 0,
                "returns_unidentifiable_count": 0,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "items": [
                    {
                        "id": 123124,
                        "product_component_id": 1,
                        "quantity": 34,
                        "expiry_date": null,
                        "product_component_batch_id": 52567,
                        "purchase_order_goodsin_item_issue_id": 78,
                        "product_component_cost_price_id": 54349,
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z",
                        "count_audit_ids": 0
                    }
                ]
            }
        ],
        "tags": [
            {
                "id": 1,
                "name": "Processed",
                "shortcode": "PROCESSED",
                "description": "Marked a as processed by XYZ system",
                "created": "2019-11-25T14:52:56.000Z"
            }
        ],
        "references": [
            {
                "name": "Supplier",
                "value": "SO25115481514"
            }
        ]
    }
}

Creates a purchase order.

Request Body

CreatePurchaseOrder

Return Type

PurchaseOrders

Types for the Request Body

CreatePurchaseOrder (root level)

Key Description Types Restrictions
product_channel_id Product channel ID. number required
not null
product_component_supplier_id Supplier ID. number required
not null
references List of references. array<Reference> not null
warehouse_code Warehouse code. string required
not null
min length is 1
currency_code Currency code string required
not null
min length is 3
max length is 3
goodsin First goodsin. Goodsin required
not null
lines Products ordered. array<Line> not null

Goodsin

Key Description Types Restrictions
expected_pallets Number of expected pallets. integer required
not null
min is 0
expected_cartons Number of expected cartons. integer required
not null
min is 0
shipping_company Name of the shipping company. string not null
tracking_number Tracking number for the shipment. string not null
shipping_method Method of travel. enum(air, sea, road) required
not null
expected_delivery_date Expected delivery date. date required
not null

Line

Key Description Types Restrictions
sku Product SKU. string optionally required
not null
min length is 1
match is /^[0-9a-z_.-]+$/i
product_component_id Product component ID. integer optionally required
not null
min is 1
quantity Ordered quantity. integer required
not null
min is 1
cost_price Cost price. number not null
min is 0
duty Duty rate. number not null
min is 0

Reference

Key Description Types Restrictions
name Name. string required
not null
value Value. string required
not null

Available expands

Field Return Type Description
channel CachedProductChannel Cached product channel.
currency SummarisedCurrency A currency.
goodsins array<PurchaseOrderGoodsins> One shipment to a purchase order.
goodsins.consignment_qualities array<ConsignmentQualities> Consignment quality description.
goodsins.containers array<PurchaseOrderGoodsinContainers> A container for a goodsin.
goodsins.items array<PurchaseOrderGoodsinItems> Received items for a goodsin.
goodsins.items.batch ProductComponentBatches Description of a batch.
goodsins.items.component ProductComponents Product component.
goodsins.items.component.doqs array<ProductComponentDoqs> Product component DOQ.
goodsins.items.component.doqs.type ProductComponentDoqTypes Product component DOQ Types.
goodsins.items.component.last_cost ProductComponentLandedPrices Landed prices.
goodsins.items.component.last_cost.cost_currency Currencies Currency data.
goodsins.items.component.last_cost.landed_currency SummarisedCurrency A currency.
goodsins.items.component.sales ProductComponentSalesSummary Sales summary for a product.
goodsins.items.component.stock ProductComponentStockSummary Stock summary for a product component.
goodsins.items.cost ProductComponentCostPrices A cost price.
goodsins.items.cost.currency SummarisedCurrency A currency.
goodsins.items.cost.transports ProductComponentCostPriceTransports Transport costs.
goodsins.port Ports Shipping ports.
lines array<PurchaseOrderLines> An item ordered in a purchase order.
lines.component ProductComponents Product component.
lines.component.doqs array<ProductComponentDoqs> Product component DOQ.
lines.component.doqs.type ProductComponentDoqTypes Product component DOQ Types.
lines.component.last_cost ProductComponentLandedPrices Landed prices.
lines.component.last_cost.cost_currency Currencies Currency data.
lines.component.last_cost.landed_currency SummarisedCurrency A currency.
lines.component.sales ProductComponentSalesSummary Sales summary for a product.
lines.component.stock ProductComponentStockSummary Stock summary for a product component.
lines.doq ProductComponentDoqs Product component DOQ.
payments array<PurchaseOrderPayments> Payments made towards purchase order suppliers.
payments.currency SummarisedCurrency A currency.
references array<PurchaseOrderReferences> Purchase order references.
supplier ProductComponentSuppliers Product Suppliers.
supplier.currency SummarisedCurrency A currency.
tags array<Tags> A tag.
type PurchaseOrderTypes Types of purchase orders
warehouse SummarisedWarehouse A warehouse.
warehouse.country SummarisedCountry A country.

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::MANAGE.

Create Fast-Track Purchase Order

POST /v1/purchase_orders/fast_track

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/purchase_orders/fast_track?expand=*", [
    "body" => json_encode([
        "warehouse_code" => "CHR",
        "product_channel_id" => 1,
        "currency_code" => "GBP",
        "reference" => "SO25115481514",
        "lines" => [
            [
                "sku" => "DEMO-SKU-01",
                "quantity" => 3200,
            ],
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/purchase_orders/fast_track?expand=*', {
  warehouse_code: "CHR",
  product_channel_id: 1,
  currency_code: "GBP",
  reference: "SO25115481514",
  lines: [
    {
      sku: "DEMO-SKU-01",
      quantity: 3200,
    },
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders/fast_track?expand=*",
    body: {
        "warehouse_code": "CHR",
        "product_channel_id": 1,
        "currency_code": "GBP",
        "reference": "SO25115481514",
        "lines": [
            {
                "sku": "DEMO-SKU-01",
                "quantity": 3200
            }
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/purchase_orders/fast_track?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "warehouse_code": "CHR",
    "product_channel_id": 1,
    "currency_code": "GBP",
    "reference": "SO25115481514",
    "lines": [
        {
            "sku": "DEMO-SKU-01",
            "quantity": 3200
        }
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 125,
        "product_channel_id": 12,
        "purchase_order_type_id": 1,
        "product_component_supplier_id": 500,
        "warehouse_id": 1,
        "currency_id": 1,
        "status": "open",
        "notification_email_addresses": "support.team@i-fulfilment.co.uk",
        "comments": "Sample comments.",
        "reject_reason": null,
        "approved_date": "2019-11-25T14:52:56.000Z",
        "completed_date": "2019-11-25T14:52:56.000Z",
        "discount": 0,
        "discount_type": "value",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "warehouse": {
            "short_code": "CHR",
            "name": "Christchurch"
        },
        "currency": {
            "code": "GBP",
            "name": "British Pound",
            "symbol": "£"
        },
        "channel": {
            "id": 1,
            "name": "Demo Channel",
            "default_warehouse_id": 1,
            "global": false
        },
        "type": {
            "id": 1,
            "code": "standard",
            "name": "Standard",
            "description": "Check-in and put away to locations"
        },
        "supplier": {
            "id": 6,
            "organisation_id": 1,
            "name": "Demo Supplier",
            "active": true,
            "port_id": 4,
            "currency_code": "GBP",
            "nominal_code": "5000",
            "xero_code": "ABC/9/99",
            "organisation_tax_id": 1
        },
        "lines": {
            "id": 3423,
            "product_component_id": 34309,
            "name": "Green ball",
            "quantity": 5000,
            "cost_price": 12.4,
            "duty": 0,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "component": {
                "id": 1,
                "status": "active",
                "sku": "DEMO-SKU-01",
                "barcode": "123123123000",
                "perishable": false,
                "fragile": false,
                "battery": false,
                "dangerous": false,
                "organic": false,
                "what_is_it": "Tape measure.",
                "made_of": "Synthetic rubber & Polyvinyl chloride",
                "used_for": "A tool for measuring distances.",
                "customs_country_of_origin_country_id": 1,
                "product_component_customs_code_id": 1,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "last_cost": {
                    "id": 2923,
                    "product_component_instance_id": 44309,
                    "product_component_id": 34309,
                    "net_cost_price": 12.4,
                    "cost_price_currency_code": "GBP",
                    "cost_currency": {
                        "id": 1,
                        "code": "GBP",
                        "name": "Great British Pounds",
                        "symbol": "£",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    },
                    "cost_price_duty_rate": 1,
                    "notes": "Example notes.",
                    "landed_price_currency_code": "GBP",
                    "landed_currency": {
                        "id": 1,
                        "code": "GBP",
                        "name": "Great British Pounds",
                        "symbol": "£",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    },
                    "stock": 1354,
                    "created": "2019-11-25T14:52:56.000Z",
                    "landed_price": 12.9
                },
                "stock": {
                    "total": 35,
                    "total_saleable": 34,
                    "saleable": 34,
                    "pickable": 34,
                    "available": 34,
                    "allocated": 0,
                    "reserved": 0,
                    "misc": 1,
                    "gistock": 0,
                    "expected": 5,
                    "picked": 0,
                    "under_investigation": 1
                },
                "count_product_component_batches": 1,
                "sales": {
                    "1_week": 54,
                    "1_month": 220,
                    "3_months": 583,
                    "6_months": 1124,
                    "1_year": 2930,
                    "lifetime": 2930
                }
            },
            "doq": {
                "id": 1,
                "quantity": 1,
                "weight": 1.45,
                "depth": 1000,
                "width": 1500,
                "height": 1000,
                "shippable": true,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            }
        },
        "payments": [
            {
                "id": 94324,
                "name": "30% deposit",
                "amount": 10000,
                "currency_code": "GBP",
                "effective_date": "2019-11-25T14:52:56.000Z",
                "currency": {
                    "code": "GBP",
                    "name": "British Pound",
                    "symbol": "£"
                }
            }
        ],
        "goodsins": [
            {
                "id": 174,
                "source": "API",
                "shipping_company": "DHL",
                "tracking_number": "DHL-TN-1209341234",
                "expected_pallets": 32,
                "expected_cartons": 3200,
                "received_pallets": 32,
                "received_cartons": 3200,
                "received_container": "20FT",
                "container_shipment": true,
                "container_size": "full",
                "expected_delivery_date": "2019-11-25T14:52:56.000Z",
                "expected_delivery_time_slot": "am",
                "preferred_delivery_date": "2019-11-25T14:52:56.000Z",
                "preferred_delivery_time_slot": "am",
                "shipping_method": "sea",
                "port_id": 4,
                "purchase_order_goodsin_shipping_term_id": 1,
                "status": "completed",
                "is_third_party": false,
                "third_party_emails": null,
                "third_party_contact_name": null,
                "booking_requested": "2019-11-25T14:52:56.000Z",
                "booking_approved_by": 1,
                "booking_approved": "2019-11-25T14:52:56.000Z",
                "unique_booking_reference": "UQBR-2020/10934934",
                "check_in_by": "2019-11-25T14:52:56.000Z",
                "transport_costs_locked": "2019-11-25T14:52:56.000Z",
                "lock_user_id": 1,
                "receiving_started": "2019-11-25T14:52:56.000Z",
                "receiving_completed": "2019-11-25T14:52:56.000Z",
                "checkin_started": "2019-11-25T14:52:56.000Z",
                "checkin_completed": "2019-11-25T14:52:56.000Z",
                "putaway_started": "2019-11-25T14:52:56.000Z",
                "putaway_completed": "2019-11-25T14:52:56.000Z",
                "ignore_from_billing": false,
                "returns_damaged_count": 0,
                "returns_unidentifiable_count": 0,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "items": [
                    {
                        "id": 123124,
                        "product_component_id": 1,
                        "quantity": 34,
                        "expiry_date": null,
                        "product_component_batch_id": 52567,
                        "purchase_order_goodsin_item_issue_id": 78,
                        "product_component_cost_price_id": 54349,
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z",
                        "count_audit_ids": 0
                    }
                ]
            }
        ],
        "tags": [
            {
                "id": 1,
                "name": "Processed",
                "shortcode": "PROCESSED",
                "description": "Marked a as processed by XYZ system",
                "created": "2019-11-25T14:52:56.000Z"
            }
        ],
        "references": [
            {
                "name": "Supplier",
                "value": "SO25115481514"
            }
        ]
    }
}

Creates a fast-track purchase order.

Fast track Purchase Orders are a simplified purchase order that can only be used if enabled in a warehouse and on an organisation using our SaaS product.They should only be used with authorisation from your SaaS Account Manager. For further details please contact the SaaS team.

Request Body

CreateFastTrackPurchaseOrder

Return Type

PurchaseOrders

Types for the Request Body

CreateFastTrackPurchaseOrder (root level)

Key Description Types Restrictions
warehouse_code Warehouse code. string required
not null
min length is 1
product_channel_id Product channel ID. number required
not null
currency_code Currency code string required
not null
min length is 3
max length is 3
reference Reference value. string required
not null
lines Products ordered. array<Line> required
not null
min count is 1

Line

Key Description Types Restrictions
sku Product SKU. string required
not null
min length is 1
match is /^[0-9a-z_-]+$/i
quantity Ordered quantity. integer required
not null
min is 1

Available expands

Field Return Type Description
channel CachedProductChannel Cached product channel.
currency SummarisedCurrency A currency.
goodsins array<PurchaseOrderGoodsins> One shipment to a purchase order.
goodsins.consignment_qualities array<ConsignmentQualities> Consignment quality description.
goodsins.containers array<PurchaseOrderGoodsinContainers> A container for a goodsin.
goodsins.items array<PurchaseOrderGoodsinItems> Received items for a goodsin.
goodsins.items.batch ProductComponentBatches Description of a batch.
goodsins.items.component ProductComponents Product component.
goodsins.items.component.doqs array<ProductComponentDoqs> Product component DOQ.
goodsins.items.component.doqs.type ProductComponentDoqTypes Product component DOQ Types.
goodsins.items.component.last_cost ProductComponentLandedPrices Landed prices.
goodsins.items.component.last_cost.cost_currency Currencies Currency data.
goodsins.items.component.last_cost.landed_currency SummarisedCurrency A currency.
goodsins.items.component.sales ProductComponentSalesSummary Sales summary for a product.
goodsins.items.component.stock ProductComponentStockSummary Stock summary for a product component.
goodsins.items.cost ProductComponentCostPrices A cost price.
goodsins.items.cost.currency SummarisedCurrency A currency.
goodsins.items.cost.transports ProductComponentCostPriceTransports Transport costs.
goodsins.port Ports Shipping ports.
lines array<PurchaseOrderLines> An item ordered in a purchase order.
lines.component ProductComponents Product component.
lines.component.doqs array<ProductComponentDoqs> Product component DOQ.
lines.component.doqs.type ProductComponentDoqTypes Product component DOQ Types.
lines.component.last_cost ProductComponentLandedPrices Landed prices.
lines.component.last_cost.cost_currency Currencies Currency data.
lines.component.last_cost.landed_currency SummarisedCurrency A currency.
lines.component.sales ProductComponentSalesSummary Sales summary for a product.
lines.component.stock ProductComponentStockSummary Stock summary for a product component.
lines.doq ProductComponentDoqs Product component DOQ.
payments array<PurchaseOrderPayments> Payments made towards purchase order suppliers.
payments.currency SummarisedCurrency A currency.
references array<PurchaseOrderReferences> Purchase order references.
supplier ProductComponentSuppliers Product Suppliers.
supplier.currency SummarisedCurrency A currency.
tags array<Tags> A tag.
type PurchaseOrderTypes Types of purchase orders
warehouse SummarisedWarehouse A warehouse.
warehouse.country SummarisedCountry A country.

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::MANAGE.

View Purchase Order

GET /v1/purchase_orders/:id

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/purchase_orders/125?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/purchase_orders/125?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders/125?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/purchase_orders/125?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 125,
        "product_channel_id": 12,
        "purchase_order_type_id": 1,
        "product_component_supplier_id": 500,
        "warehouse_id": 1,
        "currency_id": 1,
        "status": "open",
        "notification_email_addresses": "support.team@i-fulfilment.co.uk",
        "comments": "Sample comments.",
        "reject_reason": null,
        "approved_date": "2019-11-25T14:52:56.000Z",
        "completed_date": "2019-11-25T14:52:56.000Z",
        "discount": 0,
        "discount_type": "value",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "warehouse": {
            "short_code": "CHR",
            "name": "Christchurch"
        },
        "currency": {
            "code": "GBP",
            "name": "British Pound",
            "symbol": "£"
        },
        "channel": {
            "id": 1,
            "name": "Demo Channel",
            "default_warehouse_id": 1,
            "global": false
        },
        "type": {
            "id": 1,
            "code": "standard",
            "name": "Standard",
            "description": "Check-in and put away to locations"
        },
        "supplier": {
            "id": 6,
            "organisation_id": 1,
            "name": "Demo Supplier",
            "active": true,
            "port_id": 4,
            "currency_code": "GBP",
            "nominal_code": "5000",
            "xero_code": "ABC/9/99",
            "organisation_tax_id": 1
        },
        "lines": {
            "id": 3423,
            "product_component_id": 34309,
            "name": "Green ball",
            "quantity": 5000,
            "cost_price": 12.4,
            "duty": 0,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "component": {
                "id": 1,
                "status": "active",
                "sku": "DEMO-SKU-01",
                "barcode": "123123123000",
                "perishable": false,
                "fragile": false,
                "battery": false,
                "dangerous": false,
                "organic": false,
                "what_is_it": "Tape measure.",
                "made_of": "Synthetic rubber & Polyvinyl chloride",
                "used_for": "A tool for measuring distances.",
                "customs_country_of_origin_country_id": 1,
                "product_component_customs_code_id": 1,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "last_cost": {
                    "id": 2923,
                    "product_component_instance_id": 44309,
                    "product_component_id": 34309,
                    "net_cost_price": 12.4,
                    "cost_price_currency_code": "GBP",
                    "cost_currency": {
                        "id": 1,
                        "code": "GBP",
                        "name": "Great British Pounds",
                        "symbol": "£",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    },
                    "cost_price_duty_rate": 1,
                    "notes": "Example notes.",
                    "landed_price_currency_code": "GBP",
                    "landed_currency": {
                        "id": 1,
                        "code": "GBP",
                        "name": "Great British Pounds",
                        "symbol": "£",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    },
                    "stock": 1354,
                    "created": "2019-11-25T14:52:56.000Z",
                    "landed_price": 12.9
                },
                "stock": {
                    "total": 35,
                    "total_saleable": 34,
                    "saleable": 34,
                    "pickable": 34,
                    "available": 34,
                    "allocated": 0,
                    "reserved": 0,
                    "misc": 1,
                    "gistock": 0,
                    "expected": 5,
                    "picked": 0,
                    "under_investigation": 1
                },
                "count_product_component_batches": 1,
                "sales": {
                    "1_week": 54,
                    "1_month": 220,
                    "3_months": 583,
                    "6_months": 1124,
                    "1_year": 2930,
                    "lifetime": 2930
                }
            },
            "doq": {
                "id": 1,
                "quantity": 1,
                "weight": 1.45,
                "depth": 1000,
                "width": 1500,
                "height": 1000,
                "shippable": true,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            }
        },
        "payments": [
            {
                "id": 94324,
                "name": "30% deposit",
                "amount": 10000,
                "currency_code": "GBP",
                "effective_date": "2019-11-25T14:52:56.000Z",
                "currency": {
                    "code": "GBP",
                    "name": "British Pound",
                    "symbol": "£"
                }
            }
        ],
        "goodsins": [
            {
                "id": 174,
                "source": "API",
                "shipping_company": "DHL",
                "tracking_number": "DHL-TN-1209341234",
                "expected_pallets": 32,
                "expected_cartons": 3200,
                "received_pallets": 32,
                "received_cartons": 3200,
                "received_container": "20FT",
                "container_shipment": true,
                "container_size": "full",
                "expected_delivery_date": "2019-11-25T14:52:56.000Z",
                "expected_delivery_time_slot": "am",
                "preferred_delivery_date": "2019-11-25T14:52:56.000Z",
                "preferred_delivery_time_slot": "am",
                "shipping_method": "sea",
                "port_id": 4,
                "purchase_order_goodsin_shipping_term_id": 1,
                "status": "completed",
                "is_third_party": false,
                "third_party_emails": null,
                "third_party_contact_name": null,
                "booking_requested": "2019-11-25T14:52:56.000Z",
                "booking_approved_by": 1,
                "booking_approved": "2019-11-25T14:52:56.000Z",
                "unique_booking_reference": "UQBR-2020/10934934",
                "check_in_by": "2019-11-25T14:52:56.000Z",
                "transport_costs_locked": "2019-11-25T14:52:56.000Z",
                "lock_user_id": 1,
                "receiving_started": "2019-11-25T14:52:56.000Z",
                "receiving_completed": "2019-11-25T14:52:56.000Z",
                "checkin_started": "2019-11-25T14:52:56.000Z",
                "checkin_completed": "2019-11-25T14:52:56.000Z",
                "putaway_started": "2019-11-25T14:52:56.000Z",
                "putaway_completed": "2019-11-25T14:52:56.000Z",
                "ignore_from_billing": false,
                "returns_damaged_count": 0,
                "returns_unidentifiable_count": 0,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "items": [
                    {
                        "id": 123124,
                        "product_component_id": 1,
                        "quantity": 34,
                        "expiry_date": null,
                        "product_component_batch_id": 52567,
                        "purchase_order_goodsin_item_issue_id": 78,
                        "product_component_cost_price_id": 54349,
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z",
                        "count_audit_ids": 0
                    }
                ]
            }
        ],
        "tags": [
            {
                "id": 1,
                "name": "Processed",
                "shortcode": "PROCESSED",
                "description": "Marked a as processed by XYZ system",
                "created": "2019-11-25T14:52:56.000Z"
            }
        ],
        "references": [
            {
                "name": "Supplier",
                "value": "SO25115481514"
            }
        ]
    }
}

Retrieve one purchase order.

Parameter Regular Expressions

Return Type

PurchaseOrders

Available expands

Field Return Type Description
channel CachedProductChannel Cached product channel.
currency SummarisedCurrency A currency.
goodsins array<PurchaseOrderGoodsins> One shipment to a purchase order.
goodsins.consignment_qualities array<ConsignmentQualities> Consignment quality description.
goodsins.containers array<PurchaseOrderGoodsinContainers> A container for a goodsin.
goodsins.items array<PurchaseOrderGoodsinItems> Received items for a goodsin.
goodsins.items.batch ProductComponentBatches Description of a batch.
goodsins.items.component ProductComponents Product component.
goodsins.items.component.doqs array<ProductComponentDoqs> Product component DOQ.
goodsins.items.component.doqs.type ProductComponentDoqTypes Product component DOQ Types.
goodsins.items.component.last_cost ProductComponentLandedPrices Landed prices.
goodsins.items.component.last_cost.cost_currency Currencies Currency data.
goodsins.items.component.last_cost.landed_currency SummarisedCurrency A currency.
goodsins.items.component.sales ProductComponentSalesSummary Sales summary for a product.
goodsins.items.component.stock ProductComponentStockSummary Stock summary for a product component.
goodsins.items.cost ProductComponentCostPrices A cost price.
goodsins.items.cost.currency SummarisedCurrency A currency.
goodsins.items.cost.transports ProductComponentCostPriceTransports Transport costs.
goodsins.port Ports Shipping ports.
lines array<PurchaseOrderLines> An item ordered in a purchase order.
lines.component ProductComponents Product component.
lines.component.doqs array<ProductComponentDoqs> Product component DOQ.
lines.component.doqs.type ProductComponentDoqTypes Product component DOQ Types.
lines.component.last_cost ProductComponentLandedPrices Landed prices.
lines.component.last_cost.cost_currency Currencies Currency data.
lines.component.last_cost.landed_currency SummarisedCurrency A currency.
lines.component.sales ProductComponentSalesSummary Sales summary for a product.
lines.component.stock ProductComponentStockSummary Stock summary for a product component.
lines.doq ProductComponentDoqs Product component DOQ.
payments array<PurchaseOrderPayments> Payments made towards purchase order suppliers.
payments.currency SummarisedCurrency A currency.
references array<PurchaseOrderReferences> Purchase order references.
supplier ProductComponentSuppliers Product Suppliers.
supplier.currency SummarisedCurrency A currency.
tags array<Tags> A tag.
type PurchaseOrderTypes Types of purchase orders
warehouse SummarisedWarehouse A warehouse.
warehouse.country SummarisedCountry A country.

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::READ.

Apply Purchase Order Tag

POST /v1/purchase_orders/:id/tags

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/purchase_orders/:id/tags", [
    "body" => json_encode([
        "shortcode" => "PROCESSED",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/purchase_orders/:id/tags', {
  shortcode: "PROCESSED",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders/:id/tags",
    body: {
        "shortcode": "PROCESSED"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/purchase_orders/:id/tags' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "shortcode": "PROCESSED"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "name": "Processed",
        "shortcode": "PROCESSED",
        "description": "Marked a as processed by XYZ system",
        "created": "2019-11-25T14:52:56.000Z"
    }
}

Applies a tag to a purchase order.

Parameter Regular Expressions

Request Body

ApplyTag

Return Type

PurchaseOrderTags

Types for the Request Body

ApplyTag (root level)

Key Description Types Restrictions
shortcode The tag shortcode. string required
not null
min length is 1

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::MANAGE.

Remove Purchase Order Tag

DELETE /v1/purchase_orders/:id/tags/:tagShortcode

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("DELETE", "https://public-api.bladepro.io/v1/purchase_orders/1234567/tags/PROCESSED", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.delete 'https://public-api.bladepro.io/v1/purchase_orders/1234567/tags/PROCESSED', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "DELETE",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders/1234567/tags/PROCESSED",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request DELETE 'https://public-api.bladepro.io/v1/purchase_orders/1234567/tags/PROCESSED' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

null

Remove a tag from a purchase order.

Parameter Regular Expressions

Return Type

Empty.

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::MANAGE.

Add Purchase Order Timeline

POST /v1/purchase_orders/:id/timeline

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/purchase_orders/1234567/timeline", [
    "body" => json_encode([
        "message" => "Marked as processed with in system XYZ.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/purchase_orders/1234567/timeline', {
  message: "Marked as processed with in system XYZ.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/purchase_orders/1234567/timeline",
    body: {
        "message": "Marked as processed with in system XYZ."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/purchase_orders/1234567/timeline' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "message": "Marked as processed with in system XYZ."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "message": "Marked as processed with in system XYZ."
    }
}

Add a message or note to the timeline.

Parameter Regular Expressions

Request Body

CreateAudit

Return Type

PurchaseOrderAudits

Types for the Request Body

CreateAudit (root level)

Key Description Types Restrictions
message The message or note to be added to the timeline. string required
not null
max length is 65535

Scopes

This endpoint is only available for users with scope APP::PURCHASE-ORDERS::MANAGE.

ApplicationInstanceInfos

Represents a status for an application instance.

Fields

Key Description Type Expanding
nickname Nickname. string No
status The current status. ApplicationInstanceStatuses Yes

ApplicationInstancePreferences

Represents an application instance preference.

Fields

Key Description Type Expanding
value The value. string No
modified Last modified date. date No

ApplicationInstanceStatuses

Represents a status for an application instance.

Fields

Key Description Type Expanding
name Name of the status. string No
code Internal code of the status. string No
description Description. string No

Auth

Fields

Key Description Type Expanding
session_token Session token to pass into API calls. string No
expiry Session expiry time. date No

Brands

Brand data.

Fields

Key Description Type Expanding
id ID of the brand. number No
name Name of the brand. string No

BulkAdjustVirtualStockResult

Holds data about the results of a bulk virtual stock adjustment.

Fields

Key Description Type Expanding
affected The number of items affected by the bulk action. number No

BulkCheckOrderExists

Check if an order reference already exists on a channel.

Fields

Key Description Type Expanding
order_reference Order reference. string No
order_id BladePRO Order Id. number No
exists Does the order exists. boolean No

BulkImportOrdersFile

Confirmation of a file upload.

Fields

Key Description Type Expanding
success Pass an order export to import orders in bulk. boolean No

BulkListAllOpenOrders

List all the ‘open’ orders for a given channel. Can be used to do a pre-cursive check for order importer functions to filter out orders have been previously imported.

Fields

Key Description Type Expanding
order_id Order id. number No
reference Order reference. string No
goodsouts List of related goodsouts. array<BulkListAllOpenOrdersGoodsout> Yes

BulkListAllOpenOrdersGoodsout

Fields

Key Description Type Expanding
order_goodsout_id Order Goodsout id. string No
status Goodsout status. string No
metadata List of related metadata created by this app instance. array<BulkListAllOpenOrdersGoodsoutMetadata> Yes

BulkListAllOpenOrdersGoodsoutMetadata

Fields

Key Description Type Expanding
key Metadata Key. string No
value Metadata Value. string No

BulkOrderStatuses

Defines a status against an order goodsout.

Fields

Key Description Type Expanding
order_goodsout_id Order goodsout ID. number No
status List of tracking numbers. enum * see below No

Enums

Field Values
status draft, awaiting_allocation, hung, returned, awaiting_payment, awaiting_picking, awaiting_despatch, backorder_release, backorder, cancelled, return_open, item_refunded, item_replaced, awaiting_collection, despatched

BulkOrderTrackingNumbers

Defines a list of tracking numbers against an order goodsout.

Fields

Key Description Type Expanding
order_goodsout_id Order goodsout ID. number No
despatch_date Despatch date. date No
courier Courier name. string No
external_tracking_enabled Trackable flag. boolean No
service Shipping service name. string No
tracking_numbers List of tracking numbers. array<CachedCourierTracking> Yes

BulkOrderTrackingNumbersByReference

Defines a list of tracking numbers against an order goodsout.

Fields

Key Description Type Expanding
reference Order reference. string No
order_goodsout_id Order goodsout ID. number No
despatch_date Despatch date. date No
status Goodsout status. enum * see below No
courier Courier name. string No
service Shipping service name. string No
external_tracking_enabled Trackable flag. boolean No
tracking_numbers List of tracking numbers. array<CachedCourierTracking> Yes

Enums

Field Values
status draft, awaiting_allocation, hung, returned, awaiting_payment, awaiting_picking, awaiting_despatch, backorder_release, backorder, cancelled, return_open, item_refunded, item_replaced, awaiting_collection, despatched

CachedAddress

An address.

Fields

Key Description Type Expanding
first_name First name. string No
last_name Last name. string No
company Company name. string No
address_one Address line one. string No
address_two Address line two. string No
address_three Address line three. string No
town Town. string No
county County or state. string No
postcode Postcode. string No
email Email address. string No
mobile Mobile telephone. string No
telephone Telephone. string No
secondary_telephone Secondary telephone. string No
contact BladePRO contact data. CachedAddressContact Yes
country Country. SummarisedCountry Yes

CachedAddressContact

A BladePRO contact.

Fields

Key Description Type Expanding
name Name. string No
group Group name. string No

CachedApplicationMarketplaceAttribute

Marketplace attribute

Fields

Key Description Type Expanding
id Attribute definition id. number No
name Name of the attribute. string No
description Description of the attribute. string No
code Code representing the attribute. string No

CachedAttribute

An attribute.

Fields

Key Description Type Expanding
name Name. string No
value Value. string No

CachedBrand

A brand.

Fields

Key Description Type Expanding
name Name. string No

CachedCourier

A courier.

Fields

Key Description Type Expanding
name Name. string No
code Code. string No
service Service details. CachedShippingService Yes
tracking Tracking details. array<CachedCourierTracking> Yes

CachedCourierTracking

Tracking details.

Fields

Key Description Type Expanding
courier Courier name. string No
code The tracking number. string No
url Tracking URL. string No

CachedGoodsout

An order goodsout.

Fields

Key Description Type Expanding
id Goodsout ID. number No
bid Full BladePRO ID. string No
creator Who created the goodsout. string No
status Goodsout status. enum * see below No
date_placed Placed date. date No
despatch_date Despatch date. date No
despatch_on_date Despatch on date. date No
warehouse Fulfilment warehouse. SummarisedWarehouse Yes
courier Courier. CachedCourier Yes
tags List of applied tags. array<SummarisedTag> Yes
attributes List of applied attributes. array<CachedAttribute> Yes
shipping_address The shipping address. CachedAddress Yes
order The parent order. CachedOrder Yes
lines Summaries of the active goodsout lines that describe products. No extras or packaging are listed. array<CachedGoodsoutLine> Yes

Enums

Field Values
status draft, awaiting_allocation, hung, returned, awaiting_payment, awaiting_picking, awaiting_despatch, backorder_release, backorder, cancelled, return_open, item_refunded, item_replaced, awaiting_collection, despatched

CachedGoodsoutLine

An order goodsout line summary.

Fields

Key Description Type Expanding
id ID of the line. number No
product_variation_id ID of the product variation. number No
sku SKU of the product variation. string No
name English description of the product variation. string No
quantity Ordered quantity. number No

CachedMarketplaceListing

Marketplace listing

Fields

Key Description Type Expanding
id The marketplace listing variation ID. number No
marketplace_reference The marketplace reference of the listing variation. string No
attributes Listing attributes. array<CachedMarketplaceListingAttribute> Yes
options Listing option definitions. array<CachedMarketplaceListingOption> Yes
images Variation images. array<CachedMarketplaceListingImage> Yes
related_listing_variations Related listing variations that belong to the same parent marketplace_listing array<CachedMarketplaceListingVariationRelatedVariation> Yes

CachedMarketplaceListingAttribute

Marketplace listing attributes

Fields

Key Description Type Expanding
label_json JSON string defining the label of the attribute value. string No
value The attribute value. string No
attribute The attribute definition. CachedApplicationMarketplaceAttribute Yes

CachedMarketplaceListingImage

Marketplace listing variation images

Fields

Key Description Type Expanding
primary Id this the primary image for the listing . boolean No
sequence The ordered sequence for this image. number No
url The url to access this image. string No

CachedMarketplaceListingOption

Marketplace listing option definition.

Fields

Key Description Type Expanding
id The marketplace listing option ID. number No
name The name of the option. string No

CachedMarketplaceListingVariation

Marketplace listing summary

Fields

Key Description Type Expanding
id The marketplace listing variation ID. number No
marketplace_listing_id The parent marketplace listing ID. number No
marketplace_reference The marketplace reference of the listing variation. string No
sku The listed SKU. string No
price The listed Price. number No
status The status of the listing. enum * see below No
listing_mode The listing mode of the listing. enum * see below No
stock_mode The stock mode of the listing. enum * see below No
marketplace_listing The parent listing. CachedMarketplaceListing Yes
product_variation The related product variation. CachedMarketplaceListingVariationProductVariation Yes
attributes Variation attributes. array<CachedMarketplaceListingVariationAttribute> Yes
options Variation options. array<CachedMarketplaceListingVariationOption> Yes
images Variation images. array<CachedMarketplaceListingVariationImage> Yes

Enums

Field Values
status draft, live, void
listing_mode keep_in_sync, do_not_sync
stock_mode keep_in_sync, do_not_sync, always_in_stock, never_in_stock

CachedMarketplaceListingVariationAttribute

Marketplace listing variation attributes

Fields

Key Description Type Expanding
label_json JSON string defining the label of the attribute value. string No
value The attribute value. string No
attribute The attribute definition. CachedApplicationMarketplaceAttribute Yes

CachedMarketplaceListingVariationImage

Marketplace listing variation images

Fields

Key Description Type Expanding
primary Id this the primary image for the listing variation. boolean No
sequence The ordered sequence for this image. number No
url The url to access this image. string No

CachedMarketplaceListingVariationOption

Value for a marketplace listing option.

Fields

Key Description Type Expanding
id The marketplace listing variation option ID. number No
marketplace_listing_option_id The owning marketplace listing option ID. number No
value The value of the option. string No
option The option type. CachedMarketplaceListingOption Yes

CachedMarketplaceListingVariationProductVariation

Marketplace listing variation attributes

Fields

Key Description Type Expanding
id The product variations’s ID. number No
sku The product’s SKU. string No
aspects Marketplace application aspects. array<CachedMarketplaceListingVariationProductVariationAspects> Yes
category The product’s category. CachedMarketplaceListingVariationProductVariationCategory Yes

CachedMarketplaceListingVariationProductVariationAspects

Marketplace listing variation aspects

Fields

Key Description Type Expanding
value The aspect value. string No
label The aspects label. string No
aspect The attribute definition. CachedApplicationMarketplaceAttribute Yes

CachedMarketplaceListingVariationProductVariationCategory

Marketplace listing variation category

Fields

Key Description Type Expanding
id The category id. number No
name The category name. string No
preferences Marketplace application aspects. array<CachedMarketplaceListingVariationProductVariationCategoryPreferences> Yes

CachedMarketplaceListingVariationProductVariationCategoryPreferences

Marketplace listing variation category preferences

Fields

Key Description Type Expanding
value The preference value. string No
label The preference label. string No
preference The preference definition. CachedMarketplaceListingVariationProductVariationCategoryPreferencesPreference Yes

CachedMarketplaceListingVariationProductVariationCategoryPreferencesPreference

Marketplace listing variation aspects

Fields

Key Description Type Expanding
name The preference name. string No
code The preference short code reference. string No

CachedMarketplaceListingVariationRelatedVariation

Related listing variations that belong to the same parent marketplace_listing

Fields

Key Description Type Expanding
id The listing variation id. number No
marketplace_reference The listing variation marketplace reference. string No
status The BladePRO status for the listing variation. string No
sku The listing variations listed sku. string No

CachedNameAndCode

Holds a name and a code field.

Fields

Key Description Type Expanding
name Name. string No
code Code. string No

CachedOrder

An order.

Fields

Key Description Type Expanding
id Order ID. number No
reference Unique reference. string No
status Order status. enum * see below No
channel Order channel. CachedOrderChannel Yes
currency Currency. SummarisedCurrency Yes
brand Brand. CachedBrand Yes

Enums

Field Values
status draft, open, complete, cancelled

CachedOrderChannel

An order channel.

Fields

Key Description Type Expanding
id Id. number No
short_code Code. string No
name Name. string No

CachedProduct

Top level product data.

Fields

Key Description Type Expanding
id The product id. number No
channel The product channel. CachedProductChannel Yes

CachedProductChannel

Cached product channel.

Fields

Key Description Type Expanding
id The product channel id. number No
name Product channel name. string No
default_warehouse_id Default warehouse id. number No
global Is it a global shared product. boolean No
organisation Organisation that the product channel belongs to. CachedProductChannelOrganisation Yes

CachedProductChannelOrganisation

Top level product data.

Fields

Key Description Type Expanding
id Organisation id. number No
name Organisation name. string No

CachedProductVariation

Variation specific data.

Fields

Key Description Type Expanding
id The product variation id. number No
sku The product SKU. string No
name The product name. string No
is_primary Is this a primary product. boolean No
status The status of the product. enum * see below No
created The created date. CachedProductVariationCreated Yes
product Parent product. CachedProduct Yes
tags List of applied tags. array<SummarisedTag> Yes
descriptions List of descriptions. array<CachedProductVariationDescription> Yes
components List of components. array<CachedProductVariationComponent> Yes
type The product type. SummarisedProductVariationType Yes
primary_product_category The primary product category. SummarisedProductCategory Yes

Enums

Field Values
status active, draft, discontinued

CachedProductVariationComponent

Variation component.

Fields

Key Description Type Expanding
id The product component id. number No
sku The component SKU. string No
name The component name. string No
barcode The component barcode. string No
quantity The quantity of this component used in the product variation. number No

CachedProductVariationCreated

Variation specific data.

Fields

Key Description Type Expanding
date Date string. string No
timezone Timezone. string No

CachedProductVariationDescription

Variation descriptions.

Fields

Key Description Type Expanding
id The product variation id. number No
product_variation_id The product variation id. number No
locale_id The description locale. number No
name The product name. string No
full_description The description of the product. string No
created The created date. date No
modified The last modified date. date No
locale The locale for this description. SummarisedLocale No

CachedShippingService

Holds data about a shipping service.

Fields

Key Description Type Expanding
name Name. string No
code Code. string No
tracked Whether this service is tracked. boolean No
signed Wheter this service requires signing by the recipient. boolean No

CartonLabelTypeReferences

References for carton label types.

Fields

Key Description Type Expanding
name Descriptive name of the reference. string No
code The code the reference can be addressed by. string No
type Type of the reference. enum * see below No
validation_pattern Regular expression used to validate the value. string No

Enums

Field Values
type text, barcode

CartonLabelTypes

Carton label types data.

Fields

Key Description Type Expanding
id ID of the carton label type. number No
name Descriptive name of the carton label type. string No
active If the carton label type is active. number No
carton_label_type_references References of the carton label type. array<CartonLabelTypeReferences> Yes

ConsignmentQualities

Consignment quality description.

Fields

Key Description Type Expanding
name Name. string No
group Quality group. string No
description Details. string No
active Is it active? boolean No

Countries

A country.

Fields

Key Description Type Expanding
id The country’s unique identifier. number No
name Name. string No
iso_2 ISO2 description. string No
iso_3 ISO3 description. string No
region_id ID of the region. number No
currency_id ID of the country’s currency. number No
block Trade block. enum * see below No
region The region. Regions Yes
currency The country’s currency. Currencies Yes

Enums

Field Values
block EU

Currencies

Currency data.

Fields

Key Description Type Expanding
id ID of the currency. number No
code ISO code of the currency. string No
name Descriptive name of the currency. string No
symbol Symbol to render next to values. string No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No

DemandPlanningApplicationInstanceSettings

Stores data about the current application instance.

Fields

Key Description Type Expanding
product_channel_id Product channel ID. number No
organisation_id Organisation ID. number No
warehouse_code Warehouse short code. string No

DespatchedOrders

An order goodsout.

Fields

Key Description Type Expanding
id Goodsout ID. number No
status Status. string No
bid BID. string No
despatch_date Despatch date. date No
courier Courier. CachedCourier Yes
attributes List of applied attributes. array<CachedAttribute> Yes
order The parent order. CachedOrder Yes

Fields

Importer Mapping Fields

Fields

Key Description Type Expanding
source Source field name. string No
destination Destination field name. string No
default_value Default Value string No
manipulations Manipulations object No
default_format Default Format string No
value_replacements Value Replacements object No

Gdpr

Fields

Key Description Type Expanding
id The concern id representing this GDPR request. string No

ImportMarketplaceListing

Import marketplace listing

Fields

Key Description Type Expanding
id The ID of the listing. number No
marketplace_reference The marketplace reference. string No
product_category_id The ID of the product category. number No
marketplace_listing_variations List of marketplace listing variations. array<ImportMarketplaceListingVariation> Yes
options List of options created for the listing. array<ImportMarketplaceListingOption> Yes

ImportMarketplaceListingOption

A marketplace listing option during import.

Fields

Key Description Type Expanding
id The ID of the option. number No
name The name of the option. string No

ImportMarketplaceListingVariation

A marketplace listing variation during import.

Fields

Key Description Type Expanding
id The ID of the listing variation. number No
title The title of the listing. string No
subtitle The subtitle of the listing. string No
description The subtitle of the listing. string No
listing_mode The listing mode of the listing variation. enum * see below No
stock_mode The stock mode of the listing variation. enum * see below No
marketplace_reference The marketplace reference. string No
price The marketplace price of the product. number No
product_variation_id The product variation the listing is linked to. number No
quantity Current marketplace stock level. number No
sku Current marketplace SKU. string No
status The status of the listing variation. enum * see below No
options List of options created for the variation. array<ImportMarketplaceListingVariationOption> Yes

Enums

Field Values
listing_mode keep_in_sync, do_not_sync
stock_mode keep_in_sync, do_not_sync, always_in_stock, never_in_stock
status draft, live, void, pending_live, pending_void

ImportMarketplaceListingVariationOption

A marketplace listing variation option during import.

Fields

Key Description Type Expanding
id The ID of the variation option. number No
marketplace_listing_option_id The ID of the marketplace listing option. number No
value The value of the option. string No

Incident

Represents the result of logging an incident request.

Fields

Key Description Type Expanding
incident_id The related incident’s ID, if applicable. number No

Locales

Locale data.

Fields

Key Description Type Expanding
id ID of the locale. number No
name Name of the locale. string No
code Unique short code of the locale. string No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No

Log

Represents the result of a logging request.

Fields

Key Description Type Expanding
success Holds true if the log entry was saved successfully. boolean No

Mappings

File Mapping data.

Fields

Key Description Type Expanding
id ID of the mapping. number No
slug Slug of the mapping. string No
name Name of the mapping. string No
organisation_id Organisation ID. number No
fields Mappings Fields Fields No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No

MarketplaceApplicationInstanceSettings

Stores data about the current application instance.

Fields

Key Description Type Expanding
currency_id Currency ID. number No
locale_id Locale ID. number No
order_channel_id Order channel ID. number No
primary_warehouse_id Primary warehouse’s ID. number No
order_import_grace_period_minutes Grace period in minutes for ignoring orders. number No
ignore_orders_created_before Ignore orders created before a certain date. date No
allow_multi_location_support Is the multi location support enabled for this integration. boolean No
currency Currency. SummarisedCurrency Yes
locale Locale. SummarisedLocale Yes
order_channel Order channel. OrderChannels Yes
primary_warehouse Primary warehouse. SummarisedWarehouse Yes
warehouses Configured warehouses for this specific integration. array<SummarisedWarehouse> Yes

MarketplaceListingBulkUpdateQuantities

Marketplace listing bulk update listed quantity

Fields

Key Description Type Expanding
success Was the bulk update successful. boolean No

MarketplaceListingPurge

Marketplace listing purge

Fields

Key Description Type Expanding
success Was the purge update successful. boolean No

MarketplaceListingResourceMetadatas

Stores arbitrary data against a marketplace listing.

Fields

Key Description Type Expanding
key Key the piece of stored metadata is identified with. string No
value Stored data metadata. string No

MarketplaceListingStock

Marketplace listing stock

Fields

Key Description Type Expanding
id The marketplace listing ID. number No
marketplace_reference The marketplace reference of the listing. string No
resource_metadatas List of metadata keys and values set against the listing. array<MarketplaceListingResourceMetadatas> Yes
variations List of marketplace listing variations array<MarketplaceListingVariationStock> Yes

MarketplaceListingTemplates

Marketplace listing templates

Fields

Key Description Type Expanding
marketplace_listing_variation_id ID of the marketplace listing variation. number No
locale The locale of the template. string No
title Rendered titles by locale. object No
subtitle Rendered subtitles by locale. object No
description Rendered descriptions by locale. object No

MarketplaceListingUpdateAttributes

Marketplace attribute

Fields

Key Description Type Expanding
code The attribute code. string No
name The attribute name. string No
value The value of the attribute. string No

MarketplaceListingUpdateListingVariations

Marketplace listing updates

Fields

Key Description Type Expanding
id The marketplace listing variation id. number No
marketplace_reference The marketplace reference. string No
sku The listed SKU. string No
price The currently listed price. number No
status The status of the listing variation. string No
attributes Variation attributes. array<MarketplaceListingUpdateAttributes> Yes

MarketplaceListingUpdateListings

Marketplace listing updates

Fields

Key Description Type Expanding
id The marketplace listing id. number No
marketplace_reference The marketplace reference. string No
attributes Listing attributes. array<MarketplaceListingUpdateAttributes> Yes

MarketplaceListingUpdates

Marketplace listing updates

Fields

Key Description Type Expanding
id The marketplace listing update ID. number No
code The update type code. string No
listing_id The marketplace listing ID. number No
variation_id The marketplace variation ID. number No
old_value The old value of the updated field. string No
new_value The new value of the updated field. string No
status The marketplace listing update status. enum * see below No
claim_reference The reference ID of the claimed batch. string No
claimed Claimed date. number No
created Created date. date No
marketplace_listing The related listing. MarketplaceListingUpdateListings Yes
marketplace_listing_variation The related listing variation ( if applicable ) . MarketplaceListingUpdateListingVariations Yes

Enums

Field Values
status pending, cancelled, updating, completed, failed

MarketplaceListingVariation

Marketplace listing

Fields

Key Description Type Expanding
id The marketplace listing variation ID. number No
marketplace_reference The reference assigned by the 3rd part marketplace. string No
price The current listed price. number No
status The listing variation status. string No
sku The listed sku. string No
product_variation_id The linked product variation id. number No
quantity The currently listed quantity. number No
created Created date. date No

MarketplaceListingVariationResourceMetadatas

Stores arbitrary data against a marketplace listing variation.

Fields

Key Description Type Expanding
key Key the piece of stored metadata is identified with. string No
value Stored data metadata. string No

MarketplaceListingVariationStock

Marketplace listing variation stock

Fields

Key Description Type Expanding
id The marketplace listing variation ID. number No
marketplace_reference The marketplace reference of the product variation. string No
sku The product SKU. string No
product_variation_id The product variation ID. number No
current_listed_quantity What quantity BladePRO think is currently listed. number No
quantity_to_list What quantity BladePRO thinks should be listed. number No
resource_metadatas List of metadata keys and values set against the listing variation. array<MarketplaceListingVariationResourceMetadatas> Yes
marketplace_locations List of locations if multi location is enabled. array<MarketplaceListingVariationStockMarketplaceLocations> Yes

MarketplaceListingVariationStockMarketplaceLocations

Marketplace listing variation’s location-based stock

Fields

Key Description Type Expanding
marketplace_location_id ID of the location from the app’s global linking. number No
current_listed_quantity What quantity BladePRO think is currently listed. number No
quantity_to_list What quantity BladePRO thinks should be listed. number No

MarketplaceListings

Marketplace listing

Fields

Key Description Type Expanding
id The marketplace listing ID. number No
marketplace_reference The reference assigned by the 3rd part marketplace. string No
created Created date. date No

MarketplaceLocations

Acts as a link between BladePRO warehouses and marketplace locations.

Fields

Key Description Type Expanding
id BladePRO ID for the location mapping. number No
despatch_warehouse_id ID of the warehouse the items need to be despatched from. number No
location_name User-defined, friendly name for the mapping. string No
location_key Identifier from the marketplace. string No
location_extra Extra arbitrary data stored for this location mapping. string No
default_stock_mode The default stock mode to use when importing a new listing for this location only. enum * see below No
despatch_warehouse The despatch warehouse. Warehouses Yes
stock_warehouses List of warehouses stock need to be used from. array<Warehouses> Yes

Enums

Field Values
default_stock_mode keep_in_sync, do_not_sync, always_in_stock, never_in_stock

OrderChannels

Customer order groups.

Fields

Key Description Type Expanding
id ID of the channel. number No
organisation_id ID of the organisation the channel belongs to. number No
name The name of the channel. string No
short_code A short string identifier of the channel. string No
status The status of the channel. enum * see below No
created Created timestamp in BladePRO. date No
modified Last modified timestamp in BladePRO. date No
brands List of related brands array<Brands> Yes
organisation List of related brands Organisations Yes
tax Default tax rate OrganisationTaxes Yes

Enums

Field Values
status active, inactive

OrderGoodsoutAddresses

Data related to an address.

Fields

Key Description Type Expanding
id The address’ unique identifier. number No
title Title. string No
first_name First name. string No
last_name Last name. string No
company Company name. string No
address_one First line of address. string No
address_two Second line of address. string No
address_three Third line of address. string No
town Town. string No
county County name. string No
postcode Postcode. string No
country_id ID of the country. number No
email Email. string No
mobile Mobile number. string No
telephone Landline number. string No
secondary_telephone Secondary telephone number. string No
vat_number VAT number. string No
modified Last modified timestamp in BladePRO. date No
country The address country. Countries Yes

OrderGoodsoutAudits

Add a message to the order timeline.

Fields

Key Description Type Expanding
message The timeline entry. string No

OrderGoodsoutDespatchAttributes

Despatch attribute for an order item

Fields

Key Description Type Expanding
sku Product SKU. string No
product_name Product name. string No
attribute_name Attribute name. string No
attribute_value Attribute value. string No

OrderGoodsoutDocumentUploadConfirmation

Confirmation of a file upload.

Fields

Key Description Type Expanding
success Whether the upload was successful or not. boolean No

OrderGoodsoutLineItemDespatchedStocks

Stock despatched for an specific line item.

Fields

Key Description Type Expanding
id ID. number No
quantity Quantity despatched. number No
expiry_date The expiry date despatched date No
batch The batch code despatched. ProductComponentBatches Yes

OrderGoodsoutLineItems

An item inside a goodsout line.

Fields

Key Description Type Expanding
id ID. number No
quantity Quantity ordered. number No
expiry_date The expiry date specified date No
principal_tax Tax rate applied to the line item. OrganisationTaxes Yes
component The product component. ProductComponents Yes
batch The batch code specified. ProductComponentBatches Yes
despatched_stocks Despatched Stock. array<OrderGoodsoutLineItemDespatchedStocks> Yes

OrderGoodsoutLines

An order for a product.

Fields

Key Description Type Expanding
id ID. number No
transaction_sku SKU used during the transaction. string No
quantity Quantity ordered. number No
discount_type Discount type. number No
discount Discount amount. number No
net_unit_principal Net unit price. number No
principal_tax Tax rate applied to the line. OrganisationTaxes Yes
status Line status. enum * see below No
variation Product variation. ProductVariations Yes
items Line items. array<OrderGoodsoutLineItems> Yes

Enums

Field Values
status active, void

OrderGoodsoutPackingListBox

A box with products packed into it.

Fields

Key Description Type Expanding
pallet If the box was placed on a pallet, the pallet’s data. OrderGoodsoutPackingListPallet Yes
carton_reference The sequence number of the current box. number No
carton_product_variation_id The product variation ID of the current box. number No
sku The SKU of the current box. string No
sscc_18 The SSCC-18 barcode of the carton, if exists. string No
weight Weight of the box in kilograms. string No
height Height of the box in millimetres. string No
width Width of the box in millimetres. string No
depth Depth of the box in millimetres. string No
contains List of products packed into the box. array<OrderGoodsoutPackingListProduct> Yes

OrderGoodsoutPackingListPallet

A pallet on a packing list.

Fields

Key Description Type Expanding
pallet_product_variation_id The product variation ID of the pallet. number No
pallet_reference The sequence number of the pallet. number No
sku The SKU of the pallet. string No
weight_kg Weight of the pallet in kilograms. string No

OrderGoodsoutPackingListProduct

A pallet on a packing list.

Fields

Key Description Type Expanding
product_component_id The product component ID of the physical product. number No
sku The SKU of the product component. string No
name Name. string No
quantity Quantity of the product in the box. number No
colour Colour. number No
size Size. number No
style Style. number No
type Type. number No
quality Quality. number No

OrderGoodsoutShipmentTracking

A shipment tracking update of an order goodsout.

Fields

Key Description Type Expanding
message A summary text that describes the tracking event. string No
location A text summary of where (location) the update has occurred. string No
tracking_number The specific tracking number for the update. string No
timestamp The date/time of when the update was created (UTC format only). date No

OrderGoodsoutTags

A tag linked to a order goodsout.

Fields

Key Description Type Expanding
id Tag ID. number No
name The tag name. string No
shortcode The tag code. string No
description The tag description. string No
created The date the tag was added created. date No

OrderGoodsouts

Customer order shipments.

Fields

Key Description Type Expanding
id ID. number No
status Status. enum * see below No
date_placed Placed date. date No
despatch_date Despatch date. date No
cancellation_date The date a goodsout was cancelled. date No
despatch_on_date Despatch on date. date No
source Source. string No
delivery_instructions Delivery instructions. string No
gift_message Gift message. string No
attributes List of attributes. array<CachedAttribute> Yes
shipments List of shipments. array<Shipments> Yes
lines List of lines. array<OrderGoodsoutLines> Yes
tags Applied tags. array<Tags> Yes
warehouse Warehouse. SummarisedWarehouse Yes
order Order. Orders Yes
shipping_address Shipping Address. OrderGoodsoutAddresses Yes

Enums

Field Values
status draft, awaiting_allocation, hung, returned, awaiting_payment, awaiting_picking, awaiting_despatch, backorder_release, backorder, cancelled, return_open, item_refunded, item_replaced, awaiting_collection, despatched

OrderLineResourceMetadatas

Stores arbitrary data against a order line.

Fields

Key Description Type Expanding
key Key the piece of stored metadata is identified with. string No
value Stored data metadata. string No

OrderResourceMetadatas

Stores arbitrary data against a order.

Fields

Key Description Type Expanding
key Key the piece of stored metadata is identified with. string No
value Stored data metadata. string No

OrderReturnItemReasons

Order Return Item Reasons.

Fields

Key Description Type Expanding
id ID. number No
name The reason for returning an item string No
short_name Name to represent the return reason. string No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No

OrderReturnItems

Order Return Items.

Fields

Key Description Type Expanding
id ID. number No
order_return_id Order Return Id the item is attached to. number No
order_goodsout_line_item_id The original goodsout line item the return is for. number No
order_goodsout_line_id The original goodsout line the return is for. number No
product_component_id The product component id. number No
sku SKU of the product component. string No
exchanged_product_component_id The product component that is being sent in exchange. number No
expected_quantity The quantity expected number No
received_quantity The quantity received number No
expiry_date The expiry date of the product date No
received_date The date the item was received into the warehouse date No
action The action for this item enum * see below No
order_return_item_reason_id The return reason id number No
description Description of the returned item string No
correct_item Was the item sent correct? enum * see below No
resellable Is the item in a resellable state? enum * see below No
status The status of the return item enum * see below No
authorisation_required Does the return item require authorisation? enum * see below No
rejected_reason Reason for rejecting the return of this item string No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
reason The reason for returning the item. OrderReturnItemReasons Yes
component The product component being returned. ProductComponents Yes
exchange_component The product component being sent in exchange. ProductComponents Yes

Enums

Field Values
action refund, exchange, stock
correct_item YES, NO, NOT_RECEIVED
resellable YES, NO
status pending, received, complete, void, draft, rejected, pending_refund, not_received
authorisation_required YES, NO

OrderReturnTags

A tag linked to a return.

Fields

Key Description Type Expanding
id Tag ID. number No
name The tag name. string No
shortcode The tag code. string No
description The tag description. string No
created The date the tag was added created. date No

OrderReturns

Order Returns.

Fields

Key Description Type Expanding
id ID. number No
order_id Order Id the return is attached to. number No
shipping_address_id Shipping Address Record. number No
warehouse_id The warehouse dealing with the return. number No
status Status of the return enum * see below No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
warehouse The warehouse dealing with the return. Warehouses Yes
order The order related to the return. Orders Yes
order_return_items The items being returned. array<OrderReturnItems> Yes
tags Tags attached to the return. array<SummarisedTag> Yes

Enums

Field Values
status draft, pending, received, rejected, awaiting_despatch, complete, delivered, customer_service

Orders

Customer order groups.

Fields

Key Description Type Expanding
id ID. number No
reference Unique reference. string No
status Order status. enum * see below No
goodsouts List of goodsouts. array<OrderGoodsouts> Yes
channel Order Channel. OrderChannels Yes

Enums

Field Values
status draft, open, complete, cancelled

OrganisationTaxes

Organisation tax data.

Fields

Key Description Type Expanding
id ID of the tax. number No
name Name of the tax. string No
code Code of the tax. string No
rate Rate of the tax. number No
description The description of the tax. string No
active Is this tax currently active? boolean No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No

Organisations

Organisation data.

Fields

Key Description Type Expanding
id ID of the organisation. number No
name Name of the organisation. string No
active Is the organisation currently active? boolean No
vat_number VAT number. string No
notes Notes. string No
contact_name Name of contact staff. string No
contact_phone Telephone number of contact staff. string No
contact_mobile Mobile number contact staff. string No
contact_email Email address of contact staff. string No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No

Ports

Shipping ports.

Fields

Key Description Type Expanding
id ID. number No
name Name. string No
cbm CBM. number No

ProductAudits

Add a message to the product timeline.

Fields

Key Description Type Expanding
message The timeline entry. string No

ProductBrands

Product brand data.

Fields

Key Description Type Expanding
id ID of the product brand. number No
name Name of the product brand. string No
organisation_id ID of the parent organisation. number No
active Is the product brand currently active? boolean No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
organisation The parent organisation. Organisations Yes

ProductChannelCategories

Product channel category data.

Fields

Key Description Type Expanding
id ID of the product channel category. number No
name Name of the product channel category. string No
parent_id ID of the parent product channel category. number No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
parent The parent product channel category. ProductChannelCategories Yes

ProductChannelVariations

Marketplace listable products’ search data.

Fields

Key Description Type Expanding
channel The product channel id. number No
sku The unique stock keeping unit. string No
product_component_sku The unique stock keeping unit. string No
product_component_supplier_id The component supplier id. number No
product_component_id The component id. number No
warehouse_id The warehouse id. number No

ProductChannels

Geographical region data.

Fields

Key Description Type Expanding
id ID of the product channel. number No
organisation_id ID of the parent organisation. number No
status The status of the product channel. enum * see below No
outbound_email The email address used for outbound messages. string No
default_warehouse_id ID of the default warehouse. number No
default_product_brand_id ID of the default brand. number No
global Is this channel global to all clients? boolean No
name The name of the product channel. string No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
default_product_brand The default brand. ProductBrands Yes
default_warehouse The default warehouse. Warehouses Yes
organisation The parent organisation. Organisations Yes

Enums

Field Values
status active, inactive

ProductComponentBatches

Description of a batch.

Fields

Key Description Type Expanding
id ID. number No
reference Reference. string No
description Description. string No
created Created date. date No
modified Last modified date. date No

ProductComponentCostPriceTransports

Transport costs.

Fields

Key Description Type Expanding
id ID. number No
description Description. string No
net_price Net price. number No
tax_id Tax ID. number No
currency_code Currency code. string No
created Created date. date No
modified Last modified date. date No

ProductComponentCostPrices

A cost price.

Fields

Key Description Type Expanding
id ID. number No
notes Notes. string No
net_cost_price Net cost price. number No
currency_code Currency code. string No
cost_price_duty_rate Duty rate. number No
created Created date. date No
modified Last modified date. date No
currency Currency. SummarisedCurrency Yes
transports Transports. ProductComponentCostPriceTransports Yes
transport_total Summary of goodsin item’s transport costs in the warehouse’s currency. number No
transport_total_po_curr Summary of goodsin item’s transport costs in the purchase order’s currency. number No

ProductComponentCustomsCodes

Product component customs codes.

Fields

Key Description Type Expanding
id ID of the customs code. number No
code The HS code. string No
name Name of the code. string No
duty_rate The duty rate applied to this customs code. number No
organisation_id The organisation that this code applies to. number No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
organisation Organisation Organisations Yes

ProductComponentDoqTypes

Product component DOQ Types.

Fields

Key Description Type Expanding
id ID of the component DOQ. number No
code Short code for the DOQ. enum * see below No
name Name of the DOQ type. string No

Enums

Field Values
code INNER_PACK, MASTER_CASE, PALLET, SINGLE_PRODUCT

ProductComponentDoqs

Product component DOQ.

Fields

Key Description Type Expanding
id ID of the component DOQ. number No
quantity Quantity represented by the DOQ. number No
weight Total weight in KG. number No
depth Total depth in MM. number No
width Total width in MM. number No
height Total height in MM. number No
shippable Can this DOQ value be shipped without additional packaging. boolean No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
type DOQ type. ProductComponentDoqTypes Yes

ProductComponentInstances

Component instance.

Fields

Key Description Type Expanding
id The component instance id. number No
product_component_id The component this instance is attached to. number No
component The product component. ProductComponents Yes

ProductComponentLandedPrices

Landed prices.

Fields

Key Description Type Expanding
id ID. number No
product_component_instance_id Product component instnace ID. number No
product_component_id Product component ID. number No
net_cost_price Net cost price. number No
cost_price_currency_code Cost price currency code. string No
cost_currency Cost price currency. Currencies Yes
cost_price_duty_rate Cost price duty rate. number No
notes Notes. string No
landed_price_currency_code Landed price currency code. string No
landed_currency Landed price currency. SummarisedCurrency Yes
stock Stock. number No
created Created date in BladePRO. date No
landed_price Landed price. number No

ProductComponentSalesSummary

Sales summary for a product.

Fields

Key Description Type Expanding
1_week Sold in the last week. number No
1_month Sold in the last month. number No
3_months Sold in the last three months. number No
6_months Sold in the last six months. number No
1_year Sold in the last year. number No
lifetime Sold in the product’s lifetime. number No

ProductComponentStockSummary

Stock summary for a product component.

Fields

Key Description Type Expanding
total Total stock. number No
total_saleable Total saleable stock. number No
saleable Saleable stock. number No
pickable Pickable stock. number No
available Available stock. number No
allocated Allocated stock. number No
reserved Reserved stock. number No
misc Miscellaneous stock. number No
gistock Goodsin stock. number No
expected Stock expected to arrive. number No
picked Picked stock. number No
under_investigation Stock under investigation. number No

ProductComponentSuppliers

Product Suppliers.

Fields

Key Description Type Expanding
id ID. number No
organisation_id Parent organisation ID. number No
name Name. string No
active Is the supplier active? boolean No
port_id ID of shipping port. number No
currency_code Code of currency. string No
nominal_code Nominal code. string No
xero_code Accounting code. string No
organisation_tax_id Tax ID. number No
currency Currency. SummarisedCurrency Yes

ProductComponents

Product component.

Fields

Key Description Type Expanding
id ID of the product variation. number No
status The status of the product component. enum * see below No
sku The unique stock keeping unit. string No
barcode Picking Barcode. string No
perishable Is the product perishable. boolean No
fragile Is the product fragile. boolean No
battery Does the product contain a battery. boolean No
dangerous Is the product dangerous. boolean No
organic Is the product organic. boolean No
what_is_it Customs - What is the product. string No
made_of Customs - What is the product made of. string No
used_for Customs - What is the product used for. string No
customs_country_of_origin_country_id Customs - Country of origin. number No
product_component_customs_code_id Customs - HS Code. number No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
doqs Component DOQs. array<ProductComponentDoqs> Yes
last_cost Last cost. ProductComponentLandedPrices Yes
stock Stock summary. ProductComponentStockSummary Yes
count_product_component_batches Count of batches. number No
sales Sales summary. ProductComponentSalesSummary Yes

Enums

Field Values
status active, draft, discontinued

ProductResourceMetadatas

Stores arbitrary data against a product.

Fields

Key Description Type Expanding
key Key the piece of stored metadata is identified with. string No
value Stored data metadata. string No

ProductVariationComponents

Variation component.

Fields

Key Description Type Expanding
product_variation_id The variation that the component is attached to. number No
product_component_instance_id The component instance. number No
quantity Total quantity of this component inside the variation. number No
instance The product component instance. ProductComponentInstances Yes

ProductVariationDescriptions

Variation descriptions.

Fields

Key Description Type Expanding
id The product variation description id. number No
product_variation_id The product variation id. number No
locale_id The description locale. number No
name The product name. string No
full_description The description of the product. string No
created The created date. date No
modified The last modified date. date No
locale The locale for this description. Locales Yes

ProductVariationStockDataSummary

Variation stock breakdown.

Fields

Key Description Type Expanding
product_variation_id Product variation ID. number No
warehouse_id Warehouse ID. number No
warehouse_code Warehouse code. string No
warehouse_name Warehouse name. string No
total Total number of units available. number No
total_saleable Total number of units saleable. number No
saleable Saleable units. number No
available Available units. number No
allocated Allocated units. number No
misc Misc units. number No
expected Expected units. number No
under_investigation Stock under investigation. number No

ProductVariationTags

A tag linked to a product variation.

Fields

Key Description Type Expanding
id Tag ID. number No
name The tag name. string No
shortcode The tag code. string No
description The tag description. string No
created The date the tag was added created. date No

ProductVariationTypes

Product variation type data.

Fields

Key Description Type Expanding
id ID of the variation type. number No
name Name of the product variation type. string No
type Category of the product variation type. string No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No

ProductVariations

Marketplace listable products’ data.

Fields

Key Description Type Expanding
id ID of the product variation. number No
product_id ID of the parent product. number No
status The status of the product variation. enum * see below No
sku The unique stock keeping unit. string No
barcode The product variation barcode. string No
product_variation_type_id ID of the product variation type. number No
discontinued_date The date the product was discontinued on. date No
despatch_instructions Instructions for the staff. string No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
product Product. Products Yes
type The product variation type. ProductVariationTypes Yes
components The variation components. array<ProductVariationComponents> Yes
descriptions The variation descriptions. array<ProductVariationDescriptions> Yes
primary_component The primary component. array<ProductComponents> Yes
tags The variation tags. array<Tags> Yes
stock_data_summaries Stock. array<ProductVariationStockDataSummary> Yes

Enums

Field Values
status active, draft, discontinued

Products

Product data. Products are grouping entries and may represent multiple different kinds of physical products.

Fields

Key Description Type Expanding
id ID of the product. number No
product_channel_id ID of the product channel. number No
product_brand_id ID of the parent brand. number No
product_category_id ID of the parent product category. number No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
channel The parent product channel. ProductChannels Yes
brand The parent brand. ProductBrands Yes
product_category The parent product category. ProductChannelCategories Yes
variations The product variations. array<ProductVariations> Yes

PurchaseOrderAudits

Add a message to the purchase order timeline.

Fields

Key Description Type Expanding
message The timeline entry. string No

PurchaseOrderGoodsinContainers

A container for a goodsin.

Fields

Key Description Type Expanding
id ID. number No
size Size. enum * see below No
expected_quantity Expected quantity. number No
received_quantity Expected quantity. number No
created Created date in BladePRO. date No
modified Last modified date. date No

Enums

Field Values
size 20FT, 40FT, 40FT-HC

PurchaseOrderGoodsinItemIssues

Identified issue during receiving.

Fields

Key Description Type Expanding
id ID. number No
name Name. string No
description Description. string No
photo_required Is a photo required when this issue is encountered? boolean No

PurchaseOrderGoodsinItems

Received items for a goodsin.

Fields

Key Description Type Expanding
id ID. number No
product_component_id Product component ID. number No
quantity Received quantity. number No
expiry_date Expiry date. date No
product_component_batch_id Batch ID. number No
purchase_order_goodsin_item_issue_id Issue ID. number No
product_component_cost_price_id Cost price ID. number No
created Created date. date No
modified Last modified date. date No
component Product component. ProductComponents Yes
batch Product component batch. ProductComponentBatches Yes
issue Identified issue during receiving. PurchaseOrderGoodsinItemIssues Yes
cost Cost price used. ProductComponentCostPrices Yes
count_audit_ids Count of timeline items against the goodsin item. number No

PurchaseOrderGoodsins

One shipment to a purchase order.

Fields

Key Description Type Expanding
id ID. number No
source Source. string No
shipping_company Shipping company. string No
tracking_number Tracking number. string No
expected_pallets Number of expected pallets. number No
expected_cartons Number of expected cartons. number No
received_pallets Number of received pallets. number No
received_cartons Number of received cartons. number No
received_container Type of received container. enum * see below No
container_shipment Is this a container shipment? boolean No
container_size Size of the container. enum * see below No
expected_delivery_date Expected delivery date. date No
expected_delivery_time_slot Expected delivery time slot. enum * see below No
preferred_delivery_date Preferred delivery date. date No
preferred_delivery_time_slot Preferred delivery time slot. enum * see below No
shipping_method Shipping method. enum * see below No
port_id ID of the port. number No
purchase_order_goodsin_shipping_term_id Shipping term ID. number No
status Goodsin status. enum * see below No
is_third_party Is this a third party goodsin? boolean No
third_party_emails Third party email addresses. string No
third_party_contact_name Third party contact names. string No
booking_requested Booking requested date. date No
booking_approved_by User ID. number No
booking_approved Booking approved date. date No
unique_booking_reference Booking reference. string No
check_in_by Check in by date. date No
transport_costs_locked Date the transport costs have been locked on. date No
lock_user_id ID of the locking user. number No
receiving_started Date of the start of receving. date No
receiving_completed Date of the end of receving. date No
checkin_started Date of the start of checkin. date No
checkin_completed Date of the end of checkin. date No
putaway_started Date of the start of putaway. date No
putaway_completed Date of the end of putaway. date No
ignore_from_billing Should the goodsin be ignored from billing? boolean No
returns_damaged_count The amount returned because of damage. number No
returns_unidentifiable_count The amount returned because the items had been unidentifiable. number No
created Created date. date No
modified Last modified date. date No
containers Received containers. array<PurchaseOrderGoodsinContainers> Yes
port Shipping port. Ports Yes
consignment_qualities Quality descriptions. array<ConsignmentQualities> Yes
items Received items. array<PurchaseOrderGoodsinItems> Yes

Enums

Field Values
received_container 20FT, 40FT, 40FT-HC
container_size none, half, full
expected_delivery_time_slot am, pm
preferred_delivery_time_slot am, pm
shipping_method air, sea, road, ```` |
status awaiting_booking, awaiting_shipping, awaiting_receiving, awaiting_checkin, awaiting_putaway, completed, cancelled, awaiting_collection

PurchaseOrderLines

An item ordered in a purchase order.

Fields

Key Description Type Expanding
id ID. number No
product_component_id Product component ID. number No
name Product component name. string No
quantity Requested quantity. number No
cost_price Cost price. number No
duty Duty. number No
created Created date in BladePRO. date No
modified Last modified date. date No
component Product component. ProductComponents Yes
count_audit_ids Count of timeline entries against the line. number No
doq Denominations of quantity. ProductComponentDoqs Yes

PurchaseOrderPayments

Payments made towards purchase order suppliers.

Fields

Key Description Type Expanding
id ID. number No
name Name. string No
amount Amount paid. number No
currency_code Currency code. string No
effective_date Effective date. date No
currency Currency. SummarisedCurrency Yes

PurchaseOrderReferences

Purchase order references.

Fields

Key Description Type Expanding
name Name. string No
value Value. string No

PurchaseOrderResourceMetadatas

Stores arbitrary data against a purchase order.

Fields

Key Description Type Expanding
key Key the piece of stored metadata is identified with. string No
value Stored data metadata. string No

PurchaseOrderTags

A tag linked to a purchase order.

Fields

Key Description Type Expanding
id Tag ID. number No
name The tag name. string No
shortcode The tag code. string No
description The tag description. string No
created The date the tag was added created. date No

PurchaseOrderTypes

Types of purchase orders

Fields

Key Description Type Expanding
id ID. number No
code Code. string No
name Name. string No
description Description. string No

PurchaseOrders

Purchase orders.

Fields

Key Description Type Expanding
id ID. number No
product_channel_id ID of the product channel. number No
purchase_order_type_id ID of the purchase order type. number No
product_component_supplier_id Supplier ID. number No
warehouse_id Warehouse ID. number No
currency_id Currency ID. number No
status Purchase order status. enum * see below No
notification_email_addresses Notification email address. string No
comments Comments. string No
reject_reason Reason for rejecting the purchase order. string No
approved_date Date the purchase order was accepted on. date No
completed_date Date of completion. date No
discount Discount amount. number No
discount_type Discount type. enum * see below No
created Created date. date No
modified Last modified date. date No
warehouse Warehouse. SummarisedWarehouse Yes
currency Currency. SummarisedCurrency Yes
channel Product channel details. CachedProductChannel Yes
type Purchase order type. PurchaseOrderTypes Yes
supplier Supplier. ProductComponentSuppliers Yes
lines Ordered lines. array<PurchaseOrderLines> Yes
payments Payments made to suppliers. array<PurchaseOrderPayments> Yes
goodsins List of goodsins. array<PurchaseOrderGoodsins> Yes
tags List of applied tags. array<Tags> Yes
references List of references. array<PurchaseOrderReferences> Yes

Enums

Field Values
status draft, cancelled, awaiting_approval, awaiting_booking, rejected, open, completed, discrepancies, pending_completion
discount_type percentage, value

RegionSettings

Settings data for geographical regions.

Fields

Key Description Type Expanding
id ID of the region setting. number No
region_id The ID of the region the setting relates to. number No
region The region the setting relates to. Regions Yes
setting Descriptive name of the setting. string No
value Value of the setting. string No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No

Regions

Geographical region data.

Fields

Key Description Type Expanding
id ID of the region. number No
name Descriptive name of the region. string No
region_settings Settings of the region. array<RegionSettings> Yes

ReturnResourceMetadatas

Stores arbitrary data against a return.

Fields

Key Description Type Expanding
key Key the piece of stored metadata is identified with. string No
value Stored data metadata. string No

Shipments

Data related to a shipment.

Fields

Key Description Type Expanding
shipping_service Shipping service used. ShippingServices Yes

ShippingCourierAccounts

Shipping courier account data.

Fields

Key Description Type Expanding
name Account name. string No
courier The courier. CachedNameAndCode Yes

ShippingServices

Customer order shipments.

Fields

Key Description Type Expanding
name Service name. string No
code Service code. string No
courier_account Courier account. ShippingCourierAccounts Yes

StockAvailability

Variation specific data.

Fields

Key Description Type Expanding
id The product variation id. number No
sku The product SKU. string No
barcode The product variation barcode. string No
stocks Stocks. array Yes

SummarisedCountry

A country.

Fields

Key Description Type Expanding
name Name. string No
iso_2 The 2-letter ISO abbreviation. string No
iso_3 The 3-letter ISO abbreviation. string No

SummarisedCurrency

A currency.

Fields

Key Description Type Expanding
code Code. string No
name Name. string No
symbol Symbol. string No

SummarisedLocale

Locale / Language.

Fields

Key Description Type Expanding
id Locale id. number No
name Name of the locale. string No
code Short code for the locale. string No
created When the locale was created. date No
modified When the locale was modified. date No

SummarisedProductCategory

Summary of a product category.

Fields

Key Description Type Expanding
id The ID of the product category. number No
name The name of the product category. string No

SummarisedProductVariationType

Top level product data.

Fields

Key Description Type Expanding
id The product type id. number No
name The product type name. string No
type Category of the product variation type. string No

SummarisedTag

A tag.

Fields

Key Description Type Expanding
name Name. string No
shortcode Short code. string No
description Short description. string No

SummarisedWarehouse

A warehouse.

Fields

Key Description Type Expanding
short_code Code. string No
name Name. string No
country Country. SummarisedCountry Yes

SyncedMarketplaceListing

Sync marketplace listing

Fields

Key Description Type Expanding
listing_reference The parent or first marketplace reference for the listing as provided in the request. string No
listing_variation_reference The child or second marketplace reference for the listing as provided in the request. string No
sku The product SKU for the listing. string No
result The outcome for this listing. enum * see below No
error The marketplace reference for the listing as provided in the request. string No

Enums

Field Values
result unchanged, created, updated, removed, errored

Tags

A tag.

Fields

Key Description Type Expanding
id Tag ID. number No
name The tag name. string No
shortcode The tag code. string No
description The tag description. string No
created The date the tag was added created. date No

Templates

Template.

Fields

Key Description Type Expanding
id ID of the template. number No
organisation_id ID of the organisation. number No
template_category_id ID of the template category. number No
template_category_code Code of the template category. number No
name Name of the template. string No
status Orientation. enum * see below No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No

Enums

Field Values
status portrait, landscape

VendorOrderItemStatuses

A status for a vendor order item.

Fields

Key Description Type Expanding
id The status’ unique identifier. number No
name Name of the status. string No
group Name of the status’ group. string No
accepted Has the vendor order line been accepted? boolean No
created Created timestamp in BladePRO. date No
modified Last modified timestamp in BladePRO. date No

VendorOrderItems

A line in a vendor order.

Fields

Key Description Type Expanding
id The vendor order item’s unique identifier. number No
vendor_order_id The vendor order’s unique identifier. number No
vendor_order_item_status_id The vendor order item status’ unique identifier. number No
model_number The product’s model number. string No
asin The product’s ASIN. string No
sku The product’s SKU. string No
product_variation_id The product variation’s unique identifier. number No
name The product’s name. string No
expected_delivery_date Expected delivery date. date No
confirmed_delivery_date Confirmed delivery date. date No
submitted_quantity Submitted quantity, as requested by the vendor. number No
accepted_quantity Accepted quantity, as confirmed. number No
received_quantity Received quantity. number No
unit_cost Unit cost. number No
created Created timestamp in BladePRO. date No
modified Last modified timestamp in BladePRO. date No
vendor_order The vendor order. VendorOrders Yes
status The vendor order item status. VendorOrderItemStatuses Yes
product_variation The product variation. ProductVariations Yes

VendorOrderResourceMetadatas

Stores arbitrary data against a vendor order.

Fields

Key Description Type Expanding
key Key the piece of stored metadata is identified with. string No
value Stored data metadata. string No

VendorOrders

A vendor order.

Fields

Key Description Type Expanding
id The vendor order’s unique identifier. number No
code Identifier created by vendor. string No
status Status in BladePRO. enum * see below No
vendor Vendor identifier. string No
ordered_on Vendor order created date at vendor’s side. date No
deliver_from Delivery window’s start date. date No
deliver_to Delivery window’s end date. date No
freight_terms Vendor’s freight terms. string No
payment_method Vendor’s payment method. string No
payment_terms Vendor’s payment terms. string No
purchasing_entity Vendor description. string No
delivery_party Delivery Party. string No
order_channel_id Order channel’s unique identifier. number No
currency_id ID of the currency. number No
warehouse_id ID of the fulfilling warehouse. number No
finalised Finalised date. date No
address_first_name First name part of the address. string No
address_last_name Last name part of the address. string No
address_company Company part of the address. string No
address_line_one Line one of the address. string No
address_line_two Line two of the address. string No
address_line_three Line three of the address. string No
address_postcode Postcode part of the address. string No
address_town Town part of the address. string No
address_county County part of the address. string No
address_country_id ID of the country of the address. string No
created Created timestamp in BladePRO. date No
modified Last modified timestamp in BladePRO. date No
order_channel The order channel. OrderChannels Yes
currency The currency. Currencies Yes
warehouse The fulfilling warehouse. Warehouses Yes
address_country The address country. Countries Yes
items List of items in the vendor order. array<VendorOrderItems> Yes

Enums

Field Values
status unconfirmed, processing, confirmed, void

VirtualStocks

A stock entry.

Fields

Key Description Type Expanding
id ID. number No
virtual_warehouse_location_id Location ID. number No
product_variation_id Product variation ID. number No
quantity Quantity in stock. number No
expiry_date Expiry date. date No
created Created timestamp in BladePRO. date No
modified Last modified date. date No
location The virtual warehouse location. VirtualWarehouseLocations Yes
product_variation Product variation. ProductVariations Yes

VirtualWarehouseLocations

A location in a virtual warehouse.

Fields

Key Description Type Expanding
id ID. number No
barcode Identifier of the location. string No
virtual_warehouse_id The ID of the virtual warehouse the location belongs to. number No
active Is the location active? boolean No
sellable Should the stock in this location be considered sellable? boolean No
created Created timestamp in BladePRO. date No
warehouse The virtual warehouse. VirtualWarehouses Yes

VirtualWarehouses

Storages that are outside of BladePRO’s control, such as showrooms, or stock at Amazon’s warehouse.

Fields

Key Description Type Expanding
id ID. number No
name Name. string No
description Description. string No
active Is the warehouse currently active? boolean No
api_managed_only Is the warehouse managed by an API? boolean No
location_creation_enabled Is it possible to create locations? boolean No
created Created timestamp in BladePRO. date No
locations List of locations. array<VirtualWarehouseLocations> Yes

Warehouses

A warehouse.

Fields

Key Description Type Expanding
id The warehouse’s unique identifier. number No
name Name. string No
short_code Unique short code. string No
latitude Latitude coordinate. number No
longitude Longitude coordinate. number No
country_id ID of the warehouse’s country. number No
active Is the warehouse switched on? boolean No
currency_id ID of the warehouse’s currency. number No
virtual Is the warehouse virtual? boolean No
return_warehouse_id ID of the return warehouse, if the returns for this warehouse are redirected. number No
created Created timestamp in BladePRO. date No
modified Last modified timestamp in BladePRO. date No
currency The warehouse’s currency. Currencies Yes
country The warehouse’s country. Countries Yes
return_warehouse The return warehouse, if the returns for this warehouse are redirected. Warehouses Yes

Tasks

Fields

Key Description Type Expanding
task_reference Reference for accessing the task. string No

WebhookOrderCancelled

Order cancelled webhook.

Fields

Key Description Type Expanding
id ID. number No
status Status. enum * see below No
date_placed Placed date. date No
source Source. string No
order Order parent. WebhookOrderCancelledOrder Yes
warehouse Warehouse. WebhookOrderCancelledWarehouse Yes
shipping_address Shipping address. WebhookOrderCancelledAddress Yes
attributes Attributes. array<WebhookOrderCancelledAttribute> Yes
tags Tags. array<WebhookOrderCancelledTag> Yes

Enums

Field Values
status draft, awaiting_allocation, hung, returned, awaiting_payment, awaiting_picking, awaiting_despatch, backorder_release, backorder, cancelled, return_open, item_refunded, item_replaced, awaiting_collection, despatched

WebhookOrderCancelledAddress

Address data.

Fields

Key Description Type Expanding
first_name First name. string No
last_name Last name. string No
company Company name. string No
email Email. string No
country The address country. WebhookOrderCancelledCountry Yes

WebhookOrderCancelledAttribute

An attribute stored against an order.

Fields

Key Description Type Expanding
name Name. string No
value Value. string No

WebhookOrderCancelledCountry

Country data.

Fields

Key Description Type Expanding
id The country’s unique identifier. number No
name Name. string No
iso_2 ISO2 description. string No
iso_3 ISO3 description. string No

WebhookOrderCancelledOrder

Parent order.

Fields

Key Description Type Expanding
id ID. number No
reference Unique reference. string No
status Order status. enum * see below No
order_channel_id Order channel ID. number No
brand_id Brand ID. number No
currency Currency. WebhookOrderCancelledOrderCurrency Yes
channel Channel. WebhookOrderCancelledOrderChannel Yes

Enums

Field Values
status draft, open, complete, cancelled

WebhookOrderCancelledOrderChannel

Channel data.

Fields

Key Description Type Expanding
id BladePRO id for channel. number No
organisation_id Organisation id. number No
name Name. string No
outbound_email Outbound email. string No

WebhookOrderCancelledOrderCurrency

Currency data.

Fields

Key Description Type Expanding
id BladePRO id for currency. number No
name Name. string No
code Code. string No
symbol Symbol. string No

WebhookOrderCancelledTag

Tag on order.

Fields

Key Description Type Expanding
id Tag ID. number No
name The tag name. string No
shortcode The tag code. string No

WebhookOrderCancelledWarehouse

Warehouse data.

Fields

Key Description Type Expanding
id The warehouse’s unique identifier. number No
name Name. string No
short_code Unique short code. string No
country The warehouse’s country. WebhookOrderCancelledCountry Yes

WebhookOrderConfirmed

Order confirmed webhook.

Fields

Key Description Type Expanding
id ID. number No
status Status. enum * see below No
date_placed Placed date. date No
source Source. string No
order Order parent. WebhookOrderConfirmedOrder Yes
warehouse Warehouse. WebhookOrderConfirmedWarehouse Yes
shipping_address Shipping address. WebhookOrderConfirmedAddress Yes
attributes Attributes. array<WebhookOrderConfirmedAttribute> Yes
tags Tags. array<WebhookOrderConfirmedTag> Yes

Enums

Field Values
status draft, awaiting_allocation, hung, returned, awaiting_payment, awaiting_picking, awaiting_despatch, backorder_release, backorder, cancelled, return_open, item_refunded, item_replaced, awaiting_collection, despatched

WebhookOrderConfirmedAddress

Address data.

Fields

Key Description Type Expanding
first_name First name. string No
last_name Last name. string No
company Company name. string No
email Email. string No
country The address country. WebhookOrderConfirmedCountry Yes

WebhookOrderConfirmedAttribute

An attribute stored against an order.

Fields

Key Description Type Expanding
name Name. string No
value Value. string No

WebhookOrderConfirmedCountry

Country data.

Fields

Key Description Type Expanding
id The country’s unique identifier. number No
name Name. string No
iso_2 ISO2 description. string No
iso_3 ISO3 description. string No

WebhookOrderConfirmedOrder

Parent order.

Fields

Key Description Type Expanding
id ID. number No
reference Unique reference. string No
status Order status. enum * see below No
order_channel_id Order channel ID. number No
brand_id Brand ID. number No
currency Currency. WebhookOrderConfirmedOrderCurrency Yes

Enums

Field Values
status draft, open, complete, cancelled

WebhookOrderConfirmedOrderCurrency

Currency data.

Fields

Key Description Type Expanding
id BladePRO id for currency. number No
name Name. string No
code Code. string No
symbol Symbol. string No

WebhookOrderConfirmedTag

Tag on order.

Fields

Key Description Type Expanding
id Tag ID. number No
name The tag name. string No
shortcode The tag code. string No

WebhookOrderConfirmedWarehouse

Warehouse data.

Fields

Key Description Type Expanding
id The warehouse’s unique identifier. number No
name Name. string No
short_code Unique short code. string No
country The warehouse’s country. WebhookOrderConfirmedCountry Yes

WebhookOrderCreated

Order created webhook.

Fields

Key Description Type Expanding
id ID. number No
status Status. enum * see below No
date_placed Placed date. date No
source Source. string No
order Order parent. WebhookOrderCreatedOrder Yes
warehouse Warehouse. WebhookOrderCreatedWarehouse Yes
shipping_address Shipping address. WebhookOrderCreatedAddress Yes
lines Lines. array<WebhookOrderCreatedLine> Yes
attributes Attributes. array<WebhookOrderCreatedAttribute> Yes
tags Tags. array<WebhookOrderCreatedTag> Yes

Enums

Field Values
status draft, awaiting_allocation, hung, returned, awaiting_payment, awaiting_picking, awaiting_despatch, backorder_release, backorder, cancelled, return_open, item_refunded, item_replaced, awaiting_collection, despatched

WebhookOrderCreatedAddress

Address data.

Fields

Key Description Type Expanding
first_name First name. string No
last_name Last name. string No
company Company name. string No
email Email. string No
country The address country. WebhookOrderCreatedCountry Yes

WebhookOrderCreatedAttribute

An attribute stored against an order.

Fields

Key Description Type Expanding
name Name. string No
value Value. string No

WebhookOrderCreatedCountry

Country data.

Fields

Key Description Type Expanding
id The country’s unique identifier. number No
name Name. string No
iso_2 ISO2 description. string No
iso_3 ISO3 description. string No

WebhookOrderCreatedLine

Order line data.

Fields

Key Description Type Expanding
id ID. number No
transaction_sku SKU used during the transaction. string No
quantity Quantity ordered. number No
net_unit_principal Net unit principle. number No
net_unit_commission Net unit commission. number No
status Line status. enum * see below No
created Created date in BladePRO. date No
modified Last modified date in BladePRO. date No
variation Product variation. WebhookOrderCreatedProductVariation Yes

Enums

Field Values
status active, void

WebhookOrderCreatedOrder

Parent order.

Fields

Key Description Type Expanding
id ID. number No
reference Unique reference. string No
status Order status. enum * see below No
channel Order channel. WebhookOrderCreatedOrderChannel Yes
brand Brand. WebhookOrderCreatedOrderBrand Yes
currency Currency. WebhookOrderCreatedOrderCurrency Yes

Enums

Field Values
status draft, open, complete, cancelled

WebhookOrderCreatedOrderBrand

Brand data.

Fields

Key Description Type Expanding
id ID of the brand. number No
name Name of the brand. string No

WebhookOrderCreatedOrderChannel

Order channel data.

Fields

Key Description Type Expanding
id ID of the channel. number No
name The name of the channel. string No
short_code A short string identifier of the channel. string No

WebhookOrderCreatedOrderCurrency

Currency data.

Fields

Key Description Type Expanding
id BladePRO id for currency. number No
name Name. string No
code Code. string No
symbol Symbol. string No

WebhookOrderCreatedProductVariation

Product variation data.

Fields

Key Description Type Expanding
id ID of the product variation. number No
product_id ID of the parent product. number No
sku The unique stock keeping unit. string No

WebhookOrderCreatedTag

Tag on order.

Fields

Key Description Type Expanding
id Tag ID. number No
name The tag name. string No
shortcode The tag code. string No

WebhookOrderCreatedWarehouse

Warehouse data.

Fields

Key Description Type Expanding
id The warehouse’s unique identifier. number No
name Name. string No
short_code Unique short code. string No
country The warehouse’s country. WebhookOrderCreatedCountry Yes

WebhookOrderDespatched

Order despatched webhook.

Fields

Key Description Type Expanding
id ID. number No
status Status. enum * see below No
date_placed Placed date. date No
despatch_date Despatched date. date No
source Source. string No
order Order parent. WebhookOrderDespatchedOrder Yes
warehouse Warehouse. WebhookOrderDespatchedWarehouse Yes
shipping_address Shipping address. WebhookOrderDespatchedAddress Yes
attributes Attributes. array<WebhookOrderDespatchedAttribute> Yes
despatch_attributes Product Component Despatched Attributes. array<WebhookOrderProductComponentDespatchedAttribute> Yes
tags Tags. array<WebhookOrderDespatchedTag> Yes
shipping Shipping details. WebhookOrderDespatchedShipping Yes

Enums

Field Values
status draft, awaiting_allocation, hung, returned, awaiting_payment, awaiting_picking, awaiting_despatch, backorder_release, backorder, cancelled, return_open, item_refunded, item_replaced, awaiting_collection, despatched

WebhookOrderDespatchedAddress

Address data.

Fields

Key Description Type Expanding
first_name First name. string No
last_name Last name. string No
company Company name. string No
email Email. string No
country The address country. WebhookOrderDespatchedCountry Yes

WebhookOrderDespatchedAttribute

An attribute stored against an order.

Fields

Key Description Type Expanding
name Name. string No
value Value. string No

WebhookOrderDespatchedCountry

Country data.

Fields

Key Description Type Expanding
id The country’s unique identifier. number No
name Name. string No
iso_2 ISO2 description. string No
iso_3 ISO3 description. string No

WebhookOrderDespatchedOrder

Parent order.

Fields

Key Description Type Expanding
id ID. number No
reference Unique reference. string No
status Order status. enum * see below No
order_channel_id Order channel ID. number No
brand_id Brand ID. number No
currency Currency. WebhookOrderDespatchedOrderCurrency Yes
channel Channel. WebhookOrderDespatchedOrderChannel Yes

Enums

Field Values
status draft, open, complete, cancelled

WebhookOrderDespatchedOrderChannel

Channel data.

Fields

Key Description Type Expanding
id BladePRO id for channel. number No
organisation_id Organisation id. number No
name Name. string No
outbound_email Outbound email. string No

WebhookOrderDespatchedOrderCurrency

Currency data.

Fields

Key Description Type Expanding
id BladePRO id for currency. number No
name Name. string No
code Code. string No
symbol Symbol. string No

WebhookOrderDespatchedShipping

Shipping details.

Fields

Key Description Type Expanding
courier_name Name of the shipping courier. string No
service_name Name of the shipping service. string No
tracking Tracking numbers. array<WebhookOrderDespatchedShippingTracking> Yes

WebhookOrderDespatchedShippingTracking

Tracking details.

Fields

Key Description Type Expanding
tracking_number Tracking number. string No
tracking_url Tracking url. string No

WebhookOrderDespatchedTag

Tag on order.

Fields

Key Description Type Expanding
id Tag ID. number No
name The tag name. string No
shortcode The tag code. string No

WebhookOrderDespatchedWarehouse

Warehouse data.

Fields

Key Description Type Expanding
id The warehouse’s unique identifier. number No
name Name. string No
short_code Unique short code. string No
country The warehouse’s country. WebhookOrderDespatchedCountry Yes

WebhookOrderProductComponentDespatchedAttribute

Attribute of Despatched Product Component.

Fields

Key Description Type Expanding
sku Product SKU. string No
attribute_name Attribute name. string No
attribute_value Attribute value. string No
order_goodsout_line_id The line reference that the attribute was applied to. number No
order_goodsout_line_item_id The line item reference that the attribute was applied to. number No

WebhookVendorOrderFinalised

Vendor order finalise webhook.

Fields

Key Description Type Expanding
id Unique BladePRO identifier for the vendor order. number No
code Reference for the vendor order. string No
vendor Vendor. string No
status Status of the vendor order. string No
delivery_party Delivery Party. string No
address_first_name Delivery Address: First name. string No
address_last_name Delivery Address: Last name. string No
address_company Delivery Address: Company. string No
address_line_one Delivery Address: Line one. string No
address_line_two Delivery Address: Line two. string No
address_line_three Delivery Address: Line three. string No
address_postcode Delivery Address: Postcode. string No
address_town Delivery Address: Town. string No
address_county Delivery Address: county. string No
finalised Datetime for when the vendor order was finalised. date No
order_channel The vendor order channel. WebhookVendorOrderFinalisedOrderChannel Yes
country Delivery country. WebhookVendorOrderFinalisedCountry Yes
selected_warehouse The warehouse from where the stock will be despatched from. WebhookVendorOrderFinalisedWarehouse Yes
currency Currency of the vendor order. WebhookVendorOrderFinalisedCurrency Yes
items Vendor items. array<WebhookVendorOrderFinalisedItem> Yes

WebhookVendorOrderFinalisedCountry

Delivery location.

Fields

Key Description Type Expanding
id BladePRO identifier for the country. number No
name Name of the country. string No
iso_2 ISO 2 Code. string No
iso_3 ISO 3 code. string No

WebhookVendorOrderFinalisedCurrency

vendor order currency.

Fields

Key Description Type Expanding
id BladePRO id for currency. number No
name Name. string No
code Code. string No
symbol Symbol. string No

WebhookVendorOrderFinalisedItem

item.

Fields

Key Description Type Expanding
id BladePRO identifier for the vendor order item. number No
product_variation_id BladePRO identifier for product. number No
sku sku. string No
submitted_quantity Vendor Submitted Quantity. number No
accepted_quantity Quantity accepted in BladePRO. number No
unit_cost Net Unit Cost number No
status Status string No
expected_delivery_date Expected Delivery Date date No

WebhookVendorOrderFinalisedOrderChannel

vendor order finalise webhook.

Fields

Key Description Type Expanding
id Channel id for the vendor order. number No
name Channel name for the vendor order. string No

WebhookVendorOrderFinalisedWarehouse

Warehouse from which the vendor order will be despatched from.

Fields

Key Description Type Expanding
id BladePRO identifier for the warehouse. number No
name Name of the warehouse. string No
country Warehouse location. WebhookVendorOrderFinalisedWarehouseCountry Yes

WebhookVendorOrderFinalisedWarehouseCountry

Warehouse location.

Fields

Key Description Type Expanding
id BladePRO identifier for the country. number No
name Name of the country. string No
iso_2 ISO 2 Code. string No
iso_3 ISO 3 code. string No

List Return Metadata

GET /v1/orders/returns/:id/metadata

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/returns/1234567/metadata", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/returns/1234567/metadata', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/returns/1234567/metadata",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/returns/1234567/metadata' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "key": "my_key",
            "value": "some-value"
        }
    ]
}

Retrieves a list of all the metadata stored against a return.

Parameter Regular Expressions

Return Type

array<ReturnResourceMetadatas>

Scopes

This endpoint is only available for users with scope APP:RETURNS::READ.

Get Return Metadata

GET /v1/orders/returns/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Retrieves a single piece of metadata stored against a return.

Parameter Regular Expressions

Return Type

ReturnResourceMetadatas

Scopes

This endpoint is only available for users with scope APP:RETURNS::READ.

Set Return Metadata

PUT /v1/orders/returns/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key", [
    "body" => json_encode([
        "value" => "some-value",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key', {
  value: "some-value",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key",
    body: {
        "value": "some-value"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "value": "some-value"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Sets some metadata against a return.

Parameter Regular Expressions

Request Body

UpdateResourceMetadata

Return Type

ReturnResourceMetadatas

Types for the Request Body

UpdateResourceMetadata (root level)

Key Description Types Restrictions
value The value. string required
not null
max length is 65535

Scopes

This endpoint is only available for users with scope APP:RETURNS::MANAGE.

Delete Return Metadata

DELETE /v1/orders/returns/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("DELETE", "https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.delete 'https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "DELETE",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request DELETE 'https://public-api.bladepro.io/v1/orders/returns/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

null

Deletes some metadata against a return.

Parameter Regular Expressions

Return Type

Empty.

Scopes

This endpoint is only available for users with scope APP:RETURNS::MANAGE.

List Order Returns

GET /v1/orders/returns

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/returns?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/returns?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/returns?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/returns?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "order_id": 1,
            "shipping_address_id": 1,
            "warehouse_id": 1,
            "status": "pending",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "warehouse": {
                "id": 1,
                "name": "Christchurch",
                "short_code": "CHR",
                "latitude": 50.739492,
                "longitude": -1.734224,
                "country_id": 1,
                "active": true,
                "currency_id": 1,
                "virtual": false,
                "return_warehouse_id": 1,
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            },
            "order": {
                "id": 1234567,
                "reference": "#154254",
                "status": "open",
                "channel": {
                    "id": 321,
                    "organisation_id": 321,
                    "name": "Demo Channel",
                    "short_code": "DEMO",
                    "status": "active",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z",
                    "organisation": {
                        "id": 1,
                        "name": "Demo",
                        "active": true,
                        "vat_number": "GB999 9999 73",
                        "notes": "Demo account...",
                        "contact_name": "Mr Joe Bloggs",
                        "contact_phone": "+44 01425 000 000",
                        "contact_mobile": "+44 00000000",
                        "contact_email": "joe.bloggs@example.com",
                        "created": "2019-11-25T14:52:56.000Z",
                        "modified": "2019-11-25T14:52:56.000Z"
                    }
                }
            },
            "order_return_items": [
                {
                    "id": 1,
                    "order_return_id": 1,
                    "order_goodsout_line_item_id": 1,
                    "order_goodsout_line_id": 1,
                    "product_component_id": 1,
                    "sku": "DEMO-SKU-01",
                    "exchanged_product_component_id": 1,
                    "expected_quantity": 2,
                    "received_quantity": 2,
                    "expiry_date": "2019-11-25T14:52:56.000Z",
                    "received_date": "2019-11-25T14:52:56.000Z",
                    "action": "refund",
                    "order_return_item_reason_id": 1,
                    "description": "Damaged in box",
                    "correct_item": "YES",
                    "resellable": "NO",
                    "status": "pending",
                    "authorisation_required": "NO",
                    "rejected_reason": "Outside agreed return window",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            ],
            "tags": [
                {
                    "name": "Processed",
                    "shortcode": "processed",
                    "description": "Processed by a 3rd party system"
                }
            ]
        }
    ]
}

List order returns

Return Type

array<OrderReturns>

Filters

Field Operators Value List URL
search LIKE fuzzy search across selected attributes
status IN, NOT_IN
order.channel.organisation.id IN, NOT_IN
order.channel.id IN, NOT_IN
warehouse.id IN
tags.shortcode IN, NOT_IN

Sortings

Results can be sorted by the following keys: id, received_date.

Available expands

Field Return Type Description
order Orders Customer order groups.
order.channel OrderChannels Customer order groups.
order.channel.organisation Organisations Organisation data.
order_return_items array<OrderReturnItems> Order Return Items.
order_return_items.component ProductComponents Product component.
order_return_items.exchange_component ProductComponents Product component.
order_return_items.reason OrderReturnItemReasons Order Return Item Reasons.
tags array<SummarisedTag> A tag.
warehouse Warehouses A warehouse.

Scopes

This endpoint is only available for users with scope APP::RETURNS::READ.

View Order Return

GET /v1/orders/returns/:id

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/orders/returns/1234567?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/orders/returns/1234567?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/returns/1234567?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/orders/returns/1234567?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "order_id": 1,
        "shipping_address_id": 1,
        "warehouse_id": 1,
        "status": "pending",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "warehouse": {
            "id": 1,
            "name": "Christchurch",
            "short_code": "CHR",
            "latitude": 50.739492,
            "longitude": -1.734224,
            "country_id": 1,
            "active": true,
            "currency_id": 1,
            "virtual": false,
            "return_warehouse_id": 1,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z"
        },
        "order": {
            "id": 1234567,
            "reference": "#154254",
            "status": "open",
            "channel": {
                "id": 321,
                "organisation_id": 321,
                "name": "Demo Channel",
                "short_code": "DEMO",
                "status": "active",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z",
                "organisation": {
                    "id": 1,
                    "name": "Demo",
                    "active": true,
                    "vat_number": "GB999 9999 73",
                    "notes": "Demo account...",
                    "contact_name": "Mr Joe Bloggs",
                    "contact_phone": "+44 01425 000 000",
                    "contact_mobile": "+44 00000000",
                    "contact_email": "joe.bloggs@example.com",
                    "created": "2019-11-25T14:52:56.000Z",
                    "modified": "2019-11-25T14:52:56.000Z"
                }
            }
        },
        "order_return_items": [
            {
                "id": 1,
                "order_return_id": 1,
                "order_goodsout_line_item_id": 1,
                "order_goodsout_line_id": 1,
                "product_component_id": 1,
                "sku": "DEMO-SKU-01",
                "exchanged_product_component_id": 1,
                "expected_quantity": 2,
                "received_quantity": 2,
                "expiry_date": "2019-11-25T14:52:56.000Z",
                "received_date": "2019-11-25T14:52:56.000Z",
                "action": "refund",
                "order_return_item_reason_id": 1,
                "description": "Damaged in box",
                "correct_item": "YES",
                "resellable": "NO",
                "status": "pending",
                "authorisation_required": "NO",
                "rejected_reason": "Outside agreed return window",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            }
        ]
    }
}

View order return

Parameter Regular Expressions

Return Type

OrderReturns

Available expands

Field Return Type Description
order Orders Customer order groups.
order.channel OrderChannels Customer order groups.
order.channel.organisation Organisations Organisation data.
order_return_items array<OrderReturnItems> Order Return Items.
order_return_items.component ProductComponents Product component.
order_return_items.exchange_component ProductComponents Product component.
order_return_items.reason OrderReturnItemReasons Order Return Item Reasons.
warehouse Warehouses A warehouse.

Scopes

This endpoint is only available for users with scope APP::RETURNS::READ.

Create Return

POST /v1/orders/returns

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/orders/returns?expand=*", [
    "body" => json_encode([
        "reference" => "#154254",
        "items" => [
            [
                "sku" => "GREEN-BALL",
                "quantity" => 4,
                "action" => "Refund",
                "reason" => "Size and fit - too large",
                "description" => "I need a size XL",
            ],
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/orders/returns?expand=*', {
  reference: "#154254",
  items: [
    {
      sku: "GREEN-BALL",
      quantity: 4,
      action: "Refund",
      reason: "Size and fit - too large",
      description: "I need a size XL",
    },
  ],
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/returns?expand=*",
    body: {
        "reference": "#154254",
        "items": [
            {
                "sku": "GREEN-BALL",
                "quantity": 4,
                "action": "Refund",
                "reason": "Size and fit - too large",
                "description": "I need a size XL"
            }
        ]
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/orders/returns?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "reference": "#154254",
    "items": [
        {
            "sku": "GREEN-BALL",
            "quantity": 4,
            "action": "Refund",
            "reason": "Size and fit - too large",
            "description": "I need a size XL"
        }
    ]
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "order_id": 1,
        "shipping_address_id": 1,
        "warehouse_id": 1,
        "status": "pending",
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z",
        "order_return_items": [
            {
                "id": 1,
                "order_return_id": 1,
                "order_goodsout_line_item_id": 1,
                "order_goodsout_line_id": 1,
                "product_component_id": 1,
                "sku": "DEMO-SKU-01",
                "exchanged_product_component_id": 1,
                "expected_quantity": 2,
                "received_quantity": 2,
                "expiry_date": "2019-11-25T14:52:56.000Z",
                "received_date": "2019-11-25T14:52:56.000Z",
                "action": "refund",
                "order_return_item_reason_id": 1,
                "description": "Damaged in box",
                "correct_item": "YES",
                "resellable": "NO",
                "status": "pending",
                "authorisation_required": "NO",
                "rejected_reason": "Outside agreed return window",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            }
        ]
    }
}

Creates a return.

Request Body

CreateReturn

Return Type

OrderReturns

Types for the Request Body

CreateReturn (root level)

Key Description Types Restrictions
reference Order specific reference. string required
not null
min length is 1
items List of items. array<Item> required
not null
min count is 1

Item

Key Description Types Restrictions
sku The product’s stock keeping unit (SKU). string required
not null
min length is 1
quantity The quantity to return. integer required
not null
min is 1
action The return action. enum(refund, exchange, stock) required
not null
reason The reason for return. string required
not null
min length is 1
description The description of why the item is being returned. string not null
min length is 1

Available expands

Field Return Type Description
order_return_items array<OrderReturnItems> Order Return Items.

Scopes

This endpoint is only available for users with scope APP::RETURNS::MANAGE.

Apply Return Tag

POST /v1/orders/returns/:id/tags

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/orders/returns/:id/tags", [
    "body" => json_encode([
        "shortcode" => "PROCESSED",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/orders/returns/:id/tags', {
  shortcode: "PROCESSED",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/returns/:id/tags",
    body: {
        "shortcode": "PROCESSED"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/orders/returns/:id/tags' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "shortcode": "PROCESSED"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "name": "Processed",
        "shortcode": "PROCESSED",
        "description": "Marked a as processed by XYZ system",
        "created": "2019-11-25T14:52:56.000Z"
    }
}

Applies a tag to a return.

Parameter Regular Expressions

Request Body

ApplyTag

Return Type

OrderReturnTags

Types for the Request Body

ApplyTag (root level)

Key Description Types Restrictions
shortcode The tag shortcode. string required
not null
min length is 1

Scopes

This endpoint is only available for users with scope APP::RETURNS::MANAGE.

Remove Return Tag

DELETE /v1/orders/returns/:id/tags/:tagShortcode

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("DELETE", "https://public-api.bladepro.io/v1/orders/returns/1234567/tags/PROCESSED", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.delete 'https://public-api.bladepro.io/v1/orders/returns/1234567/tags/PROCESSED', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "DELETE",
    json: true,
    uri: "https://public-api.bladepro.io/v1/orders/returns/1234567/tags/PROCESSED",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request DELETE 'https://public-api.bladepro.io/v1/orders/returns/1234567/tags/PROCESSED' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

null

Remove a tag from a return.

Parameter Regular Expressions

Return Type

Empty.

Scopes

This endpoint is only available for users with scope APP::RETURNS::MANAGE.

List Tags

GET /v1/tags

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/tags", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/tags', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/tags",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/tags' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "name": "Processed",
            "shortcode": "PROCESSED",
            "description": "Marked a as processed by XYZ system",
            "created": "2019-11-25T14:52:56.000Z"
        }
    ]
}

List the Application tags.

Return Type

array<Tags>

Scopes

This endpoint is only available for users with scope APP::MISC.

Create Tag

POST /v1/tags

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/tags", [
    "body" => json_encode([
        "name" => "Processed",
        "description" => "Marked a as processed by XYZ system.",
        "shortcode" => "PROCESSED",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/tags', {
  name: "Processed",
  description: "Marked a as processed by XYZ system.",
  shortcode: "PROCESSED",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/tags",
    body: {
        "name": "Processed",
        "description": "Marked a as processed by XYZ system.",
        "shortcode": "PROCESSED"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/tags' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "name": "Processed",
    "description": "Marked a as processed by XYZ system.",
    "shortcode": "PROCESSED"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "name": "Processed",
        "shortcode": "PROCESSED",
        "description": "Marked a as processed by XYZ system",
        "created": "2019-11-25T14:52:56.000Z"
    }
}

Create a new tag.

Request Body

CreateTag

Return Type

Tags

Types for the Request Body

CreateTag (root level)

Key Description Types Restrictions
name Name of the tag. string required
not null
min length is 1
max length is 50
description Description of the tag. string required
not null
min length is 1
max length is 250
shortcode A unique code associated with the tag. string required
not null
min length is 1
max length is 20
match is /[a-zA-Z0-9_-]{3,20}/

Scopes

This endpoint is only available for users with scope APP::MISC.

Log message

POST /v1/log

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/log", [
    "body" => json_encode([
        "severity" => "warning",
        "message" => "This is a message worth saving to our logs.",
        "payload" => [
            "x" => 0,
            "y" => 0,
            "z" => 4,
        ],
        "incident_bindings" => [
            "user" => 45,
            "vendor_order" => 1546,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/log', {
  severity: "warning",
  message: "This is a message worth saving to our logs.",
  payload: {
    x: 0,
    y: 0,
    z: 4,
  },
  incident_bindings: {
    user: 45,
    vendor_order: 1546,
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/log",
    body: {
        "severity": "warning",
        "message": "This is a message worth saving to our logs.",
        "payload": {
            "x": 0,
            "y": 0,
            "z": 4
        },
        "incident_bindings": {
            "user": 45,
            "vendor_order": 1546
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/log' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "severity": "warning",
    "message": "This is a message worth saving to our logs.",
    "payload": {
        "x": 0,
        "y": 0,
        "z": 4
    },
    "incident_bindings": {
        "user": 45,
        "vendor_order": 1546
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "success": true
    }
}

Saves a log entry and update the heartbeat of a task.

Request Body

CreateLog

Return Type

Log

Types for the Request Body

CreateLog (root level)

Key Description Types Restrictions
severity The severity of the log. string required
not null
message The message to be recorded. string required
not null
min length is 1
payload Additional data to be stored against the message. object not null
task_id The ID of the related task. string not null
match is /^[0-9a-z-]{36}$/
service Which service wrote the log message. string not null
incident_bindings Bindings for the incident to be created. CreateLogIncidentBinding not null

CreateLogIncidentBinding

Key Description Types Restrictions
user User ID. number not null
company Company ID. number not null
organisation Organisation ID. number not null
order_goodsout Order goodsout ID. number not null
order_channel Order channel ID. number not null
product_channel Product channel ID. number not null
product_variation Product variation ID. number not null
product_component Product component ID. number not null
listing Listing ID. number not null
vendor_order Vendor order ID. number not null
purchase_order Purchase order ID. number not null

Scopes

This endpoint is only available for users with scope APP::MISC.

Create task

POST /v1/tasks

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/tasks", [
    "body" => json_encode([
        "task" => "MYAPP:VENDOR:CREATE",
        "endpoint" => [
            "url" => "https://my-url.com/endpoint",
            "method" => "POST",
        ],
        "metadata" => [
            "meta1" => "value1",
            "meta2" => "value2",
            "meta3" => "value3",
        ],
        "payload" => true,
        "application" => [
            "id" => 1,
            "name" => "Application name",
            "instance_id" => 1,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/tasks', {
  task: "MYAPP:VENDOR:CREATE",
  endpoint: {
    url: "https://my-url.com/endpoint",
    method: "POST",
  },
  metadata: {
    meta1: "value1",
    meta2: "value2",
    meta3: "value3",
  },
  payload: true,
  application: {
    id: 1,
    name: "Application name",
    instance_id: 1,
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/tasks",
    body: {
        "task": "MYAPP:VENDOR:CREATE",
        "endpoint": {
            "url": "https://my-url.com/endpoint",
            "method": "POST"
        },
        "metadata": {
            "meta1": "value1",
            "meta2": "value2",
            "meta3": "value3"
        },
        "payload": true,
        "application": {
            "id": 1,
            "name": "Application name",
            "instance_id": 1
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/tasks' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "task": "MYAPP:VENDOR:CREATE",
    "endpoint": {
        "url": "https://my-url.com/endpoint",
        "method": "POST"
    },
    "metadata": {
        "meta1": "value1",
        "meta2": "value2",
        "meta3": "value3"
    },
    "payload": true,
    "application": {
        "id": 1,
        "name": "Application name",
        "instance_id": 1
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "task_reference": "12345678-abcd-9qwe-zx01-123456789abc"
    }
}

Calls the task system to create a new task.

Request Body

Task

Return Type

Tasks

Types for the Request Body

Task (root level)

Key Description Types Restrictions
task Task code. string required
not null
min length is 1
endpoint Endpoint to be hit. Endpoint required
not null
metadata Metadata. map<string, string> required
not null
min length is 0
payload Payload. boolean
or number
or object
or string
required
not null
application Definition of the application the task belongs to. Application required
not null

Application

Key Description Types Restrictions
id The ID of the application. number required
not null
name The name of the application. string required
not null
min length is 1
instance_id The ID of the application’s instance. number required
not null

Endpoint

Key Description Types Restrictions
url URL. string required
not null
min length is 1
method HTTP method. string required
not null
match is /^(POST|PUT)$/

Scopes

This endpoint is only available for users with scope APP::MISC.

Mark task as failed

PUT /v1/tasks/:task/failed

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/failed", [
    "body" => json_encode([
        "summary" => "Failed to update order, reference could not be matched on marketplace.",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/failed', {
  summary: "Failed to update order, reference could not be matched on marketplace.",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/failed",
    body: {
        "summary": "Failed to update order, reference could not be matched on marketplace."
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/failed' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "summary": "Failed to update order, reference could not be matched on marketplace."
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "task_reference": "12345678-abcd-9qwe-zx01-123456789abc"
    }
}

Reports a task to have failed.

Parameter Regular Expressions

Request Body

FailTask

Return Type

Tasks

Types for the Request Body

FailTask (root level)

Key Description Types Restrictions
summary A summary of why the task failed. string required
not null
min length is 1

Scopes

This endpoint is only available for users with scope APP::MISC.

Mark task as completed

PUT /v1/tasks/:task/complete

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/complete", [
    "body" => json_encode([
        "summary" => "Updated stock for 134 products.",
        "warning" => true,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/complete', {
  summary: "Updated stock for 134 products.",
  warning: true,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/complete",
    body: {
        "summary": "Updated stock for 134 products.",
        "warning": true
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/complete' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "summary": "Updated stock for 134 products.",
    "warning": true
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "task_reference": "12345678-abcd-9qwe-zx01-123456789abc"
    }
}

Reports a task to have completed.

Parameter Regular Expressions

Request Body

CompleteTask

Return Type

Tasks

Types for the Request Body

CompleteTask (root level)

Key Description Types Restrictions
summary A summary of the task’s outcome. string required
not null
min length is 1
warning Mark the task with a warning flag. boolean not null

Scopes

This endpoint is only available for users with scope APP::MISC.

Record task heartbeat

PUT /v1/tasks/:task/heartbeat

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/heartbeat", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/heartbeat', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/heartbeat",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/tasks/12345678-abcd-9qwe-zx01-123456789abc/heartbeat' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "task_reference": "12345678-abcd-9qwe-zx01-123456789abc"
    }
}

Notifies BladePRO the processing of the task is still underway.

Parameter Regular Expressions

Request Body

Ignored.

Return Type

Tasks

Scopes

This endpoint is only available for users with scope APP::MISC.

List Vendor Order Items

GET /v1/vendor_orders/:vendorOrderId/items

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/vendor_orders/123/items?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/vendor_orders/123/items?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders/123/items?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/vendor_orders/123/items?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 4567,
            "vendor_order_id": 123,
            "vendor_order_item_status_id": 1,
            "model_number": "MODEL_309845",
            "asin": "ASIN34w5-068",
            "sku": "SKU_01",
            "product_variation_id": 687,
            "name": "Example Product 01",
            "expected_delivery_date": "2025-03-18T13:50:31.741Z",
            "confirmed_delivery_date": "2025-03-19T13:50:31.741Z",
            "submitted_quantity": 1000,
            "accepted_quantity": 850,
            "received_quantity": null,
            "unit_cost": 12.34,
            "created": "2025-03-13T13:50:31.741Z",
            "modified": "2025-03-13T13:50:31.741Z"
        }
    ]
}

Extracts a list of items in a given vendor order.

Parameter Regular Expressions

Return Type

array<VendorOrderItems>

Available expands

Field Return Type Description
product_variation ProductVariations Marketplace listable products’ data.

Scopes

This endpoint is only available for users with scope APP::VENDOR-ORDERS::READ.

Get Vendor Order Item

GET /v1/vendor_orders/:vendorOrderId/items/:vendorOrderItemId

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/vendor_orders/123/items/4567", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/vendor_orders/123/items/4567', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders/123/items/4567",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/vendor_orders/123/items/4567' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 4567,
        "vendor_order_id": 123,
        "vendor_order_item_status_id": 1,
        "model_number": "MODEL_309845",
        "asin": "ASIN34w5-068",
        "sku": "SKU_01",
        "product_variation_id": 687,
        "name": "Example Product 01",
        "expected_delivery_date": "2025-03-18T13:50:31.742Z",
        "confirmed_delivery_date": "2025-03-19T13:50:31.742Z",
        "submitted_quantity": 1000,
        "accepted_quantity": 850,
        "received_quantity": null,
        "unit_cost": 12.34,
        "created": "2025-03-13T13:50:31.742Z",
        "modified": "2025-03-13T13:50:31.742Z"
    }
}

Retrieves a single vendor order item.

Parameter Regular Expressions

Return Type

VendorOrderItems

Scopes

This endpoint is only available for users with scope APP::VENDOR-ORDERS::READ.

Update Vendor Order Item

PUT /v1/vendor_orders/:vendorOrderId/items/:vendorOrderItemId

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/vendor_orders/123/items/4567", [
    "body" => json_encode([
        "vendor_order_item_status_id" => 1,
        "accepted_quantity" => 850,
        "expected_delivery_date" => "2025-03-18T13:50:31.743Z",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/vendor_orders/123/items/4567', {
  vendor_order_item_status_id: 1,
  accepted_quantity: 850,
  expected_delivery_date: "2025-03-18T13:50:31.743Z",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders/123/items/4567",
    body: {
        "vendor_order_item_status_id": 1,
        "accepted_quantity": 850,
        "expected_delivery_date": "2025-03-18T13:50:31.743Z"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/vendor_orders/123/items/4567' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "vendor_order_item_status_id": 1,
    "accepted_quantity": 850,
    "expected_delivery_date": "2025-03-18T13:50:31.743Z"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 4567,
        "vendor_order_id": 123,
        "vendor_order_item_status_id": 1,
        "model_number": "MODEL_309845",
        "asin": "ASIN34w5-068",
        "sku": "SKU_01",
        "product_variation_id": 687,
        "name": "Example Product 01",
        "expected_delivery_date": "2025-03-18T13:50:31.743Z",
        "confirmed_delivery_date": "2025-03-19T13:50:31.743Z",
        "submitted_quantity": 1000,
        "accepted_quantity": 850,
        "received_quantity": null,
        "unit_cost": 12.34,
        "created": "2025-03-13T13:50:31.743Z",
        "modified": "2025-03-13T13:50:31.743Z"
    }
}

Parameter Regular Expressions

Request Body

UpdateVendorOrderItem

Return Type

VendorOrderItems

Types for the Request Body

UpdateVendorOrderItem (root level)

Key Description Types Restrictions
vendor_order_item_status_id ID of the status the item needs to take. integer required
not null
min is 1
accepted_quantity Accepted quantity. integer required
not null
min is 0
expected_delivery_date Expected delivery date. date required
not null

Scopes

This endpoint is only available for users with scope APP::VENDOR-ORDERS::MANAGE.

List Vendor Order Metadata

GET /v1/vendor_orders/:id/metadata

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "key": "my_key",
            "value": "some-value"
        }
    ]
}

Retrieves a list of all the metadata stored against a vendor order.

Parameter Regular Expressions

Return Type

array<VendorOrderResourceMetadatas>

Scopes

This endpoint is only available for users with scope APP::VENDOR-ORDERS::READ.

Get Vendor Order Metadata

GET /v1/vendor_orders/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Retrieves a single piece of metadata stored against a vendor order.

Parameter Regular Expressions

Return Type

VendorOrderResourceMetadatas

Scopes

This endpoint is only available for users with scope APP::VENDOR-ORDERS::READ.

Set Vendor Order Metadata

PUT /v1/vendor_orders/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key", [
    "body" => json_encode([
        "value" => "some-value",
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key', {
  value: "some-value",
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key",
    body: {
        "value": "some-value"
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "value": "some-value"
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "key": "my_key",
        "value": "some-value"
    }
}

Sets some metadata against a Vendor.

Parameter Regular Expressions

Request Body

UpdateResourceMetadata

Return Type

VendorOrderResourceMetadatas

Types for the Request Body

UpdateResourceMetadata (root level)

Key Description Types Restrictions
value The value. string required
not null
max length is 65535

Scopes

This endpoint is only available for users with scope APP::VENDOR-ORDERS::MANAGE.

Delete Vendor Order Metadata

DELETE /v1/vendor_orders/:id/metadata/:key

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("DELETE", "https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.delete 'https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "DELETE",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request DELETE 'https://public-api.bladepro.io/v1/vendor_orders/1234567/metadata/my_key' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

null

Deletes some metadata against a vendor order.

Parameter Regular Expressions

Return Type

Empty.

Scopes

This endpoint is only available for users with scope APP::VENDOR-ORDERS::MANAGE.

List Vendor Orders

GET /v1/vendor_orders

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/vendor_orders?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/vendor_orders?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/vendor_orders?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 123,
            "code": "QWER123ASD",
            "status": "processing",
            "vendor": "VEN-01",
            "ordered_on": "2025-03-13T13:50:31.737Z",
            "deliver_from": "2025-03-18T13:50:31.737Z",
            "deliver_to": "2025-03-23T13:50:31.737Z",
            "freight_terms": null,
            "payment_method": null,
            "payment_terms": null,
            "purchasing_entity": null,
            "delivery_party": null,
            "order_channel_id": 1,
            "currency_id": 1,
            "warehouse_id": 1,
            "finalised": null,
            "address_first_name": "Amazon",
            "address_last_name": "Inc.",
            "address_company": null,
            "address_line_one": "1 Amazon Rd",
            "address_line_two": null,
            "address_line_three": null,
            "address_postcode": "BH23 4FL",
            "address_town": "Christchurch",
            "address_county": "Dorset",
            "address_country_id": 231,
            "created": "2025-03-13T13:50:31.737Z",
            "modified": "2025-03-13T13:50:31.737Z"
        }
    ]
}

Retrieves a list of stored vendor orders.

Return Type

array<VendorOrders>

Filters

Field Operators Value List URL
status IN, NOT_IN
order_channel_id IN, NOT_IN
ordered_on ON_DATE, LESS_THAN, MORE_THAN
finalised ON_DATE, LESS_THAN, MORE_THAN
code EQUALS, LIKE

Sortings

Results can be sorted by the following keys: finalised, ordered_on.

Available expands

Field Return Type Description
address_country Countries A country.
currency Currencies Currency data.
items array<VendorOrderItems> A line in a vendor order.
items.product_variation ProductVariations Marketplace listable products’ data.
items.status VendorOrderItemStatuses A status for a vendor order item.
order_channel OrderChannels Customer order groups.
warehouse Warehouses A warehouse.

Scopes

This endpoint is only available for users with scope APP::VENDOR-ORDERS::READ.

Create Vendor Order

POST /v1/vendor_orders

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/vendor_orders", [
    "body" => json_encode([
        "order_channel_id" => 3,
        "vendor_order" => [
            "code" => "QWER123ASD",
            "vendor" => "VEN-01",
            "warehouse" => "CHR",
            "ordered_on" => "2025-05-20T00:00:00.000Z",
            "deliver_from" => "2025-05-20T00:00:00.000Z",
            "deliver_to" => "2025-05-27T00:00:00.000Z",
            "freight_terms" => null,
            "payment_method" => null,
            "payment_terms" => null,
            "purchasing_entity" => "#",
            "delivery_party" => "#",
            "currency_id" => "GBP",
            "items" => [
                [
                    "product_variation_id" => 1,
                    "model_number" => "MODEL_30845",
                    "asin" => "ASIN34w5-068",
                    "sku" => "SKU_01",
                    "name" => "Example Product 01",
                    "expected_delivery_date" => "2025-03-18T13:50:31.739Z",
                    "submitted_quantity" => 1000,
                    "unit_cost" => 12.34,
                ],
            ],
            "address_first_name" => "Amazon",
            "address_last_name" => "Inc.",
            "address_company" => null,
            "address_line_one" => "1 Amazon Rd",
            "address_line_two" => null,
            "address_line_three" => null,
            "address_postcode" => "BH23 4FL",
            "address_town" => "Christchurch",
            "address_country" => "GB",
            "address_county" => "Dorset",
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/vendor_orders', {
  order_channel_id: 3,
  vendor_order: {
    code: "QWER123ASD",
    vendor: "VEN-01",
    warehouse: "CHR",
    ordered_on: "2025-05-20T00:00:00.000Z",
    deliver_from: "2025-05-20T00:00:00.000Z",
    deliver_to: "2025-05-27T00:00:00.000Z",
    freight_terms: nil,
    payment_method: nil,
    payment_terms: nil,
    purchasing_entity: "#",
    delivery_party: "#",
    currency_id: "GBP",
    items: [
      {
        product_variation_id: 1,
        model_number: "MODEL_30845",
        asin: "ASIN34w5-068",
        sku: "SKU_01",
        name: "Example Product 01",
        expected_delivery_date: "2025-03-18T13:50:31.739Z",
        submitted_quantity: 1000,
        unit_cost: 12.34,
      },
    ],
    address_first_name: "Amazon",
    address_last_name: "Inc.",
    address_company: nil,
    address_line_one: "1 Amazon Rd",
    address_line_two: nil,
    address_line_three: nil,
    address_postcode: "BH23 4FL",
    address_town: "Christchurch",
    address_country: "GB",
    address_county: "Dorset",
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders",
    body: {
        "order_channel_id": 3,
        "vendor_order": {
            "code": "QWER123ASD",
            "vendor": "VEN-01",
            "warehouse": "CHR",
            "ordered_on": "2025-05-20T00:00:00.000Z",
            "deliver_from": "2025-05-20T00:00:00.000Z",
            "deliver_to": "2025-05-27T00:00:00.000Z",
            "freight_terms": null,
            "payment_method": null,
            "payment_terms": null,
            "purchasing_entity": "#",
            "delivery_party": "#",
            "currency_id": "GBP",
            "items": [
                {
                    "product_variation_id": 1,
                    "model_number": "MODEL_30845",
                    "asin": "ASIN34w5-068",
                    "sku": "SKU_01",
                    "name": "Example Product 01",
                    "expected_delivery_date": "2025-03-18T13:50:31.739Z",
                    "submitted_quantity": 1000,
                    "unit_cost": 12.34
                }
            ],
            "address_first_name": "Amazon",
            "address_last_name": "Inc.",
            "address_company": null,
            "address_line_one": "1 Amazon Rd",
            "address_line_two": null,
            "address_line_three": null,
            "address_postcode": "BH23 4FL",
            "address_town": "Christchurch",
            "address_country": "GB",
            "address_county": "Dorset"
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/vendor_orders' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "order_channel_id": 3,
    "vendor_order": {
        "code": "QWER123ASD",
        "vendor": "VEN-01",
        "warehouse": "CHR",
        "ordered_on": "2025-05-20T00:00:00.000Z",
        "deliver_from": "2025-05-20T00:00:00.000Z",
        "deliver_to": "2025-05-27T00:00:00.000Z",
        "freight_terms": null,
        "payment_method": null,
        "payment_terms": null,
        "purchasing_entity": "#",
        "delivery_party": "#",
        "currency_id": "GBP",
        "items": [
            {
                "product_variation_id": 1,
                "model_number": "MODEL_30845",
                "asin": "ASIN34w5-068",
                "sku": "SKU_01",
                "name": "Example Product 01",
                "expected_delivery_date": "2025-03-18T13:50:31.739Z",
                "submitted_quantity": 1000,
                "unit_cost": 12.34
            }
        ],
        "address_first_name": "Amazon",
        "address_last_name": "Inc.",
        "address_company": null,
        "address_line_one": "1 Amazon Rd",
        "address_line_two": null,
        "address_line_three": null,
        "address_postcode": "BH23 4FL",
        "address_town": "Christchurch",
        "address_country": "GB",
        "address_county": "Dorset"
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 123,
        "code": "QWER123ASD",
        "status": "processing",
        "vendor": "VEN-01",
        "ordered_on": "2025-03-13T13:50:31.738Z",
        "deliver_from": "2025-03-18T13:50:31.738Z",
        "deliver_to": "2025-03-23T13:50:31.738Z",
        "freight_terms": null,
        "payment_method": null,
        "payment_terms": null,
        "purchasing_entity": null,
        "delivery_party": null,
        "order_channel_id": 1,
        "currency_id": 1,
        "warehouse_id": 1,
        "finalised": null,
        "address_first_name": "Amazon",
        "address_last_name": "Inc.",
        "address_company": null,
        "address_line_one": "1 Amazon Rd",
        "address_line_two": null,
        "address_line_three": null,
        "address_postcode": "BH23 4FL",
        "address_town": "Christchurch",
        "address_county": "Dorset",
        "address_country_id": 231,
        "created": "2025-03-13T13:50:31.738Z",
        "modified": "2025-03-13T13:50:31.738Z"
    }
}

Creates a new vendor order.

Request Body

CreateVendorOrderPayload

Return Type

VendorOrders

Types for the Request Body

CreateVendorOrderPayload (root level)

Key Description Types Restrictions
order_channel_id Target order channel ID. integer required
not null
min is 1
vendor_order The vendor order. VendorOrder required
not null

Item

Key Description Types Restrictions
product_variation_id ID of the product variation. integer required
min is 1
model_number Model number. string required
min length is 1
max length is 191
asin ASIN. string required
min length is 1
max length is 191
sku SKU. string required
min length is 1
max length is 191
name Product name. string required
min length is 1
max length is 191
expected_delivery_date Expected delivery date. date required
submitted_quantity Submitted quantity. integer required
not null
min is 1
unit_cost Unit cost. number required
not null

VendorOrder

Key Description Types Restrictions
code Third party ID. string required
not null
min length is 1
max length is 100
vendor Description of the vendor. string required
not null
min length is 1
max length is 191
warehouse Delivery destination. string required
min length is 1
max length is 191
ordered_on Date of ordering as described by the third party. date required
not null
deliver_from Start date of requested delivery window. date required
not null
deliver_to End date of requested delivery window. date required
not null
freight_terms Freight terms. string required
min length is 1
max length is 191
payment_method Payment method. string required
min length is 1
max length is 191
payment_terms Payment terms. string required
min length is 1
max length is 191
purchasing_entity Purchasing entity. string required
min length is 1
max length is 191
delivery_party Delivery Party. string required
min length is 1
max length is 191
currency_id ISO code of currency. string required
not null
min length is 2
max length is 3
match is /^[A-Z]{2,3}$/i
items Vendor order items. array<Item> required
not null
min count is 1
address_first_name First name of address. string required
address_last_name Last name of address. string required
address_company Company name of address. string required
address_line_one Address line one. string required
address_line_two Address line two. string required
address_line_three Address line three. string required
address_postcode Postcode of address. string required
address_town Town of address. string required
address_country Country ISO of address. string required
min length is 2
max length is 3
match is /^[a-z]{2,3}$/i
address_county County or region of address. string required

Scopes

This endpoint is only available for users with scope APP::VENDOR-ORDERS::MANAGE.

Get Vendor Order

GET /v1/vendor_orders/:vendorOrderId

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/vendor_orders/123", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/vendor_orders/123', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders/123",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/vendor_orders/123' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 123,
        "code": "QWER123ASD",
        "status": "processing",
        "vendor": "VEN-01",
        "ordered_on": "2025-03-13T13:50:31.740Z",
        "deliver_from": "2025-03-18T13:50:31.740Z",
        "deliver_to": "2025-03-23T13:50:31.740Z",
        "freight_terms": null,
        "payment_method": null,
        "payment_terms": null,
        "purchasing_entity": null,
        "delivery_party": null,
        "order_channel_id": 1,
        "currency_id": 1,
        "warehouse_id": 1,
        "finalised": null,
        "address_first_name": "Amazon",
        "address_last_name": "Inc.",
        "address_company": null,
        "address_line_one": "1 Amazon Rd",
        "address_line_two": null,
        "address_line_three": null,
        "address_postcode": "BH23 4FL",
        "address_town": "Christchurch",
        "address_county": "Dorset",
        "address_country_id": 231,
        "created": "2025-03-13T13:50:31.740Z",
        "modified": "2025-03-13T13:50:31.740Z"
    }
}

Retrieves a single vendor order.

Parameter Regular Expressions

Return Type

VendorOrders

Scopes

This endpoint is only available for users with scope APP::VENDOR-ORDERS::READ.

Confirm Vendor Order

PUT /v1/vendor_orders/:vendorOrderId/complete

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/vendor_orders/123/complete", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/vendor_orders/123/complete', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/vendor_orders/123/complete",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/vendor_orders/123/complete' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 123,
        "code": "QWER123ASD",
        "status": "processing",
        "vendor": "VEN-01",
        "ordered_on": "2025-03-13T13:50:31.740Z",
        "deliver_from": "2025-03-18T13:50:31.740Z",
        "deliver_to": "2025-03-23T13:50:31.740Z",
        "freight_terms": null,
        "payment_method": null,
        "payment_terms": null,
        "purchasing_entity": null,
        "delivery_party": null,
        "order_channel_id": 1,
        "currency_id": 1,
        "warehouse_id": 1,
        "finalised": null,
        "address_first_name": "Amazon",
        "address_last_name": "Inc.",
        "address_company": null,
        "address_line_one": "1 Amazon Rd",
        "address_line_two": null,
        "address_line_three": null,
        "address_postcode": "BH23 4FL",
        "address_town": "Christchurch",
        "address_county": "Dorset",
        "address_country_id": 231,
        "created": "2025-03-13T13:50:31.741Z",
        "modified": "2025-03-13T13:50:31.741Z"
    }
}

Marks a vendor order as confirmed.

Parameter Regular Expressions

Request Body

Ignored.

Return Type

VendorOrders

Scopes

This endpoint is only available for users with scope vendor-orders.

List Virtual Warehouses

GET /v1/warehouses/virtual

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/warehouses/virtual", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/warehouses/virtual', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/warehouses/virtual' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "name": "Amazon FBA",
            "description": "Stock shipped to Amazon.",
            "active": true,
            "api_managed_only": true,
            "location_creation_enabled": false,
            "created": "2019-11-25T14:52:56.000Z"
        }
    ]
}

Lists virtual warehouses.

Return Type

array<VirtualWarehouses>

Filters

Field Operators Value List URL
active EQUALS

Sortings

Results can be sorted by the following keys: name.

Scopes

This endpoint is only available for users with scope APP::MISC.

Create Virtual Warehouse

POST /v1/warehouses/virtual

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/warehouses/virtual?expand=*", [
    "body" => json_encode([
        "warehouse" => [
            "name" => "Amazon FBA",
            "description" => "Stock shipped to Amazon.",
            "api_managed_only" => true,
            "location_creation_enabled" => true,
        ],
        "location" => [
            "barcode" => "SHOWROOM",
            "sellable" => true,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/warehouses/virtual?expand=*', {
  warehouse: {
    name: "Amazon FBA",
    description: "Stock shipped to Amazon.",
    api_managed_only: true,
    location_creation_enabled: true,
  },
  location: {
    barcode: "SHOWROOM",
    sellable: true,
  },
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual?expand=*",
    body: {
        "warehouse": {
            "name": "Amazon FBA",
            "description": "Stock shipped to Amazon.",
            "api_managed_only": true,
            "location_creation_enabled": true
        },
        "location": {
            "barcode": "SHOWROOM",
            "sellable": true
        }
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/warehouses/virtual?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "warehouse": {
        "name": "Amazon FBA",
        "description": "Stock shipped to Amazon.",
        "api_managed_only": true,
        "location_creation_enabled": true
    },
    "location": {
        "barcode": "SHOWROOM",
        "sellable": true
    }
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "name": "Amazon FBA",
        "description": "Stock shipped to Amazon.",
        "active": true,
        "api_managed_only": true,
        "location_creation_enabled": false,
        "created": "2019-11-25T14:52:56.000Z",
        "locations": [
            {
                "id": 1,
                "barcode": "SHOWROOM",
                "virtual_warehouse_id": 1,
                "active": true,
                "sellable": true,
                "created": "2019-11-25T14:52:56.000Z"
            }
        ]
    }
}

Create virtual warehouses.

Request Body

CreateVirtualWarehouse

Return Type

VirtualWarehouses

Types for the Request Body

CreateVirtualWarehouse (root level)

Key Description Types Restrictions
warehouse Warehouse details. Warehouse required
not null
location Location details. CreateVirtualWarehouseLocation required
not null

CreateVirtualWarehouseLocation

Key Description Types Restrictions
barcode Identifier of the location the virtual warehouse starts out with. string required
not null
min length is 1
sellable Should the stock in this location be considered sellable? boolean required
not null

Warehouse

Key Description Types Restrictions
name Name. string required
not null
min length is 1
description Description. string required
not null
min length is 0
api_managed_only Is this warehouse managed by an API? boolean required
not null
location_creation_enabled Is creating additional locations allowed? boolean required
not null

Available expands

Field Return Type Description
locations array<VirtualWarehouseLocations> A location in a virtual warehouse.

Scopes

This endpoint is only available for users with scope APP::MISC.

Void Virtual Warehouse

PUT /v1/warehouses/virtual/:warehouseId/void

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/warehouses/virtual/1/void", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/warehouses/virtual/1/void', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual/1/void",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/warehouses/virtual/1/void' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "name": "Amazon FBA",
        "description": "Stock shipped to Amazon.",
        "active": true,
        "api_managed_only": true,
        "location_creation_enabled": false,
        "created": "2019-11-25T14:52:56.000Z"
    }
}

Deactivates a virtual warehouse.

Parameter Regular Expressions

Request Body

Ignored.

Return Type

VirtualWarehouses

Scopes

This endpoint is only available for users with scope APP::MISC.

List Locations

GET /v1/warehouses/virtual/:warehouseId/locations

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/warehouses/virtual/1/locations", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/warehouses/virtual/1/locations', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual/1/locations",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/warehouses/virtual/1/locations' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "barcode": "SHOWROOM",
            "virtual_warehouse_id": 1,
            "active": true,
            "sellable": true,
            "created": "2019-11-25T14:52:56.000Z"
        }
    ]
}

Lists virtual warehouse locations.

Parameter Regular Expressions

Return Type

array<VirtualWarehouseLocations>

Filters

Field Operators Value List URL
active EQUALS
barcode EQUALS, LIKE, NOT_LIKE, IN, NOT_IN
sellable EQUALS

Sortings

Results can be sorted by the following keys: barcode.

Scopes

This endpoint is only available for users with scope APP::MISC.

Create Location

POST /v1/warehouses/virtual/:warehouseId/locations

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("POST", "https://public-api.bladepro.io/v1/warehouses/virtual/1/locations", [
    "body" => json_encode([
        "barcode" => "SHOWROOM",
        "sellable" => true,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.post 'https://public-api.bladepro.io/v1/warehouses/virtual/1/locations', {
  barcode: "SHOWROOM",
  sellable: true,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "POST",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual/1/locations",
    body: {
        "barcode": "SHOWROOM",
        "sellable": true
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request POST 'https://public-api.bladepro.io/v1/warehouses/virtual/1/locations' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "barcode": "SHOWROOM",
    "sellable": true
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "barcode": "SHOWROOM",
        "virtual_warehouse_id": 1,
        "active": true,
        "sellable": true,
        "created": "2019-11-25T14:52:56.000Z"
    }
}

Create a location for a virtual warehouse.

Parameter Regular Expressions

Request Body

CreateVirtualWarehouseLocation

Return Type

VirtualWarehouseLocations

Types for the Request Body

CreateVirtualWarehouseLocation (root level)

Key Description Types Restrictions
barcode Identifier of the location the virtual warehouse starts out with. string required
not null
min length is 1
sellable Should the stock in this location be considered sellable? boolean required
not null

Scopes

This endpoint is only available for users with scope APP::MISC.

Void Virtual Warehouse Location

PUT /v1/warehouses/virtual/:warehouseId/locations/:locationId/void

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/void", [
    "body" => "{}",
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/void', {}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/void",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/void' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "barcode": "SHOWROOM",
        "virtual_warehouse_id": 1,
        "active": true,
        "sellable": true,
        "created": "2019-11-25T14:52:56.000Z"
    }
}

Deactivates a virtual warehouse location.

Parameter Regular Expressions

Request Body

Ignored.

Return Type

VirtualWarehouseLocations

Scopes

This endpoint is only available for users with scope APP::MISC.

List Virtual Stock

GET /v1/warehouses/virtual/stocks

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/warehouses/virtual/stocks?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/warehouses/virtual/stocks?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual/stocks?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/warehouses/virtual/stocks?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "virtual_warehouse_location_id": 1,
            "product_variation_id": 1,
            "quantity": 1000,
            "expiry_date": null,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "location": {
                "id": 1,
                "barcode": "SHOWROOM",
                "virtual_warehouse_id": 1,
                "active": true,
                "sellable": true,
                "created": "2019-11-25T14:52:56.000Z",
                "warehouse": {
                    "id": 1,
                    "name": "Amazon FBA",
                    "description": "Stock shipped to Amazon.",
                    "active": true,
                    "api_managed_only": true,
                    "location_creation_enabled": false,
                    "created": "2019-11-25T14:52:56.000Z"
                }
            },
            "product_variation": {
                "id": 1,
                "product_id": 1,
                "status": "active",
                "sku": "DEMO-SKU-01",
                "barcode": "0123456789012",
                "product_variation_type_id": 1,
                "discontinued_date": "2019-11-25T14:52:56.000Z",
                "despatch_instructions": "Always pack facing upwards.",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            }
        }
    ]
}

Lists virtual stock.

Return Type

array<VirtualStocks>

Filters

Field Operators Value List URL
quantity LESS_THAN, EQUALS, MORE_THAN
expiry_date LESS_THAN, MORE_THAN, ON_DATE
location.barcode EQUALS, LIKE, NOT_LIKE, IN, NOT_IN
location.virtual_warehouse_id IN
product_variation.sku LIKE, NOT_LIKE, IN

Available expands

Field Return Type Description
location VirtualWarehouseLocations A location in a virtual warehouse.
location.warehouse VirtualWarehouses Storages that are outside of BladePRO’s control, such as showrooms, or stock at Amazon’s warehouse.
product_variation ProductVariations Marketplace listable products’ data.

Scopes

This endpoint is only available for users with scope APP::MISC.

Adjust Virtual Stock - Delta

PUT /v1/warehouses/virtual/:warehouseId/locations/:locationId/stocks/:variationId/adjust

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/stocks/1/adjust", [
    "body" => json_encode([
        "quantity" => -10,
        "expiry_date" => null,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/stocks/1/adjust', {
  quantity: -10,
  expiry_date: nil,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/stocks/1/adjust",
    body: {
        "quantity": -10,
        "expiry_date": null
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/stocks/1/adjust' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "quantity": -10,
    "expiry_date": null
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "virtual_warehouse_location_id": 1,
        "product_variation_id": 1,
        "quantity": 1000,
        "expiry_date": null,
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z"
    }
}

Adjusts stock by a delta value.

Parameter Regular Expressions

Request Body

AdjustVirtualStockDelta

Return Type

VirtualStocks

Types for the Request Body

AdjustVirtualStockDelta (root level)

Key Description Types Restrictions
quantity Quantity to adjust the stock by. integer required
not null
not equals is 0
expiry_date Expiry date. date

Scopes

This endpoint is only available for users with scope APP::MISC.

Adjust Virtual Stock - Absolute

PUT /v1/warehouses/virtual/:warehouseId/locations/:locationId/stocks/:variationId/set

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/stocks/1/set", [
    "body" => json_encode([
        "quantity" => 1000,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/stocks/1/set', {
  quantity: 1000,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/stocks/1/set",
    body: {
        "quantity": 1000
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/warehouses/virtual/1/locations/1/stocks/1/set' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "quantity": 1000
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "id": 1,
        "virtual_warehouse_location_id": 1,
        "product_variation_id": 1,
        "quantity": 1000,
        "expiry_date": null,
        "created": "2019-11-25T14:52:56.000Z",
        "modified": "2019-11-25T14:52:56.000Z"
    }
}

Adjusts stock to an absolute value.

Parameter Regular Expressions

Request Body

AdjustVirtualStockAbsolute

Return Type

VirtualStocks

Types for the Request Body

AdjustVirtualStockAbsolute (root level)

Key Description Types Restrictions
quantity Quantity to set the value to. integer required
not null
min is 0
expiry_date Expiry date. date

Scopes

This endpoint is only available for users with scope APP::MISC.

Bulk Adjust Virtual Stock - Delta

PUT /v1/warehouses/virtual/:warehouseId/stocks/adjust

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/warehouses/virtual/1/stocks/adjust", [
    "body" => json_encode([
        [
            "location_id" => 1,
            "product_variation_id" => 1,
            "quantity" => -15,
            "expiry_date" => null,
        ],
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/warehouses/virtual/1/stocks/adjust', [
  {
    location_id: 1,
    product_variation_id: 1,
    quantity: -15,
    expiry_date: nil,
  },
], {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual/1/stocks/adjust",
    body: [
        {
            "location_id": 1,
            "product_variation_id": 1,
            "quantity": -15,
            "expiry_date": null
        }
    ],
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/warehouses/virtual/1/stocks/adjust' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '[
    {
        "location_id": 1,
        "product_variation_id": 1,
        "quantity": -15,
        "expiry_date": null
    }
]'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "affected": 15
    }
}

Adjust stock by a delta value.

Parameter Regular Expressions

Request Body

array<BulkAdjustVirtualStockDelta>

Return Type

BulkAdjustVirtualStockResult

Types for the Request Body

BulkAdjustVirtualStockDelta

Key Description Types Restrictions
location_id Virtual warehouse location ID. Required if the warehouse allows for multiple locations. integer not null
min is 1
product_variation_id Product variation ID. integer required
not null
min is 1
quantity Quantity to adjust the stock by. integer required
not null
not equals is 0
expiry_date Expiry date. date

Scopes

This endpoint is only available for users with scope APP::MISC.

Bulk Adjust Virtual Stock - Absolute

PUT /v1/warehouses/virtual/:warehouseId/stocks/set

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("PUT", "https://public-api.bladepro.io/v1/warehouses/virtual/1/stocks/set", [
    "body" => json_encode([
        "stocks" => [
            [
                "location_id" => 1,
                "product_variation_id" => 1,
                "quantity" => 1000,
                "expiry_date" => null,
            ],
        ],
        "set_skipped_skus_to_zero" => true,
    ]),
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.put 'https://public-api.bladepro.io/v1/warehouses/virtual/1/stocks/set', {
  stocks: [
    {
      location_id: 1,
      product_variation_id: 1,
      quantity: 1000,
      expiry_date: nil,
    },
  ],
  set_skipped_skus_to_zero: true,
}, {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "PUT",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/virtual/1/stocks/set",
    body: {
        "stocks": [
            {
                "location_id": 1,
                "product_variation_id": 1,
                "quantity": 1000,
                "expiry_date": null
            }
        ],
        "set_skipped_skus_to_zero": true
    },
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request PUT 'https://public-api.bladepro.io/v1/warehouses/virtual/1/stocks/set' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login' \
--data-raw '{
    "stocks": [
        {
            "location_id": 1,
            "product_variation_id": 1,
            "quantity": 1000,
            "expiry_date": null
        }
    ],
    "set_skipped_skus_to_zero": true
}'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": {
        "affected": 15
    }
}

Adjust stock to an absolute value.

Parameter Regular Expressions

Request Body

BulkAdjustVirtualStockAbsolute

Return Type

BulkAdjustVirtualStockResult

Types for the Request Body

BulkAdjustVirtualStockAbsolute (root level)

Key Description Types Restrictions
stocks Values to be set. array<Stock> required
not null
min count is 1
set_skipped_skus_to_zero Should unlisted products in the listed locations be set to 0 quantity? boolean required
not null

Stock

Key Description Types Restrictions
location_id Virtual warehouse location ID. Required if the warehouse allows for multiple locations. integer not null
min is 1
product_variation_id Product variation ID. integer required
not null
min is 1
quantity Quantity to set the stock to. integer required
not null
min is 0
expiry_date Expiry date. date

Scopes

This endpoint is only available for users with scope APP::MISC.

List Warehouses

GET /v1/warehouses

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/warehouses?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/warehouses?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/warehouses?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86",
        "paging": {
            "page": 1,
            "records": 1,
            "per_page": 250,
            "total_records": 1,
            "total_pages": 1
        }
    },
    "data": [
        {
            "id": 1,
            "name": "Christchurch",
            "short_code": "CHR",
            "latitude": 50.739492,
            "longitude": -1.734224,
            "country_id": 1,
            "active": true,
            "currency_id": 1,
            "virtual": false,
            "return_warehouse_id": 1,
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "currency": {
                "id": 1,
                "code": "GBP",
                "name": "Great British Pounds",
                "symbol": "£",
                "created": "2019-11-25T14:52:56.000Z",
                "modified": "2019-11-25T14:52:56.000Z"
            },
            "country": {
                "id": 1,
                "name": "United Kingdom",
                "iso_2": "GB",
                "iso_3": "GBR",
                "region_id": 1,
                "currency_id": 1,
                "block": "EU"
            }
        }
    ]
}

List all warehouses.

Return Type

array<Warehouses>

Available expands

Field Return Type Description
country Countries A country.
currency Currencies Currency data.

Scopes

This endpoint is only available for users with scope APP::MISC.

List Carton Label Types

GET /v1/warehouses/carton_label_types

<?php

// Instantiate a GuzzleHttp client
$client = new \GuzzleHttp\Client();

// Make the request
$response = $client->request("GET", "https://public-api.bladepro.io/v1/warehouses/carton_label_types?expand=*", [
    "headers" => [
        "Content-Type" => "application/json",
        "Access-Token" => "my-token-from-login",
    ],
]);

// Process the response
$responseBody = json_decode($response->getBody(), true);
require 'rest-client'
require 'json'

# Make the request
response = RestClient.get 'https://public-api.bladepro.io/v1/warehouses/carton_label_types?expand=*', {
  access_token: 'my-token-from-login',
  content_type: :json,
  accept: :json
}

# Process the response
puts response.body
// Require the node HTTP module
var request = require("request");

// Make the request
request({
    method: "GET",
    json: true,
    uri: "https://public-api.bladepro.io/v1/warehouses/carton_label_types?expand=*",
    headers: {
        "Access-Token": "my-token-from-login",
        "Content-Type": "application/json",
    },
    (error, response, body) => {
        // Process the response
        console.log(body);
    },
});
# Make the request
curl --location --request GET 'https://public-api.bladepro.io/v1/warehouses/carton_label_types?expand=*' \
--header 'Content-Type: application/json' \
--header 'Access-Token: my-token-from-login'

Example result:

{
    "meta": {
        "request_reference": "21hlrfsj5-c893v86"
    },
    "data": [
        {
            "id": 1,
            "name": "Nordstrom",
            "active": 1,
            "carton_label_type_references": [
                {
                    "name": "Carrier",
                    "code": "CARR",
                    "type": "text",
                    "validation_pattern": "[a-zA-Z0-9_ -]*"
                }
            ]
        }
    ]
}

Lists carton label types.

Return Type

array<CartonLabelTypes>

Available expands

Field Return Type Description
carton_label_type_references array<CartonLabelTypeReferences> References for carton label types.

Scopes

This endpoint is only available for users with scope APP::ORDERS::READ.

ORDER:CANCELLED

Request Body

Example payload:

{
    "id": 1049789,
    "status": "cancelled",
    "date_placed": "2019-11-25T14:52:56.000Z",
    "source": "How the order was created.",
    "order": {
        "id": 1234567,
        "reference": "#154254",
        "status": "open",
        "order_channel_id": 321,
        "brand_id": 5,
        "currency": {
            "id": 1,
            "name": "British Pound",
            "code": "GBP",
            "symbol": "£"
        },
        "channel": {
            "id": 1,
            "organisation_id": 1,
            "name": "Artplants",
            "outbound_email": "sales.example@i-fulfilment.co.uk"
        }
    },
    "warehouse": {
        "id": 1,
        "name": "Christchurch",
        "short_code": "CHR",
        "country": {
            "id": 1,
            "name": "United Kingdom",
            "iso_2": "GB",
            "iso_3": "GBR"
        }
    },
    "shipping_address": {
        "first_name": "Support",
        "last_name": "Team",
        "company": "ACME LTD",
        "email": "support.team@i-fulfilment.co.uk",
        "country": {
            "id": 1,
            "name": "United Kingdom",
            "iso_2": "GB",
            "iso_3": "GBR"
        }
    },
    "attributes": [
        {
            "name": "Marketplace",
            "value": "222-99999999-9999999"
        }
    ],
    "tags": [
        {
            "id": 1,
            "name": "Processed",
            "shortcode": "PROCESSED"
        }
    ]
}

WebhookOrderCancelled

ORDER:CONFIRMED

Request Body

Example payload:

{
    "id": 1049789,
    "status": "awaiting_picking",
    "date_placed": "2019-11-25T14:52:56.000Z",
    "source": "How the order was created.",
    "order": {
        "id": 1234567,
        "reference": "#154254",
        "status": "open",
        "order_channel_id": 321,
        "brand_id": 5,
        "currency": {
            "id": 1,
            "name": "British Pound",
            "code": "GBP",
            "symbol": "£"
        }
    },
    "warehouse": {
        "id": 1,
        "name": "Christchurch",
        "short_code": "CHR",
        "country": {
            "id": 1,
            "name": "United Kingdom",
            "iso_2": "GB",
            "iso_3": "GBR"
        }
    },
    "shipping_address": {
        "first_name": "Support",
        "last_name": "Team",
        "company": "ACME LTD",
        "email": "support.team@i-fulfilment.co.uk",
        "country": {
            "id": 1,
            "name": "United Kingdom",
            "iso_2": "GB",
            "iso_3": "GBR"
        }
    },
    "attributes": [
        {
            "name": "Marketplace",
            "value": "222-99999999-9999999"
        }
    ],
    "tags": [
        {
            "id": 1,
            "name": "Processed",
            "shortcode": "PROCESSED"
        }
    ]
}

WebhookOrderConfirmed

ORDER:CREATED

Request Body

Example payload:

{
    "id": 1049789,
    "status": "awaiting_despatch",
    "date_placed": "2019-11-25T14:52:56.000Z",
    "source": "How the order was created.",
    "order": {
        "id": 1234567,
        "reference": "#154254",
        "status": "open",
        "channel": {
            "id": 321,
            "name": "Demo Channel",
            "short_code": "DEMO"
        },
        "brand": {
            "id": 5,
            "name": "Demo Brand"
        },
        "currency": {
            "id": 1,
            "name": "British Pound",
            "code": "GBP",
            "symbol": "£"
        }
    },
    "warehouse": {
        "id": 1,
        "name": "Christchurch",
        "short_code": "CHR",
        "country": {
            "id": 1,
            "name": "United Kingdom",
            "iso_2": "GB",
            "iso_3": "GBR"
        }
    },
    "shipping_address": {
        "first_name": "Support",
        "last_name": "Team",
        "company": "ACME LTD",
        "email": "support.team@i-fulfilment.co.uk",
        "country": {
            "id": 1,
            "name": "United Kingdom",
            "iso_2": "GB",
            "iso_3": "GBR"
        }
    },
    "lines": [
        {
            "id": 3450345,
            "transaction_sku": "GREEN-BALL",
            "quantity": 4,
            "net_unit_principal": 7.25,
            "net_unit_commission": 0.15,
            "status": "active",
            "created": "2019-11-25T14:52:56.000Z",
            "modified": "2019-11-25T14:52:56.000Z",
            "variation": {
                "id": 1,
                "product_id": 1,
                "sku": "DEMO-SKU-01"
            }
        }
    ],
    "attributes": [
        {
            "name": "Marketplace",
            "value": "222-99999999-9999999"
        }
    ],
    "tags": [
        {
            "id": 1,
            "name": "Processed",
            "shortcode": "PROCESSED"
        }
    ]
}

WebhookOrderCreated

ORDER:DESPATCHED

Request Body

Example payload:

{
    "id": 1049789,
    "status": "despatched",
    "date_placed": "2019-11-25T14:52:56.000Z",
    "despatch_date": "2019-11-25T14:52:56.000Z",
    "source": "How the order was created.",
    "order": {
        "id": 1234567,
        "reference": "#154254",
        "status": "open",
        "order_channel_id": 321,
        "brand_id": 5,
        "currency": {
            "id": 1,
            "name": "British Pound",
            "code": "GBP",
            "symbol": "£"
        },
        "channel": {
            "id": 1,
            "organisation_id": 1,
            "name": "Artplants",
            "outbound_email": "GBP"
        }
    },
    "warehouse": {
        "id": 1,
        "name": "Christchurch",
        "short_code": "CHR",
        "country": {
            "id": 1,
            "name": "United Kingdom",
            "iso_2": "GB",
            "iso_3": "GBR"
        }
    },
    "shipping_address": {
        "first_name": "Support",
        "last_name": "Team",
        "company": "ACME LTD",
        "email": "support.team@i-fulfilment.co.uk",
        "country": {
            "id": 1,
            "name": "United Kingdom",
            "iso_2": "GB",
            "iso_3": "GBR"
        }
    },
    "attributes": [
        {
            "name": "Marketplace",
            "value": "222-99999999-9999999"
        }
    ],
    "despatch_attributes": [
        {
            "sku": "DEMO-SKU-01",
            "attribute_name": "Colour",
            "attribute_value": "Red",
            "order_goodsout_line_id": 12234,
            "order_goodsout_line_item_id": 12234
        }
    ],
    "tags": [
        {
            "id": 1,
            "name": "Processed",
            "shortcode": "PROCESSED"
        }
    ],
    "shipping": [
        {
            "courier_name": "Royal Mail",
            "service_name": "ExPak1",
            "tracking": [
                {
                    "tracking_number": "46513135648745",
                    "tracking_url": "http://www.royalmail.com/trackdetails?trackNumber=46513135648745"
                }
            ]
        }
    ]
}

WebhookOrderDespatched

VENDOR_ORDER:FINALISED

Request Body

Example payload:

{
    "id": 123,
    "code": "QWER123ASD",
    "vendor": "VEN-01",
    "status": "confirmed",
    "delivery_party": null,
    "address_first_name": "Amazon",
    "address_last_name": "Inc.",
    "address_company": null,
    "address_line_one": "1 Amazon Rd",
    "address_line_two": null,
    "address_line_three": null,
    "address_postcode": "BH23 4FL",
    "address_town": "Christchurch",
    "address_county": "Dorset",
    "finalised": "2019-11-25T14:52:56.000Z",
    "order_channel": {
        "id": 321,
        "name": "Demo Channel"
    },
    "country": {
        "id": 231,
        "name": "United Kingdom",
        "iso_2": "GB",
        "iso_3": "GBR"
    },
    "selected_warehouse": {
        "id": 1,
        "name": "Christchurch",
        "country": {
            "id": 231,
            "name": "United Kingdom",
            "iso_2": "GB",
            "iso_3": "GBR"
        }
    },
    "currency": {
        "id": 1,
        "name": "British Pound",
        "code": "GBP",
        "symbol": "£"
    },
    "items": [
        {
            "id": 4567,
            "product_variation_id": 687,
            "sku": "MODEL_309845",
            "submitted_quantity": 1000,
            "accepted_quantity": 850,
            "unit_cost": 12.34,
            "status": "accepted_in_stock",
            "expected_delivery_date": "2019-11-25"
        }
    ]
}

WebhookVendorOrderFinalised