)]}'
{"api-ref/source/v3/authenticate-v3.inc":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"159f03375c48fb69885ebe7c1dd17549e8e82433","unresolved":false,"context_lines":[{"line_number":16,"context_line":"the token can be unscoped. You cannot scope a token to multiple scope targets."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"In the case of multi-factor authentication (MFA) more than one authentication"},{"line_number":19,"context_line":"method needs to be supplied to authenticate. As of v3.11 a failure due to MFA"},{"line_number":20,"context_line":"rules only partially being met will result in an auth receipt ID being returned"},{"line_number":21,"context_line":"in the response header ``Openstack-Auth-Receipt``, and a response body that"},{"line_number":22,"context_line":"details the receipt itself and the missing authentication methods. Supplying"}],"source_content_type":"text/x-c++src","patch_set":3,"id":"dfd5e7cf_de2169fd","line":19,"range":{"start_line":19,"start_character":51,"end_line":19,"end_character":56},"updated":"2019-01-09 15:15:52.000000000","message":"I think we need to bump this","commit_id":"799aab9782f34e81cce7c5df38247204aab2d123"},{"author":{"_account_id":10420,"name":"Adrian Turjak","email":"devs+openstack@uncaught-exceptions.com","username":"adriant"},"change_message_id":"cb90d5bf24e84587e534a3bfc17666fb8fe77510","unresolved":false,"context_lines":[{"line_number":16,"context_line":"the token can be unscoped. You cannot scope a token to multiple scope targets."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"In the case of multi-factor authentication (MFA) more than one authentication"},{"line_number":19,"context_line":"method needs to be supplied to authenticate. As of v3.11 a failure due to MFA"},{"line_number":20,"context_line":"rules only partially being met will result in an auth receipt ID being returned"},{"line_number":21,"context_line":"in the response header ``Openstack-Auth-Receipt``, and a response body that"},{"line_number":22,"context_line":"details the receipt itself and the missing authentication methods. Supplying"}],"source_content_type":"text/x-c++src","patch_set":3,"id":"dfd5e7cf_a091d69b","line":19,"range":{"start_line":19,"start_character":51,"end_line":19,"end_character":56},"in_reply_to":"dfd5e7cf_de2169fd","updated":"2019-01-10 02:42:34.000000000","message":"Done","commit_id":"799aab9782f34e81cce7c5df38247204aab2d123"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"159f03375c48fb69885ebe7c1dd17549e8e82433","unresolved":false,"context_lines":[{"line_number":23,"context_line":"the auth receipt ID in the ``Openstack-Auth-Receipt`` header in follow-up"},{"line_number":24,"context_line":"authentication request, with the missing authentication methods, will result in"},{"line_number":25,"context_line":"a valid token by reusing the successful methods from the first request. This"},{"line_number":26,"context_line":"allows MFA authentication to be a multi-step process."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Tokens have IDs, which the Identity API returns in the"},{"line_number":29,"context_line":"``X-Subject-Token`` response header."}],"source_content_type":"text/x-c++src","patch_set":3,"id":"dfd5e7cf_de764907","line":26,"updated":"2019-01-09 15:15:52.000000000","message":"I would move this section down to after X-Subject-Token and X-Auth-Token have been introduced","commit_id":"799aab9782f34e81cce7c5df38247204aab2d123"},{"author":{"_account_id":10420,"name":"Adrian Turjak","email":"devs+openstack@uncaught-exceptions.com","username":"adriant"},"change_message_id":"cb90d5bf24e84587e534a3bfc17666fb8fe77510","unresolved":false,"context_lines":[{"line_number":23,"context_line":"the auth receipt ID in the ``Openstack-Auth-Receipt`` header in follow-up"},{"line_number":24,"context_line":"authentication request, with the missing authentication methods, will result in"},{"line_number":25,"context_line":"a valid token by reusing the successful methods from the first request. This"},{"line_number":26,"context_line":"allows MFA authentication to be a multi-step process."},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"Tokens have IDs, which the Identity API returns in the"},{"line_number":29,"context_line":"``X-Subject-Token`` response header."}],"source_content_type":"text/x-c++src","patch_set":3,"id":"dfd5e7cf_009302a5","line":26,"in_reply_to":"dfd5e7cf_de764907","updated":"2019-01-10 02:42:34.000000000","message":"Done","commit_id":"799aab9782f34e81cce7c5df38247204aab2d123"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"159f03375c48fb69885ebe7c1dd17549e8e82433","unresolved":false,"context_lines":[{"line_number":635,"context_line":"   :language: javascript"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"Multi-Step Password and TOTP authentication"},{"line_number":639,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":".. rest_method::  POST /v3/auth/tokens"}],"source_content_type":"text/x-c++src","patch_set":3,"id":"dfd5e7cf_7eeddd89","line":638,"range":{"start_line":638,"start_character":11,"end_line":638,"end_character":28},"updated":"2019-01-09 15:15:52.000000000","message":"In theory this shouldn\u0027t be limited to these two methods, would be better for the description to be a bit more general I think. You can still use password and totp as the example requests.","commit_id":"799aab9782f34e81cce7c5df38247204aab2d123"},{"author":{"_account_id":10420,"name":"Adrian Turjak","email":"devs+openstack@uncaught-exceptions.com","username":"adriant"},"change_message_id":"cb90d5bf24e84587e534a3bfc17666fb8fe77510","unresolved":false,"context_lines":[{"line_number":635,"context_line":"   :language: javascript"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"Multi-Step Password and TOTP authentication"},{"line_number":639,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":".. rest_method::  POST /v3/auth/tokens"}],"source_content_type":"text/x-c++src","patch_set":3,"id":"dfd5e7cf_bd54a122","line":638,"range":{"start_line":638,"start_character":11,"end_line":638,"end_character":28},"in_reply_to":"dfd5e7cf_7eeddd89","updated":"2019-01-10 02:42:34.000000000","message":"Will amend the title a bit, and include an extra line in the below text.","commit_id":"799aab9782f34e81cce7c5df38247204aab2d123"},{"author":{"_account_id":10420,"name":"Adrian Turjak","email":"devs+openstack@uncaught-exceptions.com","username":"adriant"},"change_message_id":"cb90d5bf24e84587e534a3bfc17666fb8fe77510","unresolved":false,"context_lines":[{"line_number":703,"context_line":""},{"line_number":704,"context_line":".. rest_status_code:: success status.yaml"},{"line_number":705,"context_line":""},{"line_number":706,"context_line":"  - 201"},{"line_number":707,"context_line":""},{"line_number":708,"context_line":".. rest_status_code:: error status.yaml"},{"line_number":709,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":3,"id":"dfd5e7cf_a021d6fd","line":706,"range":{"start_line":706,"start_character":4,"end_line":706,"end_character":7},"updated":"2019-01-10 02:42:34.000000000","message":"have also changed this to 401, because in this particular case 401 is Success.","commit_id":"799aab9782f34e81cce7c5df38247204aab2d123"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"159f03375c48fb69885ebe7c1dd17549e8e82433","unresolved":false,"context_lines":[{"line_number":708,"context_line":".. rest_status_code:: error status.yaml"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"  - 400"},{"line_number":711,"context_line":"  - 401"},{"line_number":712,"context_line":"  - 403"},{"line_number":713,"context_line":"  - 404"},{"line_number":714,"context_line":"  - 405"}],"source_content_type":"text/x-c++src","patch_set":3,"id":"dfd5e7cf_9e63e11a","line":711,"updated":"2019-01-09 15:15:52.000000000","message":"The text for this doesn\u0027t well describe why an MFA request might emit this","commit_id":"799aab9782f34e81cce7c5df38247204aab2d123"},{"author":{"_account_id":10420,"name":"Adrian Turjak","email":"devs+openstack@uncaught-exceptions.com","username":"adriant"},"change_message_id":"cb90d5bf24e84587e534a3bfc17666fb8fe77510","unresolved":false,"context_lines":[{"line_number":708,"context_line":".. rest_status_code:: error status.yaml"},{"line_number":709,"context_line":""},{"line_number":710,"context_line":"  - 400"},{"line_number":711,"context_line":"  - 401"},{"line_number":712,"context_line":"  - 403"},{"line_number":713,"context_line":"  - 404"},{"line_number":714,"context_line":"  - 405"}],"source_content_type":"text/x-c++src","patch_set":3,"id":"dfd5e7cf_c01c1ac3","line":711,"in_reply_to":"dfd5e7cf_9e63e11a","updated":"2019-01-10 02:42:34.000000000","message":"amusingly... the text: \"User must authenticate before making a request.\" is actually rather useless for ALL of these token API calls. If you are trying to get a token, the failure isn\u0027t because you weren\u0027t already authenticated...\n\nI\u0027ll add a couple of auth_receipt variants of 401, but we should probably consider beyond this patch adding a better 401 reason to all the auth attempt examples.","commit_id":"799aab9782f34e81cce7c5df38247204aab2d123"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"159f03375c48fb69885ebe7c1dd17549e8e82433","unresolved":false,"context_lines":[{"line_number":711,"context_line":"  - 401"},{"line_number":712,"context_line":"  - 403"},{"line_number":713,"context_line":"  - 404"},{"line_number":714,"context_line":"  - 405"},{"line_number":715,"context_line":"  - 409"},{"line_number":716,"context_line":"  - 413"},{"line_number":717,"context_line":"  - 415"},{"line_number":718,"context_line":"  - 503"},{"line_number":719,"context_line":""},{"line_number":720,"context_line":"Auth Receipt Example"},{"line_number":721,"context_line":"~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-c++src","patch_set":3,"id":"dfd5e7cf_1e77f1d6","line":718,"range":{"start_line":714,"start_character":2,"end_line":718,"end_character":7},"updated":"2019-01-09 15:15:52.000000000","message":"Don\u0027t include these","commit_id":"799aab9782f34e81cce7c5df38247204aab2d123"},{"author":{"_account_id":10420,"name":"Adrian Turjak","email":"devs+openstack@uncaught-exceptions.com","username":"adriant"},"change_message_id":"cb90d5bf24e84587e534a3bfc17666fb8fe77510","unresolved":false,"context_lines":[{"line_number":711,"context_line":"  - 401"},{"line_number":712,"context_line":"  - 403"},{"line_number":713,"context_line":"  - 404"},{"line_number":714,"context_line":"  - 405"},{"line_number":715,"context_line":"  - 409"},{"line_number":716,"context_line":"  - 413"},{"line_number":717,"context_line":"  - 415"},{"line_number":718,"context_line":"  - 503"},{"line_number":719,"context_line":""},{"line_number":720,"context_line":"Auth Receipt Example"},{"line_number":721,"context_line":"~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-c++src","patch_set":3,"id":"dfd5e7cf_1d3b6deb","line":718,"range":{"start_line":714,"start_character":2,"end_line":718,"end_character":7},"in_reply_to":"dfd5e7cf_1e77f1d6","updated":"2019-01-10 02:42:34.000000000","message":"Done","commit_id":"799aab9782f34e81cce7c5df38247204aab2d123"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"159f03375c48fb69885ebe7c1dd17549e8e82433","unresolved":false,"context_lines":[{"line_number":790,"context_line":"  - 401"},{"line_number":791,"context_line":"  - 403"},{"line_number":792,"context_line":"  - 404"},{"line_number":793,"context_line":"  - 405"},{"line_number":794,"context_line":"  - 409"},{"line_number":795,"context_line":"  - 413"},{"line_number":796,"context_line":"  - 415"},{"line_number":797,"context_line":"  - 503"},{"line_number":798,"context_line":""},{"line_number":799,"context_line":"Project-Scoped Password and TOTP Example"},{"line_number":800,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-c++src","patch_set":3,"id":"dfd5e7cf_1e25b1c2","line":797,"range":{"start_line":793,"start_character":2,"end_line":797,"end_character":7},"updated":"2019-01-09 15:15:52.000000000","message":"Don\u0027t include these","commit_id":"799aab9782f34e81cce7c5df38247204aab2d123"},{"author":{"_account_id":10420,"name":"Adrian Turjak","email":"devs+openstack@uncaught-exceptions.com","username":"adriant"},"change_message_id":"cb90d5bf24e84587e534a3bfc17666fb8fe77510","unresolved":false,"context_lines":[{"line_number":790,"context_line":"  - 401"},{"line_number":791,"context_line":"  - 403"},{"line_number":792,"context_line":"  - 404"},{"line_number":793,"context_line":"  - 405"},{"line_number":794,"context_line":"  - 409"},{"line_number":795,"context_line":"  - 413"},{"line_number":796,"context_line":"  - 415"},{"line_number":797,"context_line":"  - 503"},{"line_number":798,"context_line":""},{"line_number":799,"context_line":"Project-Scoped Password and TOTP Example"},{"line_number":800,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-c++src","patch_set":3,"id":"dfd5e7cf_20572605","line":797,"range":{"start_line":793,"start_character":2,"end_line":797,"end_character":7},"in_reply_to":"dfd5e7cf_1e25b1c2","updated":"2019-01-10 02:42:34.000000000","message":"Done","commit_id":"799aab9782f34e81cce7c5df38247204aab2d123"},{"author":{"_account_id":10420,"name":"Adrian Turjak","email":"devs+openstack@uncaught-exceptions.com","username":"adriant"},"change_message_id":"166f3d53b98dd56dffc3809389c59b4b8bafe036","unresolved":false,"context_lines":[{"line_number":23,"context_line":"rules only partially being met will result in an auth receipt ID being returned"},{"line_number":24,"context_line":"in the response header ``Openstack-Auth-Receipt``, and a response body that"},{"line_number":25,"context_line":"details the receipt itself and the missing authentication methods. Supplying"},{"line_number":26,"context_line":"the auth receipt ID in the ``Openstack-Auth-Receipt`` header in follow-up"},{"line_number":27,"context_line":"authentication request, with the missing authentication methods, will result in"},{"line_number":28,"context_line":"a valid token by reusing the successful methods from the first request. This"},{"line_number":29,"context_line":"allows MFA authentication to be a multi-step process."},{"line_number":30,"context_line":""}],"source_content_type":"text/x-c++src","patch_set":6,"id":"bfdaf3ff_accf5854","line":27,"range":{"start_line":26,"start_character":61,"end_line":27,"end_character":22},"updated":"2019-01-18 02:14:14.000000000","message":"\"requests\" or \"in \u0027a\u0027 follow-up\"","commit_id":"36c3ace8d8e765b8002dba7ec238f5b40f8fe060"}],"api-ref/source/v3/parameters.yaml":[{"author":{"_account_id":10420,"name":"Adrian Turjak","email":"devs+openstack@uncaught-exceptions.com","username":"adriant"},"change_message_id":"4815e2bf0a2d4159240595114c1ea8944a7b4833","unresolved":false,"context_lines":[{"line_number":1474,"context_line":""},{"line_number":1475,"context_line":"    For example, ``2015-08-27T09:49:58.000000Z``."},{"line_number":1476,"context_line":""},{"line_number":1477,"context_line":"    A ``null`` value indicates that the token never expires."},{"line_number":1478,"context_line":"  in: body"},{"line_number":1479,"context_line":"  required: true"},{"line_number":1480,"context_line":"  type: string"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3f79a3b5_6ceb1111","line":1477,"range":{"start_line":1477,"start_character":40,"end_line":1477,"end_character":45},"updated":"2018-10-31 00:59:24.000000000","message":"receipt","commit_id":"2cd262576c7e35767da35d2f22ee0d038c231953"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0734087546446aa4627ae6815da2faca08b254dc","unresolved":false,"context_lines":[{"line_number":514,"context_line":"  in: body"},{"line_number":515,"context_line":"  required: true"},{"line_number":516,"context_line":"  type: array"},{"line_number":517,"context_line":"auth_methods_receipt:"},{"line_number":518,"context_line":"  description: |"},{"line_number":519,"context_line":"    The authentication methods, which are commonly ``password``,"},{"line_number":520,"context_line":"    ``totp``, or other methods.  Indicates the accumulated set of"}],"source_content_type":"text/x-yaml","patch_set":9,"id":"9fdfeff1_98c19531","line":517,"range":{"start_line":517,"start_character":0,"end_line":517,"end_character":20},"updated":"2019-01-24 23:08:23.000000000","message":"A release or two ago, we attempted to establish a convention for naming these so that it was easier to figure out what exactly they were used for.\n\nLine 1357 is an example of the convention. This is something we can consider doing in a follow up.","commit_id":"6564b40641101135c85f25b12e1209d66e816a52"}],"api-ref/source/v3/status.yaml":[{"author":{"_account_id":10420,"name":"Adrian Turjak","email":"devs+openstack@uncaught-exceptions.com","username":"adriant"},"change_message_id":"cb90d5bf24e84587e534a3bfc17666fb8fe77510","unresolved":false,"context_lines":[{"line_number":27,"context_line":"401:"},{"line_number":28,"context_line":"  default: |"},{"line_number":29,"context_line":"    User must authenticate before making a request."},{"line_number":30,"context_line":"  auth_failed: |"},{"line_number":31,"context_line":"    Authentication attempt has failed."},{"line_number":32,"context_line":"  auth_receipt: |"},{"line_number":33,"context_line":"    User has successfully supplied some auth methods, but not enough for full"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"dfd5e7cf_2b5dc7e8","line":30,"range":{"start_line":30,"start_character":2,"end_line":30,"end_character":13},"updated":"2019-01-10 02:42:34.000000000","message":"Colleen, this (or a better worded version) may be a better 401 reason to show for the token attempts in another patch.","commit_id":"8fb7ac6944bed64475b4917cf8bd8d8518069a3b"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"3da6d1491afd51a23218d15b6e1deba46f889b69","unresolved":false,"context_lines":[{"line_number":27,"context_line":"401:"},{"line_number":28,"context_line":"  default: |"},{"line_number":29,"context_line":"    User must authenticate before making a request."},{"line_number":30,"context_line":"  auth_failed: |"},{"line_number":31,"context_line":"    Authentication attempt has failed."},{"line_number":32,"context_line":"  auth_receipt: |"},{"line_number":33,"context_line":"    User has successfully supplied some auth methods, but not enough for full"}],"source_content_type":"text/x-yaml","patch_set":4,"id":"dfd5e7cf_832e1741","line":30,"range":{"start_line":30,"start_character":2,"end_line":30,"end_character":13},"in_reply_to":"dfd5e7cf_2b5dc7e8","updated":"2019-01-10 10:07:22.000000000","message":"Agreed, thanks for this","commit_id":"8fb7ac6944bed64475b4917cf8bd8d8518069a3b"}],"doc/source/admin/multi-factor-authentication.rst":[{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"159f03375c48fb69885ebe7c1dd17549e8e82433","unresolved":false,"context_lines":[{"line_number":64,"context_line":"set, the User-Option may be set to ``False``."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Using MFA"},{"line_number":67,"context_line":"---------"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Multi-Factor Authentication with Keystone can be used in two ways, either you"},{"line_number":70,"context_line":"treat it like current single method authentication and provide all the details"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfd5e7cf_52c1ed7f","line":67,"updated":"2019-01-09 15:15:52.000000000","message":"I\u0027d prefer if this section went in the user guide, with a link to it from this admin guide.","commit_id":"799aab9782f34e81cce7c5df38247204aab2d123"},{"author":{"_account_id":10420,"name":"Adrian Turjak","email":"devs+openstack@uncaught-exceptions.com","username":"adriant"},"change_message_id":"cb90d5bf24e84587e534a3bfc17666fb8fe77510","unresolved":false,"context_lines":[{"line_number":64,"context_line":"set, the User-Option may be set to ``False``."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"Using MFA"},{"line_number":67,"context_line":"---------"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Multi-Factor Authentication with Keystone can be used in two ways, either you"},{"line_number":70,"context_line":"treat it like current single method authentication and provide all the details"}],"source_content_type":"text/x-rst","patch_set":3,"id":"dfd5e7cf_3d49918a","line":67,"in_reply_to":"dfd5e7cf_52c1ed7f","updated":"2019-01-10 02:42:34.000000000","message":"Good idea.","commit_id":"799aab9782f34e81cce7c5df38247204aab2d123"}],"doc/source/admin/resource-options.rst":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0734087546446aa4627ae6815da2faca08b254dc","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    data structure."},{"line_number":44,"context_line":""},{"line_number":45,"context_line":".. _ignore_change_password_upon_first_use:"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"ignore_change_password_upon_first_use"},{"line_number":48,"context_line":"-------------------------------------"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fdfeff1_988e75ce","line":46,"updated":"2019-01-24 23:08:23.000000000","message":"Most of this looks like it could have been its own change.","commit_id":"6564b40641101135c85f25b12e1209d66e816a52"}],"doc/source/user/multi-factor-authentication.rst":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0734087546446aa4627ae6815da2faca08b254dc","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Configuring MFA"},{"line_number":8,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":9,"context_line":""},{"line_number":10,"context_line":"Configuring MFA right now has to be done entirely by an admin, for how to do"},{"line_number":11,"context_line":"that, see :ref:`multi_factor_authentication`."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Using MFA"}],"source_content_type":"text/x-rst","patch_set":9,"id":"9fdfeff1_f846a17c","line":10,"range":{"start_line":10,"start_character":56,"end_line":10,"end_character":61},"updated":"2019-01-24 23:08:23.000000000","message":"We\u0027re pretty good at overloading terms. For additional clarity, I would mind saying \"system administrator\" just to make it clear we don\u0027t expose this to other \"admins\" that have roles on domains or projects.\n\nBut this is something we can do in a followup.","commit_id":"6564b40641101135c85f25b12e1209d66e816a52"}]}
