Liftoff

Liftoff Documentation

Beta status

 

The Liftoff API is currently in beta status.

Resources and responses are subject to change.

Authentication

 

Authentication to the Liftoff API is handled by providing the following with every API request:

  1. Your site's subdomain as your Basic Auth username
  2. Your admin user's unique API key as your Basic Auth password

You can find your site's subdomain by logging in to My Liftoff and going to Site Settings > Domains.

You can generate, view, or regenerate your admin user's API key by logging in to My Liftoff and going to Account Management > Admins > Edit.

Treat your API key as a password. Keep it secret.

API keys should never be included in client side code or anywhere else that is publicly accessible.

As an extra precaution, we strongly recommend regenerating API keys on a regular basis.

Authorization

 

Access to individual Liftoff API resources is restricted based on your admin user's permissions. For example, the Get order resource, which retrieves an order object, requires the View Orders permission. If your admin user is not assigned to a role with the View Orders permission, then using your API key to make a Get order request will result in a 403 Forbidden response.

Role permissions are managed via Account Management > Roles on My Liftoff. Admin user role assignments are managed via Account Management > Admins. If you do not have access to role or admin management, contact the owner of your Liftoff site.

Exploring the Liftoff API

 

Our interactive documentation lets you explore Liftoff API resources in real time. Click Try It to send live requests to the Liftoff API.

Per our Authentication specs, you will be prompted to specify a username (your site's subdomain) and password (your API key) for each request.

Our interactive documentation acts upon your production data.

Adding, updating, and deleting resources via our interactive documentation will add, update, and delete production data for your Liftoff shop.

Making Liftoff API requests

 

In order to make Liftoff API requests from your code, you will need to provide your Basic Auth credentials in an Authorization header with your API request. Follow these steps to generate the value for this header:

  1. Concatenate your username (your site's subdomain), a colon, and your password (your API key); e.g.:
    mysite:2cde4235-84dc-4cb2-ac14-1af134253fe5
  2. Base64-encode the resulting string; e.g.:
    bXlzaXRlOjJjZGU0MjM1LTg0ZGMtNGNiMi1hYzE0LTFhZjEzNDI1M2ZlNQ==
  3. Prepend "Basic " to the base64-encoded value; e.g.:
    Basic bXlzaXRlOjJjZGU0MjM1LTg0ZGMtNGNiMi1hYzE0LTFhZjEzNDI1M2ZlNQ==

In the above example, the final Authorization header would be:

Authorization: Basic bXlzaXRlOjJjZGU0MjM1LTg0ZGMtNGNiMi1hYzE0LTFhZjEzNDI1M2ZlNQ==

Response codes

 

The Liftoff API is a RESTful API. As such, it responds to requests with standard HTTP status codes, along with a JSON body, as appropriate. Common HTTP status codes used by the Liftoff API include:

Code
Message
Description

200

OK

The request succeeded.

201

Created

The request succeeded and resulted in a new resource being created.

400

Bad Request

The request could not be understood by the server due to malformed syntax.

401

Unauthorized

Authentication is required and failed.

403

Forbidden

The authenticated user does not have permission to fulfill the request.

404

Not Found

The requested resource could not be found.

405

Method Not Supported

The specified method (e.g., GET, POST, PATCH, etc.) is not supported by the resource.

500

Internal Server Error

The server encountered an unexpected error.

Error responses

 

If an API request results in an error, the response will contain the appropriate HTTP status code, along with a JSON body containing an array of Error objects describing each error that occurred.

Properties

Name
Type
Description

status

int

The HTTP status code that corresponds to the error. Generally this will be the same as the HTTP status code of the response. If multiple errors are being returned, status values for each individual error may vary.

title

string

A brief statement of the error that occurred.

detail

string

If applicable, a detailed statement of the error that occurred.

{
  "errors": [
    {
      "status": 404,
      "title": "Order not found.",
      "detail": null
    }
  ]
}
{
  "errors": [
    {
      "status": 400,
      "title": "Status not valid.",
      "detail": "Status must be one of the following values: InProcess, InProduction, ReadyToShip, Shipped, Canceled."
    },
    {
      "status": 400,
      "title": "Actual ship date not valid.",
      "detail": null
    }
  ]
}

Success responses

 

If an API request results in success, the response will contain an HTTP status code 200 (OK). The response may also contain a JSON body containing one or more of the following top-level members:

Member
Description

data

The data returned by the resource.

meta

Descriptive information about the data being returned. For example, if the data is an array, the meta object may contain a count property with the number of elements in the array.

The structure of the JSON body and the properties of the data and meta objects will vary for each resource. See that resource's documentation for details.

{
  "data": [
    {
      "id": 5163,
      "orderId": 1032830,
      "shipmentNumber": 1
      ...
    },
    {
      "id": 5169,
      "orderId": 1032830,
      "shipmentNumber": 2
      ...
    }
  ],
  "meta": {
    "count": 2
  }
}

Pagination

 

If a resource returns an array of data, then you can specify two optional query parameters to paginate results:

Parameter
Type
Description

page

integer

Page number to return. Defaults to 1.

limit

integer

Number of records per page. Defaults to 50. Maximum value is 200.

In addition, the meta object in the response body will contain the following properties:

Name
Type
Description

count

integer

Number of records in the response.

total

integer

Total number of available records.

totalPages

integer

Total number of available pages.

page

integer

Returned page.

limit

integer

Number of records per page.

User resources

 

A User represents an end user of your Liftoff shop.

Properties

Name
Type
Description

id

int

The ID of the user.

email

string

The email of the user. The user's email also serves as the user's username for login purposes.

name

string

The full name of the user.

createDate

datetime

The date the user was created.

lastModifiedDate

datetime

The date the user was most recently modified.

lastLoginDate

datetime

The date the user most recently logged in.

isActive

boolean

Flag that indicates whether this is an active account.

isGuest

boolean

Flag that indicates whether this is a guest account.

currencyCode

string

The 3-character currency code the user has selected.

defaultBilling

LoginAddress

The default billing address for the user.

defaultShipping

LoginAddress

The default shipping address for the user.

Get users

Returns: Array of User objects
Permission required: View Users

Note: Retrieves both active and inactive users.

 

Basic Auth

 Authentication is required for this endpoint.
gethttps://my.liftoff.shop/api/v1/users
curl --request GET \
  --url https://my.liftoff.shop/api/v1/users \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'GET',
  url: 'https://my.liftoff.shop/api/v1/users',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/users")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://my.liftoff.shop/api/v1/users");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/users"

headers = {'content-type': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Query Params

page
int32
limit
int32

Headers

Content-Type
string
required
 

Get user

Returns: User object
Permission required: View Users

Note: Retrieves both active and inactive users.

 

Basic Auth

 Authentication is required for this endpoint.
gethttps://my.liftoff.shop/api/v1/users/userId
curl --request GET \
  --url https://my.liftoff.shop/api/v1/users/userId \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'GET',
  url: 'https://my.liftoff.shop/api/v1/users/userId',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/users/userId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://my.liftoff.shop/api/v1/users/userId");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/users/userId"

headers = {'content-type': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

userId
int32
required

Headers

Content-Type
string
required
 

Add user

Returns: New User object
Permission required: Add Users

 

Basic Auth

 Authentication is required for this endpoint.
posthttps://my.liftoff.shop/api/v1/users
curl --request POST \
  --url https://my.liftoff.shop/api/v1/users \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'POST',
  url: 'https://my.liftoff.shop/api/v1/users',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/users")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://my.liftoff.shop/api/v1/users");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/users"

headers = {'content-type': 'application/json'}

response = requests.request("POST", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Body Params

email
string
required
password
string
required
name
string
currencyCode
string

Defaults to the default currency code for your Liftoff shop.

isActive
boolean

Headers

Content-Type
string
required
 

Update user

Returns: Updated User object
Permission required: Edit Users

 

Basic Auth

 Authentication is required for this endpoint.
patchhttps://my.liftoff.shop/api/v1/users/userId
curl --request PATCH \
  --url https://my.liftoff.shop/api/v1/users/userId \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'PATCH',
  url: 'https://my.liftoff.shop/api/v1/users/userId',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/users/userId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PATCH", "https://my.liftoff.shop/api/v1/users/userId");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/users/userId"

headers = {'content-type': 'application/json'}

response = requests.request("PATCH", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

userId
int32
required

Body Params

email
string
password
string
name
string
currencyCode
string
isActive
boolean

Headers

Content-Type
string
required
 

UserAddress resources

 

A UserAddress represents an address that belongs to an end user of your Liftoff shop.

Properties

Name
Type
Description

id

int

The ID of the user address.

userId

int

The ID of the user that the address belongs to.

type

string

The type of address. Valid values are Billing and Shipping.

isDefault

boolean

Flag that indicates whether this is the user's default address for the specified type.

address

Address

The address itself. This is an Address object with its own properties (name, address 1, address 2, city, etc.).

Get user addresses

Returns: Array of UserAddress objects
Permission required: View Users

 

Basic Auth

 Authentication is required for this endpoint.
gethttps://my.liftoff.shop/api/v1/users/userId/addresses/type
curl --request GET \
  --url https://my.liftoff.shop/api/v1/users/userId/addresses/type \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'GET',
  url: 'https://my.liftoff.shop/api/v1/users/userId/addresses/type',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/users/userId/addresses/type")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://my.liftoff.shop/api/v1/users/userId/addresses/type");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/users/userId/addresses/type"

headers = {'content-type': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

userId
int32
required
type
string
required

Valid values: Billing; Shipping.

Query Params

page
int32
limit
int32

Headers

Content-Type
string
required
 

Get user address

Returns: UserAddress object
Permission required: View Users

 

Basic Auth

 Authentication is required for this endpoint.
gethttps://my.liftoff.shop/api/v1/users/userId/addresses/userAddressId
curl --request GET \
  --url https://my.liftoff.shop/api/v1/users/userId/addresses/userAddressId \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'GET',
  url: 'https://my.liftoff.shop/api/v1/users/userId/addresses/userAddressId',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/users/userId/addresses/userAddressId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://my.liftoff.shop/api/v1/users/userId/addresses/userAddressId");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/users/userId/addresses/userAddressId"

headers = {'content-type': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

userId
int32
required
userAddressId
int32
required

Headers

Content-Type
string
required
 

Add user address

Returns: New UserAddress object
Permission required: Edit Users

 

Basic Auth

 Authentication is required for this endpoint.
posthttps://my.liftoff.shop/api/v1/users/userId/addresses
curl --request POST \
  --url https://my.liftoff.shop/api/v1/users/userId/addresses \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'POST',
  url: 'https://my.liftoff.shop/api/v1/users/userId/addresses',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/users/userId/addresses")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://my.liftoff.shop/api/v1/users/userId/addresses");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/users/userId/addresses"

headers = {'content-type': 'application/json'}

response = requests.request("POST", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Body Params

type
string
required

Valid values: Billing; Shipping.

isDefault
boolean

Note: Only one address of a given type can have an isDefault value of true. Setting isDefault to true for a new address will set isDefault to false for all other addresses of that type.

name
string
required
attention
string
address1
string
required
address2
string
city
string

Note: If the country supports postal code lookups, then this value will automatically be overridden by the city derived from the postal code.

state
string

Note: If the country supports postal code lookups, then this value will automatically be overridden by the state derived from the postal code.

postalCode
string
required
country
string

Defaults to the default country code for your Liftoff shop.

phone
string

Headers

Content-Type
string
required
 

Update user address

Returns: Updated UserAddress object
Permission required: Edit Users

 

Basic Auth

 Authentication is required for this endpoint.
patchhttps://my.liftoff.shop/api/v1/users/userId/addresses/userAddressId
curl --request PATCH \
  --url https://my.liftoff.shop/api/v1/users/userId/addresses/userAddressId \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'PATCH',
  url: 'https://my.liftoff.shop/api/v1/users/userId/addresses/userAddressId',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/users/userId/addresses/userAddressId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PATCH", "https://my.liftoff.shop/api/v1/users/userId/addresses/userAddressId");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/users/userId/addresses/userAddressId"

headers = {'content-type': 'application/json'}

response = requests.request("PATCH", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

userId
int32
required
userAddressId
int32
required

Body Params

isDefault
boolean

Note: Only one address of a given type can have an isDefault value of true. Changing isDefault to true will set isDefault to false for all other addresses of that type.

name
string
attention
string
address1
string
address2
string
city
string

Note: If the country supports postal code lookups, then this value will automatically be overridden by the city derived from the postal code.

state
string

Note: If the country supports postal code lookups, then this value will automatically be overridden by the state derived from the postal code.

postalCode
string
country
string
phone
string

Headers

Content-Type
string
required
 

Delete user address

Returns: No body
Permission required: Edit Users

 

Basic Auth

 Authentication is required for this endpoint.
deletehttps://my.liftoff.shop/api/v1/users/userId/addresses/userAddressId
curl --request DELETE \
  --url https://my.liftoff.shop/api/v1/users/userId/addresses/userAddressId \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'DELETE',
  url: 'https://my.liftoff.shop/api/v1/users/userId/addresses/userAddressId',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/users/userId/addresses/userAddressId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("DELETE", "https://my.liftoff.shop/api/v1/users/userId/addresses/userAddressId");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/users/userId/addresses/userAddressId"

headers = {'content-type': 'application/json'}

response = requests.request("DELETE", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

userId
int32
required
userAddressId
int32
required

Headers

Content-Type
string
required
 

Product resources

 

A Product represents a product on your Liftoff shop.

Note that a Product may have multiple ProductVariants with different Option values.

For example, you may have a Product on your Liftoff shop named Gel-Ink Pen. That Product may have an Option for Color, and individual ProductVariants for Black Gel-Ink Pen, Blue Gel-Ink Pen, and Red Gel-Ink Pen.

Properties

Name
Type
Description

id

int

The ID of the product.

type

string

The type of product. Valid values are Product (for standard products) and Bundle (for bundles of products).

code

string

The code for the product. Maximum length is 35 characters. Codes may contain letters, numbers, and hyphens.

name

string

The name of the product. Displayed in product listings and search results.

description

string

A brief description of the product. Displayed in product listings and search results.

isPublished

boolean

Flag that indicates whether the product is active on your Liftoff shop.

urlPath

string

The URL path for the product's landing page. The URL path does not include http://, your domain name, or a leading slash.

title

string

The title of the product's landing page.

pageText

string

The HTML that appears in the content area of your product's landing page.

searchTerms

string

Comma-delimited list of search terms for the product. Must contain only letters, numbers, hyphens, and spaces. These terms are used by your Liftoff site's search feature. They do not impact searches conducted by external search engines such as Google.

metaDescription

string

Content for the product landing page's meta description tag. This is an optional value for SEO purposes. Maximum length is 250 characters, but most search engines truncate this value to 150-160 characters.

metaKeywords

string

Content for the product landing page's meta keywords tag. This is an optional value for SEO purposes. Place a comma between each keyword.

trackInventory

boolean

Flag that indicates whether to enable inventory tracking for the product's SKUs.

defaultOnHand

int

The default on hand quantity to assign to new variants of this product.

defaultParLevel

int

The default par level to assign to new variants of this product.

displayStockLevel

boolean

Flag that indicates whether to display the current stock level to users. Not applicable if trackInventory is false.

allowOutOfStockOrders

boolean

Flag that indicates whether to allow ordering if the stock level is 0. Not applicable if trackInventory is false.

requireBudget

boolean

Flag that indicates whether a budget or gift card is required to order this product.

productSelectionType

string

Valid values are Standard and Cascade. If the product has multiple SKUs, the product selection type specifies whether to present all option dropdowns to the user at once (Standard), or to step the user through selecting one option at a time (Cascade).

Get products

Returns: Array of Product objects
Permission required: View Products

 

Basic Auth

 Authentication is required for this endpoint.
gethttps://my.liftoff.shop/api/v1/products
curl --request GET \
  --url https://my.liftoff.shop/api/v1/products \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'GET',
  url: 'https://my.liftoff.shop/api/v1/products',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/products")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://my.liftoff.shop/api/v1/products");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/products"

headers = {'content-type': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Query Params

page
int32
limit
int32

Headers

Content-Type
string
required
 

Get product

Returns: Product object
Permission required: View Products

 

Basic Auth

 Authentication is required for this endpoint.
gethttps://my.liftoff.shop/api/v1/products/productId
curl --request GET \
  --url https://my.liftoff.shop/api/v1/products/productId \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'GET',
  url: 'https://my.liftoff.shop/api/v1/products/productId',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/products/productId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://my.liftoff.shop/api/v1/products/productId");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/products/productId"

headers = {'content-type': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

productId
int32
required

Headers

Content-Type
string
required
 

Add product

Returns: New Product object
Permission required: Add Products

 

Basic Auth

 Authentication is required for this endpoint.
posthttps://my.liftoff.shop/api/v1/products
curl --request POST \
  --url https://my.liftoff.shop/api/v1/products \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'POST',
  url: 'https://my.liftoff.shop/api/v1/products',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/products")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://my.liftoff.shop/api/v1/products");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/products"

headers = {'content-type': 'application/json'}

response = requests.request("POST", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Body Params

code
string
required
name
string
required
description
string
isPublished
boolean
urlPath
string
required
title
string
required
pageText
string
searchTerms
string
metaDescription
string
metaKeywords
string
trackInventory
boolean
defaultOnHand
int32
defaultParLevel
int32
displayStockLevel
boolean
allowOutOfStockOrders
boolean
requireBudget
boolean
productSelectionType
string

Valid values: Standard; Cascade.

Headers

Content-Type
string
required
 

Update product

Returns: Updated Product object
Permission required: Edit Products

 

Basic Auth

 Authentication is required for this endpoint.
patchhttps://my.liftoff.shop/api/v1/products/productId
curl --request PATCH \
  --url https://my.liftoff.shop/api/v1/products/productId \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'PATCH',
  url: 'https://my.liftoff.shop/api/v1/products/productId',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/products/productId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PATCH", "https://my.liftoff.shop/api/v1/products/productId");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/products/productId"

headers = {'content-type': 'application/json'}

response = requests.request("PATCH", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

productId
int32
required

Body Params

code
string
name
string
description
string
isPublished
boolean
urlPath
string
title
string
pageText
string
searchTerms
string
metaDescription
string
metaKeywords
string
trackInventory
boolean
defaultOnHand
int32
defaultParLevel
int32
displayStockLevel
boolean
allowOutOfStockOrders
boolean
requireBudget
boolean
productSelectionType
string

Valid values: Standard; Cascade.

Headers

Content-Type
string
required
 

Delete product

Returns: No body
Permission required: Delete Products

 

Basic Auth

 Authentication is required for this endpoint.
deletehttps://my.liftoff.shop/api/v1/products/productId
curl --request DELETE \
  --url https://my.liftoff.shop/api/v1/products/productId \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'DELETE',
  url: 'https://my.liftoff.shop/api/v1/products/productId',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/products/productId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("DELETE", "https://my.liftoff.shop/api/v1/products/productId");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/products/productId"

headers = {'content-type': 'application/json'}

response = requests.request("DELETE", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

productId
int32
required

Headers

Content-Type
string
required
 

ProductVariant resources

 

A ProductVariant represents an individual product variant on your Liftoff shop.

See Product resources for details on the relationship between Products and ProductVariants.

Properties

Name
Type
Description

id

int

The ID of the product variant.

productId

int

The ID of the product that the variant belongs to.

sku

string

The SKU for the product variant. Maximum length is 75 characters. SKUs may contain letters, numbers, hyphens, underscores, number signs, and spaces. The same SKU may be assigned to multiple product variants.

isPublished

boolean

Flag that indicates whether the product variant is active on your Liftoff shop.

variantName

string

The name of the product variant. Displayed on product landing pages and in users' carts.

variantDescription

string

A brief description of the product variant. Displayed on product landing pages.

restrictQuantities

boolean

If this flag is true, a dropdown containing only the product variant's price breaks will be presented for quantity entry. If false, a free-form text field will be presented for quantity entry.

quantityIncrement

int

If this value is 0, then available quantities will include only the product variant's price breaks. If non-0, then available quantities will be incremented by that value between each price break.

maxQuantity

int

The maximum quantity allowed for ordering. If null, then no maximum will be enforced.

unitOfMeasurement

string

The unit in which the product variant is sold. Used for calculating pricing and shipping rates. Valid values are Ea, M, L, Ct, Pkg, and Bx.

weightPerUnit

decimal

The weight of each unit of your product, in pounds. IMPORTANT: If this value is null, then your site's first shipping option will be $0, and all other shipping options will be disabled.

handlingFeePerCarton

decimal

The handling fee for each shipment, in USD. If provided, this value is added to the shipping charges for the order.

createDate

datetime

The date the product variant was created.

lastModifiedDate

datetime

The date the product variant was most recently modified.

template

Template

The template used for product configuration. Not applicable to static products.

Get product variants

Returns: Array of ProductVariant objects
Permission required: View Products

 

Basic Auth

 Authentication is required for this endpoint.
gethttps://my.liftoff.shop/api/v1/products/productId/variants
curl --request GET \
  --url https://my.liftoff.shop/api/v1/products/productId/variants \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'GET',
  url: 'https://my.liftoff.shop/api/v1/products/productId/variants',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/products/productId/variants")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://my.liftoff.shop/api/v1/products/productId/variants");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/products/productId/variants"

headers = {'content-type': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

productId
int32
required

Headers

Content-Type
string
required
 

Get product variant

Returns: ProductVariant object
Permission required: View Products

 

Basic Auth

 Authentication is required for this endpoint.
gethttps://my.liftoff.shop/api/v1/products/productId/variants/productVariantId
curl --request GET \
  --url https://my.liftoff.shop/api/v1/products/productId/variants/productVariantId \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'GET',
  url: 'https://my.liftoff.shop/api/v1/products/productId/variants/productVariantId',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/products/productId/variants/productVariantId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://my.liftoff.shop/api/v1/products/productId/variants/productVariantId");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/products/productId/variants/productVariantId"

headers = {'content-type': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

productId
int32
required
productVariantId
int32
required

Query Params

page
int32
limit
int32

Headers

Content-Type
string
required
 

Update product variant

Returns: Updated ProductVariant object
Permission required: Edit Products

 

Basic Auth

 Authentication is required for this endpoint.
patchhttps://my.liftoff.shop/api/v1/products/productId/variants/productVariantId
curl --request PATCH \
  --url https://my.liftoff.shop/api/v1/products/productId/variants/productVariantId \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'PATCH',
  url: 'https://my.liftoff.shop/api/v1/products/productId/variants/productVariantId',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/products/productId/variants/productVariantId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PATCH", "https://my.liftoff.shop/api/v1/products/productId/variants/productVariantId");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/products/productId/variants/productVariantId"

headers = {'content-type': 'application/json'}

response = requests.request("PATCH", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

productId
int32
required
productVariantId
int32
required

Body Params

sku
string
isPublished
boolean
variantName
string
variantDescription
string
restrictQuantities
boolean
quantityIncrement
int32
maxQuantity
int32
unitOfMeasurement
string

Valid values: Ea; M; L; Ct; Pkg; Bx.

weightPerUnit
double
handlingFeePerCarton
double
templateId
int32

Headers

Content-Type
string
required
 

Delete product variant

Returns: No body
Permission required: Edit Products

 

Basic Auth

 Authentication is required for this endpoint.
deletehttps://my.liftoff.shop/api/v1/products/productId/variants/productVariantId
curl --request DELETE \
  --url https://my.liftoff.shop/api/v1/products/productId/variants/productVariantId \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'DELETE',
  url: 'https://my.liftoff.shop/api/v1/products/productId/variants/productVariantId',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/products/productId/variants/productVariantId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Delete.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("DELETE", "https://my.liftoff.shop/api/v1/products/productId/variants/productVariantId");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/products/productId/variants/productVariantId"

headers = {'content-type': 'application/json'}

response = requests.request("DELETE", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

productId
int32
required

Headers

Content-Type
string
required
 

Template resources

 

A Template represents a Pageflex template that can be applied to product variants on your Liftoff shop. These templates allow your users to configure products with any number of variables, including text, images, and colors.

Properties

Name
Type
Description

id

int

The ID of the template.

name

string

The name of the template.

projectDirectory

string

The path to the Pageflex project directory for the template.

designFile

string

The path to the design file (.pf) for the template.

variableFile

string

The path to the variable file (.xml) for the template.

Get template

Returns: Template object
Permission required: View Templates

 

Basic Auth

 Authentication is required for this endpoint.
gethttps://my.liftoff.shop/api/v1/templates/templateId
curl --request GET \
  --url https://my.liftoff.shop/api/v1/templates/templateId \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'GET',
  url: 'https://my.liftoff.shop/api/v1/templates/templateId',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/templates/templateId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://my.liftoff.shop/api/v1/templates/templateId");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/templates/templateId"

headers = {'content-type': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

templateId
int32
required

Headers

Content-Type
string
required
 

Order resources

 

An Order represents a pending or finalized order for your Liftoff shop.

Properties

Name
Type
Description

id

int

The ID of the order. If you have configured custom order numbers for your Liftoff shop, the id value will be distinct from the orderNumber.

siteId

int

The ID of the Liftoff shop the order belongs to.

userId

int

The ID of the user who placed the order.

createDate

datetime

The date/time the order was begun.

lastModifiedDate

datetime

The date/time the order was most recently modified.

submissionDate

datetime

The date/time the order was submitted.

status

string

The status of the order. Valid values are InProgress, Saved, Pending, Declined, Finalized, and Deleted.

orderNumber

string

The order number of the order that is displayed in My Liftoff and in your Liftoff shop.

billing

Address

The billing address for the order.

items

array

The collection of Item resources in the order.

cartTotal

decimal

The total of all items in the order, in USD. Does not include shipping, taxes, or discounts.

userCartTotal

decimal

The total of all items in the order, converted to the user's currency. Does not include shipping, taxes, or discounts.

shippingTotal

decimal

The total shipping and handling price for the order, in USD.

userShippingtotal

decimal

The total shipping and handling price for the order, converted to the user's currency.

taxTotal

decimal

The total taxes for the order, in USD.

userTaxTotal

decimal

The total taxes for the order, converted to the user's currency.

discountTotal

decimal

The total discount amount for the order, in USD.

userDiscountTotal

decimal

The total discount amount for the order, converted to the user's currency.

orderTotal

decimal

The total order amount, in USD. Includes all items, shipping, taxes, and discounts.

userOrderTotal

decimal

The total order amount, converted to the user's currency. Includes all items, shipping, taxes, and discounts.

currencyCode

string

The currency selected by the user who placed the order.

displayName

string

The user-assigned display name of the cart. Typically only used for saved orders.

Get order

Returns: Order object
Permission required: View Orders

 

Basic Auth

 Authentication is required for this endpoint.
gethttps://my.liftoff.shop/api/v1/orders/orderId
curl --request GET \
  --url https://my.liftoff.shop/api/v1/orders/orderId \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'GET',
  url: 'https://my.liftoff.shop/api/v1/orders/orderId',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/orders/orderId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://my.liftoff.shop/api/v1/orders/orderId");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/orders/orderId"

headers = {'content-type': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

orderId
int32
required

Headers

Content-Type
string
required
 

Item resources

 

An Item represents a line item in an order.

Properties

Name
Type
Description

id

int

The ID of the item.

orderId

int

The ID of the order that the item belongs to.

status

string

The status of the item. Values are Active, Pending Admin Approval, and Deleted.

parentItemId

int

The ID of the parent item. This value will be null unless the item is a child item within a bundle.

productVariantId

int

The ID of the item's product variant.

code

string

The code for the item's product.

sku

string

The SKU for the item's product variant.

name

string

The name of the item's product variant.

description

string

The description for the item's product variant.

quantity

int

The quantity of the item.

backorderedQuantity

int

The quantity of the item that is not currently in stock.

currencyCode

string

The currency selected by the user who placed the order.

basePrice

decimal

The base price of the item, in USD. This value does not include upcharges or discounts.

userBasesPrice

decimal

The base price of the item, converted to the user's currency.

totalPrice

decimal

The total price of the item, in USD. This value includes upcharges. This value does not include discounts.

userTotalPrice

decimal

The total price of the item, converted to the user's currency.

baseCost

decimal

Your base cost for the item, in USD. This value does not include upcharges or discounts.

totalCost

decimal

Your total cost of the item, in USD. This value includes upcharges. This value does not include discounts.

discountAmount

decimal

The discount applied to the item, in USD.

itemFiles

array

The collection of ItemFile associated with the item.

productImage

string

The filename of the item's product image.

previewImageUrl

string

The URL path for the item's preview image.

upcharges

array

The collection of ItemUpcharge resources that have been applied to the item.

childItems

array

The collection of Item resources that are children of the item. This collection will be empty unless the item is a bundle.

ItemFile resources

 

An ItemFile represents a file that is associated with the item. An item may have the following files:

  • Preview: A user-facing preview of the item.
  • Proof: A proof of a customized item.
  • Production files: A production-ready file for fulfillment of a customized item.
  • Upload: A file the user has uploaded for the item.

Properties

Name
Type
Description

id

int

The ID of the item file.

type

string

The type of file. Valid values are Preview, Proof, Production, and Upload.

filename

string

The filename of the item file.

ItemUpcharge resources

 

An ItemUpcharge represents a charge (such as a setup fee) that is added to an item's base price.

Properties

Name
Type
Description

name

string

The name of the upcharge.

code

string

The code for the upcharge.

price

decimal

The user's price for the upcharge, in USD.

userPrice

decimal

The user's price for the upcharge, converted to the user's currency.

cost

decimal

Your cost for the upcharge, in USD.

Shipment resources

 

A Shipment represents an individual shipment for a Liftoff order. Liftoff orders may have multiple shipments.

Properties

Name
Type
Description

id

int

The ID of the shipment.

orderId

int

The ID of the order that the shipment belongs to.

shipmentNumber

int

The number of the shipment. Together with an orderId, the shipmentNumber identifies an individual shipment.

shippingPrice

decimal

The shipping price of the shipment, in USD.

handlingPrice

decimal

The handling price of the shipment, in USD.

status

string

The status of the shipment. Valid values are InProcess, InProduction, ReadyToShip, Shipped, and Canceled.

estimatedShipDate

date

The date the shipment is expected to leave the origin.

actualShipDate

date

The date the shipment left the origin.

trackingNumber

string

The tracking number of the shipment.

weight

decimal

The weight of the shipment.

destination

Address

The destination of the shipment.

origin

Address

The origin of the shipment.

shippingOption

ShippingOption

The shipping service level of the shipment.

shippingCarrier

ShippingCarrier

The carrier company handling delivery of the shipment.

Get order shipments

Returns: Array of Shipment objects
Permission required: View Orders

 

Basic Auth

 Authentication is required for this endpoint.
gethttps://my.liftoff.shop/api/v1/orders/orderId/shipments
curl --request GET \
  --url https://my.liftoff.shop/api/v1/orders/orderId/shipments \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'GET',
  url: 'https://my.liftoff.shop/api/v1/orders/orderId/shipments',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/orders/orderId/shipments")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://my.liftoff.shop/api/v1/orders/orderId/shipments");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/orders/orderId/shipments"

headers = {'content-type': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

orderId
int32
required

Headers

Content-Type
string
required
 

Get order shipment

Returns: Shipment object
Permission required: View Orders

 

Basic Auth

 Authentication is required for this endpoint.
gethttps://my.liftoff.shop/api/v1/orders/orderId/shipments/shipmentNumber
curl --request GET \
  --url https://my.liftoff.shop/api/v1/orders/orderId/shipments/shipmentNumber \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'GET',
  url: 'https://my.liftoff.shop/api/v1/orders/orderId/shipments/shipmentNumber',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/orders/orderId/shipments/shipmentNumber")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("GET", "https://my.liftoff.shop/api/v1/orders/orderId/shipments/shipmentNumber");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/orders/orderId/shipments/shipmentNumber"

headers = {'content-type': 'application/json'}

response = requests.request("GET", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

orderId
int32
required
shipmentNumber
int32
required

Query Params

page
int32
limit
int32

Headers

Content-Type
string
required
 

Update order shipment

Returns: Updated Shipment object
Permission required: Edit Orders

 

Basic Auth

 Authentication is required for this endpoint.
patchhttps://my.liftoff.shop/api/v1/orders/orderId/shipments/shipmentNumber
curl --request PATCH \
  --url https://my.liftoff.shop/api/v1/orders/orderId/shipments/shipmentNumber \
  --header 'content-type: application/json'
var request = require("request");

var options = { method: 'PATCH',
  url: 'https://my.liftoff.shop/api/v1/orders/orderId/shipments/shipmentNumber',
  headers: { 'content-type': 'application/json' } };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://my.liftoff.shop/api/v1/orders/orderId/shipments/shipmentNumber")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Patch.new(url)
request["content-type"] = 'application/json'

response = http.request(request)
puts response.read_body
var data = JSON.stringify(false);

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("PATCH", "https://my.liftoff.shop/api/v1/orders/orderId/shipments/shipmentNumber");
xhr.setRequestHeader("content-type", "application/json");

xhr.send(data);
import requests

url = "https://my.liftoff.shop/api/v1/orders/orderId/shipments/shipmentNumber"

headers = {'content-type': 'application/json'}

response = requests.request("PATCH", url, headers=headers)

print(response.text)
A binary file was returned

You couldn't be authenticated

Try the API to see results

Path Params

orderId
int32
required
shipmentNumber
int32
required

Body Params

status
string

Valid values: InProcess; InProduction; ReadyToShip; Shipped; Canceled.

estimatedShipDate
date
actualShipDate
date
trackingNumber
string

Headers

Content-Type
string
required