)]}'
{"keystone/common/policies/token_revocation.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"31ecfba6151b126472d84b1098282853c89e757e","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":25,"context_line":"        name\u003dbase.IDENTITY % \u0027validate_token\u0027,"},{"line_number":26,"context_line":"        check_str\u003dbase.RULE_SERVICE_ADMIN_OR_TOKEN_SUBJECT,"},{"line_number":27,"context_line":"        description\u003d\u0027Validate and show information for token\u0027,"},{"line_number":28,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/auth/tokens\u0027,"},{"line_number":29,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":30,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_a22121b7","line":27,"updated":"2017-03-25 03:01:53.000000000","message":"nit: I\u0027d be fine just leaving this as: \n\n  Validate token\n\nto be consistent with other description in this module.","commit_id":"2f51e1bceb51ef3c59df7c8e9527f7cd6cd687b1"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"31ecfba6151b126472d84b1098282853c89e757e","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":31,"context_line":"        name\u003dbase.IDENTITY % \u0027validate_token_head\u0027,"},{"line_number":32,"context_line":"        check_str\u003dbase.RULE_SERVICE_OR_ADMIN,"},{"line_number":33,"context_line":"        description\u003d\u0027Validate token head\u0027,"},{"line_number":34,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v2.0/tokens/{token_id}\u0027,"},{"line_number":35,"context_line":"                     \u0027method\u0027: \u0027HEAD\u0027}]),"},{"line_number":36,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":1,"id":"ffe62b97_6256792c","line":33,"updated":"2017-03-25 03:01:53.000000000","message":"Weird.. we have two different policies for v2.0 token validation and v3 token validation?","commit_id":"2f51e1bceb51ef3c59df7c8e9527f7cd6cd687b1"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"5ef64ca18315d1210f1567871d2986b8fdc23aae","unresolved":false,"context_lines":[{"line_number":25,"context_line":"        name\u003dbase.IDENTITY % \u0027validate_token\u0027,"},{"line_number":26,"context_line":"        check_str\u003dbase.RULE_SERVICE_ADMIN_OR_TOKEN_SUBJECT,"},{"line_number":27,"context_line":"        description\u003d\u0027Validate token.\u0027,"},{"line_number":28,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/auth/tokens\u0027,"},{"line_number":29,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":30,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":31,"context_line":"        name\u003dbase.IDENTITY % \u0027validate_token_head\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_a1ccd134","line":28,"range":{"start_line":28,"start_character":29,"end_line":28,"end_character":46},"updated":"2017-03-29 19:36:05.000000000","message":"Shouldn\u0027t this also include a token_id ? or does keystone just validate the token in the X-Auth-Token header?\n\nMaybe then change this to \"Validate auth token.\"?","commit_id":"81b9ca0438c9056528dce5a079a1ec2f9dea0b60"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"5ef64ca18315d1210f1567871d2986b8fdc23aae","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":37,"context_line":"        name\u003dbase.IDENTITY % \u0027revocation_list\u0027,"},{"line_number":38,"context_line":"        check_str\u003dbase.RULE_SERVICE_OR_ADMIN,"},{"line_number":39,"context_line":"        description\u003d\u0027List revoked tokens.\u0027,"},{"line_number":40,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/auth/tokens/OS-PKI/revoked\u0027,"},{"line_number":41,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":42,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_61eb6977","line":39,"range":{"start_line":39,"start_character":21,"end_line":39,"end_character":41},"updated":"2017-03-29 19:36:05.000000000","message":"List PKI revoked tokens.\n\nIt\u0027s important to show it\u0027s for PKI tokens only","commit_id":"81b9ca0438c9056528dce5a079a1ec2f9dea0b60"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"5ef64ca18315d1210f1567871d2986b8fdc23aae","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":43,"context_line":"        name\u003dbase.IDENTITY % \u0027revoke_token\u0027,"},{"line_number":44,"context_line":"        check_str\u003dbase.RULE_ADMIN_OR_TOKEN_SUBJECT,"},{"line_number":45,"context_line":"        description\u003d\u0027Revoke token.\u0027,"},{"line_number":46,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/auth/tokens\u0027,"},{"line_number":47,"context_line":"                     \u0027method\u0027: \u0027DELETE\u0027}])"},{"line_number":48,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":3,"id":"ffe62b97_a1c3b1ec","line":45,"range":{"start_line":45,"start_character":21,"end_line":45,"end_character":34},"updated":"2017-03-29 19:36:05.000000000","message":"Would \"Revoke subject token.\" be more complete?","commit_id":"81b9ca0438c9056528dce5a079a1ec2f9dea0b60"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"e40d024217c8d0c6f3671d599af2cef2ce099380","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        name\u003dbase.IDENTITY % \u0027revoke_token\u0027,"},{"line_number":44,"context_line":"        check_str\u003dbase.RULE_ADMIN_OR_TOKEN_SUBJECT,"},{"line_number":45,"context_line":"        description\u003d\u0027Revoke token.\u0027,"},{"line_number":46,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/auth/tokens\u0027,"},{"line_number":47,"context_line":"                     \u0027method\u0027: \u0027DELETE\u0027}])"},{"line_number":48,"context_line":"]"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7ffa3b31_e4126709","line":46,"updated":"2017-04-18 22:34:57.000000000","message":"I go back and forth on this because we don\u0027t really have any context here about the `X-Subject-Token`. As a reader, I\u0027m not quite sure what `subject` means without knowing about the specific header we\u0027re implying.","commit_id":"81b9ca0438c9056528dce5a079a1ec2f9dea0b60"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6ad1856a73072a11b91456c4d539d64d3a6e69ef","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":37,"context_line":"        name\u003dbase.IDENTITY % \u0027revocation_list\u0027,"},{"line_number":38,"context_line":"        check_str\u003dbase.RULE_SERVICE_OR_ADMIN,"},{"line_number":39,"context_line":"        description\u003d\u0027List PKI revoked tokens.\u0027,"},{"line_number":40,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/auth/tokens/OS-PKI/revoked\u0027,"},{"line_number":41,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":42,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":4,"id":"7ffa3b31_c4740b6b","line":39,"updated":"2017-04-18 22:34:52.000000000","message":"I feel like the wording flows a little better with PKI after revoked, but that\u0027s a minor change.","commit_id":"13efa6b712880317bbd8ab1b46303a60e279d428"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"9221572f775e12bb578d8e43f1615a721d82047a","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":37,"context_line":"        name\u003dbase.IDENTITY % \u0027revocation_list\u0027,"},{"line_number":38,"context_line":"        check_str\u003dbase.RULE_SERVICE_OR_ADMIN,"},{"line_number":39,"context_line":"        description\u003d\u0027List PKI revoked tokens.\u0027,"},{"line_number":40,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/auth/tokens/OS-PKI/revoked\u0027,"},{"line_number":41,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":42,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":4,"id":"7ffa3b31_e9c8b722","line":39,"in_reply_to":"7ffa3b31_c4740b6b","updated":"2017-04-20 20:34:01.000000000","message":"Done","commit_id":"13efa6b712880317bbd8ab1b46303a60e279d428"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3aa269a9225a0cf3c95bd0ddf6e18b1e49f1a2ee","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from keystone.common.policies import base"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"token_revocation_policies \u003d ["},{"line_number":18,"context_line":"    policy.RuleDefault("},{"line_number":19,"context_line":"        name\u003dbase.IDENTITY % \u0027check_token\u0027,"},{"line_number":20,"context_line":"        check_str\u003dbase.RULE_ADMIN_OR_TOKEN_SUBJECT),"}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_690f0737","side":"PARENT","line":17,"updated":"2017-04-20 20:53:49.000000000","message":"There are operations in this list that don\u0027t necessarily pertain to token revocation. For example, token validation is not necessarily a token revocation thing, it a token validation thing.\n\nFor improved readability, this could be renamed to something more representative of these operations as a whole.","commit_id":"9034755743875de39363dbdcd35477e82e37ea1b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"11b8acb418869f21c4b3c704a6e4a864683e824c","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from keystone.common.policies import base"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"token_revocation_policies \u003d ["},{"line_number":18,"context_line":"    policy.RuleDefault("},{"line_number":19,"context_line":"        name\u003dbase.IDENTITY % \u0027check_token\u0027,"},{"line_number":20,"context_line":"        check_str\u003dbase.RULE_ADMIN_OR_TOKEN_SUBJECT),"}],"source_content_type":"text/x-python","patch_set":5,"id":"df140735_88779f09","side":"PARENT","line":17,"in_reply_to":"7ffa3b31_690f0737","updated":"2017-06-06 19:34:23.000000000","message":"Done","commit_id":"9034755743875de39363dbdcd35477e82e37ea1b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"11b8acb418869f21c4b3c704a6e4a864683e824c","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from keystone.common.policies import base"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"token_revocation_policies \u003d ["},{"line_number":18,"context_line":"    policy.RuleDefault("},{"line_number":19,"context_line":"        name\u003dbase.IDENTITY % \u0027check_token\u0027,"},{"line_number":20,"context_line":"        check_str\u003dbase.RULE_ADMIN_OR_TOKEN_SUBJECT),"}],"source_content_type":"text/x-python","patch_set":5,"id":"df140735_a8c4a360","side":"PARENT","line":17,"in_reply_to":"7ffa3b31_690f0737","updated":"2017-06-06 19:34:23.000000000","message":"Done","commit_id":"9034755743875de39363dbdcd35477e82e37ea1b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3aa269a9225a0cf3c95bd0ddf6e18b1e49f1a2ee","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":19,"context_line":"        name\u003dbase.IDENTITY % \u0027check_token\u0027,"},{"line_number":20,"context_line":"        check_str\u003dbase.RULE_ADMIN_OR_TOKEN_SUBJECT,"},{"line_number":21,"context_line":"        description\u003d\u0027Check token.\u0027,"},{"line_number":22,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/auth/tokens\u0027,"},{"line_number":23,"context_line":"                     \u0027method\u0027: \u0027HEAD\u0027}]),"},{"line_number":24,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_0902c30b","line":21,"updated":"2017-04-20 20:53:49.000000000","message":"nit: Check a token.","commit_id":"a3b4b70244a5120581ec275514fb2a41ce4df43b"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"ccc56b10eb94eae06d0ac2b03a6b26cea7d88645","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":19,"context_line":"        name\u003dbase.IDENTITY % \u0027check_token\u0027,"},{"line_number":20,"context_line":"        check_str\u003dbase.RULE_ADMIN_OR_TOKEN_SUBJECT,"},{"line_number":21,"context_line":"        description\u003d\u0027Check token.\u0027,"},{"line_number":22,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/auth/tokens\u0027,"},{"line_number":23,"context_line":"                     \u0027method\u0027: \u0027HEAD\u0027}]),"},{"line_number":24,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_f876b506","line":21,"in_reply_to":"7ffa3b31_0902c30b","updated":"2017-04-25 12:05:42.000000000","message":"++\n\nI also checked if this is just a HEAD and doesn\u0027t have a GET too. This is correct as it is.","commit_id":"a3b4b70244a5120581ec275514fb2a41ce4df43b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"11b8acb418869f21c4b3c704a6e4a864683e824c","unresolved":false,"context_lines":[{"line_number":18,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":19,"context_line":"        name\u003dbase.IDENTITY % \u0027check_token\u0027,"},{"line_number":20,"context_line":"        check_str\u003dbase.RULE_ADMIN_OR_TOKEN_SUBJECT,"},{"line_number":21,"context_line":"        description\u003d\u0027Check token.\u0027,"},{"line_number":22,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/auth/tokens\u0027,"},{"line_number":23,"context_line":"                     \u0027method\u0027: \u0027HEAD\u0027}]),"},{"line_number":24,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":5,"id":"df140735_e8ca9b6c","line":21,"in_reply_to":"7ffa3b31_0902c30b","updated":"2017-06-06 19:34:23.000000000","message":"Done","commit_id":"a3b4b70244a5120581ec275514fb2a41ce4df43b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3aa269a9225a0cf3c95bd0ddf6e18b1e49f1a2ee","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":25,"context_line":"        name\u003dbase.IDENTITY % \u0027validate_token\u0027,"},{"line_number":26,"context_line":"        check_str\u003dbase.RULE_SERVICE_ADMIN_OR_TOKEN_SUBJECT,"},{"line_number":27,"context_line":"        description\u003d\u0027Validate auth token.\u0027,"},{"line_number":28,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/auth/tokens\u0027,"},{"line_number":29,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":30,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_740b5e23","line":27,"updated":"2017-04-20 20:53:49.000000000","message":"As a reading, I\u0027m not entirely sure what we mean by \u0027auth\u0027 here. This is simply validating a token. \n\nnit: Validate a token.","commit_id":"a3b4b70244a5120581ec275514fb2a41ce4df43b"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"ccc56b10eb94eae06d0ac2b03a6b26cea7d88645","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":25,"context_line":"        name\u003dbase.IDENTITY % \u0027validate_token\u0027,"},{"line_number":26,"context_line":"        check_str\u003dbase.RULE_SERVICE_ADMIN_OR_TOKEN_SUBJECT,"},{"line_number":27,"context_line":"        description\u003d\u0027Validate auth token.\u0027,"},{"line_number":28,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/auth/tokens\u0027,"},{"line_number":29,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":30,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_f84fd5ba","line":27,"in_reply_to":"7ffa3b31_740b5e23","updated":"2017-04-25 12:05:42.000000000","message":"++","commit_id":"a3b4b70244a5120581ec275514fb2a41ce4df43b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"11b8acb418869f21c4b3c704a6e4a864683e824c","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":25,"context_line":"        name\u003dbase.IDENTITY % \u0027validate_token\u0027,"},{"line_number":26,"context_line":"        check_str\u003dbase.RULE_SERVICE_ADMIN_OR_TOKEN_SUBJECT,"},{"line_number":27,"context_line":"        description\u003d\u0027Validate auth token.\u0027,"},{"line_number":28,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/auth/tokens\u0027,"},{"line_number":29,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":30,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":5,"id":"df140735_08ceef82","line":27,"in_reply_to":"7ffa3b31_740b5e23","updated":"2017-06-06 19:34:23.000000000","message":"Done","commit_id":"a3b4b70244a5120581ec275514fb2a41ce4df43b"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"ccc56b10eb94eae06d0ac2b03a6b26cea7d88645","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        check_str\u003dbase.RULE_SERVICE_ADMIN_OR_TOKEN_SUBJECT,"},{"line_number":27,"context_line":"        description\u003d\u0027Validate auth token.\u0027,"},{"line_number":28,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/auth/tokens\u0027,"},{"line_number":29,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}]),"},{"line_number":30,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":31,"context_line":"        name\u003dbase.IDENTITY % \u0027validate_token_head\u0027,"},{"line_number":32,"context_line":"        check_str\u003dbase.RULE_SERVICE_OR_ADMIN,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5ff73747_18516163","line":29,"updated":"2017-04-25 12:05:42.000000000","message":"I also checked if this is just a GET and doesn\u0027t have a HEAD too. This is correct as it is.","commit_id":"a3b4b70244a5120581ec275514fb2a41ce4df43b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3aa269a9225a0cf3c95bd0ddf6e18b1e49f1a2ee","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":31,"context_line":"        name\u003dbase.IDENTITY % \u0027validate_token_head\u0027,"},{"line_number":32,"context_line":"        check_str\u003dbase.RULE_SERVICE_OR_ADMIN,"},{"line_number":33,"context_line":"        description\u003d\u0027Validate token head.\u0027,"},{"line_number":34,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v2.0/tokens/{token_id}\u0027,"},{"line_number":35,"context_line":"                     \u0027method\u0027: \u0027HEAD\u0027}]),"},{"line_number":36,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_f4440e49","line":33,"updated":"2017-04-20 20:53:49.000000000","message":"This is doing the same thing as the policy above, but it\u0027s done on a separate path (which I assume is the reason why we have a separate policy for it, but that doesn\u0027t really make sense to me).\n\nI find the reference to head in the description here an anti-pattern with respect to the rest of the policies we\u0027ve committed. We can gather the HTTP verb by looking at the method generated from line 35. Instead, I\u0027d keep this as \"Validate a token\". We could also do this for GET /v2.0/tokens/{token_id} which is also \"Validate a token.\".","commit_id":"a3b4b70244a5120581ec275514fb2a41ce4df43b"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"f7598b7f4b80295e2219d944a0abee29130fb291","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":31,"context_line":"        name\u003dbase.IDENTITY % \u0027validate_token_head\u0027,"},{"line_number":32,"context_line":"        check_str\u003dbase.RULE_SERVICE_OR_ADMIN,"},{"line_number":33,"context_line":"        description\u003d\u0027Validate token head.\u0027,"},{"line_number":34,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v2.0/tokens/{token_id}\u0027,"},{"line_number":35,"context_line":"                     \u0027method\u0027: \u0027HEAD\u0027}]),"},{"line_number":36,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_f45d2e15","line":33,"range":{"start_line":33,"start_character":21,"end_line":33,"end_character":40},"updated":"2017-04-20 20:51:57.000000000","message":"This is slightly strange wording but I\u0027m not sure what would make it clearer","commit_id":"a3b4b70244a5120581ec275514fb2a41ce4df43b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"11b8acb418869f21c4b3c704a6e4a864683e824c","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":31,"context_line":"        name\u003dbase.IDENTITY % \u0027validate_token_head\u0027,"},{"line_number":32,"context_line":"        check_str\u003dbase.RULE_SERVICE_OR_ADMIN,"},{"line_number":33,"context_line":"        description\u003d\u0027Validate token head.\u0027,"},{"line_number":34,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v2.0/tokens/{token_id}\u0027,"},{"line_number":35,"context_line":"                     \u0027method\u0027: \u0027HEAD\u0027}]),"},{"line_number":36,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":5,"id":"df140735_889f9f64","line":33,"in_reply_to":"7ffa3b31_74b8fee3","updated":"2017-06-06 19:34:23.000000000","message":"Done","commit_id":"a3b4b70244a5120581ec275514fb2a41ce4df43b"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"0d1f14855afcecd119e53ab0207690c77a1130ab","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":31,"context_line":"        name\u003dbase.IDENTITY % \u0027validate_token_head\u0027,"},{"line_number":32,"context_line":"        check_str\u003dbase.RULE_SERVICE_OR_ADMIN,"},{"line_number":33,"context_line":"        description\u003d\u0027Validate token head.\u0027,"},{"line_number":34,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v2.0/tokens/{token_id}\u0027,"},{"line_number":35,"context_line":"                     \u0027method\u0027: \u0027HEAD\u0027}]),"},{"line_number":36,"context_line":"    policy.DocumentedRuleDefault("}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_74b8fee3","line":33,"in_reply_to":"7ffa3b31_f4440e49","updated":"2017-04-20 21:05:00.000000000","message":"++","commit_id":"a3b4b70244a5120581ec275514fb2a41ce4df43b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3aa269a9225a0cf3c95bd0ddf6e18b1e49f1a2ee","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        name\u003dbase.IDENTITY % \u0027validate_token_head\u0027,"},{"line_number":32,"context_line":"        check_str\u003dbase.RULE_SERVICE_OR_ADMIN,"},{"line_number":33,"context_line":"        description\u003d\u0027Validate token head.\u0027,"},{"line_number":34,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v2.0/tokens/{token_id}\u0027,"},{"line_number":35,"context_line":"                     \u0027method\u0027: \u0027HEAD\u0027}]),"},{"line_number":36,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":37,"context_line":"        name\u003dbase.IDENTITY % \u0027revocation_list\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7ffa3b31_49756bca","line":34,"updated":"2017-04-20 20:53:49.000000000","message":"Why is this the only one with v2.0 in the path? There are other v2.0 routes in keystone/token/routers.py that aren\u0027t documented here, like GET /v2.0/tokens/{token_id}","commit_id":"a3b4b70244a5120581ec275514fb2a41ce4df43b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"11b8acb418869f21c4b3c704a6e4a864683e824c","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        name\u003dbase.IDENTITY % \u0027validate_token_head\u0027,"},{"line_number":32,"context_line":"        check_str\u003dbase.RULE_SERVICE_OR_ADMIN,"},{"line_number":33,"context_line":"        description\u003d\u0027Validate token head.\u0027,"},{"line_number":34,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v2.0/tokens/{token_id}\u0027,"},{"line_number":35,"context_line":"                     \u0027method\u0027: \u0027HEAD\u0027}]),"},{"line_number":36,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":37,"context_line":"        name\u003dbase.IDENTITY % \u0027revocation_list\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"df140735_687c4beb","line":34,"in_reply_to":"7ffa3b31_49756bca","updated":"2017-06-06 19:34:23.000000000","message":"Done","commit_id":"a3b4b70244a5120581ec275514fb2a41ce4df43b"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"c2d41af9a8019600e4d58fd263faf3b2b1bb5bdd","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"token_revocation_policies \u003d ["},{"line_number":18,"context_line":"    policy.DocumentedRuleDefault("},{"line_number":19,"context_line":"        name\u003dbase.IDENTITY % \u0027revocation_list\u0027,"},{"line_number":20,"context_line":"        check_str\u003dbase.RULE_SERVICE_OR_ADMIN,"},{"line_number":21,"context_line":"        description\u003d\u0027List revoked PKI tokens.\u0027,"},{"line_number":22,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/auth/tokens/OS-PKI/revoked\u0027,"},{"line_number":23,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}])"},{"line_number":24,"context_line":"]"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_93c5940d","line":23,"range":{"start_line":19,"start_character":0,"end_line":23,"end_character":39},"updated":"2017-06-06 20:08:31.000000000","message":"Any reason we are keeping this? I thought PKI tokens were removed in Ocata.","commit_id":"5cc471205490ce34f01ae5429ad9c27e0f98dc2b"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"97f48ba6d6864f7190b4758a96757641e76b9349","unresolved":false,"context_lines":[{"line_number":20,"context_line":"        check_str\u003dbase.RULE_SERVICE_OR_ADMIN,"},{"line_number":21,"context_line":"        description\u003d\u0027List revoked PKI tokens.\u0027,"},{"line_number":22,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/auth/tokens/OS-PKI/revoked\u0027,"},{"line_number":23,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}])"},{"line_number":24,"context_line":"]"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_3a7e476b","line":23,"in_reply_to":"5f201791_f63255a7","updated":"2017-06-22 19:00:41.000000000","message":"This has to exist, it needs to return an empty list. The API cannot disappear as per the contract.\n\nSo in short, we keep this forever \u003d/ We simply return an empty result list.","commit_id":"5cc471205490ce34f01ae5429ad9c27e0f98dc2b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"11577a397c8355f9b75da1342106dd93e59f2238","unresolved":false,"context_lines":[{"line_number":20,"context_line":"        check_str\u003dbase.RULE_SERVICE_OR_ADMIN,"},{"line_number":21,"context_line":"        description\u003d\u0027List revoked PKI tokens.\u0027,"},{"line_number":22,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/auth/tokens/OS-PKI/revoked\u0027,"},{"line_number":23,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}])"},{"line_number":24,"context_line":"]"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f201791_f63255a7","line":23,"in_reply_to":"df140735_42872311","updated":"2017-06-21 16:08:57.000000000","message":"That\u0027s a good point - Morgan had some good context around how to handle this. I can follow up with him.","commit_id":"5cc471205490ce34f01ae5429ad9c27e0f98dc2b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f17dbbdf4339ed5c056aa37da8a623db0748fede","unresolved":false,"context_lines":[{"line_number":20,"context_line":"        check_str\u003dbase.RULE_SERVICE_OR_ADMIN,"},{"line_number":21,"context_line":"        description\u003d\u0027List revoked PKI tokens.\u0027,"},{"line_number":22,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/auth/tokens/OS-PKI/revoked\u0027,"},{"line_number":23,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}])"},{"line_number":24,"context_line":"]"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_e252b7de","line":23,"in_reply_to":"df140735_93c5940d","updated":"2017-06-06 21:09:37.000000000","message":"It was - but we can\u0027t remove the API because it would be a backwards incompatible change :(","commit_id":"5cc471205490ce34f01ae5429ad9c27e0f98dc2b"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"847f031af39156e6783e209f8dd9ef729bc360e2","unresolved":false,"context_lines":[{"line_number":20,"context_line":"        check_str\u003dbase.RULE_SERVICE_OR_ADMIN,"},{"line_number":21,"context_line":"        description\u003d\u0027List revoked PKI tokens.\u0027,"},{"line_number":22,"context_line":"        operations\u003d[{\u0027path\u0027: \u0027/v3/auth/tokens/OS-PKI/revoked\u0027,"},{"line_number":23,"context_line":"                     \u0027method\u0027: \u0027GET\u0027}])"},{"line_number":24,"context_line":"]"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"df140735_42872311","line":23,"in_reply_to":"df140735_e252b7de","updated":"2017-06-06 21:16:52.000000000","message":"If the functionality was removed isn\u0027t that already a backwards incompatible change? Pretending the API still works doesn\u0027t help anyone.","commit_id":"5cc471205490ce34f01ae5429ad9c27e0f98dc2b"}]}
