Extra attributes (Metafields)

Thinking that Ordering API is more malleable and can be extended more easily, apart from plugins there is a way to add extra attributes to certain models.

This is achieved through endpoints called "Metafields" and the models that can use them are listed below:

  • User
  • Business
  • Category
  • Product
  • Extra
  • ExtraOption
  • ExtraOptionSuboption
  • Menu
  • Offer
  • Address
  • Drivergroup
  • Order

Metafields Model

The users model has the following attributes:

Attribute

Type

Required

Description

key

string

no, required to create

The name of the new attributte

value

string

no, required to create

The value of the metafield

value_type

string

no, required to create

The type of value of the metafield

Values type

Values type specifies the type of value this attribute will have

  • integer
  • decimal
  • boolean
  • text
  • json

Obtaining Metafields

There are two ways to obtain the metafiels using params which are, first "metadata" that bring the metafiels as a normal attribute of the model and second "metafields" which brings the "metafiels" attribute with all the metafields in an array.

Example of Metadata

{
  "error": false,
  "result": [
    {
      "id": 1292,
      "name": "Bird's Nest",
      "price": 3,
      "description": "",
      "images": "https://res.cloudinary.com/ordering/image/upload/v1534195638/sp1iv1xmacqfnwyhbvkr.jpg",
      "sku": null,
      "category_id": 248,
      "inventoried": false,
      "quantity": 0,
      "featured": false,
      "enabled": true,
      "category": null,
      "extras": [],
      "gallery": [],
      "extra_atributte1": "value1",
      "extra_atributte2": "value2"
    },
    ...
  ]
}

Example of Metafields

{
  "error": false,
  "result": [
    {
      "id": 1292,
      "name": "Bird's Nest",
      "price": 3,
      "description": "",
      "images": "https://res.cloudinary.com/ordering/image/upload/v1534195638/sp1iv1xmacqfnwyhbvkr.jpg",
      "sku": null,
      "category_id": 248,
      "inventoried": false,
      "quantity": 0,
      "featured": false,
      "enabled": true,
      "category": null,
      "extras": [],
      "gallery": [],
      "metafields": [
        0:{
          "id":1,
          "object_id":1292,
          "model":"Product",
          "key":"number",
          "value":"text",
          "value_type":"text",
          "created_at":"2019-07-25 16:03:23",
          "updated_at":"2019-07-25 16:03:23",
        }
        ...
      ]
    },
    ...
  ]
}

📘

If the request is not filtered with the parameters, bring the metafields in both ways.