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 |
Where it appears
Section titled “Where it appears”- Produced by:
input/data→dataset - Read by:
enumerate/data_rows→dataset
Fields
Section titled “Fields”| 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 |
The complete schema
Section titled “The complete schema”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}