)]}'
{"api-ref/source/v3/roles.inc":[{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"9d24d162ad6234048fde1b95b3893ae6022ce4d5","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Roles (roles)"},{"line_number":5,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"OpenStack services typically determine whether a user\u0027s API request should be"},{"line_number":8,"context_line":"allowed based on the roles that user has on the project (as indicated by the"},{"line_number":9,"context_line":"roles in the token), compared to the roles required, that are defined in the"},{"line_number":10,"context_line":"service\u0027s policy file. A user obtains roles on a project by having these"},{"line_number":11,"context_line":"assigned to them via the Identity service API."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Roles must initially be created as entities via the Identity services API, and"}],"source_content_type":"text/x-c++src","patch_set":3,"id":"1aa78d24_7895cd86","line":10,"range":{"start_line":7,"start_character":0,"end_line":10,"end_character":21},"updated":"2016-07-14 21:38:06.000000000","message":"++","commit_id":"f8f9b7b66f1815b1b1e3a79384c756701e9902d2"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ccb12bba68d1c8f79676e0bc1a7925291a677f57","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"   - role_id: role_id"},{"line_number":83,"context_line":"   - project_id: project_id"},{"line_number":84,"context_line":"   - group_id: group_id"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Check whether group has role on project"}],"source_content_type":"text/x-c++src","patch_set":7,"id":"1aa78d24_332fc7a2","side":"PARENT","line":84,"updated":"2016-07-15 13:56:38.000000000","message":"These should be ordered according to how they appear in the URL. \n\n  - project_id: project_id\n  - group_id: group_id\n  - role_id: role_id","commit_id":"07981bddaf2630922ce3811c999d30b74dadc294"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5150aa1000ab2b8815c3ab28eb1666bddf0bc811","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"   - role_id: role_id"},{"line_number":83,"context_line":"   - project_id: project_id"},{"line_number":84,"context_line":"   - group_id: group_id"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"Check whether group has role on project"}],"source_content_type":"text/x-c++src","patch_set":7,"id":"fad55976_600c2b43","side":"PARENT","line":84,"in_reply_to":"1aa78d24_332fc7a2","updated":"2016-07-15 18:48:21.000000000","message":"So I modify all these in a follow on patch...If it\u0027s OK, I\u0027ll fix it there","commit_id":"07981bddaf2630922ce3811c999d30b74dadc294"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ccb12bba68d1c8f79676e0bc1a7925291a677f57","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":"   - role_id: role_id"},{"line_number":103,"context_line":"   - project_id: project_id"},{"line_number":104,"context_line":"   - group_id: group_id"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"Revoke role from group on project"}],"source_content_type":"text/x-c++src","patch_set":7,"id":"1aa78d24_a6089729","side":"PARENT","line":104,"updated":"2016-07-15 13:56:38.000000000","message":"Same comment here about ordering.","commit_id":"07981bddaf2630922ce3811c999d30b74dadc294"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ccb12bba68d1c8f79676e0bc1a7925291a677f57","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"   - role_id: role_id"},{"line_number":123,"context_line":"   - project_id: project_id"},{"line_number":124,"context_line":"   - group_id: group_id"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"Grant role to user on project"}],"source_content_type":"text/x-c++src","patch_set":7,"id":"1aa78d24_c60de336","side":"PARENT","line":124,"updated":"2016-07-15 13:56:38.000000000","message":"Same comment here about ordering.","commit_id":"07981bddaf2630922ce3811c999d30b74dadc294"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ccb12bba68d1c8f79676e0bc1a7925291a677f57","unresolved":false,"context_lines":[{"line_number":141,"context_line":""},{"line_number":142,"context_line":"   - role_id: role_id"},{"line_number":143,"context_line":"   - project_id: project_id"},{"line_number":144,"context_line":"   - user_id: user_id"},{"line_number":145,"context_line":""},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"Check whether user has role on project"}],"source_content_type":"text/x-c++src","patch_set":7,"id":"1aa78d24_8622bba1","side":"PARENT","line":144,"updated":"2016-07-15 13:56:38.000000000","message":"Same comment here about ordering.","commit_id":"07981bddaf2630922ce3811c999d30b74dadc294"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ccb12bba68d1c8f79676e0bc1a7925291a677f57","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"   - role_id: role_id"},{"line_number":163,"context_line":"   - project_id: project_id"},{"line_number":164,"context_line":"   - user_id: user_id"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"Revoke role from user on project"}],"source_content_type":"text/x-c++src","patch_set":7,"id":"1aa78d24_664cef76","side":"PARENT","line":164,"updated":"2016-07-15 13:56:38.000000000","message":"Same comment here about ordering.","commit_id":"07981bddaf2630922ce3811c999d30b74dadc294"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ccb12bba68d1c8f79676e0bc1a7925291a677f57","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"   - role_id: role_id"},{"line_number":183,"context_line":"   - project_id: project_id"},{"line_number":184,"context_line":"   - user_id: user_id"},{"line_number":185,"context_line":""},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"List roles for user on project"}],"source_content_type":"text/x-c++src","patch_set":7,"id":"1aa78d24_86591b38","side":"PARENT","line":184,"updated":"2016-07-15 13:56:38.000000000","message":"Same comment here about ordering - and the rest of the doc.","commit_id":"07981bddaf2630922ce3811c999d30b74dadc294"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ccb12bba68d1c8f79676e0bc1a7925291a677f57","unresolved":false,"context_lines":[{"line_number":200,"context_line":".. rest_parameters:: parameters.yaml"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"   - project_id: project_id"},{"line_number":203,"context_line":"   - user_id: user_id"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"Response Example"},{"line_number":206,"context_line":"----------------"}],"source_content_type":"text/x-c++src","patch_set":7,"id":"1aa78d24_66818f4d","side":"PARENT","line":203,"updated":"2016-07-15 13:56:38.000000000","message":"I think this is how the ordering is suppose to be (at least according to the other reviews I\u0027ve seen recently).","commit_id":"07981bddaf2630922ce3811c999d30b74dadc294"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ccb12bba68d1c8f79676e0bc1a7925291a677f57","unresolved":false,"context_lines":[{"line_number":5,"context_line":"\u003d\u003d\u003d\u003d\u003d"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"OpenStack services typically determine whether a user\u0027s API request should be"},{"line_number":8,"context_line":"allowed based on the roles that user has on the project (as indicated by the"},{"line_number":9,"context_line":"roles in the token), compared to the roles required (as defined in the"},{"line_number":10,"context_line":"service\u0027s policy file). A user obtains roles on a project by having these"},{"line_number":11,"context_line":"assigned to them via the Identity service API."}],"source_content_type":"text/x-c++src","patch_set":7,"id":"1aa78d24_b398d76b","line":8,"updated":"2016-07-15 13:56:38.000000000","message":"Also known as Role Based Access Control, or RBAC.","commit_id":"7a45617e886fab980232f684aef9652c830e9f68"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5150aa1000ab2b8815c3ab28eb1666bddf0bc811","unresolved":false,"context_lines":[{"line_number":5,"context_line":"\u003d\u003d\u003d\u003d\u003d"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"OpenStack services typically determine whether a user\u0027s API request should be"},{"line_number":8,"context_line":"allowed based on the roles that user has on the project (as indicated by the"},{"line_number":9,"context_line":"roles in the token), compared to the roles required (as defined in the"},{"line_number":10,"context_line":"service\u0027s policy file). A user obtains roles on a project by having these"},{"line_number":11,"context_line":"assigned to them via the Identity service API."}],"source_content_type":"text/x-c++src","patch_set":7,"id":"fad55976_60db8bee","line":8,"in_reply_to":"1aa78d24_b398d76b","updated":"2016-07-15 18:48:21.000000000","message":"Done","commit_id":"7a45617e886fab980232f684aef9652c830e9f68"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ccb12bba68d1c8f79676e0bc1a7925291a677f57","unresolved":false,"context_lines":[{"line_number":18,"context_line":"requests."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The creation, checking and deletion of role assignments is done with each of"},{"line_number":21,"context_line":"the attributes being specified in the URL, for example to assign a role to a"},{"line_number":22,"context_line":"user on a project::"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"  PUT /v3/projects/{project_id}/users/{user_id}/roles/{role_id}"}],"source_content_type":"text/x-c++src","patch_set":7,"id":"1aa78d24_732aefe8","line":21,"updated":"2016-07-15 13:56:38.000000000","message":"URL. For example, to assign ...","commit_id":"7a45617e886fab980232f684aef9652c830e9f68"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5150aa1000ab2b8815c3ab28eb1666bddf0bc811","unresolved":false,"context_lines":[{"line_number":18,"context_line":"requests."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"The creation, checking and deletion of role assignments is done with each of"},{"line_number":21,"context_line":"the attributes being specified in the URL, for example to assign a role to a"},{"line_number":22,"context_line":"user on a project::"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"  PUT /v3/projects/{project_id}/users/{user_id}/roles/{role_id}"}],"source_content_type":"text/x-c++src","patch_set":7,"id":"fad55976_40d807f0","line":21,"in_reply_to":"1aa78d24_732aefe8","updated":"2016-07-15 18:48:21.000000000","message":"Done","commit_id":"7a45617e886fab980232f684aef9652c830e9f68"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ccb12bba68d1c8f79676e0bc1a7925291a677f57","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"You can also list roles assigned to a specified domain, project, or user using"},{"line_number":27,"context_line":"this form of API, however a more generalized API for list assignments is"},{"line_number":28,"context_line":"provided where query parameters are used to filter the set of assignments"},{"line_number":29,"context_line":"returned in the collection. For example:"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"- List role assignments for the specified user::"}],"source_content_type":"text/x-c++src","patch_set":7,"id":"1aa78d24_d32003fb","line":28,"updated":"2016-07-15 13:56:38.000000000","message":"I think we have a bug open saying we don\u0027t document query parameters. We should maybe add this as a partial bug if we are cleaning some of that up here.\n\nhttps://bugs.launchpad.net/keystone/+bug/1602854","commit_id":"7a45617e886fab980232f684aef9652c830e9f68"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5150aa1000ab2b8815c3ab28eb1666bddf0bc811","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"You can also list roles assigned to a specified domain, project, or user using"},{"line_number":27,"context_line":"this form of API, however a more generalized API for list assignments is"},{"line_number":28,"context_line":"provided where query parameters are used to filter the set of assignments"},{"line_number":29,"context_line":"returned in the collection. For example:"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"- List role assignments for the specified user::"}],"source_content_type":"text/x-c++src","patch_set":7,"id":"fad55976_40ada730","line":28,"in_reply_to":"1aa78d24_d32003fb","updated":"2016-07-15 18:48:21.000000000","message":"agreed - although I think the actual fix for that bug is in one of the following on patches - I\u0027ll add it to that patch","commit_id":"7a45617e886fab980232f684aef9652c830e9f68"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f9dbeb2099a716935cc3a40bc9d674c0bcdc2843","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"You can also list roles assigned to a specified domain, project, or user using"},{"line_number":27,"context_line":"this form of API, however a more generalized API for list assignments is"},{"line_number":28,"context_line":"provided where query parameters are used to filter the set of assignments"},{"line_number":29,"context_line":"returned in the collection. For example:"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"- List role assignments for the specified user::"}],"source_content_type":"text/x-c++src","patch_set":7,"id":"fad55976_1b8841e7","line":28,"in_reply_to":"fad55976_40ada730","updated":"2016-07-15 20:51:35.000000000","message":"Sweet - thanks!","commit_id":"7a45617e886fab980232f684aef9652c830e9f68"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ccb12bba68d1c8f79676e0bc1a7925291a677f57","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    GET /role_assignments?scope.project.id\u003d{project_id}"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Since v3.6, you can also list all role assignments within a tree of projects,"},{"line_number":40,"context_line":"for example the following would list all role assignments for a specified"},{"line_number":41,"context_line":"project and its sub-projects::"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":7,"id":"1aa78d24_935cbb7e","line":39,"updated":"2016-07-15 13:56:38.000000000","message":"Since Identity service API v3.6, *","commit_id":"7a45617e886fab980232f684aef9652c830e9f68"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5150aa1000ab2b8815c3ab28eb1666bddf0bc811","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    GET /role_assignments?scope.project.id\u003d{project_id}"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"Since v3.6, you can also list all role assignments within a tree of projects,"},{"line_number":40,"context_line":"for example the following would list all role assignments for a specified"},{"line_number":41,"context_line":"project and its sub-projects::"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":7,"id":"fad55976_80a79f4e","line":39,"in_reply_to":"1aa78d24_935cbb7e","updated":"2016-07-15 18:48:21.000000000","message":"Done","commit_id":"7a45617e886fab980232f684aef9652c830e9f68"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"ccb12bba68d1c8f79676e0bc1a7925291a677f57","unresolved":false,"context_lines":[{"line_number":67,"context_line":"- Get the equivalent set of role assignments that are included in a"},{"line_number":68,"context_line":"  project-scoped token response::"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    GET /role_assignments?user.id\u003d{user_id}\u0026 scope.project.id\u003d{project_id}\u0026effective"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"When listing in effective mode, since the group assignments have been"},{"line_number":73,"context_line":"effectively expanded out into assignments for each user, the group role"}],"source_content_type":"text/x-c++src","patch_set":7,"id":"1aa78d24_73bb0f76","line":70,"updated":"2016-07-15 13:56:38.000000000","message":"Is there suppose to be a space between \u0026 and scope?","commit_id":"7a45617e886fab980232f684aef9652c830e9f68"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"5150aa1000ab2b8815c3ab28eb1666bddf0bc811","unresolved":false,"context_lines":[{"line_number":67,"context_line":"- Get the equivalent set of role assignments that are included in a"},{"line_number":68,"context_line":"  project-scoped token response::"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    GET /role_assignments?user.id\u003d{user_id}\u0026 scope.project.id\u003d{project_id}\u0026effective"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"When listing in effective mode, since the group assignments have been"},{"line_number":73,"context_line":"effectively expanded out into assignments for each user, the group role"}],"source_content_type":"text/x-c++src","patch_set":7,"id":"fad55976_c04eb795","line":70,"in_reply_to":"1aa78d24_73bb0f76","updated":"2016-07-15 18:48:21.000000000","message":"Done","commit_id":"7a45617e886fab980232f684aef9652c830e9f68"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"cc99db55d0909b5d79c6b7fd3ee9b531df0f6850","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    GET /role_assignments?user.id\u003d{user_id}\u0026scope.project.id\u003d{project_id}\u0026effective"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"When listing in effective mode, since the group assignments have been"},{"line_number":74,"context_line":"effectively expanded out into assignments for each user, the group role"},{"line_number":75,"context_line":"assignment entities themselves are not returned in the collection. However,"},{"line_number":76,"context_line":"in the response, the ``links`` entity section for each assignment gained by"}],"source_content_type":"text/x-c++src","patch_set":8,"id":"fad55976_2114f2f3","line":73,"updated":"2016-07-15 21:32:07.000000000","message":"It would be nice to have a small section that explains what effective means in the context of role assignments.","commit_id":"22ab8a8046bb4c63bfef04212c3a8b18fd0e1d69"},{"author":{"_account_id":5707,"name":"Henry Nash","email":"henryn@linux.vnet.ibm.com","username":"henry-nash"},"change_message_id":"ba261cd7abd6f5243af5b63d06652e67d3e1d58f","unresolved":false,"context_lines":[{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    GET /role_assignments?user.id\u003d{user_id}\u0026scope.project.id\u003d{project_id}\u0026effective"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"When listing in effective mode, since the group assignments have been"},{"line_number":74,"context_line":"effectively expanded out into assignments for each user, the group role"},{"line_number":75,"context_line":"assignment entities themselves are not returned in the collection. However,"},{"line_number":76,"context_line":"in the response, the ``links`` entity section for each assignment gained by"}],"source_content_type":"text/x-c++src","patch_set":8,"id":"fad55976_0131ee0b","line":73,"in_reply_to":"fad55976_2114f2f3","updated":"2016-07-15 21:34:36.000000000","message":"I tried that in the paragraph starting line 53....is there something else you would like added?","commit_id":"22ab8a8046bb4c63bfef04212c3a8b18fd0e1d69"}]}
