Jomashop Vendor API

Introduction

Welcome to the Jomashop Vendor API! You can use our API to access anything that could be accessed via our website in programmatic JSON based manner.

Authentication

Authentication is handled using (407) 347-2578. Our tokens conform to RFC 7519. Unless otherwise noted, every request to the Jomashop Vendor API must contain a header using the following format:

Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoib3duZXIiLCJzdWIiOiIyNDI3OCIsInNjcCI6InVzZXIiLCJpYXQiOjE1MjY5MzY4MTgsImV4cCI6IjE1Mjk1Mjg4MTgiLCJqdGkiOiJlMzZmYmY5OS00ZjQ5LTRkNjAtOWQ1MS1lNzJmNGM4YTAyYTUifQ.sxDpKyjsVGhbU3S0KHp6wuKKC036CIn6OO3Dz_aO7sw

The token itself, representing the bulk of the header, is comprised of 3 base 64 encoded strings separated by a period (.) which are a header, a payload, and a signature/checksum. Once decoded we can see that the above token translates into the following header and payload:

Header:

{
  "typ": "JWT",
  "alg": "HS256"
}

Payload:

{
  "role": "owner",
  "sub": "24278",
  "scp": "user",
  "iat": 1526936818,
  "exp": "1529528818",
  "jti": "e36fbf99-4f49-4d60-9d51-e72f4c8a02a5"
}

The header contains meta information about the encoding of the payload/signature and the payload contains information about when the token was issued, when it will expire, the token's own unique id, the user's id, and the user's role.

Tokens can be generated for use via one of the 3 authentication requests:

All of these requests will return a response header containing a compiled token for use. Only the first of these requests is intended for use as a login mechanism. Users must be confirmed once after being invited using the second request (via web or API) before accessing the rest of the API.

Tokens last for 30 days from the time of issue. A new token can be generated from an existing token using the update session request. This process permanently revokes the old token and generates a new one which will last an additional 30 days. This request can be preformed at any time in the lifecycle of a token until it is expired.

Furthermore, a token can be permanently revoked by using the delete session request, effectively logging the user out.

Tokens may be revoked by the server at will. Clients using the API must be prepared to receive a response of 401 Unauthorized at any time.

Acccount

Requests default invalid password invalid token
PUT   /v1/account/confirm
Body
{
  "user": {
    "confirmation_token": "tUy8sfZuaCo6WxszTH6m",
    "password": "newpassword",
    "password_confirmation": "newpassword"
  }
}
Responses 200
Headers
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoidXNlciIsInN1YiI6IjMwIiwic2NwIjoidXNlciIsImlhdCI6MTU0MTQ5NDY2OCwiZXhwIjoiMTU0NDA4NjY2OCIsImp0aSI6IjY0NjI3ODQ2LTc3ODEtNGU2ZC04YTQ4LWJkMTVkMWQwMGRjMSJ9.GeR4lRTCmqADvERfysLHT1TYjbmd7TYsL9T2IgEDR1o
Body
{
  "id": 30,
  "email": "user_20@example.com",
  "role": "user",
  "first_name": "Raheem",
  "last_name": "Larkin",
  "phone": "721.120.4830 x1519",
  "confirmed_at": "2018-11-06T08:57:48.421Z",
  "vendor": {
    "id": 24,
    "name": "vendor_8",
    "confirmed": true
  }
}
PUT   /v1/account/confirm
Body
{
  "user": {
    "confirmation_token": "KDpHBU1BixgsAK_1EYFB",
    "password": "wrong",
    "password_confirmation": "newpassword"
  }
}
Responses 422
Body
{
  "error": "Invalid Record",
  "errors": {
    "password_confirmation": [
      "doesn't match Password"
    ],
    "password": [
      "is too short (minimum is 6 characters)"
    ]
  }
}
PUT   /v1/account/confirm
Body
{
  "user": {
    "confirmation_token": "wrong",
    "password": "newpassword",
    "password_confirmation": "newpassword"
  }
}
Responses 422
Body
{
  "error": "Invalid Record",
  "errors": {
    "confirmation_token": [
      "is invalid"
    ]
  }
}

PUT /v1/account/confirm

This request does not require an Authorization header

Parameters
Hide Show
user
dictionary   (required)   Contains the following additional parameters:
confirmation_token
string   (required)  

The token from a confirmation email

password
string   (required)  

The user's new password

password_confirmation
string   (required)  

The user's new password


POST   /v1/account/forgot-password
Body
{
  "user": {
    "email": "user_8@example.com"
  }
}
Responses 204
This response has no content.

POST /v1/account/forgot-password

This request does not require an Authorization header

Parameters
Hide Show
user
dictionary   (required)   Contains the following additional parameters:
email
string   (required)  

The user's email


GET   /v1/account
Responses 200
Body
{
  "id": 17,
  "email": "user_1@example.com",
  "role": "owner",
  "first_name": "Brisa",
  "last_name": "Nikolaus",
  "phone": "455-548-0162 x84965",
  "confirmed_at": "2018-11-06T08:57:47.205Z",
  "vendor": {
    "id": 17,
    "name": "vendor_1",
    "confirmed": true
  }
}

GET /v1/account


Requests default invalid password invalid token
PUT   /v1/account/update-password
Body
{
  "user": {
    "reset_password_token": "88tnF1fVn3PxePi7z_zo",
    "password": "newpassword",
    "password_confirmation": "newpassword"
  }
}
Responses 200
Headers
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoidXNlciIsInN1YiI6IjI0Iiwic2NwIjoidXNlciIsImlhdCI6MTU0MTQ5NDY2OCwiZXhwIjoiMTU0NDA4NjY2OCIsImp0aSI6IjIyMjFjMDVmLWI1MDAtNGYxMy05ZGIzLWUzYjA1NDZlMTgxMyJ9._k9YzzZKzjuc2PxJ-aO0vUQWbJYHQek4LxjUYPZPBn4
Body
{
  "id": 24,
  "email": "user_11@example.com",
  "role": "user",
  "first_name": "Kane",
  "last_name": "Schimmel",
  "phone": "790.244.2985 x09032",
  "confirmed_at": "2018-11-06T08:57:48.116Z",
  "vendor": {
    "id": 21,
    "name": "vendor_5",
    "confirmed": true
  }
}
PUT   /v1/account/update-password
Body
{
  "user": {
    "reset_password_token": "ghN8f-eEHJHHVu_HtsWv",
    "password": "wrong",
    "password_confirmation": "newpassword"
  }
}
Responses 422
Body
{
  "error": "Invalid Record",
  "errors": {
    "password_confirmation": [
      "doesn't match Password"
    ],
    "password": [
      "is too short (minimum is 6 characters)"
    ]
  }
}
PUT   /v1/account/update-password
Body
{
  "user": {
    "reset_password_token": "wrong",
    "password": "newpassword",
    "password_confirmation": "newpassword"
  }
}
Responses 422
Body
{
  "error": "Invalid Record",
  "errors": {
    "reset_password_token": [
      "is invalid"
    ]
  }
}

PUT /v1/account/update-password

This request does not require an Authorization header

Parameters
Hide Show
user
dictionary   (required)   Contains the following additional parameters:
reset_password_token
string   (required)  

The token from a forgot password email

password
string   (required)  

The user's new password

password_confirmation
string   (required)  

The user's new password


PUT   /v1/account
Body
{
  "user": {
    "first_name": "newname"
  }
}
Responses 200
Body
{
  "id": 18,
  "email": "user_3@example.com",
  "role": "owner",
  "first_name": "newname",
  "last_name": "Heaney",
  "phone": "496.665.2457 x75951",
  "confirmed_at": "2018-11-06T08:57:47.467Z",
  "vendor": {
    "id": 18,
    "name": "vendor_2",
    "confirmed": true
  }
}

PUT /v1/account

Parameters
Hide Show
user
dictionary   (required)   Contains the following additional parameters:
email
string   (optional)  

The user's email

first_name
string   (optional)  

The user's first name

last_name
string   (optional)  

The user's last name

phone
string   (optional)  

The user's phone number

password
string   (optional)  

The user's new password

password_confirmation
string   (optional)  

The user's new password


Categories

Requests default with page with per_page
GET   /v1/categories
Responses 200
Body
{
  "categories": [
    {
      "id": 5,
      "name": "category_1"
    },
    {
      "id": 6,
      "name": "category_2"
    },
    {
      "id": 7,
      "name": "category_3"
    },
    {
      "id": 8,
      "name": "category_4"
    }
  ],
  "count": 4,
  "current_page": 1,
  "pages": 1,
  "total_count": 4
}
GET   /v1/categories?per_page=3&page=2
Responses 200
Body
{
  "categories": [
    {
      "id": 16,
      "name": "category_12"
    }
  ],
  "count": 1,
  "current_page": 2,
  "pages": 2,
  "total_count": 4
}
GET   /v1/categories?per_page=3
Responses 200
Body
{
  "categories": [
    {
      "id": 9,
      "name": "category_5"
    },
    {
      "id": 10,
      "name": "category_6"
    },
    {
      "id": 11,
      "name": "category_7"
    }
  ],
  "count": 3,
  "current_page": 1,
  "pages": 2,
  "total_count": 4
}

GET /v1/categories

Parameters
Hide Show
per_page
number   (optional)   Default:  25  

The maximum number of results returned per page.

page
number   (optional)   Default:  1  

The page requested. Default: 1


GET   /v1/categories/18
Responses 200
Body
{
  "id": 18,
  "name": "category_13",
  "property_groups": [
    {
      "name": "Vital",
      "properties": [
        {
          "id": 25,
          "name": "Brand",
          "key": "manufacturer",
          "kind": "hard_coded",
          "data": {
            "initial_group": "Vital",
            "initial_index": 0
          },
          "designation": "required",
          "instructions": "The brand of the item (e.g. Rolex)"
        },
        {
          "id": 26,
          "name": "Manufacturer #",
          "key": "manufacturer_number",
          "kind": "hard_coded",
          "data": {
            "initial_group": "Vital",
            "initial_index": 1
          },
          "designation": "recommended",
          "instructions": "The manufacturer number of the item. (e.g. ES4113)"
        },
        {
          "id": 27,
          "name": "Title",
          "key": "name",
          "kind": "hard_coded",
          "data": {
            "initial_group": "Vital",
            "initial_index": 2
          },
          "designation": "required",
          "instructions": "The name of the product"
        },
        {
          "id": 28,
          "name": "Vendor SKU",
          "key": "vendor_sku",
          "kind": "hard_coded",
          "data": {
            "initial_group": "Vital",
            "initial_index": 3
          },
          "designation": "required",
          "instructions": "Your unique vendor SKU"
        },
        {
          "id": 29,
          "name": "EAN",
          "key": "ean",
          "kind": "hard_coded",
          "data": {
            "initial_group": "Vital",
            "initial_index": 4
          },
          "designation": "recommended",
          "instructions": "International Article Number "
        },
        {
          "id": 30,
          "name": "UPC",
          "key": "upc",
          "kind": "hard_coded",
          "data": {
            "initial_group": "Vital",
            "initial_index": 5
          },
          "designation": "recommended",
          "instructions": "Universal Product Code"
        },
        {
          "id": 31,
          "name": "ASIN",
          "key": "asin",
          "kind": "hard_coded",
          "data": {
            "initial_group": "Vital",
            "initial_index": 6
          },
          "designation": "recommended",
          "instructions": "Amazon Standard Identification Number"
        },
        {
          "id": 38,
          "name": "property_1",
          "key": "property_1",
          "kind": "string",
          "data": null,
          "designation": "optional",
          "instructions": null
        }
      ]
    },
    {
      "name": "Info",
      "properties": [
        {
          "id": 34,
          "name": "Warranty Type",
          "key": "vendor_warranty_type",
          "kind": "hard_coded",
          "data": {
            "initial_group": "Info",
            "initial_index": 0
          },
          "designation": "optional",
          "instructions": null
        },
        {
          "id": 35,
          "name": "Warranty Years",
          "key": "vendor_warranty_years",
          "kind": "hard_coded",
          "data": {
            "initial_group": "Info",
            "initial_index": 1
          },
          "designation": "optional",
          "instructions": null
        },
        {
          "id": 36,
          "name": "MSRP",
          "key": "manufacturers_suggested_retail_price",
          "kind": "hard_coded",
          "data": {
            "initial_group": "Info",
            "initial_index": 2
          },
          "designation": "required",
          "instructions": null
        }
      ]
    },
    {
      "name": "Offer",
      "properties": [
        {
          "id": 32,
          "name": "Quantity",
          "key": "quantity",
          "kind": "hard_coded",
          "data": {
            "initial_group": "Offer",
            "initial_index": 0
          },
          "designation": "required",
          "instructions": "The number of products you wish to sell"
        },
        {
          "id": 33,
          "name": "Price",
          "key": "price",
          "kind": "hard_coded",
          "data": {
            "initial_group": "Offer",
            "initial_index": 1
          },
          "designation": "required",
          "instructions": "Your selling price in USD"
        }
      ]
    },
    {
      "name": "Images",
      "properties": [
        {
          "id": 37,
          "name": "Images",
          "key": "images",
          "kind": "hard_coded",
          "data": {
            "initial_group": "Images",
            "initial_index": 0
          },
          "designation": "optional",
          "instructions": null
        }
      ]
    }
  ]
}

GET /v1/categories/:id

Parameters
Hide Show
id
integer   (required)  

A category id


Countries

GET   /v1/countries
Responses 200
Body
[
  {
    "id": "GU",
    "name": "Guam"
  },
  {
    "id": "BM",
    "name": "Bermuda"
  },
  {
    "id": "BL",
    "name": "Saint Barthélemy"
  },
  {
    "id": "NU",
    "name": "Niue"
  },
  {
    "id": "SO",
    "name": "Somalia"
  }
]

GET /v1/countries

This request does not require an Authorization header


GET   /v1/countries/US
Responses 200
Body
{
  "id": "US",
  "name": "United States of America",
  "requires_postal_code": true,
  "requires_state": true,
  "states": [
    {
      "id": "MA",
      "name": "Massachusetts"
    },
    {
      "id": "WY",
      "name": "Wyoming"
    },
    {
      "id": "NJ",
      "name": "New Jersey"
    },
    {
      "id": "MP",
      "name": "Northern Mariana Islands"
    },
    {
      "id": "WA",
      "name": "Washington"
    }
  ]
}

GET /v1/countries/:id

This request does not require an Authorization header

Parameters
Hide Show
id
string   (required)  

A two letter country id


Files

Requests default invalid body
POST   /v1/files
Body
{
  "data_file": {
    "handler": "create_stocks",
    "file_name": "Test File.csv",
    "file": "data:text/csv;base64,YSxiCjUsNgp5LHoK"
  }
}
Responses 200
Body
{
  "id": 65,
  "file_name": "Test File.csv",
  "state": "new",
  "handler": "create_stocks",
  "created_at": "2018-11-06T08:57:51.664Z",
  "updated_at": "2018-11-06T08:57:51.664Z"
}
POST   /v1/files
Body
{
  "data_file": {
    "handler": null,
    "file_name": "Test File.csv",
    "file": "data:text/csv;base64,YSxiCjUsNgp5LHoK"
  }
}
Responses 422
Body
{
  "error": "Invalid Record",
  "errors": {
    "handler": [
      "is not included in the list"
    ]
  }
}

POST /v1/files

Parameters
Hide Show
data_file
dictionary   (required)   Contains the following additional parameters:
handler
string   (required)  

Handler that should parse this file

file_name
string   (required)  

Name of this file

file
string   (required)  

a base64 encoded version of the file using the format "data:<<Mime Type>>;base64,<<content>>"


GET   /v1/files/68/download
Responses 200
Body
[binary data]

GET /v1/files/:id/download

Parameters
Hide Show
id
integer   (required)  

A file id


Requests default with handler with page with per_page with state
GET   /v1/files
Responses 200
Body
{
  "data_files": [
    {
      "id": 9,
      "file_name": "file_name_5",
      "state": "new",
      "handler": "create_products",
      "created_at": "2018-11-06T08:57:50.824Z",
      "updated_at": "2018-11-06T08:57:50.824Z"
    },
    {
      "id": 8,
      "file_name": "file_name_4",
      "state": "new",
      "handler": "create_products",
      "created_at": "2018-11-06T08:57:50.821Z",
      "updated_at": "2018-11-06T08:57:50.821Z"
    },
    {
      "id": 7,
      "file_name": "file_name_3",
      "state": "complete",
      "handler": "create_stocks",
      "created_at": "2018-11-06T08:57:50.819Z",
      "updated_at": "2018-11-06T08:57:50.819Z",
      "valid_records": 5,
      "invalid_records": 0
    },
    {
      "id": 6,
      "file_name": "file_name_2",
      "state": "new",
      "handler": "create_stocks",
      "created_at": "2018-11-06T08:57:50.817Z",
      "updated_at": "2018-11-06T08:57:50.817Z"
    },
    {
      "id": 5,
      "file_name": "file_name_1",
      "state": "new",
      "handler": "create_stocks",
      "created_at": "2018-11-06T08:57:50.815Z",
      "updated_at": "2018-11-06T08:57:50.815Z"
    }
  ],
  "count": 5,
  "current_page": 1,
  "pages": 1,
  "total_count": 5
}
GET   /v1/files?handler=create_products
Responses 200
Body
{
  "data_files": [
    {
      "id": 24,
      "file_name": "file_name_20",
      "state": "new",
      "handler": "create_products",
      "created_at": "2018-11-06T08:57:51.046Z",
      "updated_at": "2018-11-06T08:57:51.046Z"
    },
    {
      "id": 23,
      "file_name": "file_name_19",
      "state": "new",
      "handler": "create_products",
      "created_at": "2018-11-06T08:57:51.044Z",
      "updated_at": "2018-11-06T08:57:51.044Z"
    }
  ],
  "count": 2,
  "current_page": 1,
  "pages": 1,
  "total_count": 2
}
GET   /v1/files?per_page=3&page=2
Responses 200
Body
{
  "data_files": [
    {
      "id": 16,
      "file_name": "file_name_12",
      "state": "new",
      "handler": "create_stocks",
      "created_at": "2018-11-06T08:57:50.968Z",
      "updated_at": "2018-11-06T08:57:50.968Z"
    },
    {
      "id": 15,
      "file_name": "file_name_11",
      "state": "new",
      "handler": "create_stocks",
      "created_at": "2018-11-06T08:57:50.965Z",
      "updated_at": "2018-11-06T08:57:50.965Z"
    }
  ],
  "count": 2,
  "current_page": 2,
  "pages": 2,
  "total_count": 5
}
GET   /v1/files?per_page=3
Responses 200
Body
{
  "data_files": [
    {
      "id": 14,
      "file_name": "file_name_10",
      "state": "new",
      "handler": "create_products",
      "created_at": "2018-11-06T08:57:50.901Z",
      "updated_at": "2018-11-06T08:57:50.901Z"
    },
    {
      "id": 13,
      "file_name": "file_name_9",
      "state": "new",
      "handler": "create_products",
      "created_at": "2018-11-06T08:57:50.898Z",
      "updated_at": "2018-11-06T08:57:50.898Z"
    },
    {
      "id": 12,
      "file_name": "file_name_8",
      "state": "complete",
      "handler": "create_stocks",
      "created_at": "2018-11-06T08:57:50.896Z",
      "updated_at": "2018-11-06T08:57:50.896Z",
      "valid_records": 5,
      "invalid_records": 0
    }
  ],
  "count": 3,
  "current_page": 1,
  "pages": 2,
  "total_count": 5
}
GET   /v1/files?state=complete
Responses 200
Body
{
  "data_files": [
    {
      "id": 27,
      "file_name": "file_name_23",
      "state": "complete",
      "handler": "create_stocks",
      "created_at": "2018-11-06T08:57:51.112Z",
      "updated_at": "2018-11-06T08:57:51.112Z",
      "valid_records": 5,
      "invalid_records": 0
    }
  ],
  "count": 1,
  "current_page": 1,
  "pages": 1,
  "total_count": 1
}

GET /v1/files

Parameters
Hide Show
per_page
number   (optional)   Default:  25  

The maximum number of results returned per page.

page
number   (optional)   Default:  1  

The page requested. Default: 1

handler
string   (optional)  

Filter results by handler

Allowed Values:  update_stocks create_stocks create_products update_orders

state
string   (optional)  

Filter results by state

Allowed Values:  new in_progress error complete


GET   /v1/files/66
Responses 200 404
Body
{
  "id": 66,
  "file_name": "file_name_61",
  "state": "new",
  "handler": "create_stocks",
  "created_at": "2018-11-06T08:57:51.811Z",
  "updated_at": "2018-11-06T08:57:51.811Z"
}
Body
{
  "error": "Not Found"
}

GET /v1/files/:id

Parameters
Hide Show
id
integer   (required)  

A file id


Holidays

Requests default with page with per_page
GET   /v1/holidays
Responses 200
Body
{
  "holidays": [
    {
      "id": 1,
      "name": "Holiday 1",
      "date": "2018-11-20"
    },
    {
      "id": 2,
      "name": "Holiday 2",
      "date": "2018-11-24"
    },
    {
      "id": 3,
      "name": "Holiday 3",
      "date": "2018-11-28"
    },
    {
      "id": 4,
      "name": "Holiday 4",
      "date": "2018-12-11"
    }
  ],
  "count": 4,
  "current_page": 1,
  "pages": 1,
  "total_count": 4
}
GET   /v1/holidays?per_page=3&page=2
Responses 200
Body
{
  "holidays": [
    {
      "id": 12,
      "name": "Holiday 12",
      "date": "2018-11-26"
    }
  ],
  "count": 1,
  "current_page": 2,
  "pages": 2,
  "total_count": 4
}
GET   /v1/holidays?per_page=3
Responses 200
Body
{
  "holidays": [
    {
      "id": 5,
      "name": "Holiday 5",
      "date": "2018-11-06"
    },
    {
      "id": 6,
      "name": "Holiday 6",
      "date": "2018-11-13"
    },
    {
      "id": 7,
      "name": "Holiday 7",
      "date": "2018-11-22"
    }
  ],
  "count": 3,
  "current_page": 1,
  "pages": 2,
  "total_count": 4
}

GET /v1/holidays

Parameters
Hide Show
per_page
number   (optional)   Default:  25  

The maximum number of results returned per page.

page
number   (optional)   Default:  1  

The page requested. Default: 1


GET   /v1/holidays/14
Responses 200
Body
{
  "id": 14,
  "name": "Holiday 13",
  "date": "2018-11-29"
}

GET /v1/holidays/:id

Parameters
Hide Show
id
integer   (required)  

A holiday id


Manufacturers

Requests default with page with per_page
GET   /v1/manufacturers
Responses 200
Body
{
  "manufacturers": [
    {
      "id": 11,
      "name": "manufacturer_7"
    },
    {
      "id": 12,
      "name": "manufacturer_8"
    },
    {
      "id": 13,
      "name": "manufacturer_9"
    },
    {
      "id": 14,
      "name": "manufacturer_10"
    }
  ],
  "count": 4,
  "current_page": 1,
  "pages": 1,
  "total_count": 4
}
GET   /v1/manufacturers?per_page=3&page=2
Responses 200
Body
{
  "manufacturers": [
    {
      "id": 22,
      "name": "manufacturer_18"
    }
  ],
  "count": 1,
  "current_page": 2,
  "pages": 2,
  "total_count": 4
}
GET   /v1/manufacturers?per_page=3
Responses 200
Body
{
  "manufacturers": [
    {
      "id": 15,
      "name": "manufacturer_11"
    },
    {
      "id": 16,
      "name": "manufacturer_12"
    },
    {
      "id": 17,
      "name": "manufacturer_13"
    }
  ],
  "count": 3,
  "current_page": 1,
  "pages": 2,
  "total_count": 4
}

GET /v1/manufacturers

Parameters
Hide Show
per_page
number   (optional)   Default:  25  

The maximum number of results returned per page.

page
number   (optional)   Default:  1  

The page requested. Default: 1


GET   /v1/manufacturers/24
Responses 200
Body
{
  "id": 24,
  "name": "manufacturer_19"
}

GET /v1/manufacturers/:id

Parameters
Hide Show
id
integer   (required)  

A manufacturer id


Orders

Requests default with timeframe
GET   /v1/orders/template.csv
Responses 200 200
Body
Tracking Number,Invoice Number,SO#,SKU,Qty,Cost,Product Name,GiftMessage,Ship Method,Ship Full Name,Phone,Ship Address,Ship Address2,Ship City,Ship State,Ship Country,Ship Zip,Placed at,UniqueID
,,order_79,,,,product_139,,,,,123 Fake St,,Faketown,CO,US,12345,10/31/2018  8:58,order_product_115
,,order_79,,,,product_140,,,,,123 Fake St,,Faketown,CO,US,12345,10/31/2018  8:58,order_product_116
,,order_79,,,,product_141,,,,,123 Fake St,,Faketown,CO,US,12345,10/31/2018  8:58,order_product_117
,,order_79,,,,product_142,,,,,123 Fake St,,Faketown,CO,US,12345,10/31/2018  8:58,order_product_118
,,order_78,,,,product_138,,,,,123 Fake St,,Faketown,CO,US,12345,11/04/2018  8:58,order_product_114
,,order_77,,,,product_135,,,,,123 Fake St,,Faketown,CO,US,12345,11/03/2018  8:58,order_product_111
,,order_77,,,,product_136,,,,,123 Fake St,,Faketown,CO,US,12345,11/03/2018  8:58,order_product_112
,,order_77,,,,product_137,,,,,123 Fake St,,Faketown,CO,US,12345,11/03/2018  8:58,order_product_113
,,order_76,,,,product_133,,,,,123 Fake St,,Faketown,CO,US,12345,11/06/2018  8:58,order_product_109
,,order_76,,,,product_134,,,,,123 Fake St,,Faketown,CO,US,12345,11/06/2018  8:58,order_product_110
Body
[binary data]
GET   /v1/orders/template.csv?start_date=2018-11-01 08:58:01 UTC&end_date=2018-11-05 08:58:01 UTC
Responses 200
Body
Tracking Number,Invoice Number,SO#,SKU,Qty,Cost,Product Name,GiftMessage,Ship Method,Ship Full Name,Phone,Ship Address,Ship Address2,Ship City,Ship State,Ship Country,Ship Zip,Placed at,UniqueID
,,order_87,,,,product_166,,,,,123 Fake St,,Faketown,CO,US,12345,11/04/2018  8:58,order_product_142
,,order_85,,,,product_161,,,,,123 Fake St,,Faketown,CO,US,12345,11/04/2018  8:58,order_product_137
,,order_84,,,,product_158,,,,,123 Fake St,,Faketown,CO,US,12345,11/03/2018  8:58,order_product_134
,,order_84,,,,product_159,,,,,123 Fake St,,Faketown,CO,US,12345,11/03/2018  8:58,order_product_135
,,order_84,,,,product_160,,,,,123 Fake St,,Faketown,CO,US,12345,11/03/2018  8:58,order_product_136

GET /v1/orders/template.:format

Parameters
Hide Show
format
string   (required)  

The file format

Allowed Values:  csv xlsm

start_date
string   (optional)  

Start Date

end_date
string   (optional)  

End Date


Requests default invalid
PUT   /v1/orders/66/fulfill
Body
{
  "order": {
    "order_products": [
      75,
      76,
      77,
      78
    ],
    "invoice_number": "6c84954d2acf050f21bb6a63dbcaf595",
    "tracking_number": "b43777cd8c62a975903d9a7a4a2d4246",
    "shipped_at": "2018-11-06 01:57:59 -0700"
  }
}
Responses 200 403 404
Body
{
  "id": 63,
  "state": "fulfilled",
  "identifier": "order_63",
  "recipient_name": null,
  "recipient_phone": null,
  "billing_name": null,
  "billing_phone": null,
  "source": null,
  "shipping_method": null,
  "message": null,
  "placed_at": "2018-11-06T08:57:58.516Z",
  "address": {
    "street": "123 Fake St",
    "street_2": null,
    "city": "Faketown",
    "state": "CO",
    "country": "US",
    "postal_code": "12345"
  },
  "order_products": [
    {
      "id": 66,
      "updated_at": "2018-11-06T08:57:58.601Z",
      "quantity": null,
      "cost": null,
      "vendor_sku": null,
      "state": "fulfilled",
      "invoice_number": "aaa36b0accc13698b182614de12d8dd0",
      "tracking_number": "431dc458309a42bd1d2dfa4ff5104184",
      "shipped_at": "2018-11-06T08:57:58.000Z",
      "product": {
        "id": 110,
        "name": "product_90",
        "sku": "d714f017414d202fe7050f29aedc3f7a",
        "primary_image_url": ""
      }
    },
    {
      "id": 65,
      "updated_at": "2018-11-06T08:57:58.605Z",
      "quantity": null,
      "cost": null,
      "vendor_sku": null,
      "state": "fulfilled",
      "invoice_number": "aaa36b0accc13698b182614de12d8dd0",
      "tracking_number": "431dc458309a42bd1d2dfa4ff5104184",
      "shipped_at": "2018-11-06T08:57:58.000Z",
      "product": {
        "id": 109,
        "name": "product_89",
        "sku": "d9df5ab56400815e61795dd303565787",
        "primary_image_url": ""
      }
    },
    {
      "id": 64,
      "updated_at": "2018-11-06T08:57:58.609Z",
      "quantity": null,
      "cost": null,
      "vendor_sku": null,
      "state": "fulfilled",
      "invoice_number": "aaa36b0accc13698b182614de12d8dd0",
      "tracking_number": "431dc458309a42bd1d2dfa4ff5104184",
      "shipped_at": "2018-11-06T08:57:58.000Z",
      "product": {
        "id": 108,
        "name": "product_88",
        "sku": "c66ec755b8068ff56ce0195f80089b89",
        "primary_image_url": ""
      }
    },
    {
      "id": 63,
      "updated_at": "2018-11-06T08:57:58.612Z",
      "quantity": null,
      "cost": null,
      "vendor_sku": null,
      "state": "fulfilled",
      "invoice_number": "aaa36b0accc13698b182614de12d8dd0",
      "tracking_number": "431dc458309a42bd1d2dfa4ff5104184",
      "shipped_at": "2018-11-06T08:57:58.000Z",
      "product": {
        "id": 107,
        "name": "product_87",
        "sku": "020cd8ea20b1d602520d57eb9b443548",
        "primary_image_url": ""
      }
    }
  ]
}
Body
{
  "error": "Access Denied"
}
Body
{
  "error": "Not Found"
}
PUT   /v1/orders/64/fulfill
Body
{
  "order": {
    "order_products": [
      67,
      68,
      69,
      70
    ],
    "invoice_number": null,
    "tracking_number": "098acd223379e82b0801d935d7802d30",
    "shipped_at": "2018-11-06 01:57:58 -0700"
  }
}
Responses 422
Body
{
  "error": "Invalid Record",
  "errors": {
    "invoice_number": [
      "can't be blank"
    ]
  }
}

PUT /v1/orders/:id/fulfill

Parameters
Hide Show
id
integer   (required)  

An order id

order
dictionary   (required)   Contains the following additional parameters:
order_products
array[integer]   (required)  

A list of order_product ids

invoice_number
string   (required)  

The invoice number assigned to the provided order products

tracking_number
string   (required)  

The tracking number assigned to the provided order products

shipped_at
datetime   (required)  

The time the provided order products were shipped


Requests default with identifier with page with per_page with state with states
GET   /v1/orders
Responses 200
Body
{
  "orders": [
    {
      "id": 4,
      "state": "rejected",
      "identifier": "order_4",
      "recipient_name": null,
      "recipient_phone": null,
      "billing_name": null,
      "billing_phone": null,
      "source": null,
      "shipping_method": null,
      "message": null,
      "placed_at": "2018-11-06T08:57:54.668Z",
      "address": {
        "street": "123 Fake St",
        "street_2": null,
        "city": "Faketown",
        "state": "CO",
        "country": "US",
        "postal_code": "12345"
      },
      "order_products": [
        {
          "id": 4,
          "updated_at": "2018-11-06T08:57:54.694Z",
          "quantity": null,
          "cost": null,
          "vendor_sku": null,
          "state": "rejected",
          "product": {
            "id": 48,
            "name": "product_28",
            "sku": "9760058bac0c2ec7cca4ea0a674d4605",
            "primary_image_url": ""
          }
        }
      ]
    },
    {
      "id": 3,
      "state": "fulfilled",
      "identifier": "order_3",
      "recipient_name": null,
      "recipient_phone": null,
      "billing_name": null,
      "billing_phone": null,
      "source": null,
      "shipping_method": null,
      "message": null,
      "placed_at": "2018-11-06T08:57:54.641Z",
      "address": {
        "street": "123 Fake St",
        "street_2": null,
        "city": "Faketown",
        "state": "CO",
        "country": "US",
        "postal_code": "12345"
      },
      "order_products": [
        {
          "id": 3,
          "updated_at": "2018-11-06T08:57:54.666Z",
          "quantity": null,
          "cost": null,
          "vendor_sku": null,
          "state": "fulfilled",
          "invoice_number": "9c9c53113cbccbfcd9cbe0c404ea02dc",
          "tracking_number": "fc3edb978cf7161be2587f3db6e7146d",
          "shipped_at": "2018-11-06T08:57:54.665Z",
          "product": {
            "id": 47,
            "name": "product_27",
            "sku": "72315d28c9c023f54dc5b5a83c21f8ad",
            "primary_image_url": ""
          }
        }
      ]
    },
    {
      "id": 2,
      "state": "new",
      "identifier": "order_2",
      "recipient_name": null,
      "recipient_phone": null,
      "billing_name": null,
      "billing_phone": null,
      "source": null,
      "shipping_method": null,
      "message": null,
      "placed_at": "2018-11-04T08:57:54.614Z",
      "address": {
        "street": "123 Fake St",
        "street_2": null,
        "city": "Faketown",
        "state": "CO",
        "country": "US",
        "postal_code": "12345"
      },
      "order_products": [
        {
          "id": 2,
          "updated_at": "2018-11-06T08:57:54.639Z",
          "quantity": null,
          "cost": null,
          "vendor_sku": null,
          "state": "new",
          "product": {
            "id": 46,
            "name": "product_26",
            "sku": "ad4571b0d6a92b2e5bb5cff041e45d31",
            "primary_image_url": ""
          }
        }
      ]
    },
    {
      "id": 1,
      "state": "new",
      "identifier": "order_1",
      "recipient_name": null,
      "recipient_phone": null,
      "billing_name": null,
      "billing_phone": null,
      "source": null,
      "shipping_method": null,
      "message": null,
      "placed_at": "2018-11-06T08:57:54.551Z",
      "address": {
        "street": "123 Fake St",
        "street_2": null,
        "city": "Faketown",
        "state": "CO",
        "country": "US",
        "postal_code": "12345"
      },
      "order_products": [
        {
          "id": 1,
          "updated_at": "2018-11-06T08:57:54.612Z",
          "quantity": null,
          "cost": null,
          "vendor_sku": null,
          "state": "new",
          "product": {
            "id": 45,
            "name": "product_25",
            "sku": "9ec788bb569345df264b22bae769142f",
            "primary_image_url": ""
          }
        }
      ]
    }
  ],
  "count": 4,
  "current_page": 1,
  "pages": 1,
  "total_count": 4,
  "metadata": {
    "unshipped": 2,
    "new_orders": 1,
    "late_orders": 1,
    "past_orders": 2
  }
}
GET   /v1/orders?identifier=order_16
Responses 200
Body
{
  "orders": [
    {
      "id": 16,
      "state": "new",
      "identifier": "order_16",
      "recipient_name": null,
      "recipient_phone": null,
      "billing_name": null,
      "billing_phone": null,
      "source": null,
      "shipping_method": null,
      "message": null,
      "placed_at": "2018-11-06T08:57:55.379Z",
      "address": {
        "street": "123 Fake St",
        "street_2": null,
        "city": "Faketown",
        "state": "CO",
        "country": "US",
        "postal_code": "12345"
      },
      "order_products": [
        {
          "id": 16,
          "updated_at": "2018-11-06T08:57:55.417Z",
          "quantity": null,
          "cost": null,
          "vendor_sku": null,
          "state": "new",
          "product": {
            "id": 60,
            "name": "product_40",
            "sku": "02c86cfdd3cf2b233247a65966eb02da",
            "primary_image_url": ""
          }
        }
      ]
    }
  ],
  "count": 1,
  "current_page": 1,
  "pages": 1,
  "total_count": 1,
  "metadata": {
    "unshipped": 2,
    "new_orders": 1,
    "late_orders": 1,
    "past_orders": 2
  }
}
GET   /v1/orders?per_page=3&page=2
Responses 200
Body
{
  "orders": [
    {
      "id": 11,
      "state": "new",
      "identifier": "order_11",
      "recipient_name": null,
      "recipient_phone": null,
      "billing_name": null,
      "billing_phone": null,
      "source": null,
      "shipping_method": null,
      "message": null,
      "placed_at": "2018-11-06T08:57:55.117Z",
      "address": {
        "street": "123 Fake St",
        "street_2": null,
        "city": "Faketown",
        "state": "CO",
        "country": "US",
        "postal_code": "12345"
      },
      "order_products": [
        {
          "id": 11,
          "updated_at": "2018-11-06T08:57:55.164Z",
          "quantity": null,
          "cost": null,
          "vendor_sku": null,
          "state": "new",
          "product": {
            "id": 55,
            "name": "product_35",
            "sku": "5c3d97c88480f9de4a2e2f6f0f1dfacb",
            "primary_image_url": ""
          }
        }
      ]
    }
  ],
  "count": 1,
  "current_page": 2,
  "pages": 2,
  "total_count": 4,
  "metadata": {
    "unshipped": 2,
    "new_orders": 1,
    "late_orders": 1,
    "past_orders": 2
  }
}
GET   /v1/orders?per_page=3
Responses 200
Body
{
  "orders": [
    {
      "id": 9,
      "state": "rejected",
      "identifier": "order_9",
      "recipient_name": null,
      "recipient_phone": null,
      "billing_name": null,
      "billing_phone": null,
      "source": null,
      "shipping_method": null,
      "message": null,
      "placed_at": "2018-11-06T08:57:54.948Z",
      "address": {
        "street": "123 Fake St",
        "street_2": null,
        "city": "Faketown",
        "state": "CO",
        "country": "US",
        "postal_code": "12345"
      },
      "order_products": [
        {
          "id": 9,
          "updated_at": "2018-11-06T08:57:54.972Z",
          "quantity": null,
          "cost": null,
          "vendor_sku": null,
          "state": "rejected",
          "product": {
            "id": 53,
            "name": "product_33",
            "sku": "4f3266687d6f04780cdde730d50a32d7",
            "primary_image_url": ""
          }
        }
      ]
    },
    {
      "id": 8,
      "state": "fulfilled",
      "identifier": "order_8",
      "recipient_name": null,
      "recipient_phone": null,
      "billing_name": null,
      "billing_phone": null,
      "source": null,
      "shipping_method": null,
      "message": null,
      "placed_at": "2018-11-06T08:57:54.921Z",
      "address": {
        "street": "123 Fake St",
        "street_2": null,
        "city": "Faketown",
        "state": "CO",
        "country": "US",
        "postal_code": "12345"
      },
      "order_products": [
        {
          "id": 8,
          "updated_at": "2018-11-06T08:57:54.946Z",
          "quantity": null,
          "cost": null,
          "vendor_sku": null,
          "state": "fulfilled",
          "invoice_number": "a155f89d3600543da35b8bfcc5a9bc4e",
          "tracking_number": "1e8aa46c916bef862dfac1431ab8f799",
          "shipped_at": "2018-11-06T08:57:54.945Z",
          "product": {
            "id": 52,
            "name": "product_32",
            "sku": "b910aca8d20f887fb6379be8817231a3",
            "primary_image_url": ""
          }
        }
      ]
    },
    {
      "id": 7,
      "state": "new",
      "identifier": "order_7",
      "recipient_name": null,
      "recipient_phone": null,
      "billing_name": null,
      "billing_phone": null,
      "source": null,
      "shipping_method": null,
      "message": null,
      "placed_at": "2018-11-04T08:57:54.893Z",
      "address": {
        "street": "123 Fake St",
        "street_2": null,
        "city": "Faketown",
        "state": "CO",
        "country": "US",
        "postal_code": "12345"
      },
      "order_products": [
        {
          "id": 7,
          "updated_at": "2018-11-06T08:57:54.918Z",
          "quantity": null,
          "cost": null,
          "vendor_sku": null,
          "state": "new",
          "product": {
            "id": 51,
            "name": "product_31",
            "sku": "80ca9bbe0ddf299d47b95cf1be93d08a",
            "primary_image_url": ""
          }
        }
      ]
    }
  ],
  "count": 3,
  "current_page": 1,
  "pages": 2,
  "total_count": 4,
  "metadata": {
    "unshipped": 2,
    "new_orders": 1,
    "late_orders": 1,
    "past_orders": 2
  }
}
GET   /v1/orders?state=rejected
Responses 200
Body
{
  "orders": [
    {
      "id": 24,
      "state": "rejected",
      "identifier": "order_24",
      "recipient_name": null,
      "recipient_phone": null,
      "billing_name": null,
      "billing_phone": null,
      "source": null,
      "shipping_method": null,
      "message": null,
      "placed_at": "2018-11-06T08:57:55.726Z",
      "address": {
        "street": "123 Fake St",
        "street_2": null,
        "city": "Faketown",
        "state": "CO",
        "country": "US",
        "postal_code": "12345"
      },
      "order_products": [
        {
          "id": 24,
          "updated_at": "2018-11-06T08:57:55.751Z",
          "quantity": null,
          "cost": null,
          "vendor_sku": null,
          "state": "rejected",
          "product": {
            "id": 68,
            "name": "product_48",
            "sku": "64b154ca52f4441a2b2cadb621bf8c0e",
            "primary_image_url": ""
          }
        }
      ]
    }
  ],
  "count": 1,
  "current_page": 1,
  "pages": 1,
  "total_count": 1,
  "metadata": {
    "unshipped": 2,
    "new_orders": 1,
    "late_orders": 1,
    "past_orders": 2
  }
}
GET   /v1/orders?states[]=rejected&states[]=fulfilled
Responses 200
Body
{
  "orders": [
    {
      "id": 29,
      "state": "rejected",
      "identifier": "order_29",
      "recipient_name": null,
      "recipient_phone": null,
      "billing_name": null,
      "billing_phone": null,
      "source": null,
      "shipping_method": null,
      "message": null,
      "placed_at": "2018-11-06T08:57:55.982Z",
      "address": {
        "street": "123 Fake St",
        "street_2": null,
        "city": "Faketown",
        "state": "CO",
        "country": "US",
        "postal_code": "12345"
      },
      "order_products": [
        {
          "id": 29,
          "updated_at": "2018-11-06T08:57:56.008Z",
          "quantity": null,
          "cost": null,
          "vendor_sku": null,
          "state": "rejected",
          "product": {
            "id": 73,
            "name": "product_53",
            "sku": "ebb894619b34d46d976deceabab13868",
            "primary_image_url": ""
          }
        }
      ]
    },
    {
      "id": 28,
      "state": "fulfilled",
      "identifier": "order_28",
      "recipient_name": null,
      "recipient_phone": null,
      "billing_name": null,
      "billing_phone": null,
      "source": null,
      "shipping_method": null,
      "message": null,
      "placed_at": "2018-11-06T08:57:55.954Z",
      "address": {
        "street": "123 Fake St",
        "street_2": null,
        "city": "Faketown",
        "state": "CO",
        "country": "US",
        "postal_code": "12345"
      },
      "order_products": [
        {
          "id": 28,
          "updated_at": "2018-11-06T08:57:55.980Z",
          "quantity": null,
          "cost": null,
          "vendor_sku": null,
          "state": "fulfilled",
          "invoice_number": "9f0a4dd83adea5fcda46e1766f5121fd",
          "tracking_number": "9e18a97e114e308601872cb7ecc2c207",
          "shipped_at": "2018-11-06T08:57:55.979Z",
          "product": {
            "id": 72,
            "name": "product_52",
            "sku": "87381eac5db04783652bad6c5d0bb47c",
            "primary_image_url": ""
          }
        }
      ]
    }
  ],
  "count": 2,
  "current_page": 1,
  "pages": 1,
  "total_count": 2,
  "metadata": {
    "unshipped": 2,
    "new_orders": 1,
    "late_orders": 1,
    "past_orders": 2
  }
}

GET /v1/orders

Parameters
Hide Show
per_page
number   (optional)   Default:  25  

The maximum number of results returned per page.

page
number   (optional)   Default:  1  

The page requested. Default: 1

state
string   (optional)  

Filter results by state

Allowed Values:  new cancelled pending fulfilled rejected partial

states
array[string]   (optional)  

Filter results by a list of states

Allowed Values:  new cancelled pending fulfilled rejected partial


PUT   /v1/orders/69/reject
Body
{
  "order": {
    "order_products": [
      87,
      88,
      89,
      90
    ]
  }
}
Responses 200 403 404
Body
{
  "id": 69,
  "state": "rejected",
  "identifier": "order_69",
  "recipient_name": null,
  "recipient_phone": null,
  "billing_name": null,
  "billing_phone": null,
  "source": null,
  "shipping_method": null,
  "message": null,
  "placed_at": "2018-11-06T08:57:59.438Z",
  "address": {
    "street": "123 Fake St",
    "street_2": null,
    "city": "Faketown",
    "state": "CO",
    "country": "US",
    "postal_code": "12345"
  },
  "order_products": [
    {
      "id": 90,
      "updated_at": "2018-11-06T08:57:59.515Z",
      "quantity": null,
      "cost": null,
      "vendor_sku": null,
      "state": "rejected",
      "product": {
        "id": 134,
        "name": "product_114",
        "sku": "db52d3c9bff1f94fa8a4f2f809ae4c0a",
        "primary_image_url": ""
      }
    },
    {
      "id": 89,
      "updated_at": "2018-11-06T08:57:59.517Z",
      "quantity": null,
      "cost": null,
      "vendor_sku": null,
      "state": "rejected",
      "product": {
        "id": 133,
        "name": "product_113",
        "sku": "9181d96e700cdd2481bbb193138960ea",
        "primary_image_url": ""
      }
    },
    {
      "id": 88,
      "updated_at": "2018-11-06T08:57:59.518Z",
      "quantity": null,
      "cost": null,
      "vendor_sku": null,
      "state": "rejected",
      "product": {
        "id": 132,
        "name": "product_112",
        "sku": "cc89508031c3db7574d51eadb0d179f6",
        "primary_image_url": ""
      }
    },
    {
      "id": 87,
      "updated_at": "2018-11-06T08:57:59.520Z",
      "quantity": null,
      "cost": null,
      "vendor_sku": null,
      "state": "rejected",
      "product": {
        "id": 131,
        "name": "product_111",
        "sku": "26848462e247a65f5322d8c554946672",
        "primary_image_url": ""
      }
    }
  ]
}
Body
{
  "error": "Access Denied"
}
Body
{
  "error": "Not Found"
}

PUT /v1/orders/:id/reject

Parameters
Hide Show
id
integer   (required)  

An order id

order
dictionary   (required)   Contains the following additional parameters:
order_products
array[integer]   (required)  

A list of order_product ids


GET   /v1/orders/59
Responses 200 404
Body
{
  "id": 59,
  "state": "new",
  "identifier": "order_59",
  "recipient_name": null,
  "recipient_phone": null,
  "billing_name": null,
  "billing_phone": null,
  "source": null,
  "shipping_method": null,
  "message": null,
  "placed_at": "2018-11-06T08:57:58.056Z",
  "address": {
    "street": "123 Fake St",
    "street_2": null,
    "city": "Faketown",
    "state": "CO",
    "country": "US",
    "postal_code": "12345"
  },
  "order_products": [
    {
      "id": 59,
      "updated_at": "2018-11-06T08:57:58.098Z",
      "quantity": null,
      "cost": null,
      "vendor_sku": null,
      "state": "new",
      "product": {
        "id": 103,
        "name": "product_83",
        "sku": "581004b15edfda7314393840780217a8",
        "primary_image_url": ""
      }
    }
  ]
}
Body
{
  "error": "Not Found"
}

GET /v1/orders/:id

Parameters
Hide Show
id
integer   (required)  

An order id


Products

Requests default invalid
POST   /v1/products
Body
{
  "product": {
    "name": "Test Product",
    "category_id": 71,
    "manufacturer_id": 65,
    "manufacturer_number": "12345",
    "manufacturers_suggested_retail_price": 16,
    "properties": {
      "property_9": "US",
      "property_10": "a",
      "property_11": 5,
      "property_12": "abcdef",
      "property_13": "cm",
      "property_14": "/localhost"
    },
    "images": [
      "/www.test.com/image.png",
      "data:image/png;base64,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NRWNfyo5xtRk3ouE9CqYopmZ90gviNMF4PvgzMx088zM9yqk2AcAtH2c78VnJXESgKPBxgwX767MTvCf+gcD9f9WhduaYAAAACBjSFJNAABuJwAAc68AAQayAAB5LQAAS8sAAQPEAAAw+wAAEN7lvXdbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHBob3Rvc2hvcDpJQ0NQcm9maWxlPkRpc3BsYXk8L3Bob3Rvc2hvcDpJQ0NQcm9maWxlPgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NzkxPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+NzkxPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNS0wMy0xN1QwMDo1ODozNi0wNjowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTUtMDMtMTdUMDA6NTg6MzYtMDY6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNS0wMy0xN1QwMDo1ODozNi0wNjowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+QWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNS0wMy0xN1QwMDo1ODozNi0wNjowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo1OTgwOWE3NS02NzM2LTRjY2YtOTI5NC1kNjRjN2IyYTUwNzM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNS0wMy0xN1QwMDo1ODozNi0wNjowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo4NDM5NmNkZS01MWJmLTQwYjAtYWQ0MC00NTdkY2I1ZWJhMTg8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjg0Mzk2Y2RlLTUxYmYtNDBiMC1hZDQwLTQ1N2RjYjVlYmExODwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjU5ODA5YTc1LTY3MzYtNGNjZi05Mjk0LWQ2NGM3YjJhNTA3MzwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54bXAuZGlkOjU5ODA5YTc1LTY3MzYtNGNjZi05Mjk0LWQ2NGM3YjJhNTA3MzwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAg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"
    ],
    "vendor_sku": "1c8325850ccb127a602a5df09cab1847"
  },
  "stock": {
    "quantity": 6,
    "price": 15.5
  }
}
Responses 201 403
Body
{
  "id": 234,
  "name": "Test Product",
  "manufacturer_number": "12345",
  "sku": null,
  "ean": null,
  "upc": null,
  "asin": null,
  "primary_image_url": "/www.test.com/image.png",
  "image_urls": [
    "/www.test.com/image.png",
    "/storage.googleapis.com/jomashop-vendor-images/test/image/2/file.png"
  ],
  "category": {
    "id": 71,
    "name": "category_60",
    "property_groups": [
      {
        "name": "Vital",
        "properties": [
          {
            "id": 46,
            "name": "property_9",
            "key": "property_9",
            "kind": "country",
            "data": null,
            "designation": "required",
            "instructions": null
          },
          {
            "id": 47,
            "name": "property_10",
            "key": "property_10",
            "kind": "enumerable",
            "data": {
              "values": [
                "a",
                "b",
                "c"
              ]
            },
            "designation": "required",
            "instructions": null
          },
          {
            "id": 48,
            "name": "property_11",
            "key": "property_11",
            "kind": "numeric",
            "data": null,
            "designation": "required",
            "instructions": null
          },
          {
            "id": 49,
            "name": "property_12",
            "key": "property_12",
            "kind": "string",
            "data": null,
            "designation": "required",
            "instructions": null
          },
          {
            "id": 50,
            "name": "property_13",
            "key": "property_13",
            "kind": "unit",
            "data": {
              "unit_type": "length",
              "values": [
                "mm",
                "cm"
              ]
            },
            "designation": "required",
            "instructions": null
          },
          {
            "id": 51,
            "name": "property_14",
            "key": "property_14",
            "kind": "url",
            "data": null,
            "designation": "required",
            "instructions": null
          }
        ]
      },
      {
        "name": "Info",
        "properties": [

        ]
      },
      {
        "name": "Offer",
        "properties": [

        ]
      },
      {
        "name": "Images",
        "properties": [

        ]
      }
    ]
  },
  "manufacturer": {
    "id": 65,
    "name": "manufacturer_56"
  },
  "state": "pending",
  "properties": {
    "property_9": "US",
    "property_10": "a",
    "property_11": 5,
    "property_12": "abcdef",
    "property_13": "cm",
    "property_14": "/localhost"
  },
  "vendor_id": 147,
  "vendor_sku": "1c8325850ccb127a602a5df09cab1847"
}
Body
{
  "error": "Access Denied"
}
POST   /v1/products
Body
{
  "product": {
    "name": "",
    "category_id": 72,
    "manufacturer_id": 66,
    "manufacturer_number": "12345",
    "manufacturers_suggested_retail_price": 16,
    "properties": {
      "property_15": "US",
      "property_16": "a",
      "property_17": 5,
      "property_18": "abcdef",
      "property_19": "cm",
      "property_20": "/localhost"
    },
    "images": [
      "/www.test.com/image.png",
      "data:image/png;base64,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NRWNfyo5xtRk3ouE9CqYopmZ90gviNMF4PvgzMx088zM9yqk2AcAtH2c78VnJXESgKPBxgwX767MTvCf+gcD9f9WhduaYAAAACBjSFJNAABuJwAAc68AAQayAAB5LQAAS8sAAQPEAAAw+wAAEN7lvXdbAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6T3JpZW50YXRpb24+MTwvdGlmZjpPcmllbnRhdGlvbj4KICAgICAgICAgPHBob3Rvc2hvcDpJQ0NQcm9maWxlPkRpc3BsYXk8L3Bob3Rvc2hvcDpJQ0NQcm9maWxlPgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NzkxPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+NzkxPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9wbmc8L2RjOmZvcm1hdD4KICAgICAgICAgPHhtcDpNZXRhZGF0YURhdGU+MjAxNS0wMy0xN1QwMDo1ODozNi0wNjowMDwveG1wOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTUtMDMtMTdUMDA6NTg6MzYtMDY6MDA8L3htcDpDcmVhdGVEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNS0wMy0xN1QwMDo1ODozNi0wNjowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+QWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5PgogICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNS0wMy0xN1QwMDo1ODozNi0wNjowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo1OTgwOWE3NS02NzM2LTRjY2YtOTI5NC1kNjRjN2IyYTUwNzM8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y3JlYXRlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNS0wMy0xN1QwMDo1ODozNi0wNjowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDo4NDM5NmNkZS01MWJmLTQwYjAtYWQ0MC00NTdkY2I1ZWJhMTg8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjg0Mzk2Y2RlLTUxYmYtNDBiMC1hZDQwLTQ1N2RjYjVlYmExODwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjU5ODA5YTc1LTY3MzYtNGNjZi05Mjk0LWQ2NGM3YjJhNTA3MzwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06RG9jdW1lbnRJRD54bXAuZGlkOjU5ODA5YTc1LTY3MzYtNGNjZi05Mjk0LWQ2NGM3YjJhNTA3MzwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAg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"
    ],
    "vendor_sku": "f0b43d0e1de4d3729e09f5546591bec6"
  },
  "stock": {
    "quantity": 6,
    "price": 15.5
  }
}
Responses 422
Body
{
  "error": "Invalid Record",
  "errors": {
    "name": [
      "can't be blank"
    ]
  }
}

POST /v1/products

Parameters
Hide Show
product
dictionary   (required)   Contains the following additional parameters:
name
string   (required)  

The name of the product

category_id
integer   (required)  

The category this product belongs to

manufacturer_id
integer   (required)  

The manufacturer this product belongs to

manufacturer_number
string   (required)  

The identifier or number assigned by the manufacturer

ean
string   (optional)  

The International/European Article Number

upc
string   (optional)  

Universal Product Code

asin
string   (optional)  

Amazon Standard Identification Number

manufacturers_suggested_retail_price
decimal   (optional)  

MSRP

properties
dictionary   (required)  

A collection of key/value pairs corresponding to the properties of the associated category

images
array[string]   (optional)  

A mixed array of absolute image urls or a base64 encoded images using the following format: "data:<<Mime Type>>;base64,<<content>>". Accepts png or jpeg.

vendor_sku
string   (required)  

The Stock Keeping Unit for this product

vendor_warranty_type
string   (optional)  

The type of the warranty for this product

Allowed Values:  Company Limited Manufacturer No Warranty

vendor_warranty_years
integer   (optional)  

The length of the warranty in years

stock
dictionary   (required)   Contains the following additional parameters:
quantity
integer   (optional)  

The number of units in stock

price
decimal   (optional)  

The price of each unit


GET   /v1/products/template.csv?category_id=88
Responses 200 200
Body
Brand,Manufacturer #,Title,Vendor SKU,EAN,UPC,ASIN,property_111,property_112,property_113,property_114,property_115,property_116,Warranty Type,Warranty Years,MSRP,Quantity,Price,Image1,Image2,Image3,Image4,Image5,Image6,Image7,Image8,Image9,Image10
The brand of the item (e.g. Rolex),The manufacturer number of the item. (e.g. ES4113),The name of the product,Your unique vendor SKU,International Article Number ,Universal Product Code,Amazon Standard Identification Number,,,,,,,,,,The number of products you wish to sell,Your selling price in USD,,,,,,,,,,
required,recommended,required,required,recommended,recommended,recommended,required,required,required,required,required,required,optional,optional,required,required,required,required,recommended,recommended,optional,optional,optional,optional,optional,optional,optional
Body
[binary data]

GET /v1/products/template.:format

Parameters
Hide Show
format
string   (required)  

The file format

Allowed Values:  csv xlsm

category_id
integer   (required)  

A category id


Requests default with condition with manufacturer_id with page with per_page with require_stock with require_vendor with search with sort and order with state with states
GET   /v1/products
Responses 200
Body
{
  "products": [
    {
      "id": 222,
      "name": "Rolex",
      "manufacturer_number": "202",
      "sku": "cd0026cd0d8c3d3d2783d0c92f3c8352",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 61,
        "name": "Sunglasses Conglomerate"
      },
      "stock": {
        "quantity": 10,
        "price": "20.0",
        "sku": "stock_19"
      },
      "score": null
    },
    {
      "id": 223,
      "name": "Timex",
      "manufacturer_number": "203",
      "sku": "d2e969d4543fd57b3c7f629236d24a42",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 62,
        "name": "Watch Emporium"
      },
      "score": null
    },
    {
      "id": 224,
      "name": "Rayban",
      "manufacturer_number": "204",
      "sku": "9bbce57ba05d15ff905e6a2f5f868304",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 61,
        "name": "Sunglasses Conglomerate"
      },
      "score": null
    },
    {
      "id": 225,
      "name": "Oaklies",
      "manufacturer_number": "205",
      "sku": "dd9f7c61947d8efa1c8689a7e99f8dda",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 62,
        "name": "Watch Emporium"
      },
      "state": "rejected",
      "vendor_sku": "f638df3e4ca405451aa8e22313f6a4ae",
      "vendor_id": 139,
      "rejection_reason": null,
      "score": null
    },
    {
      "id": 226,
      "name": "Nike",
      "manufacturer_number": "206",
      "sku": "fee3589fb4af2c4c63e5e7ab59db02be",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 61,
        "name": "Sunglasses Conglomerate"
      },
      "stock": {
        "quantity": 15,
        "price": "15.0",
        "sku": "stock_23"
      },
      "state": "pending",
      "vendor_sku": "771a2ab54cb92c3bf2a6942b05a6721c",
      "vendor_id": 139,
      "rejection_reason": null,
      "score": null
    }
  ],
  "count": 5,
  "current_page": 1,
  "pages": 1,
  "total_count": 5
}
GET   /v1/products?condition=open-box
Responses 200
Body
{
  "products": [
    {
      "id": 222,
      "name": "Rolex",
      "manufacturer_number": "202",
      "sku": "cd0026cd0d8c3d3d2783d0c92f3c8352",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 61,
        "name": "Sunglasses Conglomerate"
      },
      "stock": {
        "quantity": 5,
        "price": "25.0",
        "sku": "stock_20"
      },
      "score": null
    },
    {
      "id": 223,
      "name": "Timex",
      "manufacturer_number": "203",
      "sku": "d2e969d4543fd57b3c7f629236d24a42",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 62,
        "name": "Watch Emporium"
      },
      "score": null
    },
    {
      "id": 224,
      "name": "Rayban",
      "manufacturer_number": "204",
      "sku": "9bbce57ba05d15ff905e6a2f5f868304",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 61,
        "name": "Sunglasses Conglomerate"
      },
      "score": null
    },
    {
      "id": 225,
      "name": "Oaklies",
      "manufacturer_number": "205",
      "sku": "dd9f7c61947d8efa1c8689a7e99f8dda",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 62,
        "name": "Watch Emporium"
      },
      "state": "rejected",
      "vendor_sku": "f638df3e4ca405451aa8e22313f6a4ae",
      "vendor_id": 139,
      "rejection_reason": null,
      "score": null
    },
    {
      "id": 226,
      "name": "Nike",
      "manufacturer_number": "206",
      "sku": "fee3589fb4af2c4c63e5e7ab59db02be",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 61,
        "name": "Sunglasses Conglomerate"
      },
      "state": "pending",
      "vendor_sku": "771a2ab54cb92c3bf2a6942b05a6721c",
      "vendor_id": 139,
      "rejection_reason": null,
      "score": null
    }
  ],
  "count": 5,
  "current_page": 1,
  "pages": 1,
  "total_count": 5
}
GET   /v1/products?manufacturer_id=61
Responses 200
Body
{
  "products": [
    {
      "id": 222,
      "name": "Rolex",
      "manufacturer_number": "202",
      "sku": "cd0026cd0d8c3d3d2783d0c92f3c8352",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 61,
        "name": "Sunglasses Conglomerate"
      },
      "stock": {
        "quantity": 10,
        "price": "20.0",
        "sku": "stock_19"
      },
      "score": null
    },
    {
      "id": 224,
      "name": "Rayban",
      "manufacturer_number": "204",
      "sku": "9bbce57ba05d15ff905e6a2f5f868304",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 61,
        "name": "Sunglasses Conglomerate"
      },
      "score": null
    },
    {
      "id": 226,
      "name": "Nike",
      "manufacturer_number": "206",
      "sku": "fee3589fb4af2c4c63e5e7ab59db02be",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 61,
        "name": "Sunglasses Conglomerate"
      },
      "stock": {
        "quantity": 15,
        "price": "15.0",
        "sku": "stock_23"
      },
      "state": "pending",
      "vendor_sku": "771a2ab54cb92c3bf2a6942b05a6721c",
      "vendor_id": 139,
      "rejection_reason": null,
      "score": null
    }
  ],
  "count": 3,
  "current_page": 1,
  "pages": 1,
  "total_count": 3
}
GET   /v1/products?per_page=3&page=2
Responses 200
Body
{
  "products": [
    {
      "id": 225,
      "name": "Oaklies",
      "manufacturer_number": "205",
      "sku": "dd9f7c61947d8efa1c8689a7e99f8dda",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 62,
        "name": "Watch Emporium"
      },
      "state": "rejected",
      "vendor_sku": "f638df3e4ca405451aa8e22313f6a4ae",
      "vendor_id": 139,
      "rejection_reason": null,
      "score": null
    },
    {
      "id": 226,
      "name": "Nike",
      "manufacturer_number": "206",
      "sku": "fee3589fb4af2c4c63e5e7ab59db02be",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 61,
        "name": "Sunglasses Conglomerate"
      },
      "stock": {
        "quantity": 15,
        "price": "15.0",
        "sku": "stock_23"
      },
      "state": "pending",
      "vendor_sku": "771a2ab54cb92c3bf2a6942b05a6721c",
      "vendor_id": 139,
      "rejection_reason": null,
      "score": null
    }
  ],
  "count": 2,
  "current_page": 2,
  "pages": 2,
  "total_count": 5
}
GET   /v1/products?per_page=3
Responses 200
Body
{
  "products": [
    {
      "id": 222,
      "name": "Rolex",
      "manufacturer_number": "202",
      "sku": "cd0026cd0d8c3d3d2783d0c92f3c8352",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 61,
        "name": "Sunglasses Conglomerate"
      },
      "stock": {
        "quantity": 10,
        "price": "20.0",
        "sku": "stock_19"
      },
      "score": null
    },
    {
      "id": 223,
      "name": "Timex",
      "manufacturer_number": "203",
      "sku": "d2e969d4543fd57b3c7f629236d24a42",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 62,
        "name": "Watch Emporium"
      },
      "score": null
    },
    {
      "id": 224,
      "name": "Rayban",
      "manufacturer_number": "204",
      "sku": "9bbce57ba05d15ff905e6a2f5f868304",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 61,
        "name": "Sunglasses Conglomerate"
      },
      "score": null
    }
  ],
  "count": 3,
  "current_page": 1,
  "pages": 2,
  "total_count": 5
}
GET   /v1/products?require_stock=true
Responses 200
Body
{
  "products": [
    {
      "id": 222,
      "name": "Rolex",
      "manufacturer_number": "202",
      "sku": "cd0026cd0d8c3d3d2783d0c92f3c8352",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 61,
        "name": "Sunglasses Conglomerate"
      },
      "stock": {
        "quantity": 10,
        "price": "20.0",
        "sku": "stock_19"
      },
      "score": null
    },
    {
      "id": 226,
      "name": "Nike",
      "manufacturer_number": "206",
      "sku": "fee3589fb4af2c4c63e5e7ab59db02be",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 61,
        "name": "Sunglasses Conglomerate"
      },
      "stock": {
        "quantity": 15,
        "price": "15.0",
        "sku": "stock_23"
      },
      "state": "pending",
      "vendor_sku": "771a2ab54cb92c3bf2a6942b05a6721c",
      "vendor_id": 139,
      "rejection_reason": null,
      "score": null
    }
  ],
  "count": 2,
  "current_page": 1,
  "pages": 1,
  "total_count": 2
}
GET   /v1/products?require_vendor=true
Responses 200
Body
{
  "products": [
    {
      "id": 225,
      "name": "Oaklies",
      "manufacturer_number": "205",
      "sku": "dd9f7c61947d8efa1c8689a7e99f8dda",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 62,
        "name": "Watch Emporium"
      },
      "state": "rejected",
      "vendor_sku": "f638df3e4ca405451aa8e22313f6a4ae",
      "vendor_id": 139,
      "rejection_reason": null,
      "score": null
    },
    {
      "id": 226,
      "name": "Nike",
      "manufacturer_number": "206",
      "sku": "fee3589fb4af2c4c63e5e7ab59db02be",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 61,
        "name": "Sunglasses Conglomerate"
      },
      "stock": {
        "quantity": 15,
        "price": "15.0",
        "sku": "stock_23"
      },
      "state": "pending",
      "vendor_sku": "771a2ab54cb92c3bf2a6942b05a6721c",
      "vendor_id": 139,
      "rejection_reason": null,
      "score": null
    }
  ],
  "count": 2,
  "current_page": 1,
  "pages": 1,
  "total_count": 2
}
GET   /v1/products?search=Nike
Responses 200
Body
{
  "products": [
    {
      "id": 226,
      "name": "Nike",
      "manufacturer_number": "206",
      "sku": "fee3589fb4af2c4c63e5e7ab59db02be",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 61,
        "name": "Sunglasses Conglomerate"
      },
      "stock": {
        "quantity": 15,
        "price": "15.0",
        "sku": "stock_23"
      },
      "state": "pending",
      "vendor_sku": "771a2ab54cb92c3bf2a6942b05a6721c",
      "vendor_id": 139,
      "rejection_reason": null,
      "score": 18.679413
    }
  ],
  "count": 1,
  "current_page": 1,
  "pages": 1,
  "total_count": 1
}
GET   /v1/products?sort=name&order=asc
Responses 200
Body
{
  "products": [
    {
      "id": 226,
      "name": "Nike",
      "manufacturer_number": "206",
      "sku": "fee3589fb4af2c4c63e5e7ab59db02be",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 61,
        "name": "Sunglasses Conglomerate"
      },
      "stock": {
        "quantity": 15,
        "price": "15.0",
        "sku": "stock_23"
      },
      "state": "pending",
      "vendor_sku": "771a2ab54cb92c3bf2a6942b05a6721c",
      "vendor_id": 139,
      "rejection_reason": null,
      "score": null
    },
    {
      "id": 225,
      "name": "Oaklies",
      "manufacturer_number": "205",
      "sku": "dd9f7c61947d8efa1c8689a7e99f8dda",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 62,
        "name": "Watch Emporium"
      },
      "state": "rejected",
      "vendor_sku": "f638df3e4ca405451aa8e22313f6a4ae",
      "vendor_id": 139,
      "rejection_reason": null,
      "score": null
    },
    {
      "id": 224,
      "name": "Rayban",
      "manufacturer_number": "204",
      "sku": "9bbce57ba05d15ff905e6a2f5f868304",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 61,
        "name": "Sunglasses Conglomerate"
      },
      "score": null
    },
    {
      "id": 222,
      "name": "Rolex",
      "manufacturer_number": "202",
      "sku": "cd0026cd0d8c3d3d2783d0c92f3c8352",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 61,
        "name": "Sunglasses Conglomerate"
      },
      "stock": {
        "quantity": 10,
        "price": "20.0",
        "sku": "stock_19"
      },
      "score": null
    },
    {
      "id": 223,
      "name": "Timex",
      "manufacturer_number": "203",
      "sku": "d2e969d4543fd57b3c7f629236d24a42",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 62,
        "name": "Watch Emporium"
      },
      "score": null
    }
  ],
  "count": 5,
  "current_page": 1,
  "pages": 1,
  "total_count": 5
}
GET   /v1/products?state=pending
Responses 200
Body
{
  "products": [
    {
      "id": 226,
      "name": "Nike",
      "manufacturer_number": "206",
      "sku": "fee3589fb4af2c4c63e5e7ab59db02be",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 61,
        "name": "Sunglasses Conglomerate"
      },
      "stock": {
        "quantity": 15,
        "price": "15.0",
        "sku": "stock_23"
      },
      "state": "pending",
      "vendor_sku": "771a2ab54cb92c3bf2a6942b05a6721c",
      "vendor_id": 139,
      "rejection_reason": null,
      "score": null
    }
  ],
  "count": 1,
  "current_page": 1,
  "pages": 1,
  "total_count": 1
}
GET   /v1/products?states[]=rejected&states[]=pending
Responses 200
Body
{
  "products": [
    {
      "id": 225,
      "name": "Oaklies",
      "manufacturer_number": "205",
      "sku": "dd9f7c61947d8efa1c8689a7e99f8dda",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 62,
        "name": "Watch Emporium"
      },
      "state": "rejected",
      "vendor_sku": "f638df3e4ca405451aa8e22313f6a4ae",
      "vendor_id": 139,
      "rejection_reason": null,
      "score": null
    },
    {
      "id": 226,
      "name": "Nike",
      "manufacturer_number": "206",
      "sku": "fee3589fb4af2c4c63e5e7ab59db02be",
      "ean": null,
      "upc": null,
      "asin": null,
      "primary_image_url": "",
      "category": {
        "id": 69,
        "name": "category_58"
      },
      "manufacturer": {
        "id": 61,
        "name": "Sunglasses Conglomerate"
      },
      "stock": {
        "quantity": 15,
        "price": "15.0",
        "sku": "stock_23"
      },
      "state": "pending",
      "vendor_sku": "771a2ab54cb92c3bf2a6942b05a6721c",
      "vendor_id": 139,
      "rejection_reason": null,
      "score": null
    }
  ],
  "count": 2,
  "current_page": 1,
  "pages": 1,
  "total_count": 2
}

GET /v1/products

Parameters
Hide Show
per_page
number   (optional)   Default:  25  

The maximum number of results returned per page.

page
number   (optional)   Default:  1  

The page requested. Default: 1

search
string   (optional)  

A term(s) to filter the result by. Matches to sku, name, manufacturer name, ean, upc, or asin.

manufacturer_id
integer   (optional)  

Filter by the id of a specific manufacturer

require_stock
boolean   (optional)   Default:  false  

Filter the result to only products with stock objects (not necesarrily in stock)

require_vendor
boolean   (optional)   Default:  false  

Filter to only products created by this vendor

state
string   (optional)  

Filter results by state

Allowed Values:  pending rejected rejected_permanently approved

states
array[string]   (optional)  

Filter results by a list of states

Allowed Values:  pending rejected rejected_permanently approved

condition
string   (optional)  

Filter included stocks to only this condition

Allowed Values:  all new open-box pre-owned

sort
string   (optional)   Default:  created_at  

The property to sort results by. Default changes to "relevance" if "search" parameter is present

Allowed Values:  created_at name sku manufacturer price quantity relevance

order
string   (optional)   Default:  desc  

The order in which to sort results

Allowed Values:  desc asc


Requests approved product default pending product
GET   /v1/products/240
Responses 200
Body
{
  "id": 240,
  "name": "product_204",
  "manufacturer_number": "216",
  "sku": "a4e4dbcf8f87638d3b3d8ffdc3b4c15a",
  "ean": null,
  "upc": null,
  "asin": null,
  "primary_image_url": "",
  "image_urls": [

  ],
  "category": {
    "id": 78,
    "name": "category_67",
    "property_groups": [
      {
        "name": "Vital",
        "properties": [
          {
            "id": 88,
            "name": "property_51",
            "key": "property_51",
            "kind": "country",
            "data": null,
            "designation": "required",
            "instructions": null
          },
          {
            "id": 89,
            "name": "property_52",
            "key": "property_52",
            "kind": "enumerable",
            "data": {
              "values": [
                "a",
                "b",
                "c"
              ]
            },
            "designation": "required",
            "instructions": null
          },
          {
            "id": 90,
            "name": "property_53",
            "key": "property_53",
            "kind": "numeric",
            "data": null,
            "designation": "required",
            "instructions": null
          },
          {
            "id": 91,
            "name": "property_54",
            "key": "property_54",
            "kind": "string",
            "data": null,
            "designation": "required",
            "instructions": null
          },
          {
            "id": 92,
            "name": "property_55",
            "key": "property_55",
            "kind": "unit",
            "data": {
              "unit_type": "length",
              "values": [
                "mm",
                "cm"
              ]
            },
            "designation": "required",
            "instructions": null
          },
          {
            "id": 93,
            "name": "property_56",
            "key": "property_56",
            "kind": "url",
            "data": null,
            "designation": "required",
            "instructions": null
          }
        ]
      },
      {
        "name": "Info",
        "properties": [

        ]
      },
      {
        "name": "Offer",
        "properties": [

        ]
      },
      {
        "name": "Images",
        "properties": [

        ]
      }
    ]
  },
  "manufacturer": {
    "id": 72,
    "name": "manufacturer_63"
  },
  "stocks": [
    {
      "id": 50,
      "sku": "stock_33",
      "quantity": 10,
      "price": "10.0",
      "condition": "new",
      "state": "active",
      "vendor": {
        "id": 154,
        "name": "vendor_138",
        "identifier": "177fc6a7-1608-418d-9675-b4b20af5fcd8"
      }
    }
  ],
  "state": "approved",
  "properties": {
    "property_51": "US",
    "property_52": "a",
    "property_53": 5,
    "property_54": "abcdef",
    "property_55": "cm",
    "property_56": "/localhost"
  },
  "vendor_id": 154,
  "vendor_sku": "ff9ec3a445cceccd161d518555ebd12f",
  "vendor_properties": {
    "property_51": "US",
    "property_52": "a",
    "property_53": 5,
    "property_54": "abcdef",
    "property_55": "cm",
    "property_56": "/localhost"
  },
  "vendor_image_urls": [

  ]
}
GET   /v1/products/238
Responses 200 200
Body
{
  "id": 238,
  "name": "product_202",
  "manufacturer_number": "214",
  "sku": "e3269894577358494ad5766ca259f11a",
  "ean": null,
  "upc": null,
  "asin": null,
  "primary_image_url": "",
  "image_urls": [

  ],
  "category": {
    "id": 76,
    "name": "category_65",
    "property_groups": [
      {
        "name": "Vital",
        "properties": [
          {
            "id": 76,
            "name": "property_39",
            "key": "property_39",
            "kind": "country",
            "data": null,
            "designation": "required",
            "instructions": null
          },
          {
            "id": 77,
            "name": "property_40",
            "key": "property_40",
            "kind": "enumerable",
            "data": {
              "values": [
                "a",
                "b",
                "c"
              ]
            },
            "designation": "required",
            "instructions": null
          },
          {
            "id": 78,
            "name": "property_41",
            "key": "property_41",
            "kind": "numeric",
            "data": null,
            "designation": "required",
            "instructions": null
          },
          {
            "id": 79,
            "name": "property_42",
            "key": "property_42",
            "kind": "string",
            "data": null,
            "designation": "required",
            "instructions": null
          },
          {
            "id": 80,
            "name": "property_43",
            "key": "property_43",
            "kind": "unit",
            "data": {
              "unit_type": "length",
              "values": [
                "mm",
                "cm"
              ]
            },
            "designation": "required",
            "instructions": null
          },
          {
            "id": 81,
            "name": "property_44",
            "key": "property_44",
            "kind": "url",
            "data": null,
            "designation": "required",
            "instructions": null
          }
        ]
      },
      {
        "name": "Info",
        "properties": [

        ]
      },
      {
        "name": "Offer",
        "properties": [

        ]
      },
      {
        "name": "Images",
        "properties": [

        ]
      }
    ]
  },
  "manufacturer": {
    "id": 70,
    "name": "manufacturer_61"
  },
  "stocks": [
    {
      "id": 46,
      "sku": "stock_29",
      "quantity": 10,
      "price": "10.0",
      "condition": "new",
      "state": "active",
      "vendor": {
        "id": 150,
        "name": "vendor_134",
        "identifier": "5726e50d-89f3-49ba-a8b1-cf948dc25a70"
      }
    }
  ]
}
Body
{
  "id": 241,
  "name": "product_205",
  "manufacturer_number": "217",
  "sku": "5af8407667a867b42fea0c8ccd04707f",
  "ean": null,
  "upc": null,
  "asin": null,
  "primary_image_url": "",
  "image_urls": [

  ],
  "category": {
    "id": 79,
    "name": "category_68",
    "property_groups": [
      {
        "name": "Vital",
        "properties": [
          {
            "id": 94,
            "name": "property_57",
            "key": "property_57",
            "kind": "country",
            "data": null,
            "designation": "required",
            "instructions": null
          },
          {
            "id": 95,
            "name": "property_58",
            "key": "property_58",
            "kind": "enumerable",
            "data": {
              "values": [
                "a",
                "b",
                "c"
              ]
            },
            "designation": "required",
            "instructions": null
          },
          {
            "id": 96,
            "name": "property_59",
            "key": "property_59",
            "kind": "numeric",
            "data": null,
            "designation": "required",
            "instructions": null
          },
          {
            "id": 97,
            "name": "property_60",
            "key": "property_60",
            "kind": "string",
            "data": null,
            "designation": "required",
            "instructions": null
          },
          {
            "id": 98,
            "name": "property_61",
            "key": "property_61",
            "kind": "unit",
            "data": {
              "unit_type": "length",
              "values": [
                "mm",
                "cm"
              ]
            },
            "designation": "required",
            "instructions": null
          },
          {
            "id": 99,
            "name": "property_62",
            "key": "property_62",
            "kind": "url",
            "data": null,
            "designation": "required",
            "instructions": null
          }
        ]
      },
      {
        "name": "Info",
        "properties": [

        ]
      },
      {
        "name": "Offer",
        "properties": [

        ]
      },
      {
        "name": "Images",
        "properties": [

        ]
      }
    ]
  },
  "manufacturer": {
    "id": 73,
    "name": "manufacturer_64"
  },
  "stocks": [
    {
      "id": 52,
      "sku": "stock_35",
      "quantity": 10,
      "price": "10.0",
      "condition": "new",
      "state": "active",
      "vendor": {
        "id": 156,
        "name": "vendor_140",
        "identifier": "15ad7453-13df-4016-b09b-37449fa018e5"
      }
    }
  ]
}
GET   /v1/products/239
Responses 200
Body
{
  "id": 239,
  "name": "product_203",
  "manufacturer_number": "215",
  "sku": null,
  "ean": null,
  "upc": null,
  "asin": null,
  "primary_image_url": "",
  "image_urls": [

  ],
  "category": {
    "id": 77,
    "name": "category_66",
    "property_groups": [
      {
        "name": "Vital",
        "properties": [
          {
            "id": 82,
            "name": "property_45",
            "key": "property_45",
            "kind": "country",
            "data": null,
            "designation": "required",
            "instructions": null
          },
          {
            "id": 83,
            "name": "property_46",
            "key": "property_46",
            "kind": "enumerable",
            "data": {
              "values": [
                "a",
                "b",
                "c"
              ]
            },
            "designation": "required",
            "instructions": null
          },
          {
            "id": 84,
            "name": "property_47",
            "key": "property_47",
            "kind": "numeric",
            "data": null,
            "designation": "required",
            "instructions": null
          },
          {
            "id": 85,
            "name": "property_48",
            "key": "property_48",
            "kind": "string",
            "data": null,
            "designation": "required",
            "instructions": null
          },
          {
            "id": 86,
            "name": "property_49",
            "key": "property_49",
            "kind": "unit",
            "data": {
              "unit_type": "length",
              "values": [
                "mm",
                "cm"
              ]
            },
            "designation": "required",
            "instructions": null
          },
          {
            "id": 87,
            "name": "property_50",
            "key": "property_50",
            "kind": "url",
            "data": null,
            "designation": "required",
            "instructions": null
          }
        ]
      },
      {
        "name": "Info",
        "properties": [

        ]
      },
      {
        "name": "Offer",
        "properties": [

        ]
      },
      {
        "name": "Images",
        "properties": [

        ]
      }
    ]
  },
  "manufacturer": {
    "id": 71,
    "name": "manufacturer_62"
  },
  "stocks": [
    {
      "id": 48,
      "sku": "stock_31",
      "quantity": 10,
      "price": "10.0",
      "condition": "new",
      "state": "active",
      "vendor": {
        "id": 152,
        "name": "vendor_136",
        "identifier": "2712fe34-3926-4bc1-8c17-e011e827f309"
      }
    }
  ],
  "state": "pending",
  "properties": {
    "property_45": "US",
    "property_46": "a",
    "property_47": 5,
    "property_48": "abcdef",
    "property_49": "cm",
    "property_50": "/localhost"
  },
  "vendor_id": 152,
  "vendor_sku": "98458ebdf56635c815e0a1ad7344b0c3"
}

GET /v1/products/:id

Parameters
Hide Show
id
integer   (required)  

A product id


Sessions

Requests default invalid
POST   /v1/session
Body
{
  "user": {
    "email": "user_441@example.com",
    "password": "test_password"
  }
}
Responses 200
Headers
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoib3duZXIiLCJzdWIiOiIzMDUiLCJzY3AiOiJ1c2VyIiwiaWF0IjoxNTQxNDk0Njg4LCJleHAiOiIxNTQ0MDg2Njg4IiwianRpIjoiM2ZlNTNiMDUtZjNkZi00NmVmLWJkM2QtNDU5NjA0YzRjOTExIn0.HGW2eZ-q33tDOyElsLMCa6OBYcpV6cveddQbGBuuzJc
Body
{
  "id": 305,
  "email": "user_441@example.com",
  "role": "owner",
  "first_name": "Nat",
  "last_name": "Spinka",
  "phone": "1-911-859-7714 x175",
  "confirmed_at": "2018-11-06T08:58:08.355Z",
  "vendor": {
    "id": 169,
    "name": "vendor_153",
    "confirmed": true
  }
}
POST   /v1/session
Body
{
  "user": {
    "email": "user_443@example.com",
    "password": "bad_password"
  }
}
Responses 401
Body
{
  "error": "Invalid %{authentication_keys} or password."
}

POST /v1/session

This request does not require an Authorization header

Parameters
Hide Show
user
dictionary   (required)   Contains the following additional parameters:
email
string   (optional)  

email associated with an account

password
string   (optional)  

password associated with an account


DELETE   /v1/session
Responses 204
This response has no content.

DELETE /v1/session


PUT   /v1/session
Body
{
}
Responses 200
Headers
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoib3duZXIiLCJzdWIiOiIzMDciLCJzY3AiOiJ1c2VyIiwiaWF0IjoxNTQxNDk0Njg4LCJleHAiOiIxNTQ0MDg2Njg4IiwianRpIjoiZjdhOWQ3OTAtMThlOC00ZjI0LWI1ZDYtYTFlMDBlMTBlNGY2In0.vgl2wGTYpNNvvNZ6gxd51gdFdvEaNoQgo3A7CRJIZ0U
Body
{
  "id": 307,
  "email": "user_445@example.com",
  "role": "owner",
  "first_name": "Frances",
  "last_name": "Hauck",
  "phone": "(580) 713-2215 x4864",
  "confirmed_at": "2018-11-06T08:58:08.547Z",
  "vendor": {
    "id": 171,
    "name": "vendor_155",
    "confirmed": true
  }
}

PUT /v1/session


Stocks

Requests default forbidden invalid
PUT   /v1/stocks/update_states
Body
{
  "ids": [
    81,
    82,
    83,
    84,
    85
  ],
  "state": "inactive"
}
Responses 200
Body
{
  "stocks": [
    {
      "id": 85,
      "created_at": "2018-11-06T08:58:12.607Z",
      "updated_at": "2018-11-06T08:58:12.607Z",
      "sku": "stock_64",
      "state": "inactive",
      "quantity": 15,
      "price": "15.0",
      "condition": "new",
      "product": {
        "id": 281,
        "name": "product_237",
        "sku": "356bd1574eb4815f25791aad9cb9b7ae",
        "url_key": "product-237",
        "primary_image_url": ""
      }
    },
    {
      "id": 84,
      "created_at": "2018-11-06T08:58:12.597Z",
      "updated_at": "2018-11-06T08:58:12.597Z",
      "sku": "stock_63",
      "state": "inactive",
      "quantity": 13,
      "price": "12.0",
      "condition": "new",
      "product": {
        "id": 280,
        "name": "product_236",
        "sku": "06aeca2d3d7fe0679a90a4f42bdccbd6",
        "url_key": "product-236",
        "primary_image_url": ""
      }
    },
    {
      "id": 83,
      "created_at": "2018-11-06T08:58:12.587Z",
      "updated_at": "2018-11-06T08:58:12.587Z",
      "sku": "stock_62",
      "state": "inactive",
      "quantity": 12,
      "price": "10.0",
      "condition": "new",
      "product": {
        "id": 279,
        "name": "product_235",
        "sku": "051ae8b2ed529bcccd9d0d7787aeee75",
        "url_key": "product-235",
        "primary_image_url": ""
      }
    },
    {
      "id": 82,
      "created_at": "2018-11-06T08:58:12.575Z",
      "updated_at": "2018-11-06T08:58:12.575Z",
      "sku": "stock_61",
      "state": "inactive",
      "quantity": 1,
      "price": "25.0",
      "condition": "open-box",
      "product": {
        "id": 278,
        "name": "product_234",
        "sku": "9ea8d63af9cfb2c6d470d57d4ba8df42",
        "url_key": "product-234",
        "primary_image_url": ""
      }
    },
    {
      "id": 81,
      "created_at": "2018-11-06T08:58:12.565Z",
      "updated_at": "2018-11-06T08:58:12.565Z",
      "sku": "stock_60",
      "state": "inactive",
      "quantity": 5,
      "price": "20.0",
      "condition": "new",
      "product": {
        "id": 277,
        "name": "product_233",
        "sku": "44dda98b023419e63ed6b6a0659d5dba",
        "url_key": "product-233",
        "primary_image_url": ""
      }
    }
  ],
  "count": 5,
  "current_page": 1,
  "pages": 1,
  "total_count": 5
}
PUT   /v1/stocks/update_states
Body
{
  "ids": [
    81,
    82,
    83,
    84,
    85
  ],
  "state": "inactive"
}
Responses 403
Body
{
  "error": "Access Denied"
}
PUT   /v1/stocks/update_states
Body
{
  "ids": [
    81,
    82,
    83,
    84,
    85
  ],
  "state": null
}
Responses 400
Body
{
  "error": "Bad Request",
  "errors": [
    "param is missing or the value is empty: state"
  ]
}

PUT /v1/stocks/update_states

Parameters
Hide Show
ids
array[integer]   (required)  

A list of stock ids

state
string   (required)  

The state to update the stocks to

Allowed Values:  active out_of_stock closed inactive


Requests default invalid invalid pre-owned pre-owned
POST   /v1/products/260/stocks
Body
{
  "stock": {
    "sku": "some-sku",
    "quantity": 15,
    "price": 99,
    "condition": "new"
  }
}
Responses 201
Body
{
  "id": 70,
  "created_at": "2018-11-06T08:58:10.952Z",
  "updated_at": "2018-11-06T08:58:10.952Z",
  "sku": "some-sku",
  "state": "active",
  "quantity": 15,
  "price": "99.0",
  "condition": "new",
  "product": {
    "id": 260,
    "name": "product_216",
    "sku": "18761eacce9d15efa335f23457f9aac5",
    "url_key": "product-216",
    "primary_image_url": ""
  }
}
POST   /v1/products/261/stocks
Body
{
  "stock": {
    "sku": "some-sku",
    "quantity": -1,
    "price": 99,
    "condition": "new"
  }
}
Responses 422
Body
{
  "error": "Invalid Record",
  "errors": {
    "quantity": [
      "must be greater than or equal to 0"
    ]
  }
}
POST   /v1/products/263/stocks
Body
{
  "stock": {
    "sku": "some-sku",
    "quantity": 15,
    "price": 99,
    "condition": "pre-owned",
    "has_papers": true,
    "has_box": false,
    "production_year": "1995",
    "description": "some text",
    "serial_number": "48b183b9-9628-4540-8325-95dbb08d77be"
  }
}
Responses 422
Body
{
  "error": "Invalid Record",
  "errors": {
    "quantity": [
      "must be less than or equal to 1"
    ]
  }
}
POST   /v1/products/262/stocks
Body
{
  "stock": {
    "sku": "some-sku",
    "quantity": 1,
    "price": 99,
    "condition": "pre-owned",
    "has_papers": true,
    "has_box": false,
    "production_year": "1995",
    "description": "some text",
    "serial_number": "7d1d0ad3-8bd0-4d1d-836e-e6caa4e90f5e"
  }
}
Responses 201
Body
{
  "id": 71,
  "created_at": "2018-11-06T08:58:11.137Z",
  "updated_at": "2018-11-06T08:58:11.137Z",
  "sku": "some-sku",
  "state": "active",
  "quantity": 1,
  "price": "99.0",
  "condition": "pre-owned",
  "has_papers": true,
  "has_box": false,
  "production_year": 1995,
  "description": "some text",
  "serial_number": "7d1d0ad3-8bd0-4d1d-836e-e6caa4e90f5e",
  "product": {
    "id": 262,
    "name": "product_218",
    "sku": "11b62c6b34d64611615dc4f70f5dd0ad",
    "url_key": "product-218",
    "primary_image_url": ""
  }
}

POST /v1/products/:product_id/stocks

Parameters
Hide Show
product_id
integer   (required)  

A product id to add stock to

stock
dictionary   (required)   Contains the following additional parameters:
sku
string   (required)  

The vendor's sku for this specific inventory

state
string   (optional)   Default:  active  

The status of this inventory

Allowed Values:  active out_of_stock closed inactive

quantity
integer   (required)  

Number of items for sale. For pre-owned items this can only be 1 or 0.

price
decimal   (required)  

Price required for each item

condition
string   (required)  

The condition of the item

Allowed Values:  new open-box pre-owned

has_papers
boolean   (optional)  

Whether or not this item has documentation Pre-owned only

has_box
boolean   (optional)  

Whether or not a box is included. Pre-owned only

production_year
string   (optional)  

The year this item was made. Pre-owned only

description
string   (optional)  

A brief description of any irregularities with this item. Pre-owned only

serial_number
string   (optional)  

The specific serial number of this item. Pre-owned only


Requests default should return a valid csv should return pre-owned columns when requested
GET   /v1/stocks/template.xlsm?document[]=ignore
Responses 200
Body
[binary data]
GET   /v1/stocks/template.csv
Responses 200
Body
Brand,Manufacturer #,Jomashop SKU,Vendor SKU,Price,Quantity,Status
The brand of the item (e.g. Rolex),The manufacturer number of the item. (e.g. ES4113),Jomashop's unique SKU,Your unique vendor SKU,Your selling price in USD,The number of products you wish to sell,"Active, Inactive, Closed, Out of Stock"
GET   /v1/stocks/template.csv?include_preowned=true
Responses 200
Body
Brand,Manufacturer #,Jomashop SKU,Vendor SKU,Price,Quantity,Status,Condition,Condition Description,Serial #,Box,Papers,Year of Production
The brand of the item (e.g. Rolex),The manufacturer number of the item. (e.g. ES4113),Jomashop's unique SKU,Your unique vendor SKU,Your selling price in USD,The number of products you wish to sell,"Active, Inactive, Closed, Out of Stock","","","","","",""

GET /v1/stocks/template.:format

Parameters
Hide Show
format
string   (required)  

The file format

Allowed Values:  csv xlsm

include_preowned
boolean   (optional)   Default:  false  

A flag to include pre-owned columns


Requests default with columns
GET   /v1/stocks/export.csv
Responses 200 200
Body
Vendor SKU,Price,Status,Quantity
Your unique vendor SKU,Your selling price in USD,"Active, Inactive, Closed, Out of Stock",The number of products you wish to sell
stock_70,10.0,Active,10
stock_69,10.0,Active,10
stock_68,10.0,Active,10
stock_67,10.0,Active,10
stock_66,10.0,Active,10
Body
[binary data]
GET   /v1/stocks/export.csv?columns[]=price
Responses 200
Body
Vendor SKU,Price
Your unique vendor SKU,Your selling price in USD
stock_75,10.0
stock_74,10.0
stock_73,10.0
stock_72,10.0
stock_71,10.0

GET /v1/stocks/export.:format

Parameters
Hide Show
format
string   (required)  

The file format

Allowed Values:  csv xlsm

columns
array[string]   (optional)  

A list of desired columns

Allowed Values:  price state quantity


Requests default with condition with page with per_page with search with sort and order with state with states
GET   /v1/stocks
Responses 200
Body
{
  "stocks": [
    {
      "id": 58,
      "created_at": "2018-11-06T08:58:08.721Z",
      "updated_at": "2018-11-06T08:58:08.812Z",
      "sku": "stock_41",
      "state": "active",
      "quantity": 5,
      "price": "20.0",
      "condition": "new",
      "product": {
        "id": 252,
        "name": "Rolex",
        "sku": "7f59017719b05800720426fbbb48d1e2",
        "url_key": "Rolex",
        "primary_image_url": ""
      }
    },
    {
      "id": 59,
      "created_at": "2018-11-06T08:58:07.721Z",
      "updated_at": "2018-11-06T08:58:08.817Z",
      "sku": "stock_42",
      "state": "active",
      "quantity": 1,
      "price": "25.0",
      "condition": "open-box",
      "product": {
        "id": 252,
        "name": "Rolex",
        "sku": "7f59017719b05800720426fbbb48d1e2",
        "url_key": "Rolex",
        "primary_image_url": ""
      }
    },
    {
      "id": 60,
      "created_at": "2018-11-06T08:58:06.721Z",
      "updated_at": "2018-11-06T08:58:08.821Z",
      "sku": "stock_43",
      "state": "active",
      "quantity": 12,
      "price": "10.0",
      "condition": "new",
      "product": {
        "id": 253,
        "name": "Timex",
        "sku": "fc7c0e3bb4f4bca7d617f2f920f99e9c",
        "url_key": "Timex",
        "primary_image_url": ""
      }
    },
    {
      "id": 61,
      "created_at": "2018-11-06T08:58:05.721Z",
      "updated_at": "2018-11-06T08:58:08.825Z",
      "sku": "stock_44",
      "state": "inactive",
      "quantity": 13,
      "price": "12.0",
      "condition": "new",
      "product": {
        "id": 254,
        "name": "Rayban",
        "sku": "b73ef2ad176229fcabc9cc0bc30116b9",
        "url_key": "Rayban",
        "primary_image_url": ""
      }
    },
    {
      "id": 62,
      "created_at": "2018-11-06T08:58:04.721Z",
      "updated_at": "2018-11-06T08:58:08.828Z",
      "sku": "stock_45",
      "state": "closed",
      "quantity": 15,
      "price": "15.0",
      "condition": "new",
      "product": {
        "id": 255,
        "name": "Oaklies",
        "sku": "6542cfab27227506f88c452812bf6934",
        "url_key": "Oaklies",
        "primary_image_url": ""
      }
    }
  ],
  "count": 5,
  "current_page": 1,
  "pages": 1,
  "total_count": 5
}
GET   /v1/stocks?condition=open-box
Responses 200
Body
{
  "stocks": [
    {
      "id": 59,
      "created_at": "2018-11-06T08:58:07.721Z",
      "updated_at": "2018-11-06T08:58:08.817Z",
      "sku": "stock_42",
      "state": "active",
      "quantity": 1,
      "price": "25.0",
      "condition": "open-box",
      "product": {
        "id": 252,
        "name": "Rolex",
        "sku": "7f59017719b05800720426fbbb48d1e2",
        "url_key": "Rolex",
        "primary_image_url": ""
      }
    }
  ],
  "count": 1,
  "current_page": 1,
  "pages": 1,
  "total_count": 1
}
GET   /v1/stocks?per_page=3&page=2
Responses 200
Body
{
  "stocks": [
    {
      "id": 61,
      "created_at": "2018-11-06T08:58:05.721Z",
      "updated_at": "2018-11-06T08:58:08.825Z",
      "sku": "stock_44",
      "state": "inactive",
      "quantity": 13,
      "price": "12.0",
      "condition": "new",
      "product": {
        "id": 254,
        "name": "Rayban",
        "sku": "b73ef2ad176229fcabc9cc0bc30116b9",
        "url_key": "Rayban",
        "primary_image_url": ""
      }
    },
    {
      "id": 62,
      "created_at": "2018-11-06T08:58:04.721Z",
      "updated_at": "2018-11-06T08:58:08.828Z",
      "sku": "stock_45",
      "state": "closed",
      "quantity": 15,
      "price": "15.0",
      "condition": "new",
      "product": {
        "id": 255,
        "name": "Oaklies",
        "sku": "6542cfab27227506f88c452812bf6934",
        "url_key": "Oaklies",
        "primary_image_url": ""
      }
    }
  ],
  "count": 2,
  "current_page": 2,
  "pages": 2,
  "total_count": 5
}
GET   /v1/stocks?per_page=3
Responses 200
Body
{
  "stocks": [
    {
      "id": 58,
      "created_at": "2018-11-06T08:58:08.721Z",
      "updated_at": "2018-11-06T08:58:08.812Z",
      "sku": "stock_41",
      "state": "active",
      "quantity": 5,
      "price": "20.0",
      "condition": "new",
      "product": {
        "id": 252,
        "name": "Rolex",
        "sku": "7f59017719b05800720426fbbb48d1e2",
        "url_key": "Rolex",
        "primary_image_url": ""
      }
    },
    {
      "id": 59,
      "created_at": "2018-11-06T08:58:07.721Z",
      "updated_at": "2018-11-06T08:58:08.817Z",
      "sku": "stock_42",
      "state": "active",
      "quantity": 1,
      "price": "25.0",
      "condition": "open-box",
      "product": {
        "id": 252,
        "name": "Rolex",
        "sku": "7f59017719b05800720426fbbb48d1e2",
        "url_key": "Rolex",
        "primary_image_url": ""
      }
    },
    {
      "id": 60,
      "created_at": "2018-11-06T08:58:06.721Z",
      "updated_at": "2018-11-06T08:58:08.821Z",
      "sku": "stock_43",
      "state": "active",
      "quantity": 12,
      "price": "10.0",
      "condition": "new",
      "product": {
        "id": 253,
        "name": "Timex",
        "sku": "fc7c0e3bb4f4bca7d617f2f920f99e9c",
        "url_key": "Timex",
        "primary_image_url": ""
      }
    }
  ],
  "count": 3,
  "current_page": 1,
  "pages": 2,
  "total_count": 5
}
GET   /v1/stocks?search=7f59017719b05800720426fbbb48d1e2
Responses 200
Body
{
  "stocks": [
    {
      "id": 58,
      "created_at": "2018-11-06T08:58:08.721Z",
      "updated_at": "2018-11-06T08:58:08.812Z",
      "sku": "stock_41",
      "state": "active",
      "quantity": 5,
      "price": "20.0",
      "condition": "new",
      "product": {
        "id": 252,
        "name": "Rolex",
        "sku": "7f59017719b05800720426fbbb48d1e2",
        "url_key": "Rolex",
        "primary_image_url": ""
      }
    },
    {
      "id": 59,
      "created_at": "2018-11-06T08:58:07.721Z",
      "updated_at": "2018-11-06T08:58:08.817Z",
      "sku": "stock_42",
      "state": "active",
      "quantity": 1,
      "price": "25.0",
      "condition": "open-box",
      "product": {
        "id": 252,
        "name": "Rolex",
        "sku": "7f59017719b05800720426fbbb48d1e2",
        "url_key": "Rolex",
        "primary_image_url": ""
      }
    }
  ],
  "count": 2,
  "current_page": 1,
  "pages": 1,
  "total_count": 2
}
GET   /v1/stocks?sort=name&order=asc
Responses 200
Body
{
  "stocks": [
    {
      "id": 62,
      "created_at": "2018-11-06T08:58:04.721Z",
      "updated_at": "2018-11-06T08:58:08.828Z",
      "sku": "stock_45",
      "state": "closed",
      "quantity": 15,
      "price": "15.0",
      "condition": "new",
      "product": {
        "id": 255,
        "name": "Oaklies",
        "sku": "6542cfab27227506f88c452812bf6934",
        "url_key": "Oaklies",
        "primary_image_url": ""
      }
    },
    {
      "id": 61,
      "created_at": "2018-11-06T08:58:05.721Z",
      "updated_at": "2018-11-06T08:58:08.825Z",
      "sku": "stock_44",
      "state": "inactive",
      "quantity": 13,
      "price": "12.0",
      "condition": "new",
      "product": {
        "id": 254,
        "name": "Rayban",
        "sku": "b73ef2ad176229fcabc9cc0bc30116b9",
        "url_key": "Rayban",
        "primary_image_url": ""
      }
    },
    {
      "id": 58,
      "created_at": "2018-11-06T08:58:08.721Z",
      "updated_at": "2018-11-06T08:58:08.812Z",
      "sku": "stock_41",
      "state": "active",
      "quantity": 5,
      "price": "20.0",
      "condition": "new",
      "product": {
        "id": 252,
        "name": "Rolex",
        "sku": "7f59017719b05800720426fbbb48d1e2",
        "url_key": "Rolex",
        "primary_image_url": ""
      }
    },
    {
      "id": 59,
      "created_at": "2018-11-06T08:58:07.721Z",
      "updated_at": "2018-11-06T08:58:08.817Z",
      "sku": "stock_42",
      "state": "active",
      "quantity": 1,
      "price": "25.0",
      "condition": "open-box",
      "product": {
        "id": 252,
        "name": "Rolex",
        "sku": "7f59017719b05800720426fbbb48d1e2",
        "url_key": "Rolex",
        "primary_image_url": ""
      }
    },
    {
      "id": 60,
      "created_at": "2018-11-06T08:58:06.721Z",
      "updated_at": "2018-11-06T08:58:08.821Z",
      "sku": "stock_43",
      "state": "active",
      "quantity": 12,
      "price": "10.0",
      "condition": "new",
      "product": {
        "id": 253,
        "name": "Timex",
        "sku": "fc7c0e3bb4f4bca7d617f2f920f99e9c",
        "url_key": "Timex",
        "primary_image_url": ""
      }
    }
  ],
  "count": 5,
  "current_page": 1,
  "pages": 1,
  "total_count": 5
}
GET   /v1/stocks?state=closed
Responses 200
Body
{
  "stocks": [
    {
      "id": 62,
      "created_at": "2018-11-06T08:58:04.721Z",
      "updated_at": "2018-11-06T08:58:08.828Z",
      "sku": "stock_45",
      "state": "closed",
      "quantity": 15,
      "price": "15.0",
      "condition": "new",
      "product": {
        "id": 255,
        "name": "Oaklies",
        "sku": "6542cfab27227506f88c452812bf6934",
        "url_key": "Oaklies",
        "primary_image_url": ""
      }
    }
  ],
  "count": 1,
  "current_page": 1,
  "pages": 1,
  "total_count": 1
}
GET   /v1/stocks?states[]=inactive&states[]=closed
Responses 200
Body
{
  "stocks": [
    {
      "id": 61,
      "created_at": "2018-11-06T08:58:05.721Z",
      "updated_at": "2018-11-06T08:58:08.825Z",
      "sku": "stock_44",
      "state": "inactive",
      "quantity": 13,
      "price": "12.0",
      "condition": "new",
      "product": {
        "id": 254,
        "name": "Rayban",
        "sku": "b73ef2ad176229fcabc9cc0bc30116b9",
        "url_key": "Rayban",
        "primary_image_url": ""
      }
    },
    {
      "id": 62,
      "created_at": "2018-11-06T08:58:04.721Z",
      "updated_at": "2018-11-06T08:58:08.828Z",
      "sku": "stock_45",
      "state": "closed",
      "quantity": 15,
      "price": "15.0",
      "condition": "new",
      "product": {
        "id": 255,
        "name": "Oaklies",
        "sku": "6542cfab27227506f88c452812bf6934",
        "url_key": "Oaklies",
        "primary_image_url": ""
      }
    }
  ],
  "count": 2,
  "current_page": 1,
  "pages": 1,
  "total_count": 2
}

GET /v1/stocks

Parameters
Hide Show
per_page
number   (optional)   Default:  25  

The maximum number of results returned per page.

page
number   (optional)   Default:  1  

The page requested. Default: 1

search
string   (optional)  

A term(s) to filter the result by. Matches to sku, name, manufacturer name, ean, upc, or asin.

state
string   (optional)  

Filter results by state

Allowed Values:  active out_of_stock closed inactive

states
array[string]   (optional)  

Filter results by a list of states

Allowed Values:  active out_of_stock closed inactive

condition
string   (optional)  

Filter included stocks to only this condition

Allowed Values:  new open-box pre-owned

sort
string   (optional)   Default:  created_at  

The property to sort results by. Default changes to "relevance" if "search" parameter is present

Allowed Values:  created_at name sku price quantity relevance

order
string   (optional)   Default:  desc  

The order in which to sort results

Allowed Values:  desc asc


Requests default for pre-owned stocks invalid
PUT   /v1/products/270/stocks/74
Body
{
  "stock": {
    "price": 20
  }
}
Responses 200
Body
{
  "id": 74,
  "created_at": "2018-11-06T08:58:11.842Z",
  "updated_at": "2018-11-06T08:58:11.855Z",
  "sku": "stock_53",
  "state": "active",
  "quantity": 10,
  "price": "20.0",
  "condition": "new",
  "product": {
    "id": 270,
    "name": "product_226",
    "sku": "4d4c3d6b8ec097bc4650e25de740555b",
    "url_key": "product-226",
    "primary_image_url": ""
  }
}
PUT   /v1/products/274/stocks/78
Body
{
  "stock": {
    "price": 20,
    "description": "changed description"
  }
}
Responses 200
Body
{
  "id": 78,
  "created_at": "2018-11-06T08:58:12.249Z",
  "updated_at": "2018-11-06T08:58:12.262Z",
  "sku": "stock_57",
  "state": "active",
  "quantity": 1,
  "price": "20.0",
  "condition": "pre-owned",
  "has_papers": true,
  "has_box": true,
  "production_year": 1984,
  "description": "changed description",
  "serial_number": "b2df5675-4c0c-4f97-9b3e-f72bdc8d83b7",
  "product": {
    "id": 274,
    "name": "product_230",
    "sku": "725e1f85c08e4a2b684cffe6794014ad",
    "url_key": "product-230",
    "primary_image_url": ""
  }
}
PUT   /v1/products/271/stocks/75
Body
{
  "stock": {
    "price": 20,
    "quantity": -1
  }
}
Responses 422
Body
{
  "error": "Invalid Record",
  "errors": {
    "quantity": [
      "must be greater than or equal to 0"
    ]
  }
}

PUT /v1/products/:product_id/stocks/:id

Parameters
Hide Show
product_id
integer   (required)  

A product id to add stock to

id
integer   (required)  

A stock id

stock
dictionary   (required)   Contains the following additional parameters:
sku
string   (optional)  

The vendor's sku for this specific inventory

state
string   (optional)  

The status of this inventory

Allowed Values:  active out_of_stock closed inactive

quantity
integer   (optional)  

Number of items for sale. For pre-owned items this can only be 1 or 0.

price
decimal   (optional)  

Price required for each item

has_papers
boolean   (optional)  

Whether or not this item has documentation Pre-owned only

has_box
boolean   (optional)  

Whether or not a box is included. Pre-owned only

production_year
string   (optional)  

The year this item was made. Pre-owned only

description
string   (optional)  

A brief description of any irregularities with this item. Pre-owned only

serial_number
string   (optional)  

The specific serial number of this item. Pre-owned only


Requests default forbidden invalid
POST   /v1/users
Body
{
  "user": {
    "email": "user_589@example.com",
    "first_name": "Houston",
    "last_name": "Wisoky",
    "phone": "431-796-2484 x35159"
  }
}
Responses 201
Body
{
  "id": 411,
  "email": "user_589@example.com",
  "role": "user",
  "first_name": "Houston",
  "last_name": "Wisoky",
  "phone": "431-796-2484 x35159",
  "vendor": {
    "id": 210,
    "name": "vendor_194",
    "confirmed": true
  }
}
POST   /v1/users
Body
{
  "user": {
    "email": "user_597@example.com",
    "first_name": "Afton",
    "last_name": "Tillman",
    "phone": "821.645.1327 x963"
  },
  "document": [
    "ignore"
  ]
}
Responses 403
Body
{
  "error": "Access Denied"
}
POST   /v1/users
Body
{
  "user": {
    "email": "user_593@example.com",
    "first_name": "",
    "last_name": "Kuhn",
    "phone": "732.872.6649 x818"
  }
}
Responses 422
Body
{
  "error": "Invalid Record",
  "errors": {
    "first_name": [
      "can't be blank"
    ]
  }
}

POST /v1/users

Parameters
Hide Show
user
dictionary   (required)   Contains the following additional parameters:
email
string   (required)  

The user's email

first_name
string   (required)  

The user's first name

last_name
string   (required)  

The user's last name

phone
string   (optional)  

The user's phone number

role
string   (optional)   Default:  user  

The user's role

Allowed Values:  user manager


DELETE   /v1/users/445
Responses 204 403
This response has no content.
Body
{
  "error": "Access Denied"
}

DELETE /v1/users/:id

Parameters
Hide Show
id
integer   (required)  

A user id


Requests default with page with per_page
GET   /v1/users
Responses 200
Body
{
  "users": [
    {
      "id": 384,
      "email": "user_554@example.com",
      "role": "user",
      "first_name": "Zachary",
      "last_name": "Bogan",
      "phone": "924.573.1972 x96867",
      "confirmed_at": "2018-11-06T08:58:13.712Z",
      "vendor": {
        "id": 202,
        "name": "vendor_186",
        "confirmed": true
      }
    },
    {
      "id": 385,
      "email": "user_555@example.com",
      "role": "user",
      "first_name": "Randal",
      "last_name": "Huels",
      "phone": "227.874.2341",
      "confirmed_at": "2018-11-06T08:58:13.720Z",
      "vendor": {
        "id": 202,
        "name": "vendor_186",
        "confirmed": true
      }
    },
    {
      "id": 386,
      "email": "user_556@example.com",
      "role": "user",
      "first_name": "Devyn",
      "last_name": "Runte",
      "phone": "1-429-911-9278 x8028",
      "confirmed_at": "2018-11-06T08:58:13.725Z",
      "vendor": {
        "id": 202,
        "name": "vendor_186",
        "confirmed": true
      }
    },
    {
      "id": 387,
      "email": "user_557@example.com",
      "role": "user",
      "first_name": "Hayley",
      "last_name": "Carroll",
      "phone": "1-132-557-9713 x669",
      "confirmed_at": "2018-11-06T08:58:13.728Z",
      "vendor": {
        "id": 202,
        "name": "vendor_186",
        "confirmed": true
      }
    },
    {
      "id": 383,
      "email": "user_553@example.com",
      "role": "owner",
      "first_name": "Keenan",
      "last_name": "Senger",
      "phone": "728.258.8457",
      "confirmed_at": "2018-11-06T08:58:13.669Z",
      "vendor": {
        "id": 202,
        "name": "vendor_186",
        "confirmed": true
      }
    }
  ],
  "count": 5,
  "current_page": 1,
  "pages": 1,
  "total_count": 5
}
GET   /v1/users?per_page=3&page=2
Responses 200
Body
{
  "users": [
    {
      "id": 397,
      "email": "user_569@example.com",
      "role": "user",
      "first_name": "Alessia",
      "last_name": "Fadel",
      "phone": "1-332-120-1650",
      "confirmed_at": "2018-11-06T08:58:13.882Z",
      "vendor": {
        "id": 204,
        "name": "vendor_188",
        "confirmed": true
      }
    },
    {
      "id": 393,
      "email": "user_565@example.com",
      "role": "owner",
      "first_name": "Cara",
      "last_name": "King",
      "phone": "143.692.4449 x2129",
      "confirmed_at": "2018-11-06T08:58:13.824Z",
      "vendor": {
        "id": 204,
        "name": "vendor_188",
        "confirmed": true
      }
    }
  ],
  "count": 2,
  "current_page": 2,
  "pages": 2,
  "total_count": 5
}
GET   /v1/users?per_page=3
Responses 200
Body
{
  "users": [
    {
      "id": 389,
      "email": "user_560@example.com",
      "role": "user",
      "first_name": "Gloria",
      "last_name": "Schmitt",
      "phone": "(626) 064-1954 x298",
      "confirmed_at": "2018-11-06T08:58:13.790Z",
      "vendor": {
        "id": 203,
        "name": "vendor_187",
        "confirmed": true
      }
    },
    {
      "id": 390,
      "email": "user_561@example.com",
      "role": "user",
      "first_name": "Cyril",
      "last_name": "Gutmann",
      "phone": "(286) 545-0499",
      "confirmed_at": "2018-11-06T08:58:13.797Z",
      "vendor": {
        "id": 203,
        "name": "vendor_187",
        "confirmed": true
      }
    },
    {
      "id": 391,
      "email": "user_562@example.com",
      "role": "user",
      "first_name": "Dorthy",
      "last_name": "Nolan",
      "phone": "459-661-7658",
      "confirmed_at": "2018-11-06T08:58:13.801Z",
      "vendor": {
        "id": 203,
        "name": "vendor_187",
        "confirmed": true
      }
    }
  ],
  "count": 3,
  "current_page": 1,
  "pages": 2,
  "total_count": 5
}

GET /v1/users

Parameters
Hide Show
per_page
number   (optional)   Default:  25  

The maximum number of results returned per page.

page
number   (optional)   Default:  1  

The page requested. Default: 1


GET   /v1/users/449/resend_email_confirmation
Responses 204
This response has no content.

GET /v1/users/:id/resend_email_confirmation

Parameters
Hide Show
id
integer   (required)  

A user id


GET   /v1/users/425
Responses 200 403
Body
{
  "id": 422,
  "email": "user_608@example.com",
  "role": "user",
  "first_name": "Carey",
  "last_name": "Fay",
  "phone": "(486) 434-8886",
  "confirmed_at": "2018-11-06T08:58:14.677Z",
  "vendor": {
    "id": 215,
    "name": "vendor_199",
    "confirmed": true
  }
}
Body
{
  "error": "Access Denied"
}

GET /v1/users/:id

Parameters
Hide Show
id
integer   (required)  

A user id


Requests default invalid with email
PUT   /v1/users/427
Body
{
  "user": {
    "first_name": "newname"
  }
}
Responses 200 403
Body
{
  "id": 427,
  "email": "user_616@example.com",
  "role": "user",
  "first_name": "newname",
  "last_name": "Schumm",
  "phone": "328.061.2503 x878",
  "confirmed_at": "2018-11-06T08:58:14.882Z",
  "vendor": {
    "id": 218,
    "name": "vendor_202",
    "confirmed": true
  }
}
Body
{
  "error": "Access Denied"
}
PUT   /v1/users/431
Body
{
  "user": {
    "first_name": ""
  }
}
Responses 422
Body
{
  "error": "Invalid Record",
  "errors": {
    "first_name": [
      "can't be blank"
    ]
  }
}
PUT   /v1/users/429
Body
{
  "user": {
    "first_name": "newname",
    "email": "new@email.com"
  }
}
Responses 200
Body
{
  "id": 429,
  "email": "user_619@example.com",
  "role": "user",
  "first_name": "newname",
  "last_name": "Rolfson",
  "phone": "904.476.1288 x3233",
  "unconfirmed_email": "new@email.com",
  "confirmed_at": "2018-11-06T08:58:14.969Z",
  "vendor": {
    "id": 219,
    "name": "vendor_203",
    "confirmed": true
  }
}

PUT /v1/users/:id

Parameters
Hide Show
id
integer   (required)  

A user id

user
dictionary   (required)   Contains the following additional parameters:
email
string   (optional)  

The user's email

first_name
string   (optional)  

The user's first name

last_name
string   (optional)  

The user's last name

phone
string   (optional)  

The user's phone number

role
string   (optional)   Default:  user  

The user's role

Allowed Values:  user manager


Vendors

GET   /v1/vendor-settings
Responses 200
Body
{
  "id": 264,
  "name": "vendor_247",
  "email": "user_743@example.com",
  "phone": "(521) 965-9116 x843",
  "owner": {
    "id": 504,
    "first_name": "Margarett",
    "last_name": "Waters",
    "phone": "452.615.3741 x9704",
    "email": "user_742@example.com",
    "confirmation_sent_at": null
  },
  "is_confirmed": true,
  "address": {
    "street": "123 Fake St",
    "street_2": null,
    "city": "Faketown",
    "state": "CO",
    "country": "US",
    "postal_code": "12345"
  }
}

GET /v1/vendor-settings


Requests default invalid
PUT   /v1/vendor-settings
Body
{
  "vendor": {
    "name": "new name"
  }
}
Responses 200
Body
{
  "id": 265,
  "name": "new name",
  "email": "user_745@example.com",
  "phone": "1-179-344-2661",
  "owner": {
    "id": 505,
    "first_name": "Gussie",
    "last_name": "Stehr",
    "phone": "(664) 131-9115",
    "email": "user_744@example.com",
    "confirmation_sent_at": null
  },
  "is_confirmed": true,
  "address": {
    "street": "123 Fake St",
    "street_2": null,
    "city": "Faketown",
    "state": "CO",
    "country": "US",
    "postal_code": "12345"
  }
}
PUT   /v1/vendor-settings
Body
{
  "vendor": {
    "name": ""
  }
}
Responses 422
Body
{
  "error": "Invalid Record",
  "errors": {
    "name": [
      "can't be blank"
    ]
  }
}

PUT /v1/vendor-settings

Parameters
Hide Show
vendor
dictionary   (required)   Contains the following additional parameters:
email
string   (optional)  

The primary email for the vendor

name
string   (optional)  

The vendor's name

phone
string   (optional)  

The vendor's phone number

website
string   (optional)  

The vendor's primary url

in_house_manufacturing
boolean   (optional)  

Flag for in house manufacturing

address_attributes
dictionary   (required)   Contains the following additional parameters:
street
string   (optional)  

Vendor's street address

street_2
string   (optional)  

Vendor's street address line 2

city
string   (optional)  

Vendor's city

state_identifier
string   (optional)  

Vendor's 2 letter state/province code

country_identifier
string   (optional)  

Vendor's 2 letter country code

postal_code
string   (optional)  

Vendor's postal/zip code