{ "info": { "author": "", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "falcon-oas\n==========\n\n.. image:: https://img.shields.io/pypi/v/falcon-oas.svg\n :alt: PyPI\n :target: https://pypi.org/project/falcon-oas\n\n.. image:: https://img.shields.io/travis/grktsh/falcon-oas/master.svg\n :alt: Travis\n :target: https://travis-ci.org/grktsh/falcon-oas\n\n.. image:: https://img.shields.io/codecov/c/github/grktsh/falcon-oas/master.svg\n :alt: Codecov\n :target: https://codecov.io/gh/grktsh/falcon-oas\n\nPrerequisites\n-------------\n\n- Validated OpenAPI 3 document\n\n - falcon-oas does not validate OpenAPI 3 document itself at runtime. It should be validated in advance.\n\nFeatures\n--------\n\n- Request validation and unmarshaling\n- Access control\n- Association of Path Item Objects and resource classes in Falcon\n\nExample\n-------\n\n.. code:: python\n\n class PetItem:\n def on_get(self, req, resp, pet_id):\n pet = get_pet_by_id(pet_id)\n resp.media = pet.to_dict()\n\n def on_delete(self, req, resp, pet_id):\n pet = delete_pet_by_id(pet_id)\n resp.status = falcon.HTTP_NO_CONTENT\n\n\n with open('/path/to/openapi.json') as f:\n spec_dict = json.load(f)\n api = falcon_oas.OAS(spec_dict).create_api()\n\nHere is the part of its OpenAPI 3 document in YAML:\n\n.. code:: yaml\n\n paths:\n /api/v1/pets/{pet_id}:\n x-falcon-oas-implementation: path.to.PetItem\n get:\n responses:\n '200':\n description: A pet.\n delete:\n responses:\n '204':\n description: Successful deletion.\n security:\n - api_key: []\n parameters:\n - name: pet_id\n in: path\n required: true\n schema:\n type: integer\n components:\n securitySchemes:\n api_key:\n x-falcon-oas-implementation: path.to.api_key_validator\n type: apiKey\n name: X-API-Key\n in: header\n\n``pet_id`` path parameter is unmarshaled to ``int`` without `Field Converters `_ since it is defined as ``integer`` type.\n\n``DELETE /api/v1/pets/{pet_id}`` requests are protected by the ``api_key`` security scheme. The corresponding responder is processed only if it grants the request. Otherwise, 403 Forbidden error occurs automatically.\n\n``x-falcon-oas-implementation`` associates Path Item Object and the REST resource class in Falcon so that falcon-oas automatically calls ``falcon.API.add_route`` with its path and the resource instance.\n\nAlso ``x-falcon-oas-implementation`` associates Security Scheme Object and the access control function so that falcon-oas automatically handles Security Requirement Object in each request. See ``falcon_oas.extensions`` for details.\n\n``req.context['oas']``\n----------------------\n\n``req.context['oas'].user``\n Authorized user.\n\n``req.context['oas'].parameters``\n Unmarshaled request parameters in dict.\n\n``req.context['oas'].request_body``\n Unmarshaled request body.\n\nProblems\n--------\n\nMedia Type: ``application/problem+json`` only\n\nUnmarshal Error\n~~~~~~~~~~~~~~~\n\nHTTP status code: 400\n\n- ``\"type\"``: ``\"https://pypi.org/project/falcon-oas/0.3.0/#unmarshal-error\"``\n- ``\"title\"``: ``\"Unmarshal Error\"``\n- ``\"status\"``: ``400``\n- ``\"parameters\"``: (optional) The array of parameter error objects\n- ``\"request_body\"``: (optional) The array of request body error objects\n\nThe parameter error object and the request body error object have the following members from ``jsonschema.ValidationError``:\n\n- ``\"path\"``: The path to the offending element within the instance\n- ``\"validator\"``: The name of the failed validator\n- ``\"message\"``: A human readable message explaining the error\n\nExample:\n\n.. code:: json\n\n {\n \"type\": \"https://pypi.org/project/falcon-oas/0.3.0/#unmarshal-error\",\n \"title\": \"Unmarshal Error\",\n \"status\": 400,\n \"parameters\": [\n {\n \"path\": [\"path\", \"pet_id\"],\n \"validator\": \"type\",\n \"message\": \"'me' is not of type 'integer'\"\n }\n ],\n \"request_body\": [\n {\n \"path\": [\"name\"],\n \"validator\": \"type\",\n \"message\": \"42 is not of type 'string'\"\n }\n ]\n }\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/grktsh/falcon-oas", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "falcon-oas", "package_url": "https://pypi.org/project/falcon-oas/", "platform": "", "project_url": "https://pypi.org/project/falcon-oas/", "project_urls": { "Homepage": "https://github.com/grktsh/falcon-oas" }, "release_url": "https://pypi.org/project/falcon-oas/0.4.0/", "requires_dist": [ "falcon (<3,>=1.4)", "oas (~=0.1.0)", "six (~=1.11)", "pytest (~=4.4) ; extra == 'test'", "pytest-cov (~=2.6) ; extra == 'test'", "pytest-mock (~=1.10) ; extra == 'test'", "pytest-xdist (~=1.28) ; extra == 'test'", "pyyaml (~=5.1) ; extra == 'test'" ], "requires_python": "", "summary": "Design first approach with OpenAPI 3 for Falcon", "version": "0.4.0" }, "last_serial": 5196780, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "c1a9def4194a76ee71cfb2d27a5ab1c5", "sha256": "618a2a5208f7d5fc9af1aaf6e52804106dd40ff09c2baae7be23dc9d91a47d9a" }, "downloads": -1, "filename": "falcon_oas-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c1a9def4194a76ee71cfb2d27a5ab1c5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12523, "upload_time": "2018-11-04T17:43:34", "url": "https://files.pythonhosted.org/packages/c5/7a/0a99a58a8695311e5b5007fa5f733632fcdc4ab081910082e7d3ff45135e/falcon_oas-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8ecfd4369d36a277f2c687d59d03c14a", "sha256": "b257adf703bea8a252e23a0402174189ac8d18254e12cd1c7952b79d69f1af76" }, "downloads": -1, "filename": "falcon-oas-0.1.0.tar.gz", "has_sig": false, "md5_digest": "8ecfd4369d36a277f2c687d59d03c14a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18710, "upload_time": "2018-11-04T17:43:35", "url": "https://files.pythonhosted.org/packages/12/05/d4f9aa443743ee9cfed85f39b68cc640560316635e3647324b489ba0d076/falcon-oas-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "f5cdccd77bb4f59f1a5d6054141fd831", "sha256": "fb114f7f631e3f8e3a9899797302873150fec181a5e8497dc9e6ed6f783415e5" }, "downloads": -1, "filename": "falcon_oas-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f5cdccd77bb4f59f1a5d6054141fd831", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15647, "upload_time": "2018-12-25T02:51:53", "url": "https://files.pythonhosted.org/packages/57/3b/be7ca0e025a73404f23b800e5c2e0f30db7b5265def7c8bd8ec806620289/falcon_oas-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3e3536b1b665bbb751ea1b02b2561fff", "sha256": "62ce5ab83d50df5732ebb7f922fb8ebddd837d5de3771d14b8bc7aca88d395d1" }, "downloads": -1, "filename": "falcon-oas-0.1.1.tar.gz", "has_sig": false, "md5_digest": "3e3536b1b665bbb751ea1b02b2561fff", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24709, "upload_time": "2018-12-25T02:51:55", "url": "https://files.pythonhosted.org/packages/33/2e/298929694389da83bca6c820d4cd0b0837ba9923569fdfd2a0cc8065d31a/falcon-oas-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "a95baed81eab59fd0c431768c01fe5d7", "sha256": "c57c3f6f34963bab0a594790c2a306e11300e35903ebb6b2c071c1da30d6eca5" }, "downloads": -1, "filename": "falcon_oas-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a95baed81eab59fd0c431768c01fe5d7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15663, "upload_time": "2019-01-18T01:32:33", "url": "https://files.pythonhosted.org/packages/9d/0e/fea11977f0de5c2c06f3a7546ab2778addd72f245c61400ecd2d2df01248/falcon_oas-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "055777695fa2e54c2a8e3f03329635bb", "sha256": "683769a7a77377b01eaeac02a1f965474f177abe8808510b98672b0b52beef13" }, "downloads": -1, "filename": "falcon-oas-0.1.2.tar.gz", "has_sig": false, "md5_digest": "055777695fa2e54c2a8e3f03329635bb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24950, "upload_time": "2019-01-18T01:32:35", "url": "https://files.pythonhosted.org/packages/b9/1a/af6194c764647805c68ac8b7d9887d2ef04c9f4990a03b47d8280e92c3ef/falcon-oas-0.1.2.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "94c8dbaef16c950befaf26b6210ba49e", "sha256": "47aad5b2e9a46835afb99d1a28870222e012fa1756e73c55eea90709566eda25" }, "downloads": -1, "filename": "falcon_oas-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "94c8dbaef16c950befaf26b6210ba49e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 16563, "upload_time": "2019-02-25T06:22:35", "url": "https://files.pythonhosted.org/packages/4c/34/4486c19da25b3aec9e09c6b37dd8316236e9b1fcb3a9e2404aa2fbe38193/falcon_oas-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f2ec7d38be677d8b712790b0faa6149a", "sha256": "9d46bd24bd9624c585d9efcf0a6b3dfb5bf1cd2855bf8cfed7bcdfcbcee58980" }, "downloads": -1, "filename": "falcon-oas-0.2.0.tar.gz", "has_sig": false, "md5_digest": "f2ec7d38be677d8b712790b0faa6149a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26038, "upload_time": "2019-02-25T06:22:37", "url": "https://files.pythonhosted.org/packages/27/d5/cc6dca8e45a0e9d41c2bf94e8b374f250c16e1e81047f7197e9ce320a224/falcon-oas-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "c8f8bdea720f8a476107b7e0ec3dcaaa", "sha256": "e8833616272c24648f05cef6b3a80acb8bbe21448e62a904731b29952a6f3c78" }, "downloads": -1, "filename": "falcon_oas-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c8f8bdea720f8a476107b7e0ec3dcaaa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22566, "upload_time": "2019-03-31T14:10:22", "url": "https://files.pythonhosted.org/packages/72/f6/05be4dc72fff4936eb6aa715673c26553df5a502a0c56f8d9804108d7182/falcon_oas-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e3f0cf0f32d7865e5b66147fac475a96", "sha256": "74bb6a0a40d1047815c9ca0d6274c79da7485b23b9f8d80465f5f67ddaba075e" }, "downloads": -1, "filename": "falcon-oas-0.3.0.tar.gz", "has_sig": false, "md5_digest": "e3f0cf0f32d7865e5b66147fac475a96", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34242, "upload_time": "2019-03-31T14:10:24", "url": "https://files.pythonhosted.org/packages/1f/84/d9c80b6fd28438704b5107b6d86c56b1543a364d7f010939933af78e2d43/falcon-oas-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "687eb8dc0d2bbeb06aedf95882b5d5e2", "sha256": "70f1aa5db18b5b7a7927e05404791c7f40707473b8adc54b97396c2e865b4531" }, "downloads": -1, "filename": "falcon_oas-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "687eb8dc0d2bbeb06aedf95882b5d5e2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22583, "upload_time": "2019-04-01T04:25:50", "url": "https://files.pythonhosted.org/packages/39/8d/74f276673ed4b0b6399c3904c338801b14225ec3a0698cfed06f11819fbe/falcon_oas-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "44a0d9877189924c8512b11b182824c7", "sha256": "0daa5b56a4d8f2e56a027a8b0f76c5140648959862b39019e0fbe82d786dcb15" }, "downloads": -1, "filename": "falcon-oas-0.3.1.tar.gz", "has_sig": false, "md5_digest": "44a0d9877189924c8512b11b182824c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34277, "upload_time": "2019-04-01T04:25:52", "url": "https://files.pythonhosted.org/packages/be/91/8fceb929afb1e1b3a3c5d07fb21366266ad055ad8f60e5d1275016720357/falcon-oas-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "e78e6baf27f96cbf34d06ca0a553b39a", "sha256": "0a11a14b7e4fbe2c1f842e29be2a47e5780ef28100eb2b4a4e0bfdcfe3fc3cd5" }, "downloads": -1, "filename": "falcon_oas-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e78e6baf27f96cbf34d06ca0a553b39a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13808, "upload_time": "2019-04-27T14:06:10", "url": "https://files.pythonhosted.org/packages/3c/87/86c14982ee8e2fe6c70697d49fcfcb18c1969ff1cad3656528eaaeed7f89/falcon_oas-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "96a7537a8d3f39d454be5fc61df84850", "sha256": "20d7717baefbf514bff230e5bc8d67e908de7c0182276e319544346cdda46a6e" }, "downloads": -1, "filename": "falcon-oas-0.4.0.tar.gz", "has_sig": false, "md5_digest": "96a7537a8d3f39d454be5fc61df84850", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25065, "upload_time": "2019-04-27T14:06:14", "url": "https://files.pythonhosted.org/packages/4c/dc/522f5bbebceb4c9bd3dfcf23fffd5f0c819fa6b5658cce9c9785282cfcb8/falcon-oas-0.4.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e78e6baf27f96cbf34d06ca0a553b39a", "sha256": "0a11a14b7e4fbe2c1f842e29be2a47e5780ef28100eb2b4a4e0bfdcfe3fc3cd5" }, "downloads": -1, "filename": "falcon_oas-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e78e6baf27f96cbf34d06ca0a553b39a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13808, "upload_time": "2019-04-27T14:06:10", "url": "https://files.pythonhosted.org/packages/3c/87/86c14982ee8e2fe6c70697d49fcfcb18c1969ff1cad3656528eaaeed7f89/falcon_oas-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "96a7537a8d3f39d454be5fc61df84850", "sha256": "20d7717baefbf514bff230e5bc8d67e908de7c0182276e319544346cdda46a6e" }, "downloads": -1, "filename": "falcon-oas-0.4.0.tar.gz", "has_sig": false, "md5_digest": "96a7537a8d3f39d454be5fc61df84850", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25065, "upload_time": "2019-04-27T14:06:14", "url": "https://files.pythonhosted.org/packages/4c/dc/522f5bbebceb4c9bd3dfcf23fffd5f0c819fa6b5658cce9c9785282cfcb8/falcon-oas-0.4.0.tar.gz" } ] }