curl --request GET \
--url https://{host}/v1/specifications \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{host}/v1/specifications', 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/specifications",
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/specifications"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"type": "specifications",
"id": "CASE_MATERIAL",
"attributes": {
"label": "Case material",
"category": "CASE",
"required": false,
"filter": "attributes.case_material",
"values": [
{
"value": "STEEL",
"label": "Steel"
},
{
"value": "GOLD_STEEL",
"label": "Gold/Steel"
}
]
}
}
]
}{
"errors": [
{
"status": "404",
"code": "watch_reserved",
"title": "Not Found",
"detail": "<string>",
"meta": {},
"source": {
"pointer": "/data/attributes/reference",
"parameter": "<string>"
}
}
],
"jsonapi": {
"version": "1.0"
}
}List specifications
Scope: watches:read or catalogue:read
What a listing can say about a watch, and every value each one accepts. The same rows the validator checks a write against, the catalogue facets on, and the dashboard’s dropdowns are built from — so a value that is in this list is a value that works.
These are the vocabulary; a listing’s own answers are its specifications,
keyed by the id you find here.
id is the name a listing sends (CASE_MATERIAL). label is the same thing
in the reader’s language, from Accept-Language. filter is what to call it
when filtering a catalogue search, which is spelled differently on purpose —
the index prefixes and lower-cases them — and null when the catalogue does not
facet on it. category is the group the dashboard shows it under (GENERAL,
CASE, BRACELET, …). required marks the four a listing cannot be created
without: AVAILABILITY, STATE, CONDITION and YEAR_OF_PRODUCTION.
values is every value it accepts: value is what a listing sends, label what
to show. In the order to show them in, so do not sort them again: CONDITION
best first (New, Unworn, Very good, Good, Fair, Poor, Incomplete), GENDER Unisex,
Female, Male, YEAR_OF_PRODUCTION newest first with “before 1900” and unknown last,
and everything else A–Z on label in the reader’s language. The catalogue’s facet
options for these attributes come in the same order (brands, models and shops A–Z).
Not paged: there are a few dozen and they matter at once.
curl --request GET \
--url https://{host}/v1/specifications \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{host}/v1/specifications', 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/specifications",
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/specifications"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"type": "specifications",
"id": "CASE_MATERIAL",
"attributes": {
"label": "Case material",
"category": "CASE",
"required": false,
"filter": "attributes.case_material",
"values": [
{
"value": "STEEL",
"label": "Steel"
},
{
"value": "GOLD_STEEL",
"label": "Gold/Steel"
}
]
}
}
]
}{
"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 Response
Every specification, in the order the dashboard shows them.