Metadata Builder

Author a data resource's metadata — field kinds, enum domains, and the request/response protocol — then hand it to any consumer as meta.json.

METADATA BUILDER

Set up an AI connection first (top-right ✨).

1
idstringcolumnsortable
2
titlestringcolumnsortablefilterable
3
pricenumericcolumnsortablefilterable
4
createdAtdatekind sortable
5
inStockbooleankind
6
author.namestringjsonbsortablefilterable
7
statusstringcolumnfilterableenum·3
7 fields · 4 filterable

select or add a field

{
  "fields": [
    {
      "key": "id",
      "label": "ID",
      "dataType": "string",
      "sortable": true,
      "kind": "column"
    },
    {
      "key": "title",
      "label": "Title",
      "dataType": "string",
      "sortable": true,
      "filterable": true,
      "kind": "column"
    },
    {
      "key": "price",
      "label": {
        "en": "Price",
        "zh-TW": "價格"
      },
      "dataType": "numeric",
      "format": "currency",
      "sortable": true,
      "filterable": true,
      "kind": "column"
    },
    {
      "key": "createdAt",
      "label": "Created",
      "dataType": "date",
      "format": "date",
      "sortable": true
    },
    {
      "key": "inStock",
      "label": "In stock",
      "dataType": "boolean"
    },
    {
      "key": "author.name",
      "label": "Author",
      "dataType": "string",
      "sortable": true,
      "filterable": true,
      "kind": "jsonb"
    },
    {
      "key": "status",
      "label": "Status",
      "dataType": "string",
      "options": [
        {
          "value": "draft",
          "label": "Draft"
        },
        {
          "value": "published",
          "label": "Published"
        },
        {
          "value": "archived",
          "label": "Archived"
        }
      ],
      "filterable": true,
      "kind": "column"
    }
  ],
  "request": {
    "endpoint": "/api/query/sample",
    "method": "POST",
    "pagination": {
      "strategy": "offset",
      "limitParam": "limit",
      "offsetParam": "offset"
    },
    "sort": {
      "style": "single",
      "param": "sort",
      "encoding": "colon"
    },
    "filter": {
      "style": "pg",
      "param": "filter"
    }
  },
  "response": {
    "rowsPath": "data.items",
    "totalPath": "data.total",
    "cursorPath": "data.nextCursor"
  }
}