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.

MethodActionDescription
GETReadRetrieve a list of records, or a single record
POSTCreateAdd a new record
PUTUpdateUpdate an existing record
DELETEDeleteRemove 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 CodeNameMeaning
400Bad RequestYour request is incorrectly formatted
401UnauthorizedYour API key is wrong
403ForbiddenYou do not have access to the specified endpoint
404Not FoundThe specified endpoint could not be found
500Internal Server ErrorThere is a problem with the API, please try again later

Scopes

The BladePRO API uses the following permission scopes:

ModuleScopeDescription
OrdersAPP::ORDERS::READView READ ONLY order records
OrdersAPP::ORDERS::MANAGERead, create, update and delete order records
ProductsAPP::PRODUCTS::READView READ ONLY product records
ProductsAPP:PRODUCTS::MANAGERead, create, update and delete product records
Purchase OrdersAPP::PURCHASE-ORDERS::READView READ ONLY purchase order records
Purchase OrdersAPP::PURCHASE-ORDERS::MANAGERead, create, update and delete purchase order records
ReturnsAPP::RETURNS::READView READ ONLY return records
ReturnsAPP::RETURNS::MANAGERead, create, update and delete return records
VendorsAPP::VENDORS-ORDERS::READView READ ONLY vendor records
VendorsAPP::VENDORS-ORDERS::MANAGERead, 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:

OperatorAvailability
EQUALSstrings, numbers, enums, booleans
NOT_EQUALSstrings, numbers, enums, booleans
INstrings, numbers, enums
NOT_INstrings, numbers, enums
LESS_THANstrings, numbers, dates
MORE_THANstrings, numbers, dates
LIKEstrings
NOT_LIKEstrings
ON_DATEdates

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.