Taxons
4 minute read
IMPORTANT
Sellers building integrations into Marketplacer should only use the current GraphQL-based Seller API, and not this (REST-based) API.
All future developments, including new features will be added to the the GraphQL-based Seller API only, more details on this API can be found here
Taxons in Marketplacer represent the categories for adverts in a heirarchical fashion. For instance, on Bike Exchange the “Hybrid Bikes” taxon is one of the children of the “Bikes” taxon.
Deprecations
- 28/06/2023:
- The relationships
feature_option_types
,variant_option_types
,dropdown_option_types
, andfreetext_option_types
have been deprecated in favour ofoption_types
which contains all. - The option type attributes
variant
andfeature
have been deprecated in favour ofapplied_to
andfield_type
.
- The relationships
Listing taxons
This endpoint returns all taxons.
Request
GET /api/v2/taxons
Response
{
"data": [
{
"id": 1,
"type": "taxons",
"attributes": {
"name": "Hybrid Bikes",
"tree_name": "Bikes - Hybrid Bikes",
"slug": "hybrid-bikes"
}
}
]
}
Search for taxons
This endpoint allows you to search for a taxon by a word in its name or by a substring of its name.
Request
If you want to search for the “Hybrid Bikes” taxon, make a query like this:
GET /api/v2/taxons/search?name=Hybrid%20Bikes
If you want to search for all taxons that include the word “Hybrid”:
GET /api/v2/taxons/search?name=Hybrid
If you want to search by a substring of a word, add the autocomplete
parameter, like:
GET /api/v2/taxons/search?name=Bik&autocomplete=1
If you want to get the option value information for an individual taxon, use the taxon id or slug:
GET /api/v2/taxons/4
or
GET /api/v2/taxons/bikes
Response
{
"data": [
{
"id": 1,
"type": "taxons",
"attributes": {
"name": "Hybrid Bikes",
"tree_name": "Bikes - Hybrid Bikes",
"slug": "hybrid-bikes"
}
}
]
}
Obtaining Option Types and Option Values
When creating an Advert as described here or a Variant as described here,
the marketplace taxonomy may require that you supply advert_option_values
or variant_option_values
as part of the relationships
object.
Advert Option Values
Advert Option Values are selectable options that are set as the Advert / Product level, (as opposed to the variant level).Variant Option Values
Advert Option Values are selectable options that are set as the Variant level.In order to understand what advert_option_values
or variant_option_values
you need to supply when creating an Advert or a Variant, you can call the taxonomy endpoint with the taxon_slug
, for example:
GET /api/v2/taxons/cars
Would return a payload for the cars taxons such as:
{
"links": {
"self": "https://bestfriendbazaar.com/api/v2/taxons/80-cars"
},
"data": {
"type": "taxons",
"id": "80",
"attributes": {
"name": "cars",
"tree_name": "cars",
"slug": "cars",
"taxon_type": "product"
},
"has_whitelisted_secondary_taxons": false,
"relationships": {
"option_types": [ ⬅ HERE
{
"type": "option_types",
"id": "235"
},
{
"type": "option_types",
"id": "236"
}
],
...
Here you can see that we have 2 option_types
, scrolling further down the payload and looking for the included option_types
you’ll see:
"included": [
{
"type": "option_types",
"id": "235",
"attributes": {
"name": "Type",
"presentation": "Product Type",
"optional": false,
"applied_to": "advert",
"field_type": "multi_select",
"variant": false, ⬅ DEPRECATED
"feature": true ⬅ DEPRECATED
},
"relationships": {
"option_values": {
"data": [
{
"type": "option_values",
"id": "703",
"attributes": {
"name": "1",
"presentation": "1"
}
},
{
"type": "option_values",
"id": "704",
"attributes": {
"name": "2",
"presentation": "2"
}
}
]
}
}
},
{
"type": "option_types",
"id": "236",
"attributes": {
"name": "Length",
"presentation": "Length",
"optional": true,
"applied_to": "advert",
"field_type": "free_text",
"variant": false, ⬅ DEPRECATED
"feature": false ⬅ DEPRECATED
},
"relationships": {
"option_values": {
"data": []
}
}
}
...
Both option types can be used with adverts ("applied_to": "advert"
) as you can see. You would then select the relevant id
for the option_value
that you want to use (id
for the option_type
for the free_text
field type), and supply that with your advert create payload, an example JSON payload for this is shown below:
{
"data": {
"type": "adverts",
"attributes": {
"title": "Wiper Blades",
"description": "Replacement wiper blades",
"price": 18.00,
"condition": "new",
"brand_slug": "other",
"taxon_slug": "cars",
"published": false,
"external_id": "WH1000XMB4",
"code": "",
"notes": "",
"features": {
"product_features": [],
}
}
},
"relationships": {
"advert_option_values": [
{
"type": "advert_option_values",
"option_value_id": 703
},
{
"type": "advert_option_values",
"option_type_id": 236,
"text_value": "500mm 20in"
}
]
}
}