)]}'
{"keystone/tests/unit/test_v3_filters.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"dbb952f990a56e6df9939bdf73a68ced7d746c0c","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        self.assertIn(self.domainA[\u0027id\u0027], id_list)"},{"line_number":180,"context_line":"        self.assertIs(True, r.result.get(\u0027domains\u0027)[0][\u0027enabled\u0027])"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def test_invalid_filter(self):"},{"line_number":183,"context_line":"        \"\"\"GET /domains?enableds\u0026name\u003dmyname."},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        Test Plan:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5201f7_fe001f04","line":182,"range":{"start_line":182,"start_character":8,"end_line":182,"end_character":27},"updated":"2017-01-06 16:51:50.000000000","message":"test_invalid_filter_results_in_400","commit_id":"33b1a71b6f661973337e856333cc9b850f6c5d0a"},{"author":{"_account_id":20466,"name":"Tin Lam","email":"tin@lam.wtf","username":"tinlam"},"change_message_id":"e45ebde59b3ee53e02150f3313ea132086f58f3c","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        self.assertIn(self.domainA[\u0027id\u0027], id_list)"},{"line_number":180,"context_line":"        self.assertIs(True, r.result.get(\u0027domains\u0027)[0][\u0027enabled\u0027])"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"    def test_invalid_filter(self):"},{"line_number":183,"context_line":"        \"\"\"GET /domains?enableds\u0026name\u003dmyname."},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        Test Plan:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5201f7_64d020ca","line":182,"range":{"start_line":182,"start_character":8,"end_line":182,"end_character":27},"in_reply_to":"ba5201f7_fe001f04","updated":"2017-01-06 17:18:28.000000000","message":"Done","commit_id":"33b1a71b6f661973337e856333cc9b850f6c5d0a"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f2f18bc9a6a89543c10e81e26678b6044335e586","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ba5201f7_7b5c2c4b","updated":"2017-01-07 12:22:59.000000000","message":"can we add one more test? where two invalid query parameters are used, but we only catch the first one we see?\n\ni\u0027m not advocating to enhance the logic of `build_driver_hints`, I think returning one at a time is fine, i just it noted in a test case that we made a decision to do that. (Unless you have a reason we should scan all query strings?)","commit_id":"4e48b7b1e8b30d365bb3b126184eca57574cbf4e"},{"author":{"_account_id":20466,"name":"Tin Lam","email":"tin@lam.wtf","username":"tinlam"},"change_message_id":"16fbc940f5869941116c720002ebe27779f05ce9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ba5201f7_140bed7d","in_reply_to":"ba5201f7_7b5c2c4b","updated":"2017-01-07 18:02:24.000000000","message":"Done","commit_id":"4e48b7b1e8b30d365bb3b126184eca57574cbf4e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f2f18bc9a6a89543c10e81e26678b6044335e586","unresolved":false,"context_lines":[{"line_number":197,"context_line":"                     auth\u003dself.auth,"},{"line_number":198,"context_line":"                     expected_status\u003dhttp_client.BAD_REQUEST)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        domains \u003d r.result.get(\u0027domains\u0027)"},{"line_number":201,"context_line":"        self.assertIsNone(domains)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def test_list_users_filtered_by_funny_name(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5201f7_3b5c647c","line":200,"range":{"start_line":200,"start_character":18,"end_line":200,"end_character":26},"updated":"2017-01-07 12:22:59.000000000","message":"would be nice to assert the message too:\n\n  self.assertIn(\u0027Query parameter enableds is invalid\u0027, r.body)\n\nor\n\n  resp_json \u003d jsonutils.loads(r.body)\n  self.assertIn(\u0027Query parameter enableds is invalid\u0027,\n                 resp_json.get(\u0027error\u0027, {}).get(\u0027message\u0027))","commit_id":"4e48b7b1e8b30d365bb3b126184eca57574cbf4e"},{"author":{"_account_id":20466,"name":"Tin Lam","email":"tin@lam.wtf","username":"tinlam"},"change_message_id":"16fbc940f5869941116c720002ebe27779f05ce9","unresolved":false,"context_lines":[{"line_number":197,"context_line":"                     auth\u003dself.auth,"},{"line_number":198,"context_line":"                     expected_status\u003dhttp_client.BAD_REQUEST)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"        domains \u003d r.result.get(\u0027domains\u0027)"},{"line_number":201,"context_line":"        self.assertIsNone(domains)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def test_list_users_filtered_by_funny_name(self):"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5201f7_54cd7564","line":200,"range":{"start_line":200,"start_character":18,"end_line":200,"end_character":26},"in_reply_to":"ba5201f7_3b5c647c","updated":"2017-01-07 18:02:24.000000000","message":"Done","commit_id":"4e48b7b1e8b30d365bb3b126184eca57574cbf4e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f2f18bc9a6a89543c10e81e26678b6044335e586","unresolved":false,"context_lines":[{"line_number":317,"context_line":"        group \u003d unit.new_group_ref(domain_id\u003dself.domainB[\u0027id\u0027])"},{"line_number":318,"context_line":"        group \u003d self.identity_api.create_group(group)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        # Semicolon ; should be treated like \u0026, in this case, we are filtering"},{"line_number":321,"context_line":"        # on name\u003dx and an unrecognized \u0027drop table group\u0027.  This should"},{"line_number":322,"context_line":"        # results in a 400 Bad Request."},{"line_number":323,"context_line":"        url_by_name \u003d \"/users?name\u003dx\u0027; drop table group\""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5201f7_fbf3bc70","line":320,"range":{"start_line":320,"start_character":10,"end_line":320,"end_character":47},"updated":"2017-01-07 12:22:59.000000000","message":"is there a reason we are treating a semi-colon like an ampersand?\n\nedit, looks like it\u0027s fine: https://www.w3.org/TR/html401/appendix/notes.html#h-B.2.2","commit_id":"4e48b7b1e8b30d365bb3b126184eca57574cbf4e"},{"author":{"_account_id":20466,"name":"Tin Lam","email":"tin@lam.wtf","username":"tinlam"},"change_message_id":"16fbc940f5869941116c720002ebe27779f05ce9","unresolved":false,"context_lines":[{"line_number":317,"context_line":"        group \u003d unit.new_group_ref(domain_id\u003dself.domainB[\u0027id\u0027])"},{"line_number":318,"context_line":"        group \u003d self.identity_api.create_group(group)"},{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        # Semicolon ; should be treated like \u0026, in this case, we are filtering"},{"line_number":321,"context_line":"        # on name\u003dx and an unrecognized \u0027drop table group\u0027.  This should"},{"line_number":322,"context_line":"        # results in a 400 Bad Request."},{"line_number":323,"context_line":"        url_by_name \u003d \"/users?name\u003dx\u0027; drop table group\""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5201f7_949efd60","line":320,"range":{"start_line":320,"start_character":10,"end_line":320,"end_character":47},"in_reply_to":"ba5201f7_fbf3bc70","updated":"2017-01-07 18:02:24.000000000","message":"This one puzzled me for a bit since the code would treat \"drop table group\" as a filter parameter and throws a 400 with this patch set\u0027s change.  Had to go through the RFC to realize ; and \u0026 are treated identically.","commit_id":"4e48b7b1e8b30d365bb3b126184eca57574cbf4e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f2f18bc9a6a89543c10e81e26678b6044335e586","unresolved":false,"context_lines":[{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        # Semicolon ; should be treated like \u0026, in this case, we are filtering"},{"line_number":321,"context_line":"        # on name\u003dx and an unrecognized \u0027drop table group\u0027.  This should"},{"line_number":322,"context_line":"        # results in a 400 Bad Request."},{"line_number":323,"context_line":"        url_by_name \u003d \"/users?name\u003dx\u0027; drop table group\""},{"line_number":324,"context_line":"        r \u003d self.get(url_by_name, auth\u003dself.auth,"},{"line_number":325,"context_line":"                     expected_status\u003dhttp_client.BAD_REQUEST)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5201f7_5bde88dd","line":322,"range":{"start_line":322,"start_character":10,"end_line":322,"end_character":17},"updated":"2017-01-07 12:22:59.000000000","message":"result*","commit_id":"4e48b7b1e8b30d365bb3b126184eca57574cbf4e"},{"author":{"_account_id":20466,"name":"Tin Lam","email":"tin@lam.wtf","username":"tinlam"},"change_message_id":"16fbc940f5869941116c720002ebe27779f05ce9","unresolved":false,"context_lines":[{"line_number":319,"context_line":""},{"line_number":320,"context_line":"        # Semicolon ; should be treated like \u0026, in this case, we are filtering"},{"line_number":321,"context_line":"        # on name\u003dx and an unrecognized \u0027drop table group\u0027.  This should"},{"line_number":322,"context_line":"        # results in a 400 Bad Request."},{"line_number":323,"context_line":"        url_by_name \u003d \"/users?name\u003dx\u0027; drop table group\""},{"line_number":324,"context_line":"        r \u003d self.get(url_by_name, auth\u003dself.auth,"},{"line_number":325,"context_line":"                     expected_status\u003dhttp_client.BAD_REQUEST)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5201f7_74e51907","line":322,"range":{"start_line":322,"start_character":10,"end_line":322,"end_character":17},"in_reply_to":"ba5201f7_5bde88dd","updated":"2017-01-07 18:02:24.000000000","message":"Done","commit_id":"4e48b7b1e8b30d365bb3b126184eca57574cbf4e"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d1b419b557c649b52ac75fbc05adf6f04af8be84","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        - Update policy for no protection on api"},{"line_number":188,"context_line":"        - Filter by name and \u0027enableds\u0027, which does not exist"},{"line_number":189,"context_line":"        - Assert a 400 Bad Request is created"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        \"\"\""},{"line_number":192,"context_line":"        new_policy \u003d {\"identity:list_domains\": []}"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_7dfe79af","line":189,"updated":"2017-01-10 17:44:32.000000000","message":"nit: s/created/returned/","commit_id":"6cde2e361d63c684dbf24c3c006bb49c4ef52469"},{"author":{"_account_id":20466,"name":"Tin Lam","email":"tin@lam.wtf","username":"tinlam"},"change_message_id":"1378caa49993b623badfaacc9441a6e4c2a9bdb4","unresolved":false,"context_lines":[{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        - Update policy for no protection on api"},{"line_number":188,"context_line":"        - Filter by name and \u0027enableds\u0027, which does not exist"},{"line_number":189,"context_line":"        - Assert a 400 Bad Request is created"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        \"\"\""},{"line_number":192,"context_line":"        new_policy \u003d {\"identity:list_domains\": []}"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_60589057","line":189,"in_reply_to":"ba5201f7_7dfe79af","updated":"2017-01-10 18:20:07.000000000","message":"Done","commit_id":"6cde2e361d63c684dbf24c3c006bb49c4ef52469"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"d1b419b557c649b52ac75fbc05adf6f04af8be84","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        resp_json \u003d jsonutils.loads(r.body)"},{"line_number":228,"context_line":"        self.assertIn(\u0027Query parameter first_bad_param is invalid\u0027,"},{"line_number":229,"context_line":"                      resp_json.get(\u0027error\u0027, {}).get(\u0027message\u0027))"},{"line_number":230,"context_line":"        self.assertNotIn(\u0027Query parameter second_bad_param is invalid\u0027,"},{"line_number":231,"context_line":"                         resp_json.get(\u0027error\u0027, {}).get(\u0027message\u0027))"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    def test_list_users_filtered_by_funny_name(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_3d77913c","line":230,"updated":"2017-01-10 17:44:32.000000000","message":"I would opt for including all bad parameter names in the 400 response, instead of just the first one. For the user who has multiple invalid parameters in their query, they have to stumble over each 400 individually.\n\nIf we can provide a response that contains all invalid parameters they can use more of that information to correct their query, instead of fixing one thing then stumbling and fixing the next and stumbling.","commit_id":"6cde2e361d63c684dbf24c3c006bb49c4ef52469"},{"author":{"_account_id":20466,"name":"Tin Lam","email":"tin@lam.wtf","username":"tinlam"},"change_message_id":"1378caa49993b623badfaacc9441a6e4c2a9bdb4","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        resp_json \u003d jsonutils.loads(r.body)"},{"line_number":228,"context_line":"        self.assertIn(\u0027Query parameter first_bad_param is invalid\u0027,"},{"line_number":229,"context_line":"                      resp_json.get(\u0027error\u0027, {}).get(\u0027message\u0027))"},{"line_number":230,"context_line":"        self.assertNotIn(\u0027Query parameter second_bad_param is invalid\u0027,"},{"line_number":231,"context_line":"                         resp_json.get(\u0027error\u0027, {}).get(\u0027message\u0027))"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    def test_list_users_filtered_by_funny_name(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_8053b438","line":230,"in_reply_to":"ba5201f7_1da3ad9f","updated":"2017-01-10 18:20:07.000000000","message":"I can address this in a future patch.","commit_id":"6cde2e361d63c684dbf24c3c006bb49c4ef52469"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"64424243921c4d6898fbaa530263631a1cb06a38","unresolved":false,"context_lines":[{"line_number":227,"context_line":"        resp_json \u003d jsonutils.loads(r.body)"},{"line_number":228,"context_line":"        self.assertIn(\u0027Query parameter first_bad_param is invalid\u0027,"},{"line_number":229,"context_line":"                      resp_json.get(\u0027error\u0027, {}).get(\u0027message\u0027))"},{"line_number":230,"context_line":"        self.assertNotIn(\u0027Query parameter second_bad_param is invalid\u0027,"},{"line_number":231,"context_line":"                         resp_json.get(\u0027error\u0027, {}).get(\u0027message\u0027))"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    def test_list_users_filtered_by_funny_name(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_1da3ad9f","line":230,"in_reply_to":"ba5201f7_3d77913c","updated":"2017-01-10 17:45:19.000000000","message":"This is something we can address in a follow on patch, too.","commit_id":"6cde2e361d63c684dbf24c3c006bb49c4ef52469"}],"keystone/tests/unit/test_v3_identity.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f2f18bc9a6a89543c10e81e26678b6044335e586","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        self.assertValidUserResponse(r, user)"},{"line_number":192,"context_line":"        user[\u0027id\u0027] \u003d r.json[\u0027user\u0027][\u0027id\u0027]"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        # Query strings are not normalized: so we get all users back (like"},{"line_number":195,"context_line":"        # self.user), not just the ones in the specified domain."},{"line_number":196,"context_line":"        r \u003d self.get("},{"line_number":197,"context_line":"            \u0027/users?domain-id\u003d%s\u0027 % domain1[\u0027id\u0027],"},{"line_number":198,"context_line":"            expected_status\u003dhttp_client.BAD_REQUEST)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5201f7_5b05a843","line":195,"range":{"start_line":194,"start_character":0,"end_line":195,"end_character":64},"updated":"2017-01-07 12:22:59.000000000","message":"this comment needs to be updated","commit_id":"4e48b7b1e8b30d365bb3b126184eca57574cbf4e"},{"author":{"_account_id":20466,"name":"Tin Lam","email":"tin@lam.wtf","username":"tinlam"},"change_message_id":"16fbc940f5869941116c720002ebe27779f05ce9","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        self.assertValidUserResponse(r, user)"},{"line_number":192,"context_line":"        user[\u0027id\u0027] \u003d r.json[\u0027user\u0027][\u0027id\u0027]"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        # Query strings are not normalized: so we get all users back (like"},{"line_number":195,"context_line":"        # self.user), not just the ones in the specified domain."},{"line_number":196,"context_line":"        r \u003d self.get("},{"line_number":197,"context_line":"            \u0027/users?domain-id\u003d%s\u0027 % domain1[\u0027id\u0027],"},{"line_number":198,"context_line":"            expected_status\u003dhttp_client.BAD_REQUEST)"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba5201f7_54ead5db","line":195,"range":{"start_line":194,"start_character":0,"end_line":195,"end_character":64},"in_reply_to":"ba5201f7_5b05a843","updated":"2017-01-07 18:02:24.000000000","message":"Done","commit_id":"4e48b7b1e8b30d365bb3b126184eca57574cbf4e"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"37dadeb344120d6769a3d2b15bb9ea6f671ec5f1","unresolved":false,"context_lines":[{"line_number":193,"context_line":""},{"line_number":194,"context_line":"        # Query strings are not normalized: so we get all users back (like"},{"line_number":195,"context_line":"        # self.user), not just the ones in the specified domain."},{"line_number":196,"context_line":"        r \u003d self.get("},{"line_number":197,"context_line":"            \u0027/users?domain-id\u003d%s\u0027 % domain1[\u0027id\u0027])"},{"line_number":198,"context_line":"        self.assertValidUserListResponse(r, ref\u003dself.user)"},{"line_number":199,"context_line":"        self.assertNotEqual(domain1[\u0027id\u0027], self.user[\u0027domain_id\u0027])"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"        # When creating a new user, if we move the \u0027domain_id\u0027 into the"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba5201f7_e91daf73","side":"PARENT","line":198,"range":{"start_line":196,"start_character":1,"end_line":198,"end_character":58},"updated":"2017-01-08 12:10:02.000000000","message":"pls be careful here, we are changing the behavior that we use to think is correct.","commit_id":"49b3082e18a9cb6b9071c76675d258665ecd81c8"}],"releasenotes/notes/bug-1654084-00350372f4a1c30c.yaml":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6d376413d1767894fbed4b20fe5d5bb60060c1fb","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Invalid query strings will now result in a ``400 Bad Request`` response."},{"line_number":5,"context_line":"    Invalid query strings will no longer be silently ignored. This change"},{"line_number":6,"context_line":"    allows clients to know which queries were were written incorrectly."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"ba5201f7_e3f2ca05","line":6,"updated":"2017-01-10 18:25:22.000000000","message":"We should link to the bug report here as well to provide readers with a little more context if they wish.","commit_id":"a57b005435eb25aed13ed9ddec276b0ebfc4f413"}],"releasenotes/notes/bug-1654084.yaml":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"f2f18bc9a6a89543c10e81e26678b6044335e586","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Filtering on invalid resource names now returns 400 Bad Request response,"},{"line_number":5,"context_line":"    instead of being silently ignored.  This lets the calling client to know"},{"line_number":6,"context_line":"    the calling query is less than correct, and allows the client to correct"},{"line_number":7,"context_line":"    the query (rather than ignoring the invalid values)."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"ba5201f7_9b80f08c","line":7,"range":{"start_line":4,"start_character":4,"end_line":7,"end_character":56},"updated":"2017-01-07 12:22:59.000000000","message":"slight re-wording:\n\n  Invalid query strings will now result in a ``400 Bad Request`` response.\n  Invalid query strings will no longer be silently ignored. This change allows\n  clients to know which queries were were written incorrectly.","commit_id":"4e48b7b1e8b30d365bb3b126184eca57574cbf4e"},{"author":{"_account_id":20466,"name":"Tin Lam","email":"tin@lam.wtf","username":"tinlam"},"change_message_id":"16fbc940f5869941116c720002ebe27779f05ce9","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Filtering on invalid resource names now returns 400 Bad Request response,"},{"line_number":5,"context_line":"    instead of being silently ignored.  This lets the calling client to know"},{"line_number":6,"context_line":"    the calling query is less than correct, and allows the client to correct"},{"line_number":7,"context_line":"    the query (rather than ignoring the invalid values)."}],"source_content_type":"text/x-yaml","patch_set":3,"id":"ba5201f7_f4d82955","line":7,"range":{"start_line":4,"start_character":4,"end_line":7,"end_character":56},"in_reply_to":"ba5201f7_9b80f08c","updated":"2017-01-07 18:02:24.000000000","message":"Done","commit_id":"4e48b7b1e8b30d365bb3b126184eca57574cbf4e"}],"releasenotes/notes/invalid-resource-filters-should-error-5ebbac2cce2a821a.yaml":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3b8e3673c6e46d61d41caeaf5f564ff66b499623","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ba5201f7_e77a4f23","updated":"2017-01-06 19:08:41.000000000","message":"can we call this note bug-1654084.yaml, i\u0027d like to start geting into that pattern","commit_id":"6ddc96c10ddd29d31495520e3a3fae17d8c329f1"},{"author":{"_account_id":20466,"name":"Tin Lam","email":"tin@lam.wtf","username":"tinlam"},"change_message_id":"fceae668abeb0eb8f3bb57e672d1d541e8d5b77d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ba5201f7_e76b2f1c","in_reply_to":"ba5201f7_e77a4f23","updated":"2017-01-06 19:14:30.000000000","message":"Done - will correct this in next patch set.","commit_id":"6ddc96c10ddd29d31495520e3a3fae17d8c329f1"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"3b8e3673c6e46d61d41caeaf5f564ff66b499623","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Filtering on invalid resource names now returns 400 Bad Request response,"},{"line_number":5,"context_line":"    instead of being silently ignored.  This lets the calling client to know"},{"line_number":6,"context_line":"    the calling query is less than correct, and allows the client to correct"},{"line_number":7,"context_line":"    the query."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"ba5201f7_a784c70a","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":14},"updated":"2017-01-06 19:08:41.000000000","message":"the query (rather than ignoring the invalid values).","commit_id":"6ddc96c10ddd29d31495520e3a3fae17d8c329f1"},{"author":{"_account_id":20466,"name":"Tin Lam","email":"tin@lam.wtf","username":"tinlam"},"change_message_id":"fceae668abeb0eb8f3bb57e672d1d541e8d5b77d","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    Filtering on invalid resource names now returns 400 Bad Request response,"},{"line_number":5,"context_line":"    instead of being silently ignored.  This lets the calling client to know"},{"line_number":6,"context_line":"    the calling query is less than correct, and allows the client to correct"},{"line_number":7,"context_line":"    the query."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"ba5201f7_07775302","line":7,"range":{"start_line":7,"start_character":4,"end_line":7,"end_character":14},"in_reply_to":"ba5201f7_a784c70a","updated":"2017-01-06 19:14:30.000000000","message":"Done","commit_id":"6ddc96c10ddd29d31495520e3a3fae17d8c329f1"}]}
