{"_id":"ethpm-spec","_rev":"55-148cd9d6af465b1cdfd63a06ecb59ae1","name":"ethpm-spec","dist-tags":{"latest":"3.0.0"},"versions":{"1.0.0":{"name":"ethpm-spec","version":"1.0.0","keywords":["ethereum","package","manager","epm","ethpm"],"author":"","license":"MIT","_id":"ethpm-spec@1.0.0","maintainers":[{"name":"tcoulter","email":"tim@timothyjcoulter.com"}],"homepage":"https://github.com/ethpm/epm-spec#readme","bugs":{"url":"https://github.com/ethpm/epm-spec/issues"},"dist":{"shasum":"ee0c6705f839d86f449d6cb0247cff7f32091d28","tarball":"https://registry.npmjs.org/ethpm-spec/-/ethpm-spec-1.0.0.tgz","integrity":"sha512-f+St9cGQJsPc0WGAVAsTh8QKWHTQ+Ok5FvFJIpt+c5ePXlQVTo/dxDr+AYSGev4d+4GF5+ikhojMEWXwsVpCbQ==","signatures":[{"sig":"MEUCIQDN076w3UaxfOTCu51W+w0bzoKWC7uCTuypmN9b3cOJJAIgDBq/RytvxBk5PrVV6WzKQ+9ZA5ZB0sQFple35D7D1VE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"ee0c6705f839d86f449d6cb0247cff7f32091d28","gitHead":"772718321dc7df7d4650274a504e083db4cba5d8","scripts":{"build":""},"_npmUser":{"name":"tcoulter","email":"tim@timothyjcoulter.com"},"repository":{"url":"git+https://github.com/ethpm/epm-spec.git","type":"git"},"_npmVersion":"3.10.8","description":"Ethereum Package Manager Specifications","directories":{},"_nodeVersion":"6.9.1","dependencies":{"json-schema-to-markdown":"^1.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ethpm-spec-1.0.0.tgz_1485456431819_0.739242929732427","host":"packages-12-west.internal.npmjs.com"}},"1.0.1":{"name":"ethpm-spec","version":"1.0.1","keywords":["ethereum","package","manager","epm","ethpm"],"author":"","license":"MIT","_id":"ethpm-spec@1.0.1","maintainers":[{"name":"tcoulter","email":"tim@timothyjcoulter.com"}],"homepage":"https://github.com/ethpm/epm-spec#readme","bugs":{"url":"https://github.com/ethpm/epm-spec/issues"},"dist":{"shasum":"ad3c09ae0492ad3d3ec7b94b7f5fd8057d4deb91","tarball":"https://registry.npmjs.org/ethpm-spec/-/ethpm-spec-1.0.1.tgz","integrity":"sha512-dB3InNIQMDy6BFyewk+psFIbtaBtKRuv6+15Mg2yMy9rDj4bmadZB/zqbNruHk2c+uFT74tbnnWjE4OACX+7WA==","signatures":[{"sig":"MEQCIFYdiGNqnmBpP2rL3TPYxqMdezURiL4BcspjxD4eLhPJAiAkw6YtgFdtQlhryzVJ2un81j7QTK4rOLKHTYk5SgpXhQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"main":"index.js","_from":".","_shasum":"ad3c09ae0492ad3d3ec7b94b7f5fd8057d4deb91","gitHead":"aa4c5c7ae2cf76e00a96cf77df2e06374f88cf4c","scripts":{"build":""},"_npmUser":{"name":"tcoulter","email":"tim@timothyjcoulter.com"},"repository":{"url":"git+https://github.com/ethpm/epm-spec.git","type":"git"},"_npmVersion":"3.10.8","description":"Ethereum Package Manager Specifications","directories":{},"_nodeVersion":"6.9.1","dependencies":{"json-schema-to-markdown":"^1.0.3"},"_npmOperationalInternal":{"tmp":"tmp/ethpm-spec-1.0.1.tgz_1490889160768_0.7469689210411161","host":"packages-18-east.internal.npmjs.com"}},"2.0.0":{"name":"ethpm-spec","version":"2.0.0","keywords":["ethereum","package","manager","epm","ethpm"],"author":"","license":"MIT","_id":"ethpm-spec@2.0.0","maintainers":[{"name":"cruzmolina","email":"cruz.adam.molina@gmail.com"},{"name":"davidmurdoch","email":"david@davidmurdoch.com"},{"name":"eggplantzzz","email":"pobol234@gmail.com"},{"name":"fainashalts","email":"fainashalts@gmail.com"},{"name":"gnidan","email":"nick@gnidan.org"},{"name":"haltman","email":"harry.j.altman@gmail.com"},{"name":"nickghita","email":"nickg@ethereum.org"},{"name":"seesemichaelj","email":"seesemichaelj@gmail.com"},{"name":"tcoulter","email":"tim@timothyjcoulter.com"}],"homepage":"https://github.com/ethpm/ethpm-spec#readme","bugs":{"url":"https://github.com/ethpm/ethpm-spec/issues"},"dist":{"shasum":"1dfff868be67d045dbbe9466fa372e0162d7c16e","tarball":"https://registry.npmjs.org/ethpm-spec/-/ethpm-spec-2.0.0.tgz","fileCount":47,"integrity":"sha512-HiOtTaeXH+9r0aJBRZbeeCxLn+f5NEb49e2uNA2T/QqEZFBcTBliIiV55/GQbCFgVYX4pyTkTtWEhrdixjlXkA==","signatures":[{"sig":"MEYCIQDkkEcDNCAYHvsR0QfdQvalyHnIYild0ci1Qp+M8aJgdQIhAPFz/TFkoW+Ia1Y2Kw1Uy4eqq8y4/qHIpxjjw36ES7/t","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":137115,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdt6ZzCRA9TVsSAnZWagAAcAoQAKBvo+AkHM+3hAcZpTic\nVFra9mcaRro8bPXq+8OFPuJnJ4bGG2XXUpO6REdX0UouSuqfX1T3khS1PUsA\nkMkkCPcxIYdruKFiINnKMwLWStHAwD3FtBon9W2CgSaAmDbt7BmbkZWnPV9S\nGUOdKcdt23oOXD/m/0gYKlJnrjpk2rvYNLEumIbxhgwHan1s5MjbgxweBn1H\n9FEm+ad891d4QyJA1cgpf1kVDlXdKRKI3PZ9gDdV6ucKPPpXTHxcx6m8MB9L\nBGuzVfFsgxc++YkavI/Ntc69NMpZyjljeXgf6S4Knh0JJq4HqPmuTleW6p3a\nPGHjFqcu8rZ7XVUlCMQzsbuQ0t/SBYOS+pu8O50ZJxpYDVvzXmD0uH1k19oD\nkvWKSeQ1BjaCg6NlWlQqysKcfnNB54qSCEvf0M/z2Tf83ZM5uyBxzaV+7GrD\nkUkakkaBUcN+03dy8ZFW+FBNn03zLN7Jnc5Ad9elpvIXpj/qlzSUejfxwqth\nPtf3WxmDBIiT0SQuJYQRUt3sAlNQYmhwFMaqUAEYg8OTxjs+sNYsfSmyR0AL\n1z9U62++i1vZecD74bSoNF7MFOE3sLhdVAu4GBmYc2T43/+byq/1cSR8OENn\nFPAoD4Kzlhm7d/EDpKwQJZYxV7c/zaMKtzvrJuyiURSJi5wUDpyZz7eqOQrP\nCEdn\r\n=xjO3\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"a94530d639a18dd08719234ed46c72df2201cbc9","scripts":{"prepare":"json2ts -i ./spec/package.spec.json -o ./index.d.ts"},"typings":"./index.d.ts","_npmUser":{"name":"nickghita","email":"nickg@ethereum.org"},"repository":{"url":"git+https://github.com/ethpm/ethpm-spec.git","type":"git"},"_npmVersion":"6.4.1","description":"Ethereum Package Manager Specifications","directories":{},"_nodeVersion":"10.15.3","_hasShrinkwrap":false,"devDependencies":{"json-schema-to-typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/ethpm-spec_2.0.0_1572316786903_0.5751584035991122","host":"s3://npm-registry-packages"}},"3.0.0":{"name":"ethpm-spec","version":"3.0.0","keywords":["ethereum","package","manager","epm","ethpm"],"author":"","license":"MIT","_id":"ethpm-spec@3.0.0","maintainers":[{"name":"cruzmolina","email":"cruz.adam.molina@gmail.com"},{"name":"davidmurdoch","email":"david@davidmurdoch.com"},{"name":"eggplantzzz","email":"pobol234@gmail.com"},{"name":"fainashalts","email":"fainashalts@gmail.com"},{"name":"gnidan","email":"nick@gnidan.org"},{"name":"haltman","email":"harry.j.altman@gmail.com"},{"name":"nicholasjpaterno","email":"cashlion@protonmail.com"},{"name":"nickghita","email":"nickg@ethereum.org"},{"name":"seesemichaelj","email":"seesemichaelj@gmail.com"},{"name":"tcoulter","email":"tim@timothyjcoulter.com"}],"homepage":"https://github.com/ethpm/ethpm-spec#readme","bugs":{"url":"https://github.com/ethpm/ethpm-spec/issues"},"dist":{"shasum":"f00af20b1cf85aa8f0bf6019d3a0dc19b6ab306a","tarball":"https://registry.npmjs.org/ethpm-spec/-/ethpm-spec-3.0.0.tgz","fileCount":109,"integrity":"sha512-SuaT1XpoCVV5d9m9XXV99876BX5iHzNZTwyWOdBAI1GGOajgIm8taXrEnASOYZ00gL0c1zEMhyxNWj6vxz4VKA==","signatures":[{"sig":"MEUCIBIuoRVeVLJW96HA6fCJ4QSsCSJVS4lm24pfHEaJV0sGAiEA2DxZP6BkJbL1Henzop1zd5CxY9xVCXxdHTyG6FFz88Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":514160,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIgs0CRA9TVsSAnZWagAAxI8P/1lyhG+ESqKuKSuaqBjp\nHH4xBfqB3E38IuOVLX/YQmuIGD+zFMyHX6XErfYVSfjqISinhW/d+oiyFgZE\nfj6F/XvqjvrRpfyCPhMASAi3rA3LoVh/M24v59OSjll+Y2JaqCH9QivczoTJ\nPQwTcz5kiPOnYA1GPPbMY/oLSABeWHvzQoweGxj9GEvVNUmvCU2KyONOQPr4\nlR6aXsXDafVKRiZ8qWN9iebA1hnQ1b6TJpUOM9CzjV7DcUeHY9i0boATML3n\noct5N/in/oWPYIXtlJ69deZfRxc/4ltIk73Yaehu7UhuCB+KFy9OTEbNUApt\nWjxfJ7ZWa2fHtTfwVpHL8zGW2CE1KH1qVODyjobD+ZcYFRf6gh9+oDLNvZWA\nzZawLJBC4F5oavHoqUGDMJDuePiMHToaXRAtx0ZGaRdrPgV7d8e4EHEKVj+4\npz8BUx7ZDP4FXCXHSgJ2jIKk+AC3mnc0M+r3Ih7BpXxiZvT8jNRhCcA4qegc\nA4AZrJjbFN3rvGlSNJlo2QoJXl1A/bNDHSxWDzb5Sijd2e/ZJuKMVTFzefXW\n31F6S6KNpi0zYvtwMzSgBb2TmMMB+vWCPIME1WVtVrSR7jDvz8DdF3z6x8N9\nfnwouCC2qfvbJPfofiIYb0AMM4ya7vCdt1xU8KeUCYsxLR+rEcVg4xBi1XLN\n5a+w\r\n=09BZ\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"a043c8539b491c0024f62c51e57a30ac7528e973","scripts":{"prepare":"json2ts -i ./spec/v3.spec.json -o ./index.d.ts"},"typings":"./index.d.ts","_npmUser":{"name":"nickghita","email":"nickg@ethereum.org"},"repository":{"url":"git+https://github.com/ethpm/ethpm-spec.git","type":"git"},"_npmVersion":"6.14.4","description":"Ethereum Package Manager Specifications","directories":{},"_nodeVersion":"10.15.3","_hasShrinkwrap":false,"devDependencies":{"json-schema-to-typescript":"^5.5.0"},"_npmOperationalInternal":{"tmp":"tmp/ethpm-spec_3.0.0_1596066611633_0.855585040698994","host":"s3://npm-registry-packages"}}},"time":{"created":"2017-01-26T18:47:12.051Z","modified":"2026-10-03T10:48:46.139Z","1.0.0":"2017-01-26T18:47:12.051Z","1.0.1":"2017-03-30T15:52:43.028Z","2.0.0":"2019-10-29T02:39:47.105Z","3.0.0":"2020-07-29T23:50:11.771Z"},"bugs":{"url":"https://github.com/ethpm/ethpm-spec/issues"},"license":"MIT","homepage":"https://github.com/ethpm/ethpm-spec#readme","keywords":["ethereum","package","manager","epm","ethpm"],"repository":{"url":"git+https://github.com/ethpm/ethpm-spec.git","type":"git"},"description":"Ethereum Package Manager Specifications","maintainers":[{"email":"david@davidmurdoch.com","name":"davidmurdoch"},{"email":"it@consensys.net","name":"rizedr"},{"email":"nick@gnidan.org","name":"gnidan"},{"email":"nickg@ethereum.org","name":"nickghita"},{"email":"tim@timothyjcoulter.com","name":"tcoulter"}],"readme":"# EthPM Package Specification\n\n## Overview\n\n[![Join the chat at https://gitter.im/ethpm/Lobby](https://badges.gitter.im/ethpm/Lobby.svg)](https://gitter.im/ethpm/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)\n\nThis repository comprises the formal specification and documentation source\nfor the **EthPM package manifest** data format.\n\nThis data format is designed to be produced/consumed by Ethereum\ndevelopment tools. As such, this repository is intended for tool developers\nwishing to integrate with EthPM.\n\nPackage manifests are JSON-encoded, tightly-packed, with objects’ keys sorted\nin lexicographic order. Package manifests may live on disk, but are intended\nto be produced programmatically and uploaded directly to a content-addressable\nstorage network (e.g. [IPFS](https://ipfs.io/)). A package manifest describes\na single package, including package name, version, dependencies, and references\nto distributed source files.\n\n## Repository Contents\n\n- [Schema Description](http://ethpm.github.io/ethpm-spec/package-spec.html)\n  - [`package.spec.json`](https://github.com/ethpm/ethpm-spec/blob/master/spec/package.spec.json)\n- [Use Case Examples](http://ethpm.github.io/ethpm-spec/use-cases.html)\n  - [Examples Sources](https://github.com/ethpm/ethpm-spec/blob/master/examples/)\n- [Glossary](http://ethpm.github.io/ethpm-spec/glossary.html)\n\n## Examples / Use Cases\n\n**Package:** `owned` (prettified)\n```json\n{\n    \"name\": \"owned\",\n    \"version\": \"1.0.0\",\n    \"manifest\": \"ethpm/3\",\n    \"meta\": {\n        \"license\": \"MIT\",\n        \"authors\": [\n            \"Piper Merriam <pipermerriam@gmail.com>\"\n        ],\n        \"description\": \"Reusable contracts which implement a privileged 'owner' model for authorization.\",\n        \"keywords\": [\n            \"authorization\"\n        ],\n        \"links\": {\n            \"documentation\": \"ipfs://QmUYcVzTfSwJoigggMxeo2g5STWAgJdisQsqcXHws7b1FW\"\n        }\n    },\n    \"sources\": {\n        \"contracts/Owned.sol\": {\n            \"type\": \"solidity\",\n            \"urls\": [\n                \"ipfs://Qme4otpS88NV8yQi8TfTP89EsQC5bko3F5N1yhRoi6cwGV\"\n            ],\n            \"installPath\": \"./contracts/Owned.sol\"\n        }\n    }\n}\n```\n\nPlease see [**Use Cases**](http://ethpm.github.io/ethpm-spec/use-cases.html) for\ndocumented examples of different kinds of packages with varying levels of\ncomplexity. Source for use case examples can be found in the\n[examples/](https://github.com/ethpm/ethpm-spec/blob/master/examples/)\ndirectory of this repository.\n\nEach example directory contains..\n- `1.0.0.json`: ethpm v2 manifest (deprecated)\n- `1.0.0-pretty.json`: ethpm v2 manifest (pretty printed) (deprecated)\n- `v3.json`: ethpm v3 manifest\n- `v3-pretty.json`: ethpm v3 manifest (pretty printed)\n- `contracts/`: Directory containing the source contracts for the example\n- `metadata/`: Directory containing example ethpm compliant [compiler metadata output](https://solidity.readthedocs.io/en/latest/metadata.html) for each example contract\n\n## Specification\n\nThe EthPM package manifest format is formally specified as a\n[JSON-Schema](http://json-schema.org).\n\nPlease see [**Package Specification**](http://ethpm.github.io/ethpm-spec/package-spec.html)\nfor a natural-language description of this schema, or see\n[package.spec.json](https://github.com/ethpm/ethpm-spec/blob/master/spec/package.spec.json)\nfor the machine-readable version.\n\n## Contributing\n\nRequirements: Python 3, `pip`, `make`\nFork and clone this repo to get started. Then, activate a\n[virtual environment](https://docs.python-guide.org/dev/virtualenvs/) in the cloned repo's\ndirectory and run `pip install -r requirements.txt`\n\n### Building Sphinx docs locally\n\n1. `cd docs`\n2. `make html`\n\nDocs are written in [reStructuredText](http://docutils.sourceforge.net/rst.html)\nand built using the [Sphinx](http://www.sphinx-doc.org/) documentation\ngenerator.\n\n### Running tests locally\n\n1. `pytest tests/`\n\n\n### Test fixture schema\n\nEach test fixture contains a ``package`` field with a raw, json encoded string of the manifest.\n\nEach test fixture contains a ``testCase`` field that indicates whether the associated ``package`` is ``invalid`` or ``valid``.\n\nEach invalid test fixture contains an ``errorInfo`` field.\n- The ``errorPointer`` field, which is a [jsonpointer](https://tools.ietf.org/html/rfc6901) pointing towards the cause of the invalid error, is included for ``invalid`` tests. \n- The ``reason`` field, which is a human readable description of the error, is included for ``invalid`` tests.\n- The ``errorCode`` field, which is a machine readable description of the error, is included for ``invalid`` tests according to the following table.\n\n``N0001`` - Invalid ``\"manifest\"`` field.\n``N0002`` - Invalid ``\"name\"`` field.\n``N0003`` - Invalid ``\"version\"`` field.\n``N0004`` - Invalid ``\"sources\"`` field.\n``N0005`` - Invalid ``\"contractTypes\"`` field.\n``N0006`` - Invalid ``\"deployments\"`` field.\n``N0007`` - Invalid ``\"compilers\"`` field.\n``N0008`` - Invalid ``\"buildDependencies\"`` field.\n``N0009`` - Invalid ``\"meta\"`` field.\n","readmeFilename":"README.md"}