)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1bcf30f2570948f69a001c7551d3dd2364ec1fa9","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"It also includes a completely new thought, so feel free to punch me in"},{"line_number":15,"context_line":"the head - that versioned discovery documents should include a"},{"line_number":16,"context_line":"collections rel link to allow clients to get from the versioned to the"},{"line_number":17,"context_line":"universioned document without having to do URL manipulation. If we can"},{"line_number":18,"context_line":"get that in, it should serve as a bridge for those clouds that are still"},{"line_number":19,"context_line":"putting versioned endpoints into the catalog for a while for backwards"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"3f1d235d_a10ee7e2","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":11},"updated":"2017-06-29 20:39:41.000000000","message":"collection (singular)?\n\nLikely I\u0027m misunderstanding some subtle distinction, but it seems like this concept was introduced via https://review.openstack.org/#/c/459405/ already, nah?","commit_id":"76e9ec6cecc64768fcd80108e6f7dcec1fdd1b46"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1bcf30f2570948f69a001c7551d3dd2364ec1fa9","unresolved":false,"context_lines":[{"line_number":14,"context_line":"It also includes a completely new thought, so feel free to punch me in"},{"line_number":15,"context_line":"the head - that versioned discovery documents should include a"},{"line_number":16,"context_line":"collections rel link to allow clients to get from the versioned to the"},{"line_number":17,"context_line":"universioned document without having to do URL manipulation. If we can"},{"line_number":18,"context_line":"get that in, it should serve as a bridge for those clouds that are still"},{"line_number":19,"context_line":"putting versioned endpoints into the catalog for a while for backwards"},{"line_number":20,"context_line":"compat reasons."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"3f1d235d_61732f82","line":17,"range":{"start_line":17,"start_character":0,"end_line":17,"end_character":12},"updated":"2017-06-29 20:39:41.000000000","message":"unversioned","commit_id":"76e9ec6cecc64768fcd80108e6f7dcec1fdd1b46"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1bcf30f2570948f69a001c7551d3dd2364ec1fa9","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Two related follow-up patches are in-work. One that adds a copy of the"},{"line_number":23,"context_line":"consuming-discovery document with all of the extra effort in support of"},{"line_number":24,"context_line":"clouds and services that to not implement these guidelines removed, so a"},{"line_number":25,"context_line":"\"perfect future state\" is easy to read. The other is a document"},{"line_number":26,"context_line":"recommending a global cloud \"profile\" that greatly reduces the API"},{"line_number":27,"context_line":"burden on clients consuming this information."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"3f1d235d_8113eb0d","line":24,"range":{"start_line":24,"start_character":25,"end_line":24,"end_character":27},"updated":"2017-06-29 20:39:41.000000000","message":"do","commit_id":"76e9ec6cecc64768fcd80108e6f7dcec1fdd1b46"}],"guidelines/consuming-discovery.rst":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"a15047136ebb2b863774dd89b153cf647e21f9f8","unresolved":false,"context_lines":[{"line_number":151,"context_line":"#. If the user has omitted ``{api-version}``, follow"},{"line_number":152,"context_line":"   :ref:`user-omitted-api-version`."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"#. Use ``{catalog-endpoint}`` as ``{discovery-endpoint}``.Note: If the"},{"line_number":155,"context_line":"   :ref:`discoverability` guidelines have been implemented, there will always"},{"line_number":156,"context_line":"   be a ``{discovery-document}`` at ``{catalog-endpoint}``."},{"line_number":157,"context_line":" "}],"source_content_type":"text/x-rst","patch_set":3,"id":"5ff73747_0cd216d3","line":154,"updated":"2017-04-26 13:38:10.000000000","message":"taking out that space and adding one in below is probably not what you wanted","commit_id":"1636a198c33013c810d21e6bff7f9a46d217b504"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"e3db3a8e91d5f7a5103823dbb34e6c32edb51388","unresolved":false,"context_lines":[{"line_number":151,"context_line":"#. If the user has omitted ``{api-version}``, follow"},{"line_number":152,"context_line":"   :ref:`user-omitted-api-version`."},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"#. Use ``{catalog-endpoint}`` as ``{discovery-endpoint}``.Note: If the"},{"line_number":155,"context_line":"   :ref:`discoverability` guidelines have been implemented, there will always"},{"line_number":156,"context_line":"   be a ``{discovery-document}`` at ``{catalog-endpoint}``."},{"line_number":157,"context_line":" "}],"source_content_type":"text/x-rst","patch_set":3,"id":"5ff73747_f3d6a127","line":154,"in_reply_to":"5ff73747_0cd216d3","updated":"2017-04-26 17:33:52.000000000","message":"Done","commit_id":"1636a198c33013c810d21e6bff7f9a46d217b504"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"a15047136ebb2b863774dd89b153cf647e21f9f8","unresolved":false,"context_lines":[{"line_number":154,"context_line":"#. Use ``{catalog-endpoint}`` as ``{discovery-endpoint}``.Note: If the"},{"line_number":155,"context_line":"   :ref:`discoverability` guidelines have been implemented, there will always"},{"line_number":156,"context_line":"   be a ``{discovery-document}`` at ``{catalog-endpoint}``."},{"line_number":157,"context_line":" "},{"line_number":158,"context_line":"#. Retrieve ``{discovery-document}`` from ``{discovery-endpoint}``."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"#. If there is no ``{discovery-document}``, attempt to find a working document."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5ff73747_8c774603","line":157,"updated":"2017-04-26 13:38:10.000000000","message":"wat","commit_id":"1636a198c33013c810d21e6bff7f9a46d217b504"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"e3db3a8e91d5f7a5103823dbb34e6c32edb51388","unresolved":false,"context_lines":[{"line_number":154,"context_line":"#. Use ``{catalog-endpoint}`` as ``{discovery-endpoint}``.Note: If the"},{"line_number":155,"context_line":"   :ref:`discoverability` guidelines have been implemented, there will always"},{"line_number":156,"context_line":"   be a ``{discovery-document}`` at ``{catalog-endpoint}``."},{"line_number":157,"context_line":" "},{"line_number":158,"context_line":"#. Retrieve ``{discovery-document}`` from ``{discovery-endpoint}``."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"#. If there is no ``{discovery-document}``, attempt to find a working document."}],"source_content_type":"text/x-rst","patch_set":3,"id":"5ff73747_d3dde542","line":157,"in_reply_to":"5ff73747_8c774603","updated":"2017-04-26 17:33:52.000000000","message":"Done","commit_id":"1636a198c33013c810d21e6bff7f9a46d217b504"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"fe050b9ffaf87bf9d889d15901725b2729af4306","unresolved":false,"context_lines":[{"line_number":395,"context_line":""},{"line_number":396,"context_line":"#. If the current ``{discovery-document}`` has a ``collection`` link in its"},{"line_number":397,"context_line":"   links list and it is the same as the ``self`` link, STOP. There is no"},{"line_number":398,"context_line":"   available better document."},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"#. If the current ``{discovery-document}`` has a ``collection`` link in its"},{"line_number":401,"context_line":"   links list and it is different from the ``self`` link, attempt to fetch a"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5ff73747_b359308f","line":398,"range":{"start_line":398,"start_character":3,"end_line":398,"end_character":28},"updated":"2017-04-26 21:43:13.000000000","message":"\"better document available\"? \"better available document\"? \"as good as your gonna get\"?","commit_id":"d94d3032bbb5856eb9944f17c8ad74e2dbd54983"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"2efd18fb75de88ec284557fed077507a548c3796","unresolved":false,"context_lines":[{"line_number":395,"context_line":""},{"line_number":396,"context_line":"#. If the current ``{discovery-document}`` has a ``collection`` link in its"},{"line_number":397,"context_line":"   links list and it is the same as the ``self`` link, STOP. There is no"},{"line_number":398,"context_line":"   available better document."},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"#. If the current ``{discovery-document}`` has a ``collection`` link in its"},{"line_number":401,"context_line":"   links list and it is different from the ``self`` link, attempt to fetch a"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5ff73747_953a86c9","line":398,"range":{"start_line":398,"start_character":3,"end_line":398,"end_character":28},"in_reply_to":"5ff73747_b359308f","updated":"2017-04-27 12:24:37.000000000","message":"I like as good as you\u0027re gonna get.","commit_id":"d94d3032bbb5856eb9944f17c8ad74e2dbd54983"}],"guidelines/consuming-version-discovery.rst":[{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"56c8e395128f64b1f08e3aa7d13039c15c0f0b03","unresolved":false,"context_lines":[{"line_number":276,"context_line":""},{"line_number":277,"context_line":"The algorithm for finding a new document is as follows:"},{"line_number":278,"context_line":""},{"line_number":279,"context_line":"#. If the current ``{discovery-document}`` has a ``collection`` link in its"},{"line_number":280,"context_line":"   links list and it is the same as the ``self`` link, STOP. There is no"},{"line_number":281,"context_line":"   better document available."},{"line_number":282,"context_line":"   available better document."}],"source_content_type":"text/x-rst","patch_set":13,"id":"df140735_07c1e780","line":279,"updated":"2017-05-31 18:25:47.000000000","message":"I remain unsure about the \"collection\" name but haven\u0027t yet come up with a suitable alternative (perhaps \"versions\" as a link rel is workable?).","commit_id":"0974fdb995797e59d43897ca909400e70d71c1e8"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"56c8e395128f64b1f08e3aa7d13039c15c0f0b03","unresolved":false,"context_lines":[{"line_number":279,"context_line":"#. If the current ``{discovery-document}`` has a ``collection`` link in its"},{"line_number":280,"context_line":"   links list and it is the same as the ``self`` link, STOP. There is no"},{"line_number":281,"context_line":"   better document available."},{"line_number":282,"context_line":"   available better document."},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"#. If the current ``{discovery-document}`` has a ``collection`` link in its"},{"line_number":285,"context_line":"   links list and it is different from the ``self`` link, attempt to fetch a"}],"source_content_type":"text/x-rst","patch_set":13,"id":"df140735_c7bacf08","line":282,"updated":"2017-05-31 18:25:47.000000000","message":"this orphaned line can go","commit_id":"0974fdb995797e59d43897ca909400e70d71c1e8"}],"guidelines/discoverability.rst":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"e80eb65c38b0645264244bd09328d335530bc362","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":".. _versioned-discovery-response:"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"A Versioned Version Discovery response would look as follows:"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":".. code-block:: json"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    GET /v2"},{"line_number":168,"context_line":"    {"},{"line_number":169,"context_line":"         \"version\": {"},{"line_number":170,"context_line":"            \"id\": \"v2.1\","},{"line_number":171,"context_line":"            \"links\": ["},{"line_number":172,"context_line":"                {"},{"line_number":173,"context_line":"                    \"href\": \"https://compute.example.com/v2/\","},{"line_number":174,"context_line":"                    \"rel\": \"self\""},{"line_number":175,"context_line":"                },"},{"line_number":176,"context_line":"                {"},{"line_number":177,"context_line":"                    \"href\": \"https://compute.example.com/\","},{"line_number":178,"context_line":"                    \"rel\": \"collection\""},{"line_number":179,"context_line":"                },"},{"line_number":180,"context_line":"            ],"},{"line_number":181,"context_line":"            \"status\": \"CURRENT\","},{"line_number":182,"context_line":"            \"max_version\": \"2.25\","},{"line_number":183,"context_line":"            \"min_version\": \"2.1\""},{"line_number":184,"context_line":"        },"},{"line_number":185,"context_line":"     }"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"The information in the ``version`` entry should be identical to the"},{"line_number":188,"context_line":"corresponding entry in the Unversioned Version Discovery."}],"source_content_type":"text/x-rst","patch_set":2,"id":"5ff73747_17e0fef9","line":185,"range":{"start_line":163,"start_character":0,"end_line":185,"end_character":6},"updated":"2017-04-25 19:21:37.000000000","message":"Forward looking, I\u0027d like to see this form die. Only use the \"versions\" list, even in the version specific endpoint (has only 1 version in the list).","commit_id":"8902c9c022f1c43f37db550468cfe4a2d4a6617b"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5f6b495e68a080c2855478062485750c5c0ff537","unresolved":false,"context_lines":[{"line_number":160,"context_line":""},{"line_number":161,"context_line":".. _versioned-discovery-response:"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"A Versioned Version Discovery response would look as follows:"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":".. code-block:: json"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    GET /v2"},{"line_number":168,"context_line":"    {"},{"line_number":169,"context_line":"         \"version\": {"},{"line_number":170,"context_line":"            \"id\": \"v2.1\","},{"line_number":171,"context_line":"            \"links\": ["},{"line_number":172,"context_line":"                {"},{"line_number":173,"context_line":"                    \"href\": \"https://compute.example.com/v2/\","},{"line_number":174,"context_line":"                    \"rel\": \"self\""},{"line_number":175,"context_line":"                },"},{"line_number":176,"context_line":"                {"},{"line_number":177,"context_line":"                    \"href\": \"https://compute.example.com/\","},{"line_number":178,"context_line":"                    \"rel\": \"collection\""},{"line_number":179,"context_line":"                },"},{"line_number":180,"context_line":"            ],"},{"line_number":181,"context_line":"            \"status\": \"CURRENT\","},{"line_number":182,"context_line":"            \"max_version\": \"2.25\","},{"line_number":183,"context_line":"            \"min_version\": \"2.1\""},{"line_number":184,"context_line":"        },"},{"line_number":185,"context_line":"     }"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"The information in the ``version`` entry should be identical to the"},{"line_number":188,"context_line":"corresponding entry in the Unversioned Version Discovery."}],"source_content_type":"text/x-rst","patch_set":2,"id":"5ff73747_62289933","line":185,"range":{"start_line":163,"start_character":0,"end_line":185,"end_character":6},"in_reply_to":"5ff73747_17e0fef9","updated":"2017-04-25 22:59:10.000000000","message":"Yah. Me too.","commit_id":"8902c9c022f1c43f37db550468cfe4a2d4a6617b"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"e80eb65c38b0645264244bd09328d335530bc362","unresolved":false,"context_lines":[{"line_number":210,"context_line":"  but any bugs discovered in the code may be fixed."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"DEPRECATED"},{"line_number":213,"context_line":"  This API will be removed in the foreseeable future. You should start"},{"line_number":214,"context_line":"  planning on using alternatives."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"EXPERIMENTAL"},{"line_number":217,"context_line":"  This API is under development (\u0027alpha\u0027), and you can expect it to change or"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5ff73747_37b65afc","line":214,"range":{"start_line":213,"start_character":0,"end_line":214,"end_character":33},"updated":"2017-04-25 19:21:37.000000000","message":"Maybe removed. I would go \"has been superseded and may be removed in the future\".","commit_id":"8902c9c022f1c43f37db550468cfe4a2d4a6617b"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5f6b495e68a080c2855478062485750c5c0ff537","unresolved":false,"context_lines":[{"line_number":210,"context_line":"  but any bugs discovered in the code may be fixed."},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"DEPRECATED"},{"line_number":213,"context_line":"  This API will be removed in the foreseeable future. You should start"},{"line_number":214,"context_line":"  planning on using alternatives."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"EXPERIMENTAL"},{"line_number":217,"context_line":"  This API is under development (\u0027alpha\u0027), and you can expect it to change or"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5ff73747_02f435ce","line":214,"range":{"start_line":213,"start_character":0,"end_line":214,"end_character":33},"in_reply_to":"5ff73747_37b65afc","updated":"2017-04-25 22:59:10.000000000","message":"Let\u0027s do that in a follow on - this is just text I copied from their existing thing.","commit_id":"8902c9c022f1c43f37db550468cfe4a2d4a6617b"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"a15047136ebb2b863774dd89b153cf647e21f9f8","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"  https://image.example.com/v1"},{"line_number":41,"context_line":"  https://image.example.com/v2"},{"line_number":42,"context_line":"  https://image.example.com/v3"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Preference for Subpaths"},{"line_number":45,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5ff73747_0710b100","line":42,"updated":"2017-04-26 13:38:10.000000000","message":"Is the implication here that there should always be at least:\n\n     https://image.example.com/v1\n\nfor every service? If so. I\u0027m not sure I like that. For a service that is microversioned from the start and will never major (because microversions) presumably \u0027v1\u0027 is superfluous.\n\nOr maybe I just think this because a) versions in urls are ugly, b) placement doesn\u0027t use them so I am prediposed.","commit_id":"1636a198c33013c810d21e6bff7f9a46d217b504"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"e3db3a8e91d5f7a5103823dbb34e6c32edb51388","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"  https://image.example.com/v1"},{"line_number":41,"context_line":"  https://image.example.com/v2"},{"line_number":42,"context_line":"  https://image.example.com/v3"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Preference for Subpaths"},{"line_number":45,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5ff73747_33c5295c","line":42,"in_reply_to":"5ff73747_0710b100","updated":"2017-04-26 17:33:52.000000000","message":"Ah - fascinating. I honestly hadn\u0027t considered/realized that a service might have no versioned endpoints and only do microversions. What does such a service put in the id field of their service?","commit_id":"1636a198c33013c810d21e6bff7f9a46d217b504"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"a15047136ebb2b863774dd89b153cf647e21f9f8","unresolved":false,"context_lines":[{"line_number":42,"context_line":"  https://image.example.com/v3"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Preference for Subpaths"},{"line_number":45,"context_line":"~~~~~~~~~~~~~~~~~~~~~~~"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"Historically each of the OpenStack services were also given a port. It is"},{"line_number":48,"context_line":"strongly recommended to not use those ports and instead use the normal port"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5ff73747_c73f6923","line":45,"updated":"2017-04-26 13:38:10.000000000","message":"This isn\u0027t really germane to the specific topic but is worth having somewhere, so yeah, sure, here\u0027s fine.","commit_id":"1636a198c33013c810d21e6bff7f9a46d217b504"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"a15047136ebb2b863774dd89b153cf647e21f9f8","unresolved":false,"context_lines":[{"line_number":73,"context_line":"~~~~~~~~~~~~~~~~~~~~~"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Each service should provide a Version Discovery API at the Unversioned Endpoint"},{"line_number":76,"context_line":"of the service. It should be exposed to all users without authentication."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"The Unversioned Version Discovery API for each service should return a list of"},{"line_number":79,"context_line":"Version Information for all of the Versioned Endpoints the service provides,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5ff73747_e786e5db","line":76,"updated":"2017-04-26 13:38:10.000000000","message":"Might want to highlight that \"without authentication\" portion a bit more, mostly because our tooling the (the auth middleware) doesn\u0027t make this simple (last I checked).","commit_id":"1636a198c33013c810d21e6bff7f9a46d217b504"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"e3db3a8e91d5f7a5103823dbb34e6c32edb51388","unresolved":false,"context_lines":[{"line_number":73,"context_line":"~~~~~~~~~~~~~~~~~~~~~"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"Each service should provide a Version Discovery API at the Unversioned Endpoint"},{"line_number":76,"context_line":"of the service. It should be exposed to all users without authentication."},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"The Unversioned Version Discovery API for each service should return a list of"},{"line_number":79,"context_line":"Version Information for all of the Versioned Endpoints the service provides,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5ff73747_a60c553b","line":76,"in_reply_to":"5ff73747_e786e5db","updated":"2017-04-26 17:33:52.000000000","message":"Done","commit_id":"1636a198c33013c810d21e6bff7f9a46d217b504"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"a15047136ebb2b863774dd89b153cf647e21f9f8","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    GET /v2"},{"line_number":168,"context_line":"    {"},{"line_number":169,"context_line":"         \"version\": {"},{"line_number":170,"context_line":"            \"id\": \"v2.1\","},{"line_number":171,"context_line":"            \"links\": ["},{"line_number":172,"context_line":"                {"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5ff73747_47bfd960","line":169,"updated":"2017-04-26 13:38:10.000000000","message":"I think it\u0027s unfortunate that we use two different schema for what amounts to the same thing. At /v2 we could have a versions doc which has one version (and only one) version (in a list).","commit_id":"1636a198c33013c810d21e6bff7f9a46d217b504"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"e3db3a8e91d5f7a5103823dbb34e6c32edb51388","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"    GET /v2"},{"line_number":168,"context_line":"    {"},{"line_number":169,"context_line":"         \"version\": {"},{"line_number":170,"context_line":"            \"id\": \"v2.1\","},{"line_number":171,"context_line":"            \"links\": ["},{"line_number":172,"context_line":"                {"}],"source_content_type":"text/x-rst","patch_set":3,"id":"5ff73747_469fd15e","line":169,"in_reply_to":"5ff73747_47bfd960","updated":"2017-04-26 17:33:52.000000000","message":"I TOTALLY agree. Let\u0027s go ahead and fix it why don\u0027t we?","commit_id":"1636a198c33013c810d21e6bff7f9a46d217b504"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"56c8e395128f64b1f08e3aa7d13039c15c0f0b03","unresolved":false,"context_lines":[{"line_number":45,"context_line":"  https://image.example.com/v2"},{"line_number":46,"context_line":"  https://image.example.com/v3"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"Additionally, the Nova Placement service at cloud ``example.com`` might have"},{"line_number":49,"context_line":"an Unversioned Endpoint at::"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"  https://placement.example.com"}],"source_content_type":"text/x-rst","patch_set":13,"id":"df140735_670f83e1","line":48,"updated":"2017-05-31 18:25:47.000000000","message":"s/Nova //","commit_id":"0974fdb995797e59d43897ca909400e70d71c1e8"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"56c8e395128f64b1f08e3aa7d13039c15c0f0b03","unresolved":false,"context_lines":[{"line_number":93,"context_line":".. note:: It is recommended that the Version Discovery API not be protected"},{"line_number":94,"context_line":"          by authentication requirements. The information returned is not"},{"line_number":95,"context_line":"          specific to a user, but is, instead, a fundamental characteristic"},{"line_number":96,"context_line":"          of the base API of the service running."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"The Unversioned Version Discovery API for each service should return a list of"},{"line_number":99,"context_line":"Version Information for all of the Base Endpoints the service provides,"}],"source_content_type":"text/x-rst","patch_set":13,"id":"df140735_a72ebb40","line":96,"updated":"2017-05-31 18:25:47.000000000","message":"+1","commit_id":"0974fdb995797e59d43897ca909400e70d71c1e8"},{"author":{"_account_id":8482,"name":"Colleen Murphy","email":"colleen@gazlene.net","username":"krinkle"},"change_message_id":"699892bf5cdbc1592597cda2d9fad18328ec63a0","unresolved":false,"context_lines":[{"line_number":93,"context_line":".. note:: It is recommended that the Version Discovery API not be protected"},{"line_number":94,"context_line":"          by authentication requirements. The information returned is not"},{"line_number":95,"context_line":"          specific to a user, but is, instead, a fundamental characteristic"},{"line_number":96,"context_line":"          of the base API of the service running."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"The Unversioned Version Discovery API for each service should return a list of"},{"line_number":99,"context_line":"Version Information for all of the Base Endpoints the service provides,"}],"source_content_type":"text/x-rst","patch_set":15,"id":"df140735_fd0c433c","line":96,"updated":"2017-05-31 20:24:20.000000000","message":"and also potentially needed to help facilitate authentication (the token request path is different between Identity v2.0 and v3)","commit_id":"081f213eeb702ad89d5f81ce91c617d32cd93901"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1bcf30f2570948f69a001c7551d3dd2364ec1fa9","unresolved":false,"context_lines":[{"line_number":18,"context_line":"Each service should have a base endpoint which is referred to as the"},{"line_number":19,"context_line":"\"Unversioned\" endpoint for the service."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":".. note:: It is highly recommended that Cloud Operators register the"},{"line_number":22,"context_line":"          Unversioned Endpoint for a service in the Keystone Catalog. If they"},{"line_number":23,"context_line":"          do, the process described in :ref:`consuming-version-discovery` will"},{"line_number":24,"context_line":"          be able to be both the most featureful for the API Consumer and the"},{"line_number":25,"context_line":"          most efficient."}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f1d235d_81888b1f","line":22,"range":{"start_line":21,"start_character":16,"end_line":22,"end_character":30},"updated":"2017-06-29 20:39:41.000000000","message":"Forgive my naïveté, but *why* do we prefer the unversioned endpoint in the catalog?  Is it assumed that the catalog entry will also include a list of supported versions, and that the consumer requests the desired version via some mechanism other than the URI?","commit_id":"76e9ec6cecc64768fcd80108e6f7dcec1fdd1b46"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1bcf30f2570948f69a001c7551d3dd2364ec1fa9","unresolved":false,"context_lines":[{"line_number":19,"context_line":"\"Unversioned\" endpoint for the service."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":".. note:: It is highly recommended that Cloud Operators register the"},{"line_number":22,"context_line":"          Unversioned Endpoint for a service in the Keystone Catalog. If they"},{"line_number":23,"context_line":"          do, the process described in :ref:`consuming-version-discovery` will"},{"line_number":24,"context_line":"          be able to be both the most featureful for the API Consumer and the"},{"line_number":25,"context_line":"          most efficient."}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f1d235d_21c9b777","line":22,"range":{"start_line":22,"start_character":52,"end_line":22,"end_character":60},"updated":"2017-06-29 20:39:41.000000000","message":"Service","commit_id":"76e9ec6cecc64768fcd80108e6f7dcec1fdd1b46"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1bcf30f2570948f69a001c7551d3dd2364ec1fa9","unresolved":false,"context_lines":[{"line_number":98,"context_line":"          before version discovery makes it harder to determine reliably"},{"line_number":99,"context_line":"          whether v2 or v3 authentication should be used."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"The Unversioned Version Discovery API for each service should return a list of"},{"line_number":102,"context_line":"Version Information for all of the Base Endpoints the service provides,"},{"line_number":103,"context_line":"along with that version\u0027s minimum and maximum microversions. These values are"},{"line_number":104,"context_line":"used by the client to discover the supported API versions."}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f1d235d_01a91b7a","line":101,"range":{"start_line":101,"start_character":4,"end_line":101,"end_character":33},"updated":"2017-06-29 20:39:41.000000000","message":"ayee","commit_id":"76e9ec6cecc64768fcd80108e6f7dcec1fdd1b46"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1bcf30f2570948f69a001c7551d3dd2364ec1fa9","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"The Unversioned Version Discovery API for each service should return a list of"},{"line_number":102,"context_line":"Version Information for all of the Base Endpoints the service provides,"},{"line_number":103,"context_line":"along with that version\u0027s minimum and maximum microversions. These values are"},{"line_number":104,"context_line":"used by the client to discover the supported API versions."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f1d235d_81b64bd9","line":103,"range":{"start_line":103,"start_character":11,"end_line":103,"end_character":15},"updated":"2017-06-29 20:39:41.000000000","message":"each","commit_id":"76e9ec6cecc64768fcd80108e6f7dcec1fdd1b46"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"b3474f72c5cb564c81929553044530e43ed533da","unresolved":false,"context_lines":[{"line_number":136,"context_line":"                      }"},{"line_number":137,"context_line":"                  ],"},{"line_number":138,"context_line":"                  \"status\": \"CURRENT\","},{"line_number":139,"context_line":"                  \"max_version\": \"5.2\","},{"line_number":140,"context_line":"                  \"min_version\": \"2.1\""},{"line_number":141,"context_line":"              },"},{"line_number":142,"context_line":"       ]"},{"line_number":143,"context_line":"    }"}],"source_content_type":"text/x-rst","patch_set":16,"id":"5f201791_70e74914","line":140,"range":{"start_line":139,"start_character":18,"end_line":140,"end_character":38},"updated":"2017-06-22 15:24:40.000000000","message":"If this is for a microversioned service, like compute, the max and min have to have the same major version number. E.g., it would have to be max\u003d2.56 and min\u003d2.1 or something like that.","commit_id":"76e9ec6cecc64768fcd80108e6f7dcec1fdd1b46"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1bcf30f2570948f69a001c7551d3dd2364ec1fa9","unresolved":false,"context_lines":[{"line_number":206,"context_line":"failures and re-attempts."},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"However, in service of getting to a perfect future from amidst an imperfect"},{"line_number":209,"context_line":"past, services that already deliver a different document on their Versioned"},{"line_number":210,"context_line":"Endpoints who are concerned with API breakage resulting from changing the"},{"line_number":211,"context_line":"payload of their Versioned Version Discovery Document from a single object"},{"line_number":212,"context_line":"named ``version`` to a list of objects named ``versions``, it can be"}],"source_content_type":"text/x-rst","patch_set":16,"id":"3f1d235d_5c27f813","line":209,"range":{"start_line":209,"start_character":6,"end_line":209,"end_character":14},"updated":"2017-06-29 20:39:41.000000000","message":"for services...\n\n(to match up grammatically with the final clause of this abysmally long sentence)","commit_id":"76e9ec6cecc64768fcd80108e6f7dcec1fdd1b46"}],"guidelines/microversion_specification.rst":[{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"fe050b9ffaf87bf9d889d15901725b2729af4306","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":".. _microversion-parse: https://pypi.python.org/pypi/microversion_parse"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Version Discovery"},{"line_number":131,"context_line":"-----------------"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"The Version API for each service should return the minimum and maximum"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5ff73747_d3cddc31","side":"PARENT","line":130,"updated":"2017-04-26 21:43:13.000000000","message":"Good move - I like this better in the version doc, as it\u0027s not microversion-specific.","commit_id":"76d540737a7d1241640783e00eff29d5f6d678b6"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"2efd18fb75de88ec284557fed077507a548c3796","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":".. _microversion-parse: https://pypi.python.org/pypi/microversion_parse"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"Version Discovery"},{"line_number":131,"context_line":"-----------------"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"The Version API for each service should return the minimum and maximum"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5ff73747_3578528e","side":"PARENT","line":130,"in_reply_to":"5ff73747_d3cddc31","updated":"2017-04-27 12:24:37.000000000","message":"\\o/","commit_id":"76d540737a7d1241640783e00eff29d5f6d678b6"}],"guidelines/version-information-schema.json":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"e80eb65c38b0645264244bd09328d335530bc362","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    \"required\":["},{"line_number":7,"context_line":"        \"status\","},{"line_number":8,"context_line":"        \"id\","},{"line_number":9,"context_line":"\t\"links\""},{"line_number":10,"context_line":"    ],"},{"line_number":11,"context_line":"    \"properties\": {"},{"line_number":12,"context_line":"\t\"status\": {"},{"line_number":13,"context_line":"\t    \"description\": \"Support and lifecycle status of the versioned endpoint.\","},{"line_number":14,"context_line":"            \"type\": \"string\","},{"line_number":15,"context_line":"            \"enum\": ["},{"line_number":16,"context_line":"\t\t\"CURRENT\","},{"line_number":17,"context_line":"\t\t\"SUPPORTED\","},{"line_number":18,"context_line":"\t\t\"EXPERIMENTAL\","},{"line_number":19,"context_line":"\t\t\"DEPRECATED\""},{"line_number":20,"context_line":"            ]"},{"line_number":21,"context_line":"\t},"},{"line_number":22,"context_line":"\t\"id\": {"},{"line_number":23,"context_line":"\t    \"description\": \"The major API version.\","},{"line_number":24,"context_line":"            \"type\": \"string\","},{"line_number":25,"context_line":"            \"pattern\": \"^v[0-9]{1,2}.?[0-9]{0,2}$\""},{"line_number":26,"context_line":"\t},"},{"line_number":27,"context_line":"\t\"links\": {"},{"line_number":28,"context_line":"\t    \"$ref\": \"http://json-schema.org/draft-04/links#\""},{"line_number":29,"context_line":"\t},"},{"line_number":30,"context_line":"\t\"max_version\": {"},{"line_number":31,"context_line":"\t    \"desciption\": \"The maximum microversion available\","},{"line_number":32,"context_line":"            \"type\": \"string\","},{"line_number":33,"context_line":"            \"pattern\": \"^[0-9]{1,2}.[0-9]{1,2}$\""},{"line_number":34,"context_line":"\t},"},{"line_number":35,"context_line":"\t\"min_version\": {"},{"line_number":36,"context_line":"\t    \"desciption\": \"The minimum microversion available\","},{"line_number":37,"context_line":"            \"type\": \"string\","},{"line_number":38,"context_line":"            \"pattern\": \"^[0-9]{1,2}.[0-9]{1,2}$\""},{"line_number":39,"context_line":"\t}"},{"line_number":40,"context_line":"    }"},{"line_number":41,"context_line":"}"}],"source_content_type":"application/json","patch_set":2,"id":"5ff73747_b79eea60","line":39,"range":{"start_line":9,"start_character":0,"end_line":39,"end_character":2},"updated":"2017-04-25 19:21:37.000000000","message":"BIKESHED: Weird mix of tabs and spaces here.","commit_id":"8902c9c022f1c43f37db550468cfe4a2d4a6617b"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"5f6b495e68a080c2855478062485750c5c0ff537","unresolved":false,"context_lines":[{"line_number":6,"context_line":"    \"required\":["},{"line_number":7,"context_line":"        \"status\","},{"line_number":8,"context_line":"        \"id\","},{"line_number":9,"context_line":"\t\"links\""},{"line_number":10,"context_line":"    ],"},{"line_number":11,"context_line":"    \"properties\": {"},{"line_number":12,"context_line":"\t\"status\": {"},{"line_number":13,"context_line":"\t    \"description\": \"Support and lifecycle status of the versioned endpoint.\","},{"line_number":14,"context_line":"            \"type\": \"string\","},{"line_number":15,"context_line":"            \"enum\": ["},{"line_number":16,"context_line":"\t\t\"CURRENT\","},{"line_number":17,"context_line":"\t\t\"SUPPORTED\","},{"line_number":18,"context_line":"\t\t\"EXPERIMENTAL\","},{"line_number":19,"context_line":"\t\t\"DEPRECATED\""},{"line_number":20,"context_line":"            ]"},{"line_number":21,"context_line":"\t},"},{"line_number":22,"context_line":"\t\"id\": {"},{"line_number":23,"context_line":"\t    \"description\": \"The major API version.\","},{"line_number":24,"context_line":"            \"type\": \"string\","},{"line_number":25,"context_line":"            \"pattern\": \"^v[0-9]{1,2}.?[0-9]{0,2}$\""},{"line_number":26,"context_line":"\t},"},{"line_number":27,"context_line":"\t\"links\": {"},{"line_number":28,"context_line":"\t    \"$ref\": \"http://json-schema.org/draft-04/links#\""},{"line_number":29,"context_line":"\t},"},{"line_number":30,"context_line":"\t\"max_version\": {"},{"line_number":31,"context_line":"\t    \"desciption\": \"The maximum microversion available\","},{"line_number":32,"context_line":"            \"type\": \"string\","},{"line_number":33,"context_line":"            \"pattern\": \"^[0-9]{1,2}.[0-9]{1,2}$\""},{"line_number":34,"context_line":"\t},"},{"line_number":35,"context_line":"\t\"min_version\": {"},{"line_number":36,"context_line":"\t    \"desciption\": \"The minimum microversion available\","},{"line_number":37,"context_line":"            \"type\": \"string\","},{"line_number":38,"context_line":"            \"pattern\": \"^[0-9]{1,2}.[0-9]{1,2}$\""},{"line_number":39,"context_line":"\t}"},{"line_number":40,"context_line":"    }"},{"line_number":41,"context_line":"}"}],"source_content_type":"application/json","patch_set":2,"id":"5ff73747_e21b8918","line":39,"range":{"start_line":9,"start_character":0,"end_line":39,"end_character":2},"in_reply_to":"5ff73747_b79eea60","updated":"2017-04-25 22:59:10.000000000","message":"I blame emacs.","commit_id":"8902c9c022f1c43f37db550468cfe4a2d4a6617b"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1bcf30f2570948f69a001c7551d3dd2364ec1fa9","unresolved":false,"context_lines":[{"line_number":22,"context_line":"        \"id\": {"},{"line_number":23,"context_line":"            \"description\": \"The major API version.\","},{"line_number":24,"context_line":"            \"type\": \"string\","},{"line_number":25,"context_line":"            \"pattern\": \"^v[0-9]{1,2}.?[0-9]{0,2}$\""},{"line_number":26,"context_line":"        },"},{"line_number":27,"context_line":"        \"links\": {"},{"line_number":28,"context_line":"            \"$ref\": \"http://json-schema.org/draft-04/links#\""}],"source_content_type":"application/json","patch_set":16,"id":"3f1d235d_7cd07451","line":25,"range":{"start_line":25,"start_character":23,"end_line":25,"end_character":50},"updated":"2017-06-29 20:39:41.000000000","message":"Couple things here.\n\n- While I understand it\u0027s not always the case for JSON schema, unescaped \u0027.\u0027 *can* match \u0027any character\u0027.  (I tried it in python with jsonschema.Draft4Validator and that\u0027s the case.)  So the \u0027.\u0027 should be \u0027\\\\.\u0027\n- Assuming the above is fixed, this will still match some things I don\u0027t think you intended, including: \u0027v1.\u0027 (trailing period) and \u0027v1234\u0027 (four digits, no period).\n\nBased on the other docs ([1], referred to by [2]), I got the impression that the full \u0027vX.Y\u0027 format was required here (just not in the URI).  If so, this might be better:\n\n \"^v[0-9]{1,2}\\\\.[0-9]{1,2}$\"\n\nIf the \u0027.Y\u0027 part is indeed optional, suggest:\n\n \"^v[0-9]{1,2}(\\\\.[0-9]{1,2})?$\"\n\nAlso, are you sure you want to restrict the number of digits, at least in X?  I mean, sure, v123.45 may be a long way in the future, but similar thinking got us Y2K.  So I\u0027m suggesting replacing (at least the first) \u0027{1,2}\u0027 with \u0027+\u0027.\n\n(NB: All of the above will still permit goofiness like \u0027v01.20\u0027; not sure how hard you want to try to restrict those.)\n\n[1] https://review.openstack.org/#/c/459710/16/guidelines/microversion_specification.rst@19\n[2] https://review.openstack.org/#/c/459710/16/guidelines/discoverability.rst@148","commit_id":"76e9ec6cecc64768fcd80108e6f7dcec1fdd1b46"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1bcf30f2570948f69a001c7551d3dd2364ec1fa9","unresolved":false,"context_lines":[{"line_number":30,"context_line":"        \"max_version\": {"},{"line_number":31,"context_line":"            \"desciption\": \"The maximum microversion available\","},{"line_number":32,"context_line":"            \"type\": \"string\","},{"line_number":33,"context_line":"            \"pattern\": \"^[0-9]{1,2}.[0-9]{1,2}$\""},{"line_number":34,"context_line":"        },"},{"line_number":35,"context_line":"        \"min_version\": {"},{"line_number":36,"context_line":"            \"desciption\": \"The minimum microversion available\","}],"source_content_type":"application/json","patch_set":16,"id":"3f1d235d_dc0428c9","line":33,"range":{"start_line":33,"start_character":25,"end_line":33,"end_character":36},"updated":"2017-06-29 20:39:41.000000000","message":"Ditto \u0027\\\\.\u0027.\n\nDitto limiting number of digits.","commit_id":"76e9ec6cecc64768fcd80108e6f7dcec1fdd1b46"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"1bcf30f2570948f69a001c7551d3dd2364ec1fa9","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        \"min_version\": {"},{"line_number":36,"context_line":"            \"desciption\": \"The minimum microversion available\","},{"line_number":37,"context_line":"            \"type\": \"string\","},{"line_number":38,"context_line":"            \"pattern\": \"^[0-9]{1,2}.[0-9]{1,2}$\""},{"line_number":39,"context_line":"        }"},{"line_number":40,"context_line":"    }"},{"line_number":41,"context_line":"}"}],"source_content_type":"application/json","patch_set":16,"id":"3f1d235d_bc096cde","line":38,"range":{"start_line":38,"start_character":25,"end_line":38,"end_character":36},"updated":"2017-06-29 20:39:41.000000000","message":"Ditto above","commit_id":"76e9ec6cecc64768fcd80108e6f7dcec1fdd1b46"}],"guidelines/versioned-discovery-schema.json":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"e80eb65c38b0645264244bd09328d335530bc362","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    \"required\": [\"version\"],"},{"line_number":6,"context_line":"    \"additionalProperties\": false,"},{"line_number":7,"context_line":"    \"properties\": {"},{"line_number":8,"context_line":"\t\"version\": {"},{"line_number":9,"context_line":"            \"$ref\": \"version-information-schema.json#\""},{"line_number":10,"context_line":"\t}"},{"line_number":11,"context_line":"    }"},{"line_number":12,"context_line":"}"}],"source_content_type":"application/json","patch_set":2,"id":"5ff73747_778aa21b","line":11,"range":{"start_line":8,"start_character":0,"end_line":11,"end_character":5},"updated":"2017-04-25 19:21:37.000000000","message":"Same as other bikeshed comment.","commit_id":"8902c9c022f1c43f37db550468cfe4a2d4a6617b"}]}
