{"_id":"@metabase/representations","_rev":"10-00cea6296906097984d4517635bea459","name":"@metabase/representations","dist-tags":{"latest":"1.2.0"},"versions":{"1.0.0":{"name":"@metabase/representations","version":"1.0.0","keywords":["metabase","representation","serialization","yaml","schema","validator"],"license":"SEE LICENSE IN LICENSE.txt","_id":"@metabase/representations@1.0.0","maintainers":[{"name":"metabase","email":"eng-admin@metabase.com"}],"homepage":"https://github.com/metabase/representations","bugs":{"url":"https://github.com/metabase/representations/issues"},"bin":{"representations":"bin/cli.js"},"dist":{"shasum":"2feb8a9df23e04f47feaed314ad940db1fc13326","tarball":"https://registry.npmjs.org/@metabase/representations/-/representations-1.0.0.tgz","fileCount":22,"integrity":"sha512-uyIWdE8fzZ01PNvDrE5Z6ja+/m6ysURQMURUfELJctRow4JKytzcPpG8NEe/A81yk/pPrD53WtzG9KtRtln0pg==","signatures":[{"sig":"MEYCIQCe7XA+d+yNbp6ZRUhbdkfl4UK3V30lPotRuTSua11EvwIhAOz2JV46RtuTLydd1TLC5awT05qmd195cqK0bTM/qfHV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78271},"main":"src/index.js","type":"module","exports":{".":"./src/index.js"},"gitHead":"0dc51facfb34ad100604bea9629461d125799190","scripts":{"validate-schema":"bun run bin/cli.js validate-schema --folder examples/v1"},"_npmUser":{"name":"metabase","email":"eng-admin@metabase.com"},"repository":{"url":"git+https://github.com/metabase/representations.git","type":"git"},"_npmVersion":"10.8.2","description":"Metabase representation format specification and schema validator","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ajv":"^8.17.1","glob":"^11.0.1","js-yaml":"^4.1.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/representations_1.0.0_1774928886201_0.9118508813383337","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@metabase/representations","version":"1.1.0","keywords":["metabase","representation","serialization","yaml","schema","validator"],"license":"SEE LICENSE IN LICENSE.txt","_id":"@metabase/representations@1.1.0","maintainers":[{"name":"metabase","email":"eng-admin@metabase.com"}],"homepage":"https://github.com/metabase/representations","bugs":{"url":"https://github.com/metabase/representations/issues"},"bin":{"representations":"bin/cli.js"},"dist":{"shasum":"acff44593562d7fa4624a6866691ae69c5881e26","tarball":"https://registry.npmjs.org/@metabase/representations/-/representations-1.1.0.tgz","fileCount":22,"integrity":"sha512-vgoMCGvVD75uoX/AdBYgQQ5qoTiApDKaMGtMUSaFSP5EBFqFQnTRAUKFqbP9rmwM463xrQx2gyQdiGvV/mtnQw==","signatures":[{"sig":"MEYCIQDOucG1Byj4xr1QWMvVcNr6xTBVLJgmlnb9XqZdoyg1ZAIhAI9SO+IH1/BqyJ1gl45vqmb5OA44EPSY+nHDmPWbc8TS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75329},"main":"src/index.js","type":"module","exports":{".":"./src/index.js"},"gitHead":"8c06de15364f3e7bbdd91e8abdce6d3a820d982e","scripts":{"validate-schema":"bun run bin/cli.js validate-schema --folder examples/v1"},"_npmUser":{"name":"metabase","email":"eng-admin@metabase.com"},"repository":{"url":"git+https://github.com/metabase/representations.git","type":"git"},"_npmVersion":"10.8.2","description":"Metabase representation format specification and schema validator","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ajv":"^8.17.1","glob":"^11.0.1","js-yaml":"^4.1.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/representations_1.1.0_1775005339923_0.22043684770178062","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@metabase/representations","version":"1.1.1","keywords":["metabase","representation","serialization","yaml","schema","validator"],"license":"SEE LICENSE IN LICENSE.txt","_id":"@metabase/representations@1.1.1","maintainers":[{"name":"metabase","email":"eng-admin@metabase.com"}],"homepage":"https://github.com/metabase/representations","bugs":{"url":"https://github.com/metabase/representations/issues"},"bin":{"representations":"bin/cli.js"},"dist":{"shasum":"dc87b97db7b0de345027a7b9c6e0f8a47d3730bf","tarball":"https://registry.npmjs.org/@metabase/representations/-/representations-1.1.1.tgz","fileCount":32,"integrity":"sha512-c5goXseQQ5VCR2KJQOSkPD8Tjnl+pJURAcwozzAIJqq5kr1fDjsd4CgYbLpnlY7m1QsHE/+M4lG8V3rELOD1aw==","signatures":[{"sig":"MEYCIQCqEqwmg1CfE3J1Dip6gYpbJaWlZNbGIAEDwNltp+6DLQIhAP6EktZQeMqQKoHy5G3nBG72fxQPinaysW1uLH9Z5Z3X","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81617},"main":"src/index.js","type":"module","exports":{".":"./src/index.js"},"gitHead":"000960ee50752ddc576d0ea7ca006fa133478b81","scripts":{"validate-schema":"bun run bin/cli.js validate-schema --folder examples/v1"},"_npmUser":{"name":"metabase","email":"eng-admin@metabase.com"},"repository":{"url":"git+https://github.com/metabase/representations.git","type":"git"},"_npmVersion":"10.8.2","description":"Metabase representation format specification and schema validator","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ajv":"^8.17.1","glob":"^11.0.1","js-yaml":"^4.1.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/representations_1.1.1_1775098287160_0.8732666857579781","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@metabase/representations","version":"1.1.2","keywords":["metabase","representation","serialization","yaml","schema","validator"],"license":"SEE LICENSE IN LICENSE.txt","_id":"@metabase/representations@1.1.2","maintainers":[{"name":"metabase","email":"eng-admin@metabase.com"}],"homepage":"https://github.com/metabase/representations","bugs":{"url":"https://github.com/metabase/representations/issues"},"bin":{"representations":"bin/cli.js"},"dist":{"shasum":"89a3ad657fdf52b51e3a6a95119f6f55f830b66f","tarball":"https://registry.npmjs.org/@metabase/representations/-/representations-1.1.2.tgz","fileCount":32,"integrity":"sha512-SMoi8+aR7tIzR2FjrqK24njec5TReHIwBX+TWHdhLU0gJONAEKUskr72b/+UGGDpAVjHe1hB031mB/FHFZ2kUg==","signatures":[{"sig":"MEMCIBuMOOW5bzf2K2SkyLVAQ+VVPrEtsVYxuub91ClBJJQCAh96A19UVBRWJJKDmWTLNHk6/u9oM45CrBeUooVIMYiP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90724},"main":"src/index.js","type":"module","exports":{".":"./src/index.js"},"gitHead":"c75913d4671d4f16089dca93307cedb7d5bb0194","scripts":{"validate-schema":"bun run bin/cli.js validate-schema --folder examples/v1"},"_npmUser":{"name":"metabase","email":"eng-admin@metabase.com"},"repository":{"url":"git+https://github.com/metabase/representations.git","type":"git"},"_npmVersion":"10.8.2","description":"Metabase representation format specification and schema validator","directories":{},"_nodeVersion":"20.20.1","dependencies":{"ajv":"^8.17.1","glob":"^11.0.1","js-yaml":"^4.1.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/representations_1.1.2_1775159818546_0.8551494494036134","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@metabase/representations","version":"1.1.3","keywords":["metabase","representation","serialization","yaml","schema","validator"],"license":"SEE LICENSE IN LICENSE.txt","_id":"@metabase/representations@1.1.3","maintainers":[{"name":"metabase","email":"eng-admin@metabase.com"}],"homepage":"https://github.com/metabase/representations","bugs":{"url":"https://github.com/metabase/representations/issues"},"bin":{"representations":"bin/cli.js"},"dist":{"shasum":"75878dd8859934e6fde3761f75af4af4f35ec440","tarball":"https://registry.npmjs.org/@metabase/representations/-/representations-1.1.3.tgz","fileCount":32,"integrity":"sha512-yd7H1dM6jsZjAYnhjHDDkKwDizS8wH4ZkwbGteU8edMHhF0Iba6csNd8gj/rRQzJBuRVIxWv2bO0TfSuIKI6Mw==","signatures":[{"sig":"MEYCIQDcWyM7c+oVKmE5DLhvKyy+pFMzi7bkL9zQ0nK6aIRdUAIhAKpfW9Vpu7iLanho4CCOdjKAANYgz70cb0fgz4Gpp2WR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":90935},"main":"src/index.js","type":"module","exports":{".":"./src/index.js"},"gitHead":"c044267c256273934bbe2c9a2ae89dd81aadaa7a","scripts":{"validate-schema":"bun run bin/cli.js validate-schema --folder examples/v1"},"_npmUser":{"name":"metabase","email":"eng-admin@metabase.com"},"repository":{"url":"git+https://github.com/metabase/representations.git","type":"git"},"_npmVersion":"10.8.2","description":"Metabase representation format specification and schema validator","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ajv":"^8.17.1","glob":"^11.0.1","js-yaml":"^4.1.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/representations_1.1.3_1776114106189_0.5145534966457783","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"@metabase/representations","version":"1.1.4","keywords":["metabase","representation","serialization","yaml","schema","validator"],"license":"SEE LICENSE IN LICENSE.txt","_id":"@metabase/representations@1.1.4","maintainers":[{"name":"metabase","email":"eng-admin@metabase.com"}],"homepage":"https://github.com/metabase/representations","bugs":{"url":"https://github.com/metabase/representations/issues"},"bin":{"representations":"bin/cli.js"},"dist":{"shasum":"ed3139e7723f54b1727c1572574011388837a87c","tarball":"https://registry.npmjs.org/@metabase/representations/-/representations-1.1.4.tgz","fileCount":35,"integrity":"sha512-SdAaGxc0/aMvXXdkWCvcadsb7ex1oRnb1orrlET6sAWF8U3r5mAwZ/ITmX0lmwWQZxJW0I1dIzPUGm9ssY5Wog==","signatures":[{"sig":"MEUCIQDGnz9Z0WhmAEv2Ro4B79r9KFcgzA7WPcMc4Ms6AxVOZwIgL8s5Z9nFvmagRhg+ynaR8dAImc6wfmWAVNZ/AdfLyXI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188920},"main":"src/index.js","type":"module","exports":{".":"./src/index.js"},"gitHead":"d6feb6b9e10ed3071957639e13ddeacc32346159","scripts":{"validate-schema":"bun run bin/cli.js validate-schema --folder examples/v1"},"_npmUser":{"name":"metabase","email":"eng-admin@metabase.com"},"repository":{"url":"git+https://github.com/metabase/representations.git","type":"git"},"_npmVersion":"10.8.2","description":"Metabase representation format specification and schema validator","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ajv":"^8.17.1","glob":"^11.0.1","js-yaml":"^4.1.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/representations_1.1.4_1776131133757_0.7358498454782749","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"@metabase/representations","version":"1.1.5","keywords":["metabase","representation","serialization","yaml","schema","validator"],"license":"SEE LICENSE IN LICENSE.txt","_id":"@metabase/representations@1.1.5","maintainers":[{"name":"metabase","email":"eng-admin@metabase.com"}],"homepage":"https://github.com/metabase/representations","bugs":{"url":"https://github.com/metabase/representations/issues"},"bin":{"representations":"bin/cli.js"},"dist":{"shasum":"caa5f230fa09012a40145d2296381c8d357560d9","tarball":"https://registry.npmjs.org/@metabase/representations/-/representations-1.1.5.tgz","fileCount":35,"integrity":"sha512-x/WIj++qo4RLbqbwueOhNB95xGweHICV2eAIGAX6yclA8m08yDTgSXTTehRVTHc6Sc9ci71mjtfWi74bMuEycg==","signatures":[{"sig":"MEQCIDvx648ihVwY+iQ4Tx/jrDYo9VOBNOONCk6zwbymfXHjAiBQt/yi2eRs//7oj4AXKxEn4ymsX/WVE9gRtLnvBacH6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188849},"main":"src/index.js","type":"module","exports":{".":"./src/index.js"},"gitHead":"e300fccf85ade20316d8d2f8aa857568d38844e2","scripts":{"validate-schema":"bun run bin/cli.js validate-schema --folder examples/v1"},"_npmUser":{"name":"metabase","email":"eng-admin@metabase.com"},"repository":{"url":"git+https://github.com/metabase/representations.git","type":"git"},"_npmVersion":"10.8.2","description":"Metabase representation format specification and schema validator","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ajv":"^8.17.1","glob":"^11.0.1","js-yaml":"^4.1.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/representations_1.1.5_1776179046813_0.9255543311088712","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"@metabase/representations","version":"1.1.6","keywords":["metabase","representation","serialization","yaml","schema","validator"],"license":"SEE LICENSE IN LICENSE.txt","_id":"@metabase/representations@1.1.6","maintainers":[{"name":"metabase","email":"eng-admin@metabase.com"}],"homepage":"https://github.com/metabase/representations","bugs":{"url":"https://github.com/metabase/representations/issues"},"bin":{"representations":"bin/cli.js"},"dist":{"shasum":"3e6ed33ccb10c5aa3ae387337e3d32a1afa17e06","tarball":"https://registry.npmjs.org/@metabase/representations/-/representations-1.1.6.tgz","fileCount":35,"integrity":"sha512-fCOyMAKlw+l1NlmjFAggPtuWcp04O4X/IlSom5QIA1UVp4GMK7prPP4WKjLyUyANk23cLCK61KeJgLrclrFykQ==","signatures":[{"sig":"MEUCIQCaxt2r49+SK8Hxy42ihWoeGY7b6WZQyTXu4SEY6Yk2aAIgDzF+k4kdjWy76oFR7m+Pl0M157pzzkEqBwfqxDgDmRg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188424},"main":"src/index.js","type":"module","exports":{".":"./src/index.js"},"gitHead":"9730b32539c8fdd8a43bd9d4a174281df3125ef1","scripts":{"validate-schema":"bun run bin/cli.js validate-schema --folder examples/v1"},"_npmUser":{"name":"metabase","email":"eng-admin@metabase.com"},"repository":{"url":"git+https://github.com/metabase/representations.git","type":"git"},"_npmVersion":"10.8.2","description":"Metabase representation format specification and schema validator","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ajv":"^8.17.1","glob":"^11.0.1","js-yaml":"^4.1.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/representations_1.1.6_1776379541499_0.8259896018144706","host":"s3://npm-registry-packages-npm-production"}},"1.1.7":{"name":"@metabase/representations","version":"1.1.7","keywords":["metabase","representation","serialization","yaml","schema","validator"],"license":"SEE LICENSE IN LICENSE.txt","_id":"@metabase/representations@1.1.7","maintainers":[{"name":"metabase","email":"eng-admin@metabase.com"}],"homepage":"https://github.com/metabase/representations","bugs":{"url":"https://github.com/metabase/representations/issues"},"bin":{"representations":"dist/bin/cli.js"},"dist":{"shasum":"4e75c9226cbded32c819bc345ae8eb0af7cc7f13","tarball":"https://registry.npmjs.org/@metabase/representations/-/representations-1.1.7.tgz","fileCount":78,"integrity":"sha512-kRJjbWKcBpez/eMnQ7/GW17rsOKe/IuNuztdRcVwFrsGm5LGSzTlOqp3kpXDdZY6NfrsJkM6lFmG2dnEzr/3zw==","signatures":[{"sig":"MEUCIQDnO2Cly35t3tDN6NjbiCl489IeABC2xELt6MT9Mdd7CwIgElvjDrMsOGPkWyuGbly/OJgAU3wWfLIPf17vQBUEdYI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":382337},"main":"dist/src/index.js","type":"module","types":"dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"gitHead":"8526a5275da71d97bcc3fd62cc1c0ec7bb93c6aa","scripts":{"test":"bun test","build":"tsc -p tsconfig.build.json && cp -r core-spec dist/core-spec","type-check":"tsc --noEmit","lint-eslint":"eslint --max-warnings 0 --report-unused-disable-directives bin src","lint-format":"oxfmt --check bin src","validate-schema":"bun run bin/cli.ts validate-schema --folder examples/v1"},"_npmUser":{"name":"metabase","email":"eng-admin@metabase.com"},"repository":{"url":"git+https://github.com/metabase/representations.git","type":"git"},"_npmVersion":"10.8.2","description":"Metabase representation format specification and schema validator","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ajv":"^8.17.1","glob":"^11.0.1","nanoid":"^5.1.9","js-yaml":"^4.1.0","ajv-formats":"^3.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"oxfmt":"^0.45.0","eslint":"^10.2.1","@eslint/js":"^10.0.1","@types/bun":"^1.3.12","typescript":"^6.0.3","@types/node":"^25.6.0","@types/js-yaml":"^4.0.9","typescript-eslint":"^8.58.2"},"_npmOperationalInternal":{"tmp":"tmp/representations_1.1.7_1776706303191_0.4691404654802196","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@metabase/representations","version":"1.2.0","description":"Metabase representation format specification and schema validator","license":"SEE LICENSE IN LICENSE.txt","repository":{"type":"git","url":"git+https://github.com/metabase/representations.git"},"homepage":"https://github.com/metabase/representations","keywords":["metabase","representation","serialization","yaml","schema","validator"],"publishConfig":{"access":"public"},"type":"module","main":"dist/src/index.js","types":"dist/src/index.d.ts","exports":{".":{"types":"./dist/src/index.d.ts","import":"./dist/src/index.js"}},"bin":{"representations":"dist/bin/cli.js"},"scripts":{"build":"tsc -p tsconfig.build.json && cp -r core-spec dist/core-spec","type-check":"tsc --noEmit","lint-eslint":"eslint --max-warnings 0 --report-unused-disable-directives bin src","lint-format":"oxfmt --check bin src","test":"bun test","validate-schema":"bun run bin/cli.ts validate-schema --folder examples/v1"},"dependencies":{"ajv":"^8.17.1","ajv-formats":"^3.0.1","glob":"^11.0.1","js-yaml":"^4.1.0","nanoid":"^5.1.9"},"devDependencies":{"@eslint/js":"^10.0.1","@types/bun":"^1.3.12","@types/js-yaml":"^4.0.9","@types/node":"^25.6.0","eslint":"^10.2.1","oxfmt":"^0.45.0","typescript":"^6.0.3","typescript-eslint":"^8.58.2"},"_id":"@metabase/representations@1.2.0","gitHead":"bdf1d2414beb392b6b4fea0899584c855d75a9ee","bugs":{"url":"https://github.com/metabase/representations/issues"},"_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-28Jtzi/tbzK3JlfsRLPV2y3EX5LyuUMUIBHja2YRRrQoM+GhGMSc1/ag/fKiooVnvteq3Su12D6KmNSjh3JGtQ==","shasum":"cbfdc9c1ba7e32c441995f3924d91aa36634a1b1","tarball":"https://registry.npmjs.org/@metabase/representations/-/representations-1.2.0.tgz","fileCount":78,"unpackedSize":382625,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC8h5KfupHxBVFIp5BZmuMI1lOYfIfL5Ux4/LEdGq7ysQIhAOJjjVSSdFoeyPI0cf2cj4KMN66pDAzYjOa/Ju7jqkkV"}]},"_npmUser":{"name":"metabase","email":"eng-admin@metabase.com"},"directories":{},"maintainers":[{"name":"metabase","email":"eng-admin@metabase.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/representations_1.2.0_1784079039712_0.8948335547647099"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-31T03:48:06.138Z","modified":"2026-07-15T01:30:39.972Z","1.0.0":"2026-03-31T03:48:06.398Z","1.1.0":"2026-04-01T01:02:20.105Z","1.1.1":"2026-04-02T02:51:27.299Z","1.1.2":"2026-04-02T19:56:58.694Z","1.1.3":"2026-04-13T21:01:46.323Z","1.1.4":"2026-04-14T01:45:33.914Z","1.1.5":"2026-04-14T15:04:07.004Z","1.1.6":"2026-04-16T22:45:41.652Z","1.1.7":"2026-04-20T17:31:43.358Z","1.2.0":"2026-07-15T01:30:39.857Z"},"bugs":{"url":"https://github.com/metabase/representations/issues"},"license":"SEE LICENSE IN LICENSE.txt","homepage":"https://github.com/metabase/representations","keywords":["metabase","representation","serialization","yaml","schema","validator"],"repository":{"type":"git","url":"git+https://github.com/metabase/representations.git"},"description":"Metabase representation format specification and schema validator","maintainers":[{"name":"metabase","email":"eng-admin@metabase.com"}],"readme":"# Metabase Representation Format\n\nMetabase represents user-created content as a tree of YAML files. Each file represents one entity (a collection, card, dashboard, etc.). The format is designed to be **portable** across Metabase instances: numeric database IDs are replaced with human-readable names and entity IDs.\n\nThis repository contains the specification and examples for the Metabase Representation Format.\n\n## Contents\n\n- **[core-spec/v1/spec.md](core-spec/v1/spec.md)** — Full specification (v1.0.0) covering entity keys, folder structure, MBQL and native queries, parameters, and all entity types.\n- **[core-spec/v1/schemas/](core-spec/v1/schemas/)** — YAML schemas (JSON Schema format) for each entity type.\n- **[examples/v1/](examples/v1/)** — Complete examples using the Sample Database.\n\n## Entity Types\n\n| Entity | Description |\n|--------|-------------|\n| Collection | Folder-like container for organizing content |\n| Card | Question, model, or metric — holds an MBQL or native query |\n| Dashboard | Grid layout of cards with filter parameters and tabs |\n| Segment | Saved filter definition scoped to a table |\n| Measure | Saved aggregation definition scoped to a table |\n| Snippet | Reusable SQL fragment for native queries |\n| Transform | Materializes query or Python script results into a database table |\n| TransformTag | Label for categorizing transforms (built-in or custom) |\n| TransformJob | Scheduled job that executes tagged transforms |\n| PythonLibrary | Shared Python source file available to Python transforms |\n\n## Schema Validation\n\n### CLI\n\nValidate a folder of YAML files against the schemas:\n\n```sh\nnpx @metabase/representations validate-schema --folder ./my-export\n```\n\nOmit `--folder` to validate the current directory.\n\n### Extracting the spec\n\nCopy the bundled `spec.md` to a target file:\n\n```sh\nnpx @metabase/representations extract-spec --file ./spec.md\n```\n\nOmit `--file` to write `spec.md` into the current directory.\n\n### Extracting schemas\n\nCopy the bundled schemas (preserving folder structure) into a target directory:\n\n```sh\nnpx @metabase/representations extract-schema --folder ./schemas\n```\n\nOmit `--folder` to extract into the current directory.\n\n### Generating entity IDs\n\nPrint one or more 21-character NanoID entity IDs (one per line):\n\n```sh\nnpx @metabase/representations generate-entity-id\nnpx @metabase/representations generate-entity-id --count 5\n```\n\n### Generating UUIDs\n\nPrint one or more v4 UUIDs (one per line):\n\n```sh\nnpx @metabase/representations generate-uuid\nnpx @metabase/representations generate-uuid --count 5\n```\n\n### Programmatic\n\n```js\nimport {\n  generateEntityId,\n  generateUuid,\n  validateSchema,\n} from \"@metabase/representations\";\n\nconst { results, passed, failed } = validateSchema({\n  folder: \"./my-export\",\n});\n\nfor (const result of results) {\n  if (result.status === \"fail\") {\n    console.log(result.file, result.errors);\n  }\n}\n\nconst entityId = generateEntityId(); // \"LZfXLFzPPR4NNrgjlWDxn\"\nconst uuid = generateUuid(); // \"1d4e9fdf-49ae-4fbe-ae27-05e7c6a5cfe8\"\n```\n\n## Publishing to NPM\n\nReleases are published automatically by the **Release to NPM** GitHub Actions workflow on every push to `main`. The workflow compares the `version` in `package.json` against the version published on npm and publishes (with the `latest` dist-tag) if they differ.\n\nTo cut a release, bump `version` in `package.json` and merge to `main`.\n\nThe workflow requires an `NPM_RELEASE_TOKEN` secret with publish access to the `@metabase` npm org.\n","readmeFilename":"README.md"}