)]}'
{"keystone/common/policies/project_endpoint.py":[{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"09fe85a0aeb45decf71f2c6f24083b2728a0fabf","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        description\u003d\u0027Check if endpoint in project.\u0027,"},{"line_number":37,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/OS-EP-FILTER/projects/{project_id}/\u0027"},{"line_number":38,"context_line":"                              \u0027endpoints/{endpoint_id}\u0027),"},{"line_number":39,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":40,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":41,"context_line":"        name\u003dbase.IDENTITY % \u0027list_endpoints_for_project\u0027,"},{"line_number":42,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_5ca60e11","line":39,"range":{"start_line":39,"start_character":32,"end_line":39,"end_character":35},"updated":"2017-03-29 19:42:08.000000000","message":"this probably should be a HEAD, as it\u0027s a check operation (no return)","commit_id":"ede2ba82858cb727dad818aedcad52158258a586"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b1136dde47e303442032d7a9046c4f133517aa09","unresolved":false,"context_lines":[{"line_number":19,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":20,"context_line":"        name\u003dbase.IDENTITY % \u0027list_projects_for_endpoint\u0027,"},{"line_number":21,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":22,"context_line":"        description\u003d\u0027List projects for endpoint.\u0027,"},{"line_number":23,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/OS-EP-FILTER/endpoints/{endpoint_id}/\u0027"},{"line_number":24,"context_line":"                              \u0027projects\u0027),"},{"line_number":25,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_8734164c","line":22,"updated":"2017-04-05 21:46:23.000000000","message":"\"List projects allowed to access an endpoint.\"","commit_id":"f074bd0610bca0bacf2db785d5330d99dfb4dc7c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b1136dde47e303442032d7a9046c4f133517aa09","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":27,"context_line":"        name\u003dbase.IDENTITY % \u0027add_endpoint_to_project\u0027,"},{"line_number":28,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":29,"context_line":"        description\u003d\u0027Add endpoint to project.\u0027,"},{"line_number":30,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/OS-EP-FILTER/projects/{project_id}/\u0027"},{"line_number":31,"context_line":"                              \u0027endpoints/{endpoint_id}\u0027),"},{"line_number":32,"context_line":"                     \u0027method\u0027: \u0027PUT\u0027}]),"}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_a7183ad3","line":29,"updated":"2017-04-05 21:46:23.000000000","message":"\"Allow project to access an endpoint.\"","commit_id":"f074bd0610bca0bacf2db785d5330d99dfb4dc7c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b1136dde47e303442032d7a9046c4f133517aa09","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":34,"context_line":"        name\u003dbase.IDENTITY % \u0027check_endpoint_in_project\u0027,"},{"line_number":35,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":36,"context_line":"        description\u003d\u0027Check if endpoint in project.\u0027,"},{"line_number":37,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/OS-EP-FILTER/projects/{project_id}/\u0027"},{"line_number":38,"context_line":"                              \u0027endpoints/{endpoint_id}\u0027),"},{"line_number":39,"context_line":"                     \u0027method\u0027: \u0027GET\u0027},"}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_671232b4","line":36,"updated":"2017-04-05 21:46:23.000000000","message":"\"Check if a project is allowed to access an endpoint.\"","commit_id":"f074bd0610bca0bacf2db785d5330d99dfb4dc7c"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"a376425ddbad2b7f5f1bdac0f8ebc967a92f7876","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        name\u003dbase.IDENTITY % \u0027check_endpoint_in_project\u0027,"},{"line_number":35,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":36,"context_line":"        description\u003d\u0027Check if endpoint in project.\u0027,"},{"line_number":37,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/OS-EP-FILTER/projects/{project_id}/\u0027"},{"line_number":38,"context_line":"                              \u0027endpoints/{endpoint_id}\u0027),"},{"line_number":39,"context_line":"                     \u0027method\u0027: \u0027GET\u0027},"},{"line_number":40,"context_line":"                    {\u0027path\u0027: (\u0027/v3/OS-EP-FILTER/projects/{project_id}/\u0027"},{"line_number":41,"context_line":"                              \u0027endpoints/{endpoint_id}\u0027),"},{"line_number":42,"context_line":"                     \u0027method\u0027: \u0027HEAD\u0027}]),"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfeb2761_647a4489","line":39,"range":{"start_line":37,"start_character":20,"end_line":39,"end_character":38},"updated":"2017-03-30 17:29:47.000000000","message":"This is interesting. Does this API return something ?\n\nI don\u0027t see what this would buy us if it does not return anything (why not just have the HEAD?).","commit_id":"f074bd0610bca0bacf2db785d5330d99dfb4dc7c"},{"author":{"_account_id":22219,"name":"Anthony Washington","email":"anthony.washington@intel.com","username":"antwash"},"change_message_id":"862630229fae1aeda163063379d08839c215447a","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        name\u003dbase.IDENTITY % \u0027check_endpoint_in_project\u0027,"},{"line_number":35,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":36,"context_line":"        description\u003d\u0027Check if endpoint in project.\u0027,"},{"line_number":37,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/OS-EP-FILTER/projects/{project_id}/\u0027"},{"line_number":38,"context_line":"                              \u0027endpoints/{endpoint_id}\u0027),"},{"line_number":39,"context_line":"                     \u0027method\u0027: \u0027GET\u0027},"},{"line_number":40,"context_line":"                    {\u0027path\u0027: (\u0027/v3/OS-EP-FILTER/projects/{project_id}/\u0027"},{"line_number":41,"context_line":"                              \u0027endpoints/{endpoint_id}\u0027),"},{"line_number":42,"context_line":"                     \u0027method\u0027: \u0027HEAD\u0027}]),"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfeb2761_901d2f75","line":39,"range":{"start_line":37,"start_character":20,"end_line":39,"end_character":38},"in_reply_to":"dfeb2761_647a4489","updated":"2017-04-03 13:11:42.000000000","message":"Sam I see what you mean, but here both get and head are used https://github.com/openstack/keystone/blob/master/keystone/catalog/routers.py#L110","commit_id":"f074bd0610bca0bacf2db785d5330d99dfb4dc7c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b1136dde47e303442032d7a9046c4f133517aa09","unresolved":false,"context_lines":[{"line_number":36,"context_line":"        description\u003d\u0027Check if endpoint in project.\u0027,"},{"line_number":37,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/OS-EP-FILTER/projects/{project_id}/\u0027"},{"line_number":38,"context_line":"                              \u0027endpoints/{endpoint_id}\u0027),"},{"line_number":39,"context_line":"                     \u0027method\u0027: \u0027GET\u0027},"},{"line_number":40,"context_line":"                    {\u0027path\u0027: (\u0027/v3/OS-EP-FILTER/projects/{project_id}/\u0027"},{"line_number":41,"context_line":"                              \u0027endpoints/{endpoint_id}\u0027),"},{"line_number":42,"context_line":"                     \u0027method\u0027: \u0027HEAD\u0027}]),"}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_8782d6c7","line":39,"in_reply_to":"dfeb2761_901d2f75","updated":"2017-04-05 21:46:23.000000000","message":"But what does the GET call return? That looks like a bug in the router.","commit_id":"f074bd0610bca0bacf2db785d5330d99dfb4dc7c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b1136dde47e303442032d7a9046c4f133517aa09","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":44,"context_line":"        name\u003dbase.IDENTITY % \u0027list_endpoints_for_project\u0027,"},{"line_number":45,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":46,"context_line":"        description\u003d\u0027List endpoints for a project.\u0027,"},{"line_number":47,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/OS-EP-FILTER/projects/{project_id}/\u0027"},{"line_number":48,"context_line":"                              \u0027endpoints\u0027),"},{"line_number":49,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_e71d22be","line":46,"updated":"2017-04-05 21:46:23.000000000","message":"\"List the endpoints a project is allowed to access.\"","commit_id":"f074bd0610bca0bacf2db785d5330d99dfb4dc7c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b1136dde47e303442032d7a9046c4f133517aa09","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":51,"context_line":"        name\u003dbase.IDENTITY % \u0027remove_endpoint_from_project\u0027,"},{"line_number":52,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":53,"context_line":"        description\u003d\u0027Remove endpoint from a project.\u0027,"},{"line_number":54,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/OS-EP-FILTER/projects/{project_id}/\u0027"},{"line_number":55,"context_line":"                              \u0027endpoints/{endpoint_id}\u0027),"},{"line_number":56,"context_line":"                     \u0027method\u0027: \u0027DELETE\u0027}])"}],"source_content_type":"text/x-python","patch_set":4,"id":"bff0334d_4755ee4f","line":53,"updated":"2017-04-05 21:46:23.000000000","message":"\"Remove access to an endpoint from a project that has previously been given explicit access.\"","commit_id":"f074bd0610bca0bacf2db785d5330d99dfb4dc7c"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"78da609b6f73af3103317141aef620e1e5548e8e","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":51,"context_line":"        name\u003dbase.IDENTITY % \u0027remove_endpoint_from_project\u0027,"},{"line_number":52,"context_line":"        check_str\u003dbase.RULE_ADMIN_REQUIRED,"},{"line_number":53,"context_line":"        description\u003d(\u0027Remove access to an endpoint from a project that has \u0027"},{"line_number":54,"context_line":"                     \u0027previously been given explicit access.\u0027),"},{"line_number":55,"context_line":"        operations\u003d[{\u0027path\u0027: (\u0027/v3/OS-EP-FILTER/projects/{project_id}/\u0027"},{"line_number":56,"context_line":"                              \u0027endpoints/{endpoint_id}\u0027),"},{"line_number":57,"context_line":"                     \u0027method\u0027: \u0027DELETE\u0027}])"}],"source_content_type":"text/x-python","patch_set":5,"id":"bff0334d_9b9ce3c0","line":54,"range":{"start_line":53,"start_character":66,"end_line":54,"end_character":60},"updated":"2017-04-10 18:40:41.000000000","message":"does it error if not ?\n\nthis details could\u0027ve been omitted.","commit_id":"273e8417d4a14a4c6d7eb514bce0cb317bd13d25"}]}
