{"_id":"n-01","_rev":"3-264c86bf7edb703cbadae7cf07084d01","name":"n-01","dist-tags":{"latest":"0.0.4"},"versions":{"0.0.2":{"name":"n-01","version":"0.0.2","description":"OData server for loopback framework","main":"index.js","scripts":{"_pretest":"jshint .","test":"istanbul test mocha -- --recursive","coverage":"istanbul cover _mocha -- --recursive","updproject":"node ./scripts/update_project.js","relnotes":"github_changelog_generator -u htammen -p n-odata-server"},"dependencies":{"log4js":"^0.6.31","odata-parser":"^1.2.1"},"devDependencies":{"body-parser":"^1.14.1","chai":"^3.5.0","chai-as-promised":"^5.3.0","compression":"^1.0.3","cors":"^2.5.2","grunt":"^0.4.5","grunt-mocha-test":"^0.12.7","grunt-ts":"^5.2.0","istanbul":"^0.4.2","jshint":"^2.5.6","loopback":"^2.22.0","loopback-boot":"^2.6.5","loopback-component-explorer":"^2.1.0","loopback-datasource-juggler":"^2.39.0","mocha":"^2.3.3","proxyquire":"^1.7.10","serve-favicon":"^2.0.1","sinon":"^1.13.0","supertest":"^0.15.0","typescript":"^1.8.10","typings":"^1.3.2"},"license":"MIT","gitHead":"f8ed5ee1703c65240fd6dc88c5b7897479fe6105","_id":"n-01@0.0.2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"umayaraj","email":"umayaraj.sap@gmail.com"},"dist":{"integrity":"sha512-X6D7Rlwn5WAIJMtO7JRNggxwGBZIhE5KmeWncFbVTSzlcfXvmgxI6OFtYdp4ITVGaZIxuemsDPoqtoIjyKuWEA==","shasum":"ae0ffad3a80c7e303060a0de31eb8516bc3a92c6","tarball":"https://registry.npmjs.org/n-01/-/n-01-0.0.2.tgz","fileCount":59,"unpackedSize":298513,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeGyAWCRA9TVsSAnZWagAAqMMQAKAu84qhJv08Z/10qs12\nVXHwS5kNppzQtKeiimCraU44MBAKrmBdr4IY5t8ws11jURI8r5ZQft1QQcAN\nHsUXnWPhnzIEiz3L596ujPQdBgWVYuVJz3qw+8hZo5gQ0RcL10myjzDiEG3o\nICAN4hH85K0aNaRDxDYkRZloKjuzsQanqRtO2xqREM+S0OjioQCxmKdG0F/N\nfPVkQeoc2ZOTIor1Hn3IsgN5LA7bZs7J/P/K31tCEgk0GEwrVAS02eWVIkxS\n+ddEjajru+sARfzcZkOhJw2K+HEXRtS2pRn4X/aDdb1f5lF0Z8yhWJT8UARL\npXpIg6wHsuqaZWYRT44I5m2qKKrd6ct530/26a2NccL8iT5tFviWsgZnJ7y4\nJknZHrRwH73kb5fu9h70A/y5J0s6heRSYZHZNqs9LRUQoGW4IVx4Q6YWTRNB\niQt/554gW+7NBhG8hktqIm98R0UM4nWgNbr4SSVlRdqgxWO95YXga3aGzBtj\nSiKknsCpS1Q2/bED+0IbkANQmAftV2kiPEpJAmOaG332w1FTL55kqpOObLaA\nCVnrBnT7XedsyBiECD+5SyZzWjSZSrwTgePUdq1PxJxoi5PhbiQ6cWe4rlMl\nzgRMZLWhANVKFwtocg/RNgBiw4Bc12/zwXwlJfMDN+JcIc+QlxFxRmGgonkm\nwoWg\r\n=Dro5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICIhjeNsxmEN7AWhJX5YYaC+1xdAi1X18sbzXyrXo0XJAiEAlQhhVOrqlHzSZ81f269ovCow6QEZSWTTaL86/x4iLGE="}]},"maintainers":[{"name":"umayaraj","email":"umayaraj.sap@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/n-01_0.0.2_1578835990547_0.04348658151899021"},"_hasShrinkwrap":false},"0.0.3":{"name":"n-01","version":"0.0.3","description":"OData server for loopback framework","main":"index.js","scripts":{"_pretest":"jshint .","test":"istanbul test mocha -- --recursive","coverage":"istanbul cover _mocha -- --recursive","updproject":"node ./scripts/update_project.js","relnotes":"github_changelog_generator -u htammen -p n-odata-server"},"dependencies":{"log4js":"^0.6.31","odata-parser":"^1.2.1","xmlbuilder":"^13.0.2"},"devDependencies":{"body-parser":"^1.14.1","chai":"^3.5.0","chai-as-promised":"^5.3.0","compression":"^1.0.3","cors":"^2.5.2","grunt":"^0.4.5","grunt-mocha-test":"^0.12.7","grunt-ts":"^5.2.0","istanbul":"^0.4.2","jshint":"^2.5.6","loopback":"^2.22.0","loopback-boot":"^2.6.5","loopback-component-explorer":"^2.1.0","loopback-datasource-juggler":"^2.39.0","mocha":"^2.3.3","proxyquire":"^1.7.10","serve-favicon":"^2.0.1","sinon":"^1.13.0","supertest":"^0.15.0","typescript":"^1.8.10","typings":"^1.3.2"},"license":"MIT","gitHead":"f8571c1b73cfe612c8106459798e67e0562cbbf9","_id":"n-01@0.0.3","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"umayaraj","email":"umayaraj.sap@gmail.com"},"dist":{"integrity":"sha512-TZvsNVnRz3eE3MoD0qMKWP7MCA/ogT+qIdAaYNwBsgYQs7bQq4ddSMoJMR9HpwJiIKNFoNvQoBBNaRoLkZi6OA==","shasum":"61454f21df376ddd73241886a2b346e66f63f7c3","tarball":"https://registry.npmjs.org/n-01/-/n-01-0.0.3.tgz","fileCount":59,"unpackedSize":298543,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeGztNCRA9TVsSAnZWagAAILkP/iN4q6gNByb9ZVKKOKBt\ntJiIUxEZKS3nDo6nj3CLi1V57BPx4xmFleYqy+2hhrVYQXI/sZhZNiJgIspS\nmZWFOV1QOwsWOsQ7rZfGhN2gdUh7jK3nmo9jkrofPk2+0IJaAqeIw1K8GH5B\n846Wa6mOaHKo4w1tN8SvfXfbkoOqsHKJ5OounfQfSRxrldDubL74WrcROYUZ\nbzTZePLczoIj9XyVPPtAJGCWLM943MrdVcSK5J0CNlmq/iEF0KCS4AFW68fd\n7txd/3BG+ND8Nlb+Zx7GLudX1THGY81zversIJmWdgDqgC/Jwc753lDr8vJ7\n7rskv4SuvA+AJDgNCyczo+uaJJuYpYyW9NBn1z8J+8dGgCzS/HQbpp72Cokw\n4UkoVafleR9H1Zib6lxlOqi1Q7uw8gtPT27/QQIfLaQ21LxbbUAmIKqroNkb\nd/3jBYgTSG45c8PPEBy//sjiGr0M+hC2NukItl0MSQoWy8qqsSQXDXtK5dJA\nACrgJqLBin7akqEUay5YrIwMYh6vixoNCGaUOK7JD8uqJQrB6g9+oiyiaTF5\n2N3/oA/DMRA35QdfVQ6ZdZ3Rc8JkKDqYR/Yu12JsXFD9VW9aJQ0B94p3M/d1\nkUMhX6aU9+erwePSaQwN3PlT+yOjgfeC/D5PilVLgtJdzOfPkvWrDhC7D3Im\n2i5A\r\n=vbGJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGSM6uDs4Oug9Gj6l2gHq/DRqgMCNx8VW4tLpO/DFa0mAiBcRVziAbhWqtH1lJf+8XuwTu1GVmQ4z6eDmu8HkTS79w=="}]},"maintainers":[{"name":"umayaraj","email":"umayaraj.sap@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/n-01_0.0.3_1578842957144_0.6266020548417461"},"_hasShrinkwrap":false},"0.0.4":{"_from":"n-01","_id":"n-01@0.0.4","_inBundle":false,"_integrity":"sha512-X6D7Rlwn5WAIJMtO7JRNggxwGBZIhE5KmeWncFbVTSzlcfXvmgxI6OFtYdp4ITVGaZIxuemsDPoqtoIjyKuWEA==","_location":"/n-01","_phantomChildren":{},"_requested":{"type":"tag","registry":true,"raw":"n-01","name":"n-01","escapedName":"n-01","rawSpec":"","saveSpec":null,"fetchSpec":"latest"},"_requiredBy":["#USER","/"],"_resolved":"https://registry.npmjs.org/n-01/-/n-01-0.0.2.tgz","_shasum":"ae0ffad3a80c7e303060a0de31eb8516bc3a92c6","_spec":"n-01","_where":"D:\\Node project\\Postgres","bundleDependencies":false,"dependencies":{"log4js":"^0.6.31","odata-parser":"^1.4.1","xmlbuilder":"^13.0.2"},"deprecated":false,"description":"OData server for loopback framework","devDependencies":{"body-parser":"^1.14.1","chai":"^3.5.0","chai-as-promised":"^5.3.0","compression":"^1.0.3","cors":"^2.5.2","grunt":"^0.4.5","grunt-mocha-test":"^0.12.7","grunt-ts":"^5.2.0","istanbul":"^0.4.2","jshint":"^2.5.6","loopback":"^2.22.0","loopback-boot":"^2.6.5","loopback-component-explorer":"^2.1.0","loopback-datasource-juggler":"^2.39.0","mocha":"^2.3.3","proxyquire":"^1.7.10","serve-favicon":"^2.0.1","sinon":"^1.13.0","supertest":"^0.15.0","typescript":"^1.8.10","typings":"^1.3.2"},"license":"MIT","main":"index.js","name":"n-01","scripts":{"_pretest":"jshint .","coverage":"istanbul cover _mocha -- --recursive","relnotes":"github_changelog_generator -u htammen -p n-odata-server","test":"istanbul test mocha -- --recursive","updproject":"node ./scripts/update_project.js"},"version":"0.0.4","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"umayaraj","email":"umayaraj.sap@gmail.com"},"dist":{"integrity":"sha512-PJ1U+MlvzThDR5n8nUPKm55ZnKFf6wYYrynoIGiFm+cO5RdVRLYArT9Esl3BiGz1e2M0XO0xVLQfheattRmXeg==","shasum":"7427b0688bae7b8faae5163d12a2362c3e3447e5","tarball":"https://registry.npmjs.org/n-01/-/n-01-0.0.4.tgz","fileCount":59,"unpackedSize":299211,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeG20WCRA9TVsSAnZWagAAcWkP/2sFZJ9L3t/7OCGNlX2O\nT/gcqhjqrdmMNWadFK1bvGbxhOL8B0f4gWbMU0wAqUCaccPiX9PyzPOHbn5b\nC4BcaZOXx4UxkTh6jQfMfE59cSSYUBVrdgbZkHHz4McEvjXAejRwUDA//CuX\n0x6aymKrkWBLgmY/R31892NDCpKUEiHUnHtHkmb832ZfagdUHQrEj2YKiTlb\nm5uSsGhzcFdW5mZfkh4PPrzskiNI3S7fgOq4mK9qvP3BHwUXSsrAbKWrZLYx\niSt2o88Bj+1XwSGqcF6YBEPf2vMcQGg0fLcbQ7crA75VoCFcaUGLXAbs9W+a\nYLj5VQJ5NfzyxlJxjhvQz0MhIu10att1yxqz8wXzrTHh+4Gjf/jHMITaTn7V\nlmtGJ6/dExPRMNwms9exB8hndcXHAcD+f8916nb4X56roHXXTBFjG/Ncswme\n7YmoXfGywubkkygpxNb/JjbsBMiCt+drhxdI/PXy6YVDOZdVEufQ/inrwMTK\n6mcjPY2/kTnxpeOb0Lky6S5+FF84brld9R5XGGhhCWq15B4me2KmVk5lBr3O\n7QDNsfTjll09cTePQztoiDes2RRydBccGU1H445lz8WZNOiPyKih7qkEKZxX\nxvhIIBitlftcsmUpzueZBhlIekjOhC6fVYc731Bz2uahJCjzLDiE+G4JYUow\nv6Dt\r\n=Py92\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDNiMYTZ2aShUQvtKZI/0D468gI5ghV7MzsF9uLIQMNIwIgDpq8VCyevaNMXbR0Htykf95Qknwp6MMOx0WLIpisQyI="}]},"maintainers":[{"name":"umayaraj","email":"umayaraj.sap@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/n-01_0.0.4_1578855701918_0.12512658605797133"},"_hasShrinkwrap":false}},"time":{"created":"2020-01-12T13:33:10.547Z","0.0.2":"2020-01-12T13:33:10.685Z","modified":"2022-05-10T07:59:59.383Z","0.0.3":"2020-01-12T15:29:17.305Z","0.0.4":"2020-01-12T19:01:42.106Z"},"maintainers":[{"name":"umayaraj","email":"umayaraj.sap@gmail.com"}],"description":"OData server for loopback framework","license":"MIT","readme":"# n-odata-server, The node OData server for the loopback framework\r\n\r\nThis project has been started to develop an [OData](http://www.odata.org/) server for node.js.\r\nThere are already some solutions at npm. These did not fulfill our requirements which are\r\n\r\n* Support for several backend systems (databases)\r\n* Support for local file system database (light weight)\r\n* Support for nearly the complete OData API\r\n\r\n## Background\r\n\r\n### OData\r\nOData is a protocol for standardized access to [RESTful](https://en.wikipedia.org/wiki/Representational_state_transfer) webservices. It initially\r\nwas developed by Microsoft as Open Source project. Not very much later SAP jumped onto the train. At the moment primarily Microsoft and SAP work on the [specification](https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=odata) under the hood of OASIS.\r\nSince it's early days in 2009 a lot of other companies have committed their strategy to OData or at least support OData.\r\nTo name a few there are IBM, Salesforce, Red Hat, CA, Citrix.\r\nIf you are totally new to OData this [presentation](http://de.slideshare.net/metadaddy/odata-a-standard-api-for-data-access)\r\nmight give you a quick inside into it.\r\n\r\n#### OData versions\r\nIn the meantime the current version of Odata is 4.0. We will try to support this version. But\r\nbecause we primarily are interested in using our server with the frontend framework SAPUI5/OpenUI5 which still works\r\non V2 we will support version 2.0 at first.\r\n\r\n#### OData formats\r\nThe OData specification suggests to support [Atom](http://docs.oasis-open.org/odata/odata-atom-format/v4.0/odata-atom-format-v4.0.html)\r\nas well as [JSON](http://docs.oasis-open.org/odata/odata-json-format/v4.0/odata-json-format-v4.0.html).\r\nOne of these formats must be supported. We will __probably only support the JSON format__ as it is much more lightweight and\r\ntherefore easier to implement.\r\n\r\n### Loopback\r\nThis project relies on and requires [Loopback](http://loopback.io/) a very mature node.js framework for\r\ndevelopment of database independent node.js web applications. Our project extends this framework\r\nwith the ability to expose it's data via OData. Loopback already exposes the data via a proprietary RESTful API. If you are fine with this just use it.\r\nBut if you want to base your projects on standards use OData and our loopback add-on.\r\n\r\n## Usage\r\n### Prerequisites\r\nThis component is not usable out of the box. You already need to have a loopback application. You can thent add this\r\ncomponent to the existing application. Look [here](http://loopback.io/getting-started/) for details on installing and\r\ncreating a loopback application.\r\n\r\n### Installation\r\nInstall the component like any other node package with npm\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`npm install n-odata-server --save`\r\n\r\n### Activation\r\nTo use this loopback component you have to activate it in the file\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`server/component-config.json`\r\n\r\nof your project. Add the following lines to this file\r\n\r\n```\r\n  \"n-odata-server\": {\r\n    \"path\": \"/odata/*\",\r\n    \"odataversion\": \"2\",\r\n    \"useViaMiddleware\": true\r\n  }\r\n```\r\nThe line `\"odataversion\": \"2\"` means that the server works with OData V2. We highly recommend to use this version at the\r\nmoment.\r\n\r\nAdditionally you have to add route handling information to the file  \r\n`server/middleware.json`  \r\nAn example of the configuration you see here:\r\n```\r\n{\r\n  \"initial:before\": {\r\n    \"loopback#favicon\": {}\r\n  },\r\n  \"initial\": {\r\n    \"compression\": {},\r\n    \"cors\": {\r\n      \"params\": {\r\n        \"origin\": true,\r\n        \"credentials\": true,\r\n        \"maxAge\": 86400\r\n      }\r\n    }\r\n  },\r\n  \"session\": {},\r\n  \"auth\": {},\r\n  \"parse\": {},\r\n\t\"routes\": {\r\n\t\t\"n-odata-server#odata\": {\r\n\t\t\t\"paths\": [\r\n\t\t\t\t\"/odata/*\"\r\n\t\t\t]\r\n\t\t},\r\n\t\t\"loopback#rest\": {\r\n\t\t\t\"paths\": [\r\n\t\t\t\t\"${restApiRoot}\"\r\n\t\t\t]\r\n\t\t}\r\n\t},\r\n  \"files\": {\r\n    \"loopback#static\": {\r\n      \"params\": \"$!../client\"\r\n    }\r\n  },\r\n  \"final\": {\r\n    \"loopback#urlNotFound\": {}\r\n  },\r\n  \"final:after\": {\r\n    \"loopback#errorHandler\": {}\r\n  }\r\n}\r\n\r\n```\r\nWith this configuration you can use the `odata` prefix to execute OData calls and the `api` prefix (loopback default) to execute standard restful json calls.\r\nIf you are not happy with the prefix `odata` you can of course use another one. Just exchange `odata` with your prefix in the `paths` array.\r\ne.g. `myservice`. Then your requests to the odata service have to start with `/myservice/`.\r\n\r\nSee express documentation for more details on defining routes.\r\n\r\n\r\n### Firing OData requests\r\nTo fire your OData request simply start your server application with\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`node .`\r\n\r\ngo to your browser and enter\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`http://0.0.0.0:3000/odata/`\r\n\r\nThis will return the OData service document from which you can see which collections / entitysets are available in\r\nyour OData server.\r\n\r\n```\r\n{\r\n  \"@odata.context\": \"http://0.0.0.0:3000/odata/$metadata\",\r\n  \"value\": [\r\n    {\r\n      \"name\": \"people\",\r\n      \"url\": \"people\"\r\n    }\r\n  ]\r\n}\r\n```\r\nIn my case there is `people` entityset. When firing the URL\r\n\r\n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`http://0.0.0.0:3000/odata/people`\r\n\r\nI get the data for this collection\r\n\r\n```\r\n{\r\n  \"value\": [\r\n    {\r\n      \"firstname\": \"Helmut\",\r\n      \"lastname\": \"Tammen\",\r\n      \"id\": 2\r\n    },\r\n    {\r\n      \"firstname\": \"Franz\",\r\n      \"lastname\": \"Frosch\",\r\n      \"gender\": \"male\",\r\n      \"age\": 65,\r\n      \"id\": 3\r\n    },\r\n    {\r\n      \"firstname\": \"Mary\",\r\n      \"lastname\": \"Friday\",\r\n      \"gender\": \"female\",\r\n      \"age\": 10,\r\n      \"id\": 4\r\n    },\r\n    {\r\n      \"firstname\": \"Johannes\",\r\n      \"lastname\": \"Hamel\",\r\n      \"id\": 8\r\n    }\r\n  ]\r\n}\r\n```\r\n\r\n### Supported requests\r\nCurrently basic requests for the following http verbs are supported\r\n\r\n* `GET`: Get all records of an entityset or a single record\r\n* `POST`: Create a new entry in your database\r\n* `DELETE`: Delete an entry from your database\r\n* `PATCH`: Update an entry in your database\r\n* `MERGE`: Update an entry in your database (to be OData V2.0 compatible)\r\n* `PUT`: Update an entry in your database\r\n\r\nIf you encounter a lack in the implementation this is either not implemented yet or you found an error.\r\nIn both cases you have the following opportunities\r\n\r\n* fork the repo, fix the problem and raise a pull request so that we can take it over into the master branch of our project\r\n* create an issue on Github\r\n* wait until we came to the same error/lack and fixed it.\r\n\r\nIf you are not familiar with OData request have a look at the above mentioned OData resources.\r\n\r\n### OData restrictions\r\nCurrently we don't support\r\n\r\n* Batch requests. You have to configure your frontend to not using these. In SAPUI5 / OpenUI5 this can be done by setting a\r\nflag\r\n* Atom / XML request. As mentioned above we only support JSON.\r\n\r\n### Authentication and Authorization\r\nn-odata-server leverages the authentication and authorization mechanisms supplied by loopback. \r\nWe have provided a [wiki page](https://github.com/htammen/n-odata-server/wiki/authorization) to help you get started easily with this topic.\r\n\r\n### Logging\r\nWe use [log4js](https://github.com/nomiddlename/log4js-node) for internal logging purposes.\r\nPer default we log to the console and to a file named `n_odata_server.log` that is created in the root directory of your\r\ndevelopment project.\r\nThe default logging configuration is quite verbose. If you don't want to see that much information you can adjust it.\r\nCreate a file named `n_odata_server_log.json` in the root directory of your project and configure your logging preferences.\r\nSee the log4js documentation for more details.\r\nFollowing you see the default configuration that is used if the above mentioned file does not exist.\r\n```\r\n{\r\n\t\"appenders\": [\r\n\t\t{ \"type\": \"console\" },\r\n\t\t{\r\n\t\t\t\"type\": \"file\",\r\n\t\t\t\"filename\": \"n_odata_server.log\",\r\n\t\t\t\"maxLogSize\": 1048576\r\n\t\t}\r\n\t],\r\n\t\"replaceConsole\": true,\r\n\r\n\t\"levels\": {\r\n\t\t\"[all]\": \"TRACE\"\r\n\t}\r\n}\r\n```\r\n\r\n## Documentation\r\nTo read more about the n-odata-server you should have a look at the [wiki](https://github.com/htammen/n-odata-server/wiki) or you can have a\r\nlook at this [presentation](http://prezi.com/dznggtj0zjlo/?utm_campaign=share&utm_medium=copy) for a not very technical overview\r\n\r\n## Tutorials\r\nHave a look at our [wiki page](https://github.com/htammen/n-odata-server/wiki) for tutorials that demonstrate the usage of n-odata-server.\r\n\r\n## Current state of the project\r\n__Even though we are working hard we need some more time to have a version that\r\nsupports most of the OData specification.\r\nPlease stay tuned or contribute to the project if you want quicker results.__\r\n\r\nWe have currently implemented some but not all OData functionality (see below). You should be able to use most of the basic CRUD operations\r\non your data. We try to implement some more useful functionality as soon as possible. Additionally we make currently available functionality\r\nmore stable every day.\r\n\r\n### Release Notes\r\nTo see what's implemented yet have a look at our [release notes](CHANGELOG.md)\r\n\r\n## Contribute\r\nIf you want to contribute send us an email to [`h.tammen@tammen-it-solutions.de`](mailto:h.tammen@tammen-it-solutions.de).\r\nWe are collaborating / communication via [Slack](https://slack.com/) and will invite you to our team as soon as we receive a request for contribution.\r\nWe manage our tasks via [zube.io](https://zube.io). We will also authorize you to our zube scrum board if you want to contribute to the project.\r\n\r\nYou can also have a look at the [DEV_NOTES.md](DEV_NOTES.md) file to get more details about our development process.\r\n\r\n\r\n\r\n## License\r\nThis project is licensed under the MIT license. See the [LICENSE](LICENSE) file for more info.\r\n\r\n\r\n","readmeFilename":"README.md"}