{ "info": { "author": "Sam Kleiner", "author_email": "sam@skleiner.com", "bugtrack_url": null, "classifiers": [], "description": "# Falcon OpenApi\n\nFalcon OpenApi is a plugin for the [Falcon Web Framework](https://github.com/falconry/falcon).\n\n### Install\n\n```bash\npip3 install falcon-openapi\n```\n\n## OpenApi Router\n\nReads an openapi spec and provides automatic routing to Falcon resources. This is achieved by defining either an operationId or x-falcon property on an endpoint. This removes the need to define all endpoints in your main Falcon file. Instead just set the router to OpenApiRouter.\n\nThis router inherits from the default Falcon CompiledRouter class, so it supports all methods available to the default router.\n\nSupports json files, yaml files, raw json strings, and raw yaml strings. If no params are specified the plugin will attempt to find `openapi-spec.yml` or `openapi-spec.yaml` in the current working directory (see example for structure).\n\n```python\nimport falcon\nimport json\nimport yaml\nfrom falcon_openapi import OpenApiRouter\n\nspec = {\n 'paths': {\n '/foo': {\n 'get': {\n 'operationId': 'controllers.foo.Foo.on_get'\n }\n }\n }\n}\n\n# load from file\napp = falcon.API(\n router=OpenApiRouter(file_path='openapi-spec.yml')\n)\n\n# load from raw json\napp = falcon.API(\n router=OpenApiRouter(raw_json=json.dumps(spec))\n)\n\n# load from raw yaml\napp = falcon.API(\n router=OpenApiRouter(raw_yaml=yaml.dump(spec))\n)\n```\n\n### operationId\n\nThe example below will route all `GET` `/foo` requests to `controllers.foo.Foo.on_get`. Where `controllers.foo` is the module name, `Foo` is the class name, and `on_get` is the method name. Every operationId in your spec should be unique (See [openapi operationId](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#operationObject)). All three parts of the operationId must be specified for the router to work.\n\n```yaml\nopenapi: \"3.0.0\"\ninfo:\n version: 1.0.0\n title: Falcon Openapi Demo\npaths:\n /foo:\n get:\n summary: Do foo things\n operationId: controllers.foo.Foo.on_get\n```\n\nI am unsure if operationId will make it into the final version. I may change this to only check for the x-falcon property. I plan on doing more research to determine if this an appropriate way to use the [operationId property](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#operationObject).\n\n### x-falcon\n\nThe example below will route all `POST` `/foo` requests to the module `controllers.foo`, the class `Foo`, and the method `on_post`. Note: the standard in Falcon is to use the naming scheme on_get, on_post, etc. If no method name is defined in x-falcon, the plugin will attempt to route to the appropriate on_* method.\n\n```yaml\nopenapi: \"3.0.0\"\ninfo:\n version: 1.0.0\n title: Falcon Openapi Demo\npaths:\n /foo:\n post:\n summary: Do foo things\n x-falcon:\n module: controllers.foo\n class: Foo\n method: on_post\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/StoicPerlman/falcon-openapi/", "keywords": "falcon,openapi,api", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "falcon-openapi", "package_url": "https://pypi.org/project/falcon-openapi/", "platform": "", "project_url": "https://pypi.org/project/falcon-openapi/", "project_urls": { "Homepage": "https://github.com/StoicPerlman/falcon-openapi/" }, "release_url": "https://pypi.org/project/falcon-openapi/0.5.1/", "requires_dist": [ "falcon", "pyyaml" ], "requires_python": ">3.5.0", "summary": "Falcon router to map openapi spec to resources", "version": "0.5.1" }, "last_serial": 5663198, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "7310638d89fef85290c5c21df3e00881", "sha256": "1a9c6c8217549ceb36d24edb1bedd7dfccd33f21d76222b2b5fa9e3a39bcbb9d" }, "downloads": -1, "filename": "falcon-openapi-0.1.0.tar.gz", "has_sig": false, "md5_digest": "7310638d89fef85290c5c21df3e00881", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4495, "upload_time": "2018-06-03T16:58:23", "url": "https://files.pythonhosted.org/packages/2b/76/1078a1c9ea93b0f0890af88d1cd1c0aa9b43463d62cbc639b7a54b907123/falcon-openapi-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "42f95f92a65397d02ca0dfe66f76051e", "sha256": "ec274c0bd2022b3889c1c49794918b235d5f5f9ee7027001b7241c5dea37f14d" }, "downloads": -1, "filename": "falcon-openapi-0.1.1.tar.gz", "has_sig": false, "md5_digest": "42f95f92a65397d02ca0dfe66f76051e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4490, "upload_time": "2018-06-03T17:01:26", "url": "https://files.pythonhosted.org/packages/a7/01/a7931cb540a1596b5e8fa2d0d9369a6e453f1e96212e30ed0dc32bcea871/falcon-openapi-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "102fc51ac69e5c2e8904cde2b6d95871", "sha256": "7b2f272be050dc7c69c9f85db124b3ceeceffe8aeb8920678126698d7e767491" }, "downloads": -1, "filename": "falcon-openapi-0.1.2.tar.gz", "has_sig": false, "md5_digest": "102fc51ac69e5c2e8904cde2b6d95871", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4522, "upload_time": "2018-06-03T17:08:52", "url": "https://files.pythonhosted.org/packages/bd/7b/766d4f1edb74321e8435fe4b5375c3a592a6c9d5360015804efb0072dcce/falcon-openapi-0.1.2.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "0005e84ccf45513690c27e7186c293a9", "sha256": "e96909b4d1b7a5ad86e7b68a69986b7e4249f0219502626e45dac29e44dd3c40" }, "downloads": -1, "filename": "falcon-openapi-0.1.6.tar.gz", "has_sig": false, "md5_digest": "0005e84ccf45513690c27e7186c293a9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4535, "upload_time": "2018-06-03T17:35:47", "url": "https://files.pythonhosted.org/packages/ff/be/d802318332ae214dba27a21b0c56387df1f127bbf8c0a20603425c051cf8/falcon-openapi-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "48b72e02760ce1582f6a9ec01dac86fb", "sha256": "ec7d6bb76ab3c0fce8669f6ef2b5e3f837a7c985c1e7cca9092dd98be0b53bc7" }, "downloads": -1, "filename": "falcon-openapi-0.1.7.tar.gz", "has_sig": false, "md5_digest": "48b72e02760ce1582f6a9ec01dac86fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3835, "upload_time": "2018-06-03T17:47:47", "url": "https://files.pythonhosted.org/packages/07/0c/6d80555bb1422588a1734f28b4988c3afb764832a5826a6bd2ccdd77c4fd/falcon-openapi-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "24c15e172cfc82295cdb2adbed5b15c0", "sha256": "fdf37a2b16d44d1deb8d73d44897065d44112cb3961372a098df43474da4b3d6" }, "downloads": -1, "filename": "falcon-openapi-0.1.8.tar.gz", "has_sig": false, "md5_digest": "24c15e172cfc82295cdb2adbed5b15c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3795, "upload_time": "2018-06-03T17:55:59", "url": "https://files.pythonhosted.org/packages/40/6e/57cc4cee413507a2af352a9ef99f62793c80e87b00f11cbc8651a028f508/falcon-openapi-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "d32e4d34727b7a8c5f9873337f8f5db9", "sha256": "f387b7c55bf5861ede4680b72fcadcbc5bcb5016a871c3e7f2632bd9c5456c4e" }, "downloads": -1, "filename": "falcon-openapi-0.1.9.tar.gz", "has_sig": false, "md5_digest": "d32e4d34727b7a8c5f9873337f8f5db9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3779, "upload_time": "2018-06-03T19:10:58", "url": "https://files.pythonhosted.org/packages/32/93/feedf462201ae2326992ef5cd46dff20eb24bfe9272b117363b5b038bc86/falcon-openapi-0.1.9.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "0413d3101f3a3fb3fafe957278a54057", "sha256": "425d81117c09fb2fced34bc328d26805944424dd2b30df9c52b6d8eb37a2332b" }, "downloads": -1, "filename": "falcon-openapi-0.2.0.tar.gz", "has_sig": false, "md5_digest": "0413d3101f3a3fb3fafe957278a54057", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.5.0", "size": 4163, "upload_time": "2018-11-24T19:39:46", "url": "https://files.pythonhosted.org/packages/e2/f1/e222dc1eff6768e37b704624b7048d05ccc0c4f4e4dd8bd272884381c348/falcon-openapi-0.2.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "ffbbfe83e4ba5a36841cfbd90e76a744", "sha256": "d9dfe61700b1e8bf4de96671e10838c3e640e3195243b4a4b3dbb2647ccba80a" }, "downloads": -1, "filename": "falcon-openapi-0.3.1.tar.gz", "has_sig": false, "md5_digest": "ffbbfe83e4ba5a36841cfbd90e76a744", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.5.0", "size": 4237, "upload_time": "2018-11-27T00:06:02", "url": "https://files.pythonhosted.org/packages/77/50/1f56416a5bf13fbd41ccfe88af3c02dc2e0cbca29191f579cc7a0c9f1b6a/falcon-openapi-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "275d1d7cc49ff7b69af3662c32bc2e47", "sha256": "ebcdfaaa2b9abff5abd2c1f2fd4b465734798b67673ce5dcab3887f06ec25ef8" }, "downloads": -1, "filename": "falcon-openapi-0.4.0.tar.gz", "has_sig": false, "md5_digest": "275d1d7cc49ff7b69af3662c32bc2e47", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.5.0", "size": 4479, "upload_time": "2018-11-30T01:35:56", "url": "https://files.pythonhosted.org/packages/53/91/0c89c339b00cdfd67924ca991de2b1fa868af3f46cc13eba4bb06ea3165d/falcon-openapi-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "6a71f10343075651caf504f391bd62ac", "sha256": "4b0ee07c6e9685a32020ff2cac8ff2daaf67e6a974722007bbce7ff058e41c48" }, "downloads": -1, "filename": "falcon_openapi-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "6a71f10343075651caf504f391bd62ac", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3.5.0", "size": 4947, "upload_time": "2019-08-11T20:04:12", "url": "https://files.pythonhosted.org/packages/98/7a/3aac2d2fe229b6588f5ce0363f092ee80f4a92495ad75cd5abd12c1a820a/falcon_openapi-0.5.0-py3-none-any.whl" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "18ef60560d34a551045015b97303642f", "sha256": "00f9778660888a5a2b2387c0778b1c1b1c292ea32ad2990ad7a328d2f1d6da61" }, "downloads": -1, "filename": "falcon_openapi-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "18ef60560d34a551045015b97303642f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3.5.0", "size": 4970, "upload_time": "2019-08-11T20:25:04", "url": "https://files.pythonhosted.org/packages/2e/c4/0fa68bc9db58c2c018b5ca899af795bb6d999722c346dd378b8673e7e7a2/falcon_openapi-0.5.1-py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "18ef60560d34a551045015b97303642f", "sha256": "00f9778660888a5a2b2387c0778b1c1b1c292ea32ad2990ad7a328d2f1d6da61" }, "downloads": -1, "filename": "falcon_openapi-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "18ef60560d34a551045015b97303642f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3.5.0", "size": 4970, "upload_time": "2019-08-11T20:25:04", "url": "https://files.pythonhosted.org/packages/2e/c4/0fa68bc9db58c2c018b5ca899af795bb6d999722c346dd378b8673e7e7a2/falcon_openapi-0.5.1-py3-none-any.whl" } ] }