Skip to content

madoo.dataset/v1

Madoo dataset — Format-neutral descriptor for a normalized tabular dataset and its row store.

Reference madoo.dataset/v1
Schema id urn:madoo:schema:dataset:v1
Version 1.0.0
Served at GET /api/v1/json-schemas/madoo.dataset/v1 · MCP get_json_schema
  • Produced by: input/data → dataset
  • Read by: enumerate/data_rows → dataset
Field Type Required Rules Description
schema "madoo.dataset/v1" yes
source object yes no other fields
source.fileName string yes min length 1; max length 255
source.declaredMediaType string or null
source.detectedMediaType string yes min length 1
source.sizeBytes integer yes ≥ 0
source.sha256 string yes pattern “^[a-f0-9]{64}$”
format one of "csv", "json", "xlsx" yes
table object yes no other fields
table.kind one of "sheet", "array", "table" yes
table.name string yes min length 1; max length 255
table.headerRow integer or null ≥ 1
rowCount integer yes ≥ 0
columnCount integer yes ≥ 0
columns array of objects yes
columns[].name string yes min length 1; max length 255
columns[].sourceName string yes min length 1; max length 255
columns[].ordinal integer yes ≥ 0
columns[].logicalType one of "unknown", "text", "number", "boolean", "date", "datetime", "json", "mixed" yes
columns[].nullable boolean yes
columns[].samples array of any yes max items 10
policies object yes no other fields
policies.locale string yes min length 1; max length 64
policies.formulaPolicy one of "cached_value", "reject" yes
policies.emptyPolicy "preserve" yes
rowStore object yes no other fields
rowStore.format "jsonl" yes
rowStore.storageRef string yes min length 1
rowStore.mediaType "application/x-ndjson" yes
rowStore.sizeBytes integer yes ≥ 0
rowStore.sha256 string yes pattern “^[a-f0-9]{64}$”
parser object yes no other fields
parser.name string yes min length 1; max length 128
parser.version string yes min length 1; max length 32
warnings array of objects yes
warnings[].code string yes min length 1; max length 80
warnings[].message string yes min length 1; max length 1000
warnings[].path string or null max length 500
madoo.dataset/v1 (JSON Schema)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "urn:madoo:schema:dataset:v1",
"title": "Madoo Dataset v1",
"type": "object",
"required": [
"schema",
"source",
"format",
"table",
"rowCount",
"columnCount",
"columns",
"policies",
"rowStore",
"parser",
"warnings"
],
"properties": {
"schema": {
"const": "madoo.dataset/v1"
},
"source": {
"$ref": "#/$defs/source"
},
"format": {
"type": "string",
"enum": [
"csv",
"json",
"xlsx"
]
},
"table": {
"$ref": "#/$defs/table"
},
"rowCount": {
"type": "integer",
"minimum": 0
},
"columnCount": {
"type": "integer",
"minimum": 0
},
"columns": {
"type": "array",
"items": {
"$ref": "#/$defs/column"
}
},
"policies": {
"$ref": "#/$defs/policies"
},
"rowStore": {
"$ref": "#/$defs/rowStore"
},
"parser": {
"$ref": "#/$defs/parser"
},
"warnings": {
"type": "array",
"items": {
"$ref": "#/$defs/warning"
}
}
},
"$defs": {
"source": {
"type": "object",
"required": [
"fileName",
"detectedMediaType",
"sizeBytes",
"sha256"
],
"properties": {
"fileName": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"declaredMediaType": {
"type": [
"string",
"null"
]
},
"detectedMediaType": {
"type": "string",
"minLength": 1
},
"sizeBytes": {
"type": "integer",
"minimum": 0
},
"sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"additionalProperties": false
},
"table": {
"type": "object",
"required": [
"kind",
"name"
],
"properties": {
"kind": {
"type": "string",
"enum": [
"sheet",
"array",
"table"
]
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"headerRow": {
"type": [
"integer",
"null"
],
"minimum": 1
}
},
"additionalProperties": false
},
"column": {
"type": "object",
"required": [
"name",
"sourceName",
"ordinal",
"logicalType",
"nullable",
"samples"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"sourceName": {
"type": "string",
"minLength": 1,
"maxLength": 255
},
"ordinal": {
"type": "integer",
"minimum": 0
},
"logicalType": {
"type": "string",
"enum": [
"unknown",
"text",
"number",
"boolean",
"date",
"datetime",
"json",
"mixed"
]
},
"nullable": {
"type": "boolean"
},
"samples": {
"type": "array",
"maxItems": 10
}
},
"additionalProperties": false
},
"policies": {
"type": "object",
"required": [
"locale",
"formulaPolicy",
"emptyPolicy"
],
"properties": {
"locale": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"formulaPolicy": {
"type": "string",
"enum": [
"cached_value",
"reject"
]
},
"emptyPolicy": {
"const": "preserve"
}
},
"additionalProperties": false
},
"rowStore": {
"type": "object",
"required": [
"format",
"storageRef",
"mediaType",
"sizeBytes",
"sha256"
],
"properties": {
"format": {
"const": "jsonl"
},
"storageRef": {
"type": "string",
"minLength": 1
},
"mediaType": {
"const": "application/x-ndjson"
},
"sizeBytes": {
"type": "integer",
"minimum": 0
},
"sha256": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"additionalProperties": false
},
"parser": {
"type": "object",
"required": [
"name",
"version"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 128
},
"version": {
"type": "string",
"minLength": 1,
"maxLength": 32
}
},
"additionalProperties": false
},
"warning": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"message": {
"type": "string",
"minLength": 1,
"maxLength": 1000
},
"path": {
"type": [
"string",
"null"
],
"maxLength": 500
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}