Skip to main content

Metafield

Version: 1.0

The Metafield resource allows you to add additional information to store's resources. Metafields can be used in several ways, such as to add a summary to a blog post. You can also use metafields to share information with other Haravan apps.

Resources that can have metafields

Metafields can be added to the following resources:

Type of resourceLocation of metafields
Pagehttps://apis.haravan.com/web/pages/#{id}/metafields.json
Bloghttps://apis.haravan.com/web/blogs/#{id}/metafields.json
Articlehttps://apis.haravan.com/web/blogs/#{id}/articles/#{id}/metafields.json
CustomCollection and SmartCollectionhttps://apis.haravan.com/com/collections/#{id}/metafields.json
Customerhttps://apis.haravan.com/com/customers/#{id}/metafields.json
Orderhttps://apis.haravan.com/com/orders/#{id}/metafields.json
Producthttps://apis.haravan.com/com/products/#{id}/metafields.json
Product Varianthttps://apis.haravan.com/com/variants/#{id}/metafields.json
Product Imagehttps://apis.haravan.com/com/images/#{id}/metafields.json
Shophttps://apis.haravan.com/com/metafields.json

Metafields have four required properties: a key, a namespace, a value and a value_type. The key is the identifier for a metafield. The namespace functions a container for a set of metafields which help to distinguish between metadata that you created and metadata created by others with a similair namespace. The value is the content of the metafield. The value_type describe the state of the value, whether it is a 'string', an 'integer' or an 'json'. There also exists an optional description property that provides additional information about the metafield.

What can you do with Metafield?

The Haravan API lets you do the following with the Metafield resource. More detailed versions of these general actions may be available:

Properties


created_at : string Read-only

{"created_at": "2021-11-30T08:40:33.594Z"} 

The date and time when the metafield was created. The API returns this value in ISO 8601 format.

updated_at : string Read-only

{"updated_at": "2021-12-13T06:32:35.731Z"}

The date and time when the metafield was published. The API returns this value in ISO 8601 format.

description : string optional

{ "description" : "abc" }

Additional information about the metafield.

id : number Read-only

{ "id" : 915396206 }

The unique ID of the metafield.

key : string

{ "key" : "warehouse" }

The name of the metafield. Minimum length: 3 characters. Maximum length: 30 characters.

namespace : string

{ "namespace" : "inventory" }

Container for a set of metadata. Namespaces help distinguish between metadata you created against metadata created by another individual with a similar namespace. Minimum length: 2 characters. Maximum length: 20 characters.

owner_id : number

{ "owner_id" : 690933842 }

The unique ID of the resource that the metafield is attached to.

owner_resource : string

{ "owner_resource" : "shop" }

The type of resource that the metafield is attached to.

value : string

{ "value" : "25" }

Information to be stored as metadata.

Minimum length: 1 characters. Maximum length: 80000 characters.

value_type : string

{ "value_type" : "integer" }

States whether the information in the value is stored as a 'string', 'integer' or 'json'.

Metafield types

Each metafield and metafield definition has a value_type, which defines the type of information that it can store.

When using the API to read and write metafields, the value is always entered and stored as a string, regardless of value_type.

Metafields and definitions can have the following value types:

Value Types

string

{"value": "This item contains dairy products."}

A text field.


integer

{"value": "10"}

A whole number in the range of +/-9,007,199,254,740,991.


json

{"value":"{\"price\":10000,\"stock\":\"instock\",\"meta\":[{\"k\":\"v1\"},{\"k\":\"v2\"}]}"}

A JSON-formatted string.


Retrieves metafields that belong to a store

GET
https://apis.haravan.com/com/metafields.json

Get metafields that belong to a store.

Parameters


page

Page to show the result.


limit

Amount of results. (default: 50) (maximum: 50)


since_id

Restrict results to after the specified ID.


created_at_min

Show metafields created after date. (format: 2021-11-30T08:40:33.594Z)


created_at_max

Show metafields created before date. (format: 2021-11-30T08:40:33.594Z)


updated_at_min

Show metafields last updated after date. (format: 2021-11-30T08:40:33.594Z)


updated_at_max

Show metafields last updated before date. (format: 2021-11-30T08:40:33.594Z)


namepace

Show metafields with given namespace.


key

Show metafields with given key.


value_type

  • string : Show only metafields with string value types.

  • integer : Show only metafields with integer value types.

  • json: Show only metafields with json value types.


fields

comma-separated list of fields to include in the response.


Get all metafields that belong to a store.

  • GET https://apis.haravan.com/com/metafields.json
Details
HTTP/1.1 200 OK

{
"metafields": [
{
"created_at": "2021-11-30T08:40:33.594Z",
"description": null,
"id": 721389482,
"key": "Wash",
"namespace": "instructions",
"owner_id": 690933842,
"updated_at": "2021-12-13T06:32:35.731Z",
"value": "Cold",
"value_type": "string",
"owner_resource": "shop"
}
]
}

Get all metafields after the specified ID.

  • GET https://apis.haravan.com/com/metafields.json?since_id=721389482
Details

HTTP/1.1 200 OK

{
"metafields": [
{
"created_at": "2021-12-15T10:37:38.363Z",
"description": null,
"id": 996577826,
"key": "warehouse",
"namespace": "inventory",
"owner_id": 690933842,
"updated_at": "2021-12-15T10:38:37.54Z",
"value": 25,
"value_type": "integer",
"owner_resource": "shop"
}
]
}

Retrieves metafields that belong to a product

GET
https://apis.haravan.com/com/products/#{id}/metafields.json

Get all metafields that belong to a product.

  • GET https://apis.haravan.com/com/products/632910392/metafields.json
Details
HTTP/1.1 200 OK

{
"metafields": [
{
"created_at": "2021-11-30T08:40:33.594Z",
"description": "French product title",
"id": 845366454,
"key": "title_fr",
"namespace": "translations",
"owner_id": 632910392,
"updated_at": "2021-12-13T06:32:35.731Z",
"value": "produit",
"value_type": "string",
"owner_resource": "product"
}
]
}

Retrieves metafields that belong to a product image

GET
https://apis.haravan.com/com/metafields.json

Get all metafields that belong to the images of a product.
  • GET https://apis.haravan.com/com/metafields.json?metafield[owner_id]=850703190&metafield[owner_resource]=product_image
Details
HTTP/1.1 200 OK

{
"metafields": [
{
"created_at": "2021-11-30T08:40:33.594Z",
"description": "French product image title",
"id": 625663657,
"key": "title_fr",
"namespace": "translation",
"owner_id": 850703190,
"updated_at": "2021-12-13T06:32:35.731Z",
"value": "tbn",
"value_type": "string",
"owner_resource": "product_image"
}
]
}

Retrieves a count of metafields that belong to a store

GET
https://apis.haravan.com/com/metafields/count.json

Get a count of metafields that belong to a store.
  • GET https://apis.haravan.com/com/metafields/count.json
HTTP/1.1 200 OK

{
"count": 1
}

Retrieves a count of metafields that belong to a product

GET
https://apis.haravan.com/com/products/#{id}/metafields/count.json

Get a count of all metafields that belong to a product.

  • GET https://apis.haravan.com/com/products/632910392/metafields/count.json
HTTP/1.1 200 OK

{
"count": 1
}

Retrieves a single store metafield by its ID

GET
https://apis.haravan.com/com/metafields/#{id}.json

Get a single store metafield by its ID.


fields

Comma-separated list of fields to include in the response.


Get a single store metafield by ID. A metafield belonging to any resource can be found this way.

  • GET https://apis.haravan.com/com/metafields/721389482.json
Details
HTTP/1.1 200 OK

{
"metafield": {
"created_at": "2021-11-30T08:40:33.594Z",
"description": null,
"id": 721389482,
"key": "app_key",
"namespace": "affiliates",
"owner_id": 690933842,
"updated_at": "2021-12-13T06:32:35.731Z",
"value": "app_key",
"value_type": "string",
"owner_resource": "shop"
}
}

Retrieves a single product metafield by its ID

GET
https://apis.haravan.com/com/products/#{id}/metafields/#{id}.json

Get a single product metafield using the metafield's nested resource path.

  • GET https://apis.haravan.com/com/products/632910392/metafields/845366454.json
Details
HTTP/1.1 200 OK

{
"metafield": {
"created_at": "2021-11-30T08:40:33.594Z",
"description": "French product title",
"id": 845366454,
"key": "title_fr",
"namespace": "translations",
"owner_id": 632910392,
"updated_at": "2021-12-13T06:32:35.731Z",
"value": "produit",
"value_type": "string",
"owner_resource": "product"
}
}

Create a new metafield for a store

POST
https://apis.haravan.com/com/metafields.json

Create a new metafield for a store.

  • POST https://apis.haravan.com/com/metafields.json
{
"metafield": {
"namespace": "inventory",
"key": "warehouse",
"value": 25,
"value_type": "integer"
}
}
Details

HTTP/1.1 201 Created
{
"metafield": {
"created_at": "2016-09-15T09:53:02.887Z",
"description": null,
"id": 1003594533,
"key": "warehouse",
"namespace": "inventory",
"owner_id": 1000045110,
"owner_resource": "shop",
"value": "25",
"value_type": "integer",
"updated_at": "2021-12-21T06:58:17.290Z"
}
}

Trying to create a metafield without a key will return an error.

  • POST https://apis.haravan.com/com/metafields.json
{
"metafield": {
"key": null
}
}
Details

HTTP/1.1 422 Unprocessable Entity

{
"errors": "Key can't be blank"
}

Create a new metafield for a product

POST
https://apis.haravan.com/com/products/#{id}/metafields.json

Create a new metafield for a product.

  • POST https://apis.haravan.com/com/products/1037394594/metafields.json
{
"metafield": {
"namespace": "inventory",
"key": "warehouse",
"value": 25,
"value_type": "integer"
}
}
Details

HTTP/1.1 201 Created

{
"metafield": {
"created_at": "2021-12-21T07:41:41.298Z",
"description": null,
"id": 1015890158,
"key": "warehouse",
"namespace": "inventory",
"owner_id": 1037394594,
"owner_resource": "product",
"value": "25",
"value_type": "integer",
"updated_at": "2021-12-21T07:41:41.298Z"
}
}

Create a new metafield for a product with "value_type": "json". A JSON-formatted string.

  • POST https://apis.haravan.com/com/products/1037394594/metafields.json
{
"metafield": {
"namespace": "inventory",
"key": "warehouse",
"value": "[{\"k\":\"v1\"},{\"k\":\"v2\"}]",
"value_type": "json"
}
}
Details

HTTP/1.1 201 Created

{
"metafield": {
"created_at": "2021-12-22T04:33:44.121Z",
"description": null,
"id": 1015892658,
"key": "warehouse",
"namespace": "inventory",
"owner_id": 1037394594,
"owner_resource": "product",
"value": "[{\"k\":\"v1\"},{\"k\":\"v2\"}]",
"value_type": "json",
"updated_at": "2021-12-22T04:33:44.121Z"
}
}

Another example JSON-formatted string.

  • POST https://apis.haravan.com/com/products/1037394594/metafields.json
{
"metafield": {
"namespace": "inventory",
"key": "warehouse",
"value": "{\"price\":10000,\"stock\":\"instock\",\"meta\":[{\"k\":\"v1\"},{\"k\":\"v2\"}]}",
"value_type": "json"
}
}
Details

HTTP/1.1 201 Created

{
"metafield": {
"created_at": "2021-12-22T04:33:44.121Z",
"description": null,
"id": 1015892658,
"key": "warehouse",
"namespace": "inventory",
"owner_id": 1037394594,
"owner_resource": "product",
"value": "{\"price\":10000,\"stock\":\"instock\",\"meta\":[{\"k\":\"v1\"},{\"k\":\"v2\"}]}",
"value_type": "json",
"updated_at": "2021-12-22T04:46:38.624Z"
}
}

Code Liquid in product.liquid:

  • POST https://apis.haravan.com/com/products/1037394594/metafields.json
{%- if product.metafields.inventory != blank -%}
type: {{ product.metafields.inventory.warehouse.type }} <br/>
price: {{ product.metafields.inventory.warehouse.value.price }} <br/>
stock: {{ product.metafields.inventory.warehouse.value.stock }} <br/>
{%- for field in product.metafields.inventory.warehouse.value.meta -%}
{{ field.k }} <br/>
{%- endfor -%}
{%- endif -%}

Update a store metafield

PUT
https://apis.haravan.com/com/metafields/#{id}.json

Update an existing store metafield. A metafield belonging to any resource can be updated this way. Namespace and key of an existing metafield cannot be changed.

  • PUT https://apis.haravan.com/com/metafields/1003594533.json
{
"metafield": {
"id": 1003594533,
"value": "something new",
"value_type": "string"
}
}
Details

HTTP/1.1 200 OK

{
"metafield": {
"created_at": "2016-09-15T09:53:02.887Z",
"description": null,
"id": 1003594533,
"key": "warehouse",
"namespace": "inventory",
"owner_id": 1000045110,
"owner_resource": "shop",
"value": "something new",
"value_type": "string",
"updated_at": "2021-12-21T07:47:01.191Z"
}
}

Update a product metafield

PUT
https://apis.haravan.com/com/metafields/#{id}.json

Update an existing store metafield. A metafield belonging to any resource can be updated this way. Namespace and key of an existing metafield cannot be changed.

  • PUT https://apis.haravan.com/com/products/1037394594/metafields/1015890158.json
{
"metafield": {
"id": 1015890158,
"value": "titre",
"value_type": "string"
}
}
Details

HTTP/1.1 200 OK

{
"metafield": {
"created_at": "2021-12-21T07:41:41.298Z",
"description": null,
"id": 1015890158,
"key": "warehouse",
"namespace": "inventory",
"owner_id": 1037394594,
"owner_resource": "product",
"value": "titre",
"value_type": "string",
"updated_at": "2021-12-21T07:52:47.536Z"
}
}

Delete a store metafield

DELETE
https://apis.haravan.com/com/metafields/#{id}.json

Delete an existing store metafield by id. A metafield belonging to any resource can be deleted this way.

  • DELETE https://apis.haravan.com/com/metafields/721389482.json
Details

HTTP/1.1 200 OK

{}

Delete a product metafield

DELETE
https://apis.haravan.com/com/products/#{id}/metafields/#{id}.json

Delete existing metafield belonging to a product using the nested resource path.

  • DELETE https://apis.haravan.com/com/products/632910392/metafields/845366454.json
Details

HTTP/1.1 200 OK

{}