)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16011,"name":"James Denton","email":"james.denton@outlook.com","username":"busterswt"},"change_message_id":"b3aca5181440f6bc35220a19a988d22dbd4fc769","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"af6c77f7_bc5b91eb","updated":"2025-12-09 15:13:40.000000000","message":"Fantastic addition to the documentation! Thanks, Doug!","commit_id":"50f0f023bdd23bea8b9c21823a569a159af9ebeb"},{"author":{"_account_id":5890,"name":"Doug Goldstein","email":"cardoe@cardoe.com","username":"cardoe"},"change_message_id":"3b6172312b625bdb17df1178432a74e645633fa5","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6ff091e0_867ff4db","updated":"2025-12-08 18:15:22.000000000","message":"Here\u0027s a rendered copy of the docs: https://cardoe.com/keystone/improve-federated-mapping-docs/admin/federation/mapping_combinations.html","commit_id":"50f0f023bdd23bea8b9c21823a569a159af9ebeb"},{"author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"change_message_id":"f7ae7d817099f56e6211b54f3059ae333fb5c225","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"b0d30bd5_4b3ded94","updated":"2025-12-16 13:06:58.000000000","message":"Thanks!","commit_id":"50f0f023bdd23bea8b9c21823a569a159af9ebeb"}],"doc/source/admin/federation/mapping_combinations.rst":[{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"08c88de08f54bd434e78624998abd5b3a4d28f83","unresolved":true,"context_lines":[{"line_number":38,"context_line":".. _important-prerequisites:"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Important Prerequisites"},{"line_number":41,"context_line":"------------------------"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Before creating federated mappings, it\u0027s critical to understand how keystone"},{"line_number":44,"context_line":"handles different resource types during federated authentication. The behavior"}],"source_content_type":"text/x-rst","patch_set":1,"id":"a1952811_fbc1bcc2","line":41,"updated":"2025-12-12 18:25:58.000000000","message":"```suggestion\n-----------------------\n```","commit_id":"50f0f023bdd23bea8b9c21823a569a159af9ebeb"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"08c88de08f54bd434e78624998abd5b3a4d28f83","unresolved":true,"context_lines":[{"line_number":1170,"context_line":"mapping is later changed."},{"line_number":1171,"context_line":""},{"line_number":1172,"context_line":"Auto-Provisioning Example"},{"line_number":1173,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":1174,"context_line":""},{"line_number":1175,"context_line":"Consider the following mapping that auto-provisions projects:"},{"line_number":1176,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"e059ea3e_2931ae2f","line":1173,"updated":"2025-12-12 18:25:58.000000000","message":"```suggestion\n~~~~~~~~~~~~~~~~~~~~~~~~~\n```","commit_id":"50f0f023bdd23bea8b9c21823a569a159af9ebeb"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"08c88de08f54bd434e78624998abd5b3a4d28f83","unresolved":true,"context_lines":[{"line_number":1306,"context_line":"   be created on subsequent authentications."},{"line_number":1307,"context_line":""},{"line_number":1308,"context_line":"Combining Projects with Groups"},{"line_number":1309,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":1310,"context_line":""},{"line_number":1311,"context_line":"You can mix ``groups`` and ``projects`` in the same mapping. Projects provide"},{"line_number":1312,"context_line":"direct role assignments (persistent), while groups provide ephemeral memberships:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"0c3b3f51_ebaf5915","line":1309,"updated":"2025-12-12 18:25:58.000000000","message":"```suggestion\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n```","commit_id":"50f0f023bdd23bea8b9c21823a569a159af9ebeb"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"08c88de08f54bd434e78624998abd5b3a4d28f83","unresolved":true,"context_lines":[{"line_number":1368,"context_line":"See `Important Prerequisites`_ for details on the differences between persistent assignments and ephemeral group memberships."},{"line_number":1369,"context_line":""},{"line_number":1370,"context_line":"Troubleshooting Federation Mappings"},{"line_number":1371,"context_line":"------------------------------------"},{"line_number":1372,"context_line":""},{"line_number":1373,"context_line":"Common Issues and Solutions"},{"line_number":1374,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":1,"id":"94b0aec6_52823ac3","line":1371,"updated":"2025-12-12 18:25:58.000000000","message":"```suggestion\n-----------------------------------\n```","commit_id":"50f0f023bdd23bea8b9c21823a569a159af9ebeb"},{"author":{"_account_id":37598,"name":"Ivan Anfimov","display_name":"Ivan Anfimov","email":"lazekteam@gmail.com","username":"anfimovir"},"change_message_id":"08c88de08f54bd434e78624998abd5b3a4d28f83","unresolved":true,"context_lines":[{"line_number":1371,"context_line":"------------------------------------"},{"line_number":1372,"context_line":""},{"line_number":1373,"context_line":"Common Issues and Solutions"},{"line_number":1374,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":1375,"context_line":""},{"line_number":1376,"context_line":"**Problem: Authentication fails with 401 Unauthorized**"},{"line_number":1377,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"53717550_6acd3c4f","line":1374,"updated":"2025-12-12 18:25:58.000000000","message":"```suggestion\n~~~~~~~~~~~~~~~~~~~~~~~~~~~\n```","commit_id":"50f0f023bdd23bea8b9c21823a569a159af9ebeb"}]}
