)]}'
{"specs/rocky/approved/api-validation-using-json.rst":[{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"e96113aa58ba577788e6b1782fea0f59cdbae450","unresolved":false,"context_lines":[{"line_number":15,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Currently Watcher doesn\u0027t have a consistent request validation layer."},{"line_number":18,"context_line":"User can change some fields that are not supposed to be changed. For example"},{"line_number":19,"context_line":"we need to restrict fields to update in Audit object, currently user can"},{"line_number":20,"context_line":"change audit_type which is not supposed to be changed. Ideally, watcher should"},{"line_number":21,"context_line":"have some validation in place to catch disallowed parameters and return a"},{"line_number":22,"context_line":"validation error to the user."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9f6a8fd7_af6748b7","line":20,"range":{"start_line":18,"start_character":65,"end_line":20,"end_character":78},"updated":"2018-04-23 05:15:53.000000000","message":"e.g. user can update any value in audit_type field of an Audit object, Its valid value should only be \u0027ONESHOT\u0027 or \u0027CONTINUOS\u0027. We need to restrict fields to update in Audit Object","commit_id":"ae967e3a4419b8ead0f86e5b167e74a09bba70f6"},{"author":{"_account_id":19457,"name":"aditi sharma","email":"adi.sky17@gmail.com","username":"aditi"},"change_message_id":"e96113aa58ba577788e6b1782fea0f59cdbae450","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Each API definition should be added with the following ways:"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"* Create definition files under ./watcer/api/schemas/."},{"line_number":49,"context_line":"* Each definition should be described with JSON Schema."},{"line_number":50,"context_line":"* Each parameter of definitions(type, minLength, etc.) can be defined from"},{"line_number":51,"context_line":"  current validation code, DB schema, unit tests, or so on."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9f6a8fd7_cff95cc8","line":48,"range":{"start_line":48,"start_character":34,"end_line":48,"end_character":35},"updated":"2018-04-23 05:15:53.000000000","message":"s/watcer/watcher","commit_id":"ae967e3a4419b8ead0f86e5b167e74a09bba70f6"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"f29eea2418aca80ae7dbe5f027c807f58ad70bc0","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"API validation using json"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/watcher/+spec/api-validation"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f6a8fd7_43937ca4","line":8,"range":{"start_line":8,"start_character":21,"end_line":8,"end_character":25},"updated":"2018-04-27 06:47:51.000000000","message":"\"JSON\" is appropriate.\nhttp://www.rfc-editor.org/rfc/rfc4627.txt","commit_id":"dd729f6db757bc1bac2e715036b0008658d01be8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"f29eea2418aca80ae7dbe5f027c807f58ad70bc0","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Currently Watcher doesn\u0027t have a consistent request validation layer."},{"line_number":18,"context_line":"User can change some fields that are not supposed to be changed. For example"},{"line_number":19,"context_line":"user can update any value in audit_type field of an Audit object, Its valid"},{"line_number":20,"context_line":"value should only be \u0027ONESHOT\u0027 or \u0027CONTINUOS\u0027. We need to restrict fields to"},{"line_number":21,"context_line":"update in Audit Object. Ideally, watcher should have some validation in place"},{"line_number":22,"context_line":"to catch disallowed parameters and return a validation error to the user."},{"line_number":23,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f6a8fd7_03182473","line":20,"range":{"start_line":20,"start_character":35,"end_line":20,"end_character":44},"updated":"2018-04-27 06:47:51.000000000","message":"CONTINUOUS","commit_id":"dd729f6db757bc1bac2e715036b0008658d01be8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"f29eea2418aca80ae7dbe5f027c807f58ad70bc0","unresolved":false,"context_lines":[{"line_number":31,"context_line":"Proposed change"},{"line_number":32,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"One possible way to validate the Watcher API is to use jsonschema similar to"},{"line_number":35,"context_line":"Nova, Keystone and Glance (https://pypi.python.org/pypi/jsonschema)."},{"line_number":36,"context_line":"A jsonschema validator object can be used to check each resource against an"},{"line_number":37,"context_line":"appropriate schema for that resource. If the validation passes, the request"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f6a8fd7_c350ec0d","line":34,"range":{"start_line":34,"start_character":55,"end_line":34,"end_character":65},"updated":"2018-04-27 06:47:51.000000000","message":"Please create link.\nhttps://docs.openstack.org/doc-contrib-guide/rst-conv/references.html#cross-references","commit_id":"dd729f6db757bc1bac2e715036b0008658d01be8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"f29eea2418aca80ae7dbe5f027c807f58ad70bc0","unresolved":false,"context_lines":[{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    @validation.schema(audit.create)"},{"line_number":95,"context_line":"    def create(self, req, body):"},{"line_number":96,"context_line":"        \"\"\"Creates a new audit.\""},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"* When adding a new API resources to watcher, the new resource must be proposed"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f6a8fd7_e3bdf002","line":96,"range":{"start_line":96,"start_character":31,"end_line":96,"end_character":32},"updated":"2018-04-27 06:47:51.000000000","message":"\"\"\"\nhttps://www.python.org/dev/peps/pep-0257/#one-line-docstrings","commit_id":"dd729f6db757bc1bac2e715036b0008658d01be8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"f29eea2418aca80ae7dbe5f027c807f58ad70bc0","unresolved":false,"context_lines":[{"line_number":190,"context_line":"Work Items"},{"line_number":191,"context_line":"----------"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"1. Initial validator implementation, which will contain common validator code"},{"line_number":194,"context_line":"   designed to be shared across all resource controllers validating request"},{"line_number":195,"context_line":"   bodies."},{"line_number":196,"context_line":"2. Introduce validation schemas for existing API resources."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f6a8fd7_c39eacb7","line":193,"range":{"start_line":193,"start_character":0,"end_line":193,"end_character":3},"updated":"2018-04-27 06:47:51.000000000","message":"You can use enumeration list.\nhttps://docs.openstack.org/doc-contrib-guide/rst-conv/lists.html#enumerated-lists","commit_id":"dd729f6db757bc1bac2e715036b0008658d01be8"},{"author":{"_account_id":27947,"name":"Egor Panfilov","email":"edpanfilov@sbcloud.ru","username":"erakli"},"change_message_id":"6a91b9bcfc1d008dac550a82be053b98ba25af91","unresolved":false,"context_lines":[{"line_number":193,"context_line":"1. Initial validator implementation, which will contain common validator code"},{"line_number":194,"context_line":"   designed to be shared across all resource controllers validating request"},{"line_number":195,"context_line":"   bodies."},{"line_number":196,"context_line":"2. Introduce validation schemas for existing API resources."},{"line_number":197,"context_line":"3. Enforce validation on proposed API additions and extensions."},{"line_number":198,"context_line":"4. Remove duplicated ad-hoc validation code."},{"line_number":199,"context_line":"5. Add unit and end-to-end tests of related APIs."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f6a8fd7_f405da14","line":196,"range":{"start_line":196,"start_character":3,"end_line":196,"end_character":58},"updated":"2018-04-25 09:03:02.000000000","message":"Here you declare that validation would be introduced for existing API resources. For current situation it\u0027s ok. I asked my question in the perspective when there would be new contributions to watcher. If there would be introduced new resource controllers, do we need some sort of code checks that new resources has validation?\n\nOr these checks would be performed only on review level?","commit_id":"dd729f6db757bc1bac2e715036b0008658d01be8"},{"author":{"_account_id":27947,"name":"Egor Panfilov","email":"edpanfilov@sbcloud.ru","username":"erakli"},"change_message_id":"36d620e6be1e739d63f26d663f963a09fb8e2dbc","unresolved":false,"context_lines":[{"line_number":193,"context_line":"1. Initial validator implementation, which will contain common validator code"},{"line_number":194,"context_line":"   designed to be shared across all resource controllers validating request"},{"line_number":195,"context_line":"   bodies."},{"line_number":196,"context_line":"2. Introduce validation schemas for existing API resources."},{"line_number":197,"context_line":"3. Enforce validation on proposed API additions and extensions."},{"line_number":198,"context_line":"4. Remove duplicated ad-hoc validation code."},{"line_number":199,"context_line":"5. Add unit and end-to-end tests of related APIs."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f6a8fd7_9f7ee0ac","line":196,"range":{"start_line":196,"start_character":3,"end_line":196,"end_character":58},"in_reply_to":"9f6a8fd7_7fa0acf4","updated":"2018-04-26 06:15:23.000000000","message":"I agree, that we have to, but how we would check that every resource have validation and no new resources would be introduced without validation?\n\nOnly manually on review? Is you meant that, so ok","commit_id":"dd729f6db757bc1bac2e715036b0008658d01be8"},{"author":{"_account_id":25571,"name":"Rajat Sharma","email":"rajat.sharma@india.nec.com","username":"rajat29"},"change_message_id":"a00117fba2f3726dd070a46db75f0e485e06d101","unresolved":false,"context_lines":[{"line_number":193,"context_line":"1. Initial validator implementation, which will contain common validator code"},{"line_number":194,"context_line":"   designed to be shared across all resource controllers validating request"},{"line_number":195,"context_line":"   bodies."},{"line_number":196,"context_line":"2. Introduce validation schemas for existing API resources."},{"line_number":197,"context_line":"3. Enforce validation on proposed API additions and extensions."},{"line_number":198,"context_line":"4. Remove duplicated ad-hoc validation code."},{"line_number":199,"context_line":"5. Add unit and end-to-end tests of related APIs."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f6a8fd7_7fa0acf4","line":196,"range":{"start_line":196,"start_character":3,"end_line":196,"end_character":58},"in_reply_to":"9f6a8fd7_f405da14","updated":"2018-04-26 06:02:46.000000000","message":"We have to add validation as per the new resource.","commit_id":"dd729f6db757bc1bac2e715036b0008658d01be8"},{"author":{"_account_id":27947,"name":"Egor Panfilov","email":"edpanfilov@sbcloud.ru","username":"erakli"},"change_message_id":"1b285f7d2b64fe8672cae2ea528ec3939c15869b","unresolved":false,"context_lines":[{"line_number":194,"context_line":"   designed to be shared across all resource controllers validating request"},{"line_number":195,"context_line":"   bodies."},{"line_number":196,"context_line":"2. Introduce validation schemas for existing API resources."},{"line_number":197,"context_line":"3. Enforce validation on proposed API additions and extensions."},{"line_number":198,"context_line":"4. Remove duplicated ad-hoc validation code."},{"line_number":199,"context_line":"5. Add unit and end-to-end tests of related APIs."},{"line_number":200,"context_line":"6. Add/Update Watcher documentation."}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f6a8fd7_b220fbad","line":197,"range":{"start_line":197,"start_character":3,"end_line":197,"end_character":63},"updated":"2018-04-23 19:17:35.000000000","message":"Do we need some internal checks on do this concrete resource has validation schema?","commit_id":"dd729f6db757bc1bac2e715036b0008658d01be8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"f29eea2418aca80ae7dbe5f027c807f58ad70bc0","unresolved":false,"context_lines":[{"line_number":216,"context_line":"Documentation Impact"},{"line_number":217,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"1. The Watcher API documentation will need to be updated to reflect the"},{"line_number":220,"context_line":"   REST API changes."},{"line_number":221,"context_line":"2. The Watcher developer documentation will need to be updated to explain"},{"line_number":222,"context_line":"   how the schema validation will work and how to add json schema for"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f6a8fd7_83a8b4db","line":219,"range":{"start_line":219,"start_character":0,"end_line":219,"end_character":3},"updated":"2018-04-27 06:47:51.000000000","message":"ditto","commit_id":"dd729f6db757bc1bac2e715036b0008658d01be8"},{"author":{"_account_id":13111,"name":"Hidekazu Nakamura","email":"hidekazuna@gmail.com","username":"hid-nakamura"},"change_message_id":"f29eea2418aca80ae7dbe5f027c807f58ad70bc0","unresolved":false,"context_lines":[{"line_number":228,"context_line":""},{"line_number":229,"context_line":"Useful Links:"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"* [Understanding JSON Schema] (http://spacetelescope.github.io/understanding-json-schema/reference/object.html)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"* [Nova Validation Examples] (http://git.openstack.org/cgit/openstack/nova/tree/nova/api/validation)"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"* [JSON Schema on PyPI] (https://pypi.python.org/pypi/jsonschema)"},{"line_number":236,"context_line":""},{"line_number":237,"context_line":"* [JSON Schema core definitions and terminology] (http://tools.ietf.org/html/draft-zyp-json-schema-04)"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"* [JSON Schema Documentation] (http://json-schema.org/documentation.html)"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f6a8fd7_d8053716","line":239,"range":{"start_line":231,"start_character":0,"end_line":239,"end_character":73},"updated":"2018-04-27 06:47:51.000000000","message":"Please refer to the following document.\nhttps://docs.openstack.org/doc-contrib-guide/rst-conv/references.html#external-references","commit_id":"dd729f6db757bc1bac2e715036b0008658d01be8"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"f43a48db3bf53d3d20b7824927040704399eacf3","unresolved":false,"context_lines":[{"line_number":31,"context_line":"Proposed change"},{"line_number":32,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"One possible way to validate the Watcher API is to use jsonschema_ similar to"},{"line_number":35,"context_line":"Nova, Keystone and Glance).A jsonschema validator object can be used to check"},{"line_number":36,"context_line":"each resource against an appropriate schema for that resource. If the"},{"line_number":37,"context_line":"validation passes, the request can follow the existing flow of control through"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_9ed6dc4f","line":34,"range":{"start_line":34,"start_character":55,"end_line":34,"end_character":66},"updated":"2018-05-03 10:06:18.000000000","message":"add correct link","commit_id":"e865ff4a32b5a6c42f81e8e53820a61c18e29908"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"f43a48db3bf53d3d20b7824927040704399eacf3","unresolved":false,"context_lines":[{"line_number":32,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"One possible way to validate the Watcher API is to use jsonschema_ similar to"},{"line_number":35,"context_line":"Nova, Keystone and Glance).A jsonschema validator object can be used to check"},{"line_number":36,"context_line":"each resource against an appropriate schema for that resource. If the"},{"line_number":37,"context_line":"validation passes, the request can follow the existing flow of control through"},{"line_number":38,"context_line":"the resource manager to the backend. If the request body parameters fails the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_3ecb08a6","line":35,"range":{"start_line":35,"start_character":0,"end_line":35,"end_character":4},"updated":"2018-05-03 10:06:18.000000000","message":"add link to Nova validation example","commit_id":"e865ff4a32b5a6c42f81e8e53820a61c18e29908"},{"author":{"_account_id":25571,"name":"Rajat Sharma","email":"rajat.sharma@india.nec.com","username":"rajat29"},"change_message_id":"c6c6593b616a803e148d19a7b807aac6fcf75254","unresolved":false,"context_lines":[{"line_number":32,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"One possible way to validate the Watcher API is to use jsonschema_ similar to"},{"line_number":35,"context_line":"Nova, Keystone and Glance).A jsonschema validator object can be used to check"},{"line_number":36,"context_line":"each resource against an appropriate schema for that resource. If the"},{"line_number":37,"context_line":"validation passes, the request can follow the existing flow of control through"},{"line_number":38,"context_line":"the resource manager to the backend. If the request body parameters fails the"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_82598dff","line":35,"range":{"start_line":35,"start_character":0,"end_line":35,"end_character":4},"in_reply_to":"5f7c97a3_3ecb08a6","updated":"2018-05-10 07:31:40.000000000","message":"link is in reference section","commit_id":"e865ff4a32b5a6c42f81e8e53820a61c18e29908"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"f43a48db3bf53d3d20b7824927040704399eacf3","unresolved":false,"context_lines":[{"line_number":63,"context_line":"             \u0027strategy\u0027: parameter_types.uuid,"},{"line_number":64,"context_line":"             \u0027name\u0027: parameter_types.name,"},{"line_number":65,"context_line":"        }"},{"line_number":66,"context_line":"        \u0027required\u0027: [\u0027goal\u0027,\u0027strategy\u0027],"},{"line_number":67,"context_line":"        \u0027additionalProperties\u0027: False,"},{"line_number":68,"context_line":"    }"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_a19ff9b2","line":66,"range":{"start_line":66,"start_character":21,"end_line":66,"end_character":38},"updated":"2018-05-03 10:06:18.000000000","message":"what if I provide audit_template_uuid instead of goal and strategy?","commit_id":"e865ff4a32b5a6c42f81e8e53820a61c18e29908"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"f43a48db3bf53d3d20b7824927040704399eacf3","unresolved":false,"context_lines":[{"line_number":98,"context_line":"* When adding a new API resources to watcher, the new resource must be proposed"},{"line_number":99,"context_line":"  with its appropriate schema."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":".. _jsonschema: https://pypi.python.org/pypi/jsonschema"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"Alternatives"},{"line_number":104,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_6126c1ba","line":101,"range":{"start_line":101,"start_character":0,"end_line":101,"end_character":55},"updated":"2018-05-03 10:06:18.000000000","message":"I\u0027d propose to move it to References section.","commit_id":"e865ff4a32b5a6c42f81e8e53820a61c18e29908"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"f43a48db3bf53d3d20b7824927040704399eacf3","unresolved":false,"context_lines":[{"line_number":121,"context_line":"API Response code changes:"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"There are some occurrences where API response code will change while adding"},{"line_number":124,"context_line":"schema layer for them. For Example, In goal show api for if we pass as invalid"},{"line_number":125,"context_line":"uuid, then it fails with 404 resource not found. For this we can apply"},{"line_number":126,"context_line":"validation on uuid, that uuid should be in uuid format. If user passes an"},{"line_number":127,"context_line":"invalid uuid, he/she will get 400 BadRequest in response."}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_01dcad72","line":124,"range":{"start_line":124,"start_character":49,"end_line":124,"end_character":52},"updated":"2018-05-03 10:06:18.000000000","message":"API","commit_id":"e865ff4a32b5a6c42f81e8e53820a61c18e29908"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"f43a48db3bf53d3d20b7824927040704399eacf3","unresolved":false,"context_lines":[{"line_number":121,"context_line":"API Response code changes:"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"There are some occurrences where API response code will change while adding"},{"line_number":124,"context_line":"schema layer for them. For Example, In goal show api for if we pass as invalid"},{"line_number":125,"context_line":"uuid, then it fails with 404 resource not found. For this we can apply"},{"line_number":126,"context_line":"validation on uuid, that uuid should be in uuid format. If user passes an"},{"line_number":127,"context_line":"invalid uuid, he/she will get 400 BadRequest in response."}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_01c58d8e","line":124,"range":{"start_line":124,"start_character":39,"end_line":124,"end_character":48},"updated":"2018-05-03 10:06:18.000000000","message":"take it in quotes","commit_id":"e865ff4a32b5a6c42f81e8e53820a61c18e29908"},{"author":{"_account_id":19055,"name":"Alexander Chadin","email":"joker946@gmail.com","username":"joker946"},"change_message_id":"f43a48db3bf53d3d20b7824927040704399eacf3","unresolved":false,"context_lines":[{"line_number":188,"context_line":"Other contributors:"},{"line_number":189,"context_line":"  \u003cadi-sky17\u003e"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"Work Items"},{"line_number":192,"context_line":"----------"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"#. Initial validator implementation, which will contain common validator code"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5f7c97a3_e19ad16c","line":191,"range":{"start_line":191,"start_character":0,"end_line":191,"end_character":10},"updated":"2018-05-03 10:06:18.000000000","message":"I\u0027d propose you to separate your work items by resource patches. your first patch would contain validator, and the others would contain their own resource validation implementations.","commit_id":"e865ff4a32b5a6c42f81e8e53820a61c18e29908"}]}
