curl --request GET \
--url https://{host}/v1/sellers/{sellerId}/watches \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{host}/v1/sellers/{sellerId}/watches', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{host}/v1/sellers/{sellerId}/watches",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}import requests
url = "https://{host}/v1/sellers/{sellerId}/watches"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"type": "watches",
"id": "91827",
"attributes": {
"reference": "116610LN",
"name": "Rolex Submariner Date",
"price": 1295000,
"priceOnRequest": false,
"status": "available",
"reserved": false,
"externalIdentifier": "PIM-10294"
}
}
],
"meta": {
"page": {
"from": "eyJpZCI6IjkxODI3IiwiX3BvaW50c1RvTmV4dEl0ZW1zIjpmYWxzZX0",
"hasMore": true,
"perPage": 25,
"to": "eyJpZCI6IjkxODAzIiwiX3BvaW50c1RvTmV4dEl0ZW1zIjp0cnVlfQ"
},
"statusCounts": {
"unavailable": 1,
"awaiting_review": 0,
"awaiting_update": 0,
"unsubscribed_trader": 0,
"available": 23,
"sold": 41,
"draft": 2
}
},
"links": {
"first": "https://api.wristler.eu/v1/sellers/42/watches?page%5Blimit%5D=25",
"next": "https://api.wristler.eu/v1/sellers/42/watches?page%5Bafter%5D=eyJpZCI6IjkxODAzIiwiX3BvaW50c1RvTmV4dEl0ZW1zIjp0cnVlfQ&page%5Blimit%5D=25"
}
}{
"errors": [
{
"status": "404",
"code": "watch_reserved",
"title": "Not Found",
"detail": "<string>",
"meta": {},
"source": {
"pointer": "/data/attributes/reference",
"parameter": "<string>"
}
}
],
"jsonapi": {
"version": "1.0"
}
}{
"errors": [
{
"status": "404",
"code": "watch_reserved",
"title": "Not Found",
"detail": "<string>",
"meta": {},
"source": {
"pointer": "/data/attributes/reference",
"parameter": "<string>"
}
}
],
"jsonapi": {
"version": "1.0"
}
}{
"errors": [
{
"status": "404",
"code": "watch_reserved",
"title": "Not Found",
"detail": "<string>",
"meta": {},
"source": {
"pointer": "/data/attributes/reference",
"parameter": "<string>"
}
}
],
"jsonapi": {
"version": "1.0"
}
}List inventory
Scope: watches:read
Everything this seller has, drafts and sold listings included. Paged by cursor:
follow links.next until it is absent. (page[number] and page[size] page it by
number instead.)
Our own app may also read a shop it does not act for, as a visitor sees its page: then
only what is for sale comes back (a filter[status] other than available matches
nothing), the fields that are the shop’s own (externalIdentifier, dealerProductCode,
applicationFee, reviewNote) are hidden or null, and there is no meta.statusCounts.
meta.statusCounts is how many listings the business has in each status, every
status present and at 0 when there are none: the numbers on the dashboard’s tabs,
counted the same way. Across the whole inventory, whatever the filters or the page.
Only for a token that acts for the business.
curl --request GET \
--url https://{host}/v1/sellers/{sellerId}/watches \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{host}/v1/sellers/{sellerId}/watches', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{host}/v1/sellers/{sellerId}/watches",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}import requests
url = "https://{host}/v1/sellers/{sellerId}/watches"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"type": "watches",
"id": "91827",
"attributes": {
"reference": "116610LN",
"name": "Rolex Submariner Date",
"price": 1295000,
"priceOnRequest": false,
"status": "available",
"reserved": false,
"externalIdentifier": "PIM-10294"
}
}
],
"meta": {
"page": {
"from": "eyJpZCI6IjkxODI3IiwiX3BvaW50c1RvTmV4dEl0ZW1zIjpmYWxzZX0",
"hasMore": true,
"perPage": 25,
"to": "eyJpZCI6IjkxODAzIiwiX3BvaW50c1RvTmV4dEl0ZW1zIjp0cnVlfQ"
},
"statusCounts": {
"unavailable": 1,
"awaiting_review": 0,
"awaiting_update": 0,
"unsubscribed_trader": 0,
"available": 23,
"sold": 41,
"draft": 2
}
},
"links": {
"first": "https://api.wristler.eu/v1/sellers/42/watches?page%5Blimit%5D=25",
"next": "https://api.wristler.eu/v1/sellers/42/watches?page%5Bafter%5D=eyJpZCI6IjkxODAzIiwiX3BvaW50c1RvTmV4dEl0ZW1zIjp0cnVlfQ&page%5Blimit%5D=25"
}
}{
"errors": [
{
"status": "404",
"code": "watch_reserved",
"title": "Not Found",
"detail": "<string>",
"meta": {},
"source": {
"pointer": "/data/attributes/reference",
"parameter": "<string>"
}
}
],
"jsonapi": {
"version": "1.0"
}
}{
"errors": [
{
"status": "404",
"code": "watch_reserved",
"title": "Not Found",
"detail": "<string>",
"meta": {},
"source": {
"pointer": "/data/attributes/reference",
"parameter": "<string>"
}
}
],
"jsonapi": {
"version": "1.0"
}
}{
"errors": [
{
"status": "404",
"code": "watch_reserved",
"title": "Not Found",
"detail": "<string>",
"meta": {},
"source": {
"pointer": "/data/attributes/reference",
"parameter": "<string>"
}
}
],
"jsonapi": {
"version": "1.0"
}
}Authorizations
Headers
The language to answer in: specificationLabels, translatedDescription, facet
and label names, the content pages, and every other translated word in the
answer. Read on every request, whatever the endpoint. One we do not have falls
back to English rather than failing.
en, nl, de, es, fr, it, pt, fi, pl Query Parameters
Related resources to return alongside. Combine them with commas —
include=images,watchModel. Anything else is refused with 400 rather than
ignored.
favorite is the viewer's own favorite of this listing, or null. Ask for
it when you draw a heart that has to be able to turn itself off: removing a
favorite needs its id, and without this a client has to fetch somebody's whole
list to find one. favorited is the cheaper read when the heart is all you are
drawing.
seller, watchModel, images, cover, favorite Response
A page of this business's listings.