Classification Hierarchies
In the Meeco Vault, Items, Item Templates and Slots can be tagged with Classification Nodes. If an Item has been tagged with a Classification Node, you can find it again by searching for that Classification Node.
Classification Nodes are a lot like tags, but are grouped into Schemes. Schemes might represent similar topics, or classifications from an existing app.
A Classification Node is structured like
name
string
Machine-readable name
label
string
Human-readable name
description
string
Explains what the classification represents
Browsing Classification Nodes
The $VAULT_ACCESS_TOKEN
can be grabbed from the user file you created in the Onboarding to SVX guide.
All classification nodes can be queried by GET /vault/classification_nodes
:
curl --request GET \
'https://sandbox.meeco.me/vault/classification_nodes' \
-H "Authorization: Bearer $VAULT_ACCESS_TOKEN" \
-H "Meeco-Subscription-Key: $API_SUBSCRIPTION_KEY"
You can modify the request with the following query parameters:
scheme_name
, see belowby_name
- a "LIKE" search which will return results for partial matches - i.e. 'fin' will return 'financial'
Schemes
Classification Nodes are grouped by Schemes. Available Schemes are set by the Vault and cannot be changed.
These are the existing schemes:
tag
country
meeco_wallet
region
You must use tag
as the default scheme.
Creating a Classification Node
You can create a Classification node as follows
curl --request POST 'https://sandbox.meeco.me/vault/classification_nodes' \
-H "authorization: Bearer $VAULT_ACCESS_TOKEN" \
-H 'content-type: application/json' \
-H 'Meeco-Subscription-Key: $API_SUBSCRIPTION_KEY' \
--data \
'{
"classification_node": {
"classification_scheme_name": "tag",
"name": "my-new-tag",
"label": "My Tag",
"description": "Hi There this is my Tag!"
}
}'
{
"classification_node": {
"id": "b4ff857f-6f50-4608-bd93-b61a7dd012d5",
"background_color": null,
"description": "Hi There this is my Tag!",
"image": null,
"label": "My Tag",
"name": "my-new-tag",
"ordinal": 0,
"scheme": "tag"
}
}
Properties classification_scheme_name
and either name
or label
are mandatory. As mentioned above, classification_scheme_name
should usually be 'tag'. As for other Vault objects, if only label
is given, then the name is created by translating the label text.
Since name
is used to link a Classification Node to a Vault object, it must be unique.
Note that currently, as for Item Templates, the API does not allow:
updating Classification Nodes,
deleting Classification Nodes,
sharing new Classification Nodes
Applying Classifications
Classification Nodes can be applied to Item Templates, Items and Slots. Most provide a way of creating new Classification Nodes in the same request.
Templates
Single Classification Nodes may be applied to Item Templates:
curl --request POST 'https://sandbox.meeco.me/item_templates' \
-H "authorization: Bearer $VAULT_ACCESS_TOKEN" \
-H 'content-type: application/json' \
-H 'Meeco-Subscription-Key: $API_SUBSCRIPTION_KEY' \
--data \
'{
"label": "Some Template",
"classification_scheme_name": "tag",
"classification_node_name": "new_node",
"slots_attributes": []
}'
Note that both classification_scheme_name
and classification_node_name
are required, and both must exist.
Result
{
"item_template": {
"id": "78724525-9aed-4156-90c5-447198aa818b",
"name": "some_template",
"description": null,
"ordinal": 0,
"visible": true,
"user_id": "e414dc7a-b6f1-4fb6-9481-41d7be5c8785",
"updated_at": "2020-10-07T04:13:01.305Z",
"label": "Some Template",
"slot_ids": [],
"classification_node_ids": [
"15ab7625-11f5-4518-99eb-e985c24414ad"
],
"background_color": null,
"image": null
},
"slots": [],
"classification_nodes": [
{
"id": "15ab7625-11f5-4518-99eb-e985c24414ad",
"background_color": null,
"description": null,
"image": null,
"label": "New Tag",
"name": "new_tag",
"ordinal": 0,
"scheme": "tag"
}
],
"attachments": [],
"thumbnails": []
}
This has two effects. First, the Item Template can be found via its Classification Node or Scheme name, e.g. queries GET /vault/item_templates?by_classification=tag
, or GET /vault/item_templates?by_classification=new_tag
should include the template. Second, new Items created with the Item Template will be classified with the Classification Node.
curl --request POST "https://sandbox.meeco.me/vault/items" \
-H "content-type: application/json" \
-H "Authorization: Bearer $VAULT_ACCESS_TOKEN" \
-H "Meeco-Subscription-Key: $API_SUBSCRIPTION_KEY" \
--data \
'{
"item": {
"label": "Fun example",
"slots_attributes": [
{ "name": "bar" }
]
},
"template_name": "some_template"
}'
{
"item": {
"id": "658ca227-b61b-4ce0-846d-baaf4cc17880",
"name": "fun_example",
"label": "Fun example",
"description": null,
"created_at": "2020-10-07T04:13:52.430Z",
"item_template_id": "78724525-9aed-4156-90c5-447198aa818b",
"classification_node_ids": [
"15ab7625-11f5-4518-99eb-e985c24414ad"
],
"association_ids": [],
"associations_to_ids": [],
"slot_ids": [
"932e1f7e-10b5-4658-95b8-d5dff164bf37"
],
"own": true,
"...": "..."
},
"associations": [],
"associations_to": [],
"classification_nodes": [
{
"id": "15ab7625-11f5-4518-99eb-e985c24414ad",
"background_color": null,
"description": null,
"image": null,
"label": "New Tag",
"name": "new_tag",
"ordinal": 0,
"scheme": "tag"
}
],
"slots": [
{
"id": "932e1f7e-10b5-4658-95b8-d5dff164bf37",
"name": "bar",
"classification_node_ids": [],
"item_id": "658ca227-b61b-4ce0-846d-baaf4cc17880",
"...": "..."
}
],
"attachments": [],
"thumbnails": []
}
Items
Classification nodes are added to Items by passing classification_nodes_attributes
, just like adding Slots. If the name and scheme match an existing Classification Node, it is used, otherwise a new one is created.
Classification Node can be applied to both the Item and the Slots it contains. Unlike Item Templates, Items may have multiple classifications.
curl --request POST "https://sandbox.meeco.me/vault/items" \
-H "content-type: application/json" \
-H "Authorization: Bearer $VAULT_ACCESS_TOKEN" \
-H "Meeco-Subscription-Key: $API_SUBSCRIPTION_KEY" \
--data \
'{
"item": {
"label": "item class",
"classification_nodes_attributes": [
{
"name": "my_new_tag",
"scheme": "tag"
}
],
"slots_attributes": []
},
"template_name": "some_template"
}'
{
"item": {
"id": "ff04474c-f661-4f71-b5a3-c40452c30e3b",
"name": "item_class",
"label": "item class",
"description": null,
"created_at": "2020-10-07T04:55:54.953Z",
"item_template_id": "01bbb6a4-7466-423f-afdb-2d2f314011c4",
"ordinal": 1,
"visible": true,
"updated_at": "2020-10-07T04:55:54.987Z",
"item_template_label": "Some Template",
"owner_id": "e414dc7a-b6f1-4fb6-9481-41d7be5c8785",
"share_id": null,
"classification_node_ids": [
"a9b7b318-2e22-4969-a521-e6d43d882bf6"
],
"association_ids": [],
"associations_to_ids": [],
"slot_ids": [],
"own": true,
"...": "..."
},
"associations": [],
"associations_to": [],
"classification_nodes": [
{
"id": "a9b7b318-2e22-4969-a521-e6d43d882bf6",
"background_color": null,
"description": "Hi There this is my Tag!",
"image": null,
"label": "My New Tag",
"name": "my_new_tag",
"ordinal": 0,
"scheme": "tag"
}
],
"slots": [],
"attachments": [],
"thumbnails": []
}
Note that even if the Classification Node name
property matches an existing Node, but other fields don't, then a new Classification Node will be created. The scheme
property must match an existing Scheme.
Classification Nodes can be added to Slots too:
curl --request POST "https://sandbox.meeco.me/items" \
-H "content-type: application/json" \
-H "Authorization: Bearer $VAULT_ACCESS_TOKEN" \
-H "Meeco-Subscription-Key: $API_SUBSCRIPTION_KEY" \
--data \
'{
"item": {
"label": "Another Item",
"slots_attributes": [
{
"name": "new_slot",
"description": "Some Slot",
"slot_type_name": "key_value",
"label": "New Slot",
"classification_nodes_attributes": [
{
"label": "A New Tag",
"description": "Tag For The Slot",
"scheme": "tag"
},
{
"name": "my_new_tag",
"scheme": "tag"
}
]
}
]
},
"template_name": "some_template"
}'
In this case the new_slot
receives both an existing Classification Node and a new one.
{
"item": {
"id": "bfa4c439-fc34-41e6-aba2-12191061ccb2",
"name": "another_item",
"label": "Another Item",
"description": null,
"created_at": "2020-10-07T05:15:42.039Z",
"item_template_id": "01bbb6a4-7466-423f-afdb-2d2f314011c4",
"ordinal": 1,
"updated_at": "2020-10-07T05:15:42.131Z",
"item_template_label": "Some Template",
"owner_id": "e414dc7a-b6f1-4fb6-9481-41d7be5c8785",
"classification_node_ids": [],
"association_ids": [],
"associations_to_ids": [],
"slot_ids": [
"636faed0-11f2-4cc4-876e-9ce1118381c8"
],
"own": true,
"...": "..."
},
"associations": [],
"associations_to": [],
"classification_nodes": [
{
"id": "ec6a92a2-5578-49cf-b7de-23f7a7cf8081",
"background_color": null,
"description": "Tag For The Slot",
"image": null,
"label": "A New Tag",
"name": "a_new_tag",
"ordinal": 0,
"scheme": "tag"
},
{
"id": "8ca80da9-53fa-4762-9b3b-857153f2dea0",
"background_color": null,
"description": null,
"image": null,
"label": "My new tag",
"name": "my_new_tag",
"ordinal": 0,
"scheme": "tag"
}
],
"slots": [
{
"id": "636faed0-11f2-4cc4-876e-9ce1118381c8",
"name": "new_slot",
"description": "Some Slot",
"classification_node_ids": [
"ec6a92a2-5578-49cf-b7de-23f7a7cf8081",
"8ca80da9-53fa-4762-9b3b-857153f2dea0"
],
"item_id": "bfa4c439-fc34-41e6-aba2-12191061ccb2",
"slot_type_name": "key_value",
"label": "New Slot",
"...": "..."
}
],
"attachments": [],
"thumbnails": []
}
Slots
Slots are usually given Classification Nodes via POST /vault/items
, but you can add a classification to an existing Slot using PUT /vault/slots/{id}
.
Slots cannot be searched by Classification Node or Scheme.
Some Slots have the type classification_node
. The intent is that the owning Item will be classified with that node. Usually this is done within an app.
Last updated
Was this helpful?