)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"e96941292acf2de0285a76a501b32377c0767639","unresolved":false,"context_lines":[{"line_number":19,"context_line":"But for the error response, the error info should be in the"},{"line_number":20,"context_line":"response body, not headers. So this specification adds"},{"line_number":21,"context_line":"description of response body also. And the response body is"},{"line_number":22,"context_line":"wbackward compatible with existed implementation also."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: Ie10b8cf78fab43f437ae3ec7adb7f243de0505af"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"fa32b979_adf3cd72","line":22,"updated":"2015-06-15 08:50:03.000000000","message":"nit:s/wbackward/backward/","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"7045bca9f88b3458073483559816a68fb3a24b63","unresolved":false,"context_lines":[{"line_number":19,"context_line":"But for the error response, the error info should be in the"},{"line_number":20,"context_line":"response body, not headers. So this specification adds"},{"line_number":21,"context_line":"description of response body also. And the response body is"},{"line_number":22,"context_line":"wbackward compatible with existed implementation also."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: Ie10b8cf78fab43f437ae3ec7adb7f243de0505af"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"fa32b979_b9c8ec75","line":22,"in_reply_to":"fa32b979_adf3cd72","updated":"2015-06-15 11:26:15.000000000","message":"thanks, will update","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"}],"guidelines/microversion.rst":[{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"c2af181cf3e989a4c500e83010f75d03d9d88dfd","unresolved":false,"context_lines":[{"line_number":29,"context_line":"  is a backwards incompatible one."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"There are min and max version which are used to describe what the server"},{"line_number":32,"context_line":"can understand. The max version is the lastest version, it bump when any"},{"line_number":33,"context_line":"API change happened. The min version is the oldest version, and it may"},{"line_number":34,"context_line":"eventually be increased if there are support burdens we don\u0027t feel are"},{"line_number":35,"context_line":"adequate to support."}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_d789d027","line":32,"updated":"2015-06-03 14:48:20.000000000","message":"Maybe change this to \"The min and max versions are the oldest and most recent versions supported. The minimum version can be increased when supporting old clients is too great a burden.\"","commit_id":"30601dd6088639609312ae2d64be8bd37f1db9b0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"51fa0ad0a89d419a60c94302c7bb0332538a004d","unresolved":false,"context_lines":[{"line_number":29,"context_line":"  is a backwards incompatible one."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"There are min and max version which are used to describe what the server"},{"line_number":32,"context_line":"can understand. The max version is the lastest version, it bump when any"},{"line_number":33,"context_line":"API change happened. The min version is the oldest version, and it may"},{"line_number":34,"context_line":"eventually be increased if there are support burdens we don\u0027t feel are"},{"line_number":35,"context_line":"adequate to support."}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_de50b260","line":32,"in_reply_to":"5afe65bd_d789d027","updated":"2015-06-04 02:39:10.000000000","message":"ok, thanks","commit_id":"30601dd6088639609312ae2d64be8bd37f1db9b0"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"c2af181cf3e989a4c500e83010f75d03d9d88dfd","unresolved":false,"context_lines":[{"line_number":42,"context_line":"A client specifies the version of the API they want via the following"},{"line_number":43,"context_line":"approach, a new header::"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"  X-OpenStack-[PROJECT]-API-Version: 2.114"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"For example, Nova will use header::"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_b78c1436","line":45,"updated":"2015-06-03 14:48:20.000000000","message":"See https://review.openstack.org/186526 for advice on headers. Note that it\u0027s alright for new headers to skip the \"X-\" prefix.","commit_id":"30601dd6088639609312ae2d64be8bd37f1db9b0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"51fa0ad0a89d419a60c94302c7bb0332538a004d","unresolved":false,"context_lines":[{"line_number":42,"context_line":"A client specifies the version of the API they want via the following"},{"line_number":43,"context_line":"approach, a new header::"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"  X-OpenStack-[PROJECT]-API-Version: 2.114"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"For example, Nova will use header::"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_beabb61c","line":45,"in_reply_to":"5afe65bd_b78c1436","updated":"2015-06-04 02:39:10.000000000","message":"Emm...Nova and Ironic already implement the microversion, and using header with \"X-\" prefix. I think it will be good for all the projects using same style header.","commit_id":"30601dd6088639609312ae2d64be8bd37f1db9b0"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"c2af181cf3e989a4c500e83010f75d03d9d88dfd","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"For example, Nova will use header::"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"  X-OpenStack-Nova-API-Version: 2.114"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"This conceptually acts like the accept header. This is a global API"},{"line_number":52,"context_line":"version."}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_97835804","line":49,"updated":"2015-06-03 14:48:20.000000000","message":"Should the project name (Compute) be used instead here?","commit_id":"30601dd6088639609312ae2d64be8bd37f1db9b0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"51fa0ad0a89d419a60c94302c7bb0332538a004d","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"For example, Nova will use header::"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"  X-OpenStack-Nova-API-Version: 2.114"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"This conceptually acts like the accept header. This is a global API"},{"line_number":52,"context_line":"version."}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_7e4bfe87","line":49,"in_reply_to":"5afe65bd_97835804","updated":"2015-06-04 02:39:10.000000000","message":"In the beginning we use Compute, but we changed it by https://review.openstack.org/#/c/155611/","commit_id":"30601dd6088639609312ae2d64be8bd37f1db9b0"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"c2af181cf3e989a4c500e83010f75d03d9d88dfd","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Semantically this means:"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"* If X-OpenStack-[PROJECT]-API-Version is not provided, act as if min_version"},{"line_number":57,"context_line":"  was sent."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* If X-OpenStack-[PROJECT]-API-Version is sent, respond with the API at that"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_77869c14","line":56,"updated":"2015-06-03 14:48:20.000000000","message":"Wouldn\u0027t it be better to default to the newest API? I imagine that clients would, by default, want more functionality rather than less.","commit_id":"30601dd6088639609312ae2d64be8bd37f1db9b0"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"51fa0ad0a89d419a60c94302c7bb0332538a004d","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Semantically this means:"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"* If X-OpenStack-[PROJECT]-API-Version is not provided, act as if min_version"},{"line_number":57,"context_line":"  was sent."},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"* If X-OpenStack-[PROJECT]-API-Version is sent, respond with the API at that"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_c13573da","line":56,"in_reply_to":"5afe65bd_77869c14","updated":"2015-06-04 02:39:10.000000000","message":"Default to min_version is for backward-compatible. Special for the old client didn\u0027t support microversion","commit_id":"30601dd6088639609312ae2d64be8bd37f1db9b0"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"c2af181cf3e989a4c500e83010f75d03d9d88dfd","unresolved":false,"context_lines":[{"line_number":71,"context_line":"Two extra headers are always returned in the response:"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"X-OpenStack-[PROJECT]-API-Version: version_number, experimental"},{"line_number":74,"context_line":"Vary: X-OpenStack-[PROJECT]-API-Version"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"The first header specifies the version number of the API which was"},{"line_number":77,"context_line":"executed. Experimental is only returned if the operator has made a"}],"source_content_type":"text/x-rst","patch_set":4,"id":"5afe65bd_577e001a","line":74,"updated":"2015-06-03 14:48:20.000000000","message":"+1, I like the idea of including \"Vary\" here","commit_id":"30601dd6088639609312ae2d64be8bd37f1db9b0"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"fa152bc42f02005697c05b9d557ee865cb4c61a6","unresolved":false,"context_lines":[{"line_number":33,"context_line":"versions supported. The minimum version can be increased when supporting"},{"line_number":34,"context_line":"old clients is too great a burden."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Each version includes all the changes from this version to min version."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Client Interaction"},{"line_number":39,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3afb71cf_4b8d877a","line":36,"updated":"2015-06-05 10:01:31.000000000","message":"I think this could be emphasised for clarity:\n\n  Each version includes all the changes since min_version was introduced. It is not possible to request the feature introduced at microversion X without accepting all the changes before X in the same request.","commit_id":"4d33f63f9189dc0b02f8812485b11d582cdd81c9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1bd3e7dbe6f4034ccb8c92aa1dd333b72b2cacb1","unresolved":false,"context_lines":[{"line_number":33,"context_line":"versions supported. The minimum version can be increased when supporting"},{"line_number":34,"context_line":"old clients is too great a burden."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Each version includes all the changes from this version to min version."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Client Interaction"},{"line_number":39,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3afb71cf_8c47ef1c","line":36,"in_reply_to":"3afb71cf_4b8d877a","updated":"2015-06-07 15:58:39.000000000","message":"Good suggestion, thanks, will update","commit_id":"4d33f63f9189dc0b02f8812485b11d582cdd81c9"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"fa152bc42f02005697c05b9d557ee865cb4c61a6","unresolved":false,"context_lines":[{"line_number":48,"context_line":"  X-OpenStack-Nova-API-Version: 2.114"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"This conceptually acts like the accept header. This is a global API"},{"line_number":51,"context_line":"version."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Semantically this means:"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3afb71cf_2ba12baa","line":51,"updated":"2015-06-05 10:01:31.000000000","message":"You could say here that we are aware of the \"X-\" convention for HTTP headers being deprecated ( https://tools.ietf.org/html/rfc6648 ) but our microversion implementation is already released.  We have no plans to drop the \"X-\" prefix at any point.","commit_id":"4d33f63f9189dc0b02f8812485b11d582cdd81c9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1bd3e7dbe6f4034ccb8c92aa1dd333b72b2cacb1","unresolved":false,"context_lines":[{"line_number":48,"context_line":"  X-OpenStack-Nova-API-Version: 2.114"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"This conceptually acts like the accept header. This is a global API"},{"line_number":51,"context_line":"version."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Semantically this means:"},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3afb71cf_6c56f3d3","line":51,"in_reply_to":"3afb71cf_2ba12baa","updated":"2015-06-07 15:58:39.000000000","message":"ok, will add some explain","commit_id":"4d33f63f9189dc0b02f8812485b11d582cdd81c9"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"fa152bc42f02005697c05b9d557ee865cb4c61a6","unresolved":false,"context_lines":[{"line_number":64,"context_line":"  max_version of the API."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"This means out of the box, with an old client, an OpenStack"},{"line_number":67,"context_line":"installation will return vanilla OpenStack responses at v2. The user"},{"line_number":68,"context_line":"or SDK will have to ask for something different in order to get new"},{"line_number":69,"context_line":"features."},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3afb71cf_2b8feb24","line":67,"updated":"2015-06-05 10:01:31.000000000","message":"I think \"v2\" here is a Nova-specific thing. Can you reword that a bit?","commit_id":"4d33f63f9189dc0b02f8812485b11d582cdd81c9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1bd3e7dbe6f4034ccb8c92aa1dd333b72b2cacb1","unresolved":false,"context_lines":[{"line_number":64,"context_line":"  max_version of the API."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"This means out of the box, with an old client, an OpenStack"},{"line_number":67,"context_line":"installation will return vanilla OpenStack responses at v2. The user"},{"line_number":68,"context_line":"or SDK will have to ask for something different in order to get new"},{"line_number":69,"context_line":"features."},{"line_number":70,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3afb71cf_4c51f7d7","line":67,"in_reply_to":"3afb71cf_2b8feb24","updated":"2015-06-07 15:58:39.000000000","message":"yes, will remove it.","commit_id":"4d33f63f9189dc0b02f8812485b11d582cdd81c9"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"fa152bc42f02005697c05b9d557ee865cb4c61a6","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"\"version\" is max version, \"min_version\" is min version."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"When the requested version doesn\u0027t support by server, the server return"},{"line_number":119,"context_line":"status code **406 Not Acceptable**, and the response body for client to"},{"line_number":120,"context_line":"find out version can work with server."},{"line_number":121,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3afb71cf_8bcedf58","line":118,"updated":"2015-06-05 10:01:31.000000000","message":"s/doesn\u0027t support by/isn\u0027t supported by the/","commit_id":"4d33f63f9189dc0b02f8812485b11d582cdd81c9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1bd3e7dbe6f4034ccb8c92aa1dd333b72b2cacb1","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"\"version\" is max version, \"min_version\" is min version."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"When the requested version doesn\u0027t support by server, the server return"},{"line_number":119,"context_line":"status code **406 Not Acceptable**, and the response body for client to"},{"line_number":120,"context_line":"find out version can work with server."},{"line_number":121,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"3afb71cf_2c5fdbe6","line":118,"in_reply_to":"3afb71cf_8bcedf58","updated":"2015-06-07 15:58:39.000000000","message":"Done","commit_id":"4d33f63f9189dc0b02f8812485b11d582cdd81c9"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"fa152bc42f02005697c05b9d557ee865cb4c61a6","unresolved":false,"context_lines":[{"line_number":128,"context_line":"      \"description\": \"Version 5.3 is not supported by the API. \\"},{"line_number":129,"context_line":"          Minimum is 2.1 and maximum is 5.2.\""},{"line_number":130,"context_line":"    }"},{"line_number":131,"context_line":"  }"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Reference"},{"line_number":134,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3afb71cf_4befc7b0","line":131,"updated":"2015-06-05 10:01:31.000000000","message":"This is different from the example Nova response I saw in IRC. max_version and min_version were not in it. But are we providing that by headers now anyway?","commit_id":"4d33f63f9189dc0b02f8812485b11d582cdd81c9"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1bd3e7dbe6f4034ccb8c92aa1dd333b72b2cacb1","unresolved":false,"context_lines":[{"line_number":128,"context_line":"      \"description\": \"Version 5.3 is not supported by the API. \\"},{"line_number":129,"context_line":"          Minimum is 2.1 and maximum is 5.2.\""},{"line_number":130,"context_line":"    }"},{"line_number":131,"context_line":"  }"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Reference"},{"line_number":134,"context_line":"---------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3afb71cf_ec58a3fc","line":131,"in_reply_to":"3afb71cf_4befc7b0","updated":"2015-06-07 15:58:39.000000000","message":"From the ML discussion, we should provide header and body at same time.","commit_id":"4d33f63f9189dc0b02f8812485b11d582cdd81c9"}],"guidelines/microversion_specification.rst":[{"author":{"_account_id":11189,"name":"yuntongjin","email":"yuntong.jin@intel.com","username":"yuntong"},"change_message_id":"453c13f18b280e4a8eca5bc7dcebfced2ec67f29","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* If X-OpenStack-[PROJECT]-API-Version is sent, respond with the API at that"},{"line_number":66,"context_line":"  version. If that\u0027s outside of the range of versions supported,"},{"line_number":67,"context_line":"  return 406 Not Acceptable, and response body includes the server supported"},{"line_number":68,"context_line":"  min and max version."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* If X-OpenStack-[PROJECT]-API-Version: latest (special keyword) return"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3afb71cf_33784f8f","line":67,"updated":"2015-06-08 02:44:11.000000000","message":"From \nhttps://github.com/openstack/nova/blob/master/doc/source/api_microversions.rst\n\nShould return 404 here.","commit_id":"7a5df38566129bad4d94b59700f12c3de3eb1bd8"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"8823e19cd61ca6fc203b575ce50a2961e5d5693c","unresolved":false,"context_lines":[{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* If X-OpenStack-[PROJECT]-API-Version is sent, respond with the API at that"},{"line_number":66,"context_line":"  version. If that\u0027s outside of the range of versions supported,"},{"line_number":67,"context_line":"  return 406 Not Acceptable, and response body includes the server supported"},{"line_number":68,"context_line":"  min and max version."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* If X-OpenStack-[PROJECT]-API-Version: latest (special keyword) return"}],"source_content_type":"text/x-rst","patch_set":6,"id":"3afb71cf_73e36734","line":67,"in_reply_to":"3afb71cf_33784f8f","updated":"2015-06-08 02:52:39.000000000","message":"The 404 said in the doc isn\u0027t for this case. It is for the case a method didn\u0027t existed some version.","commit_id":"7a5df38566129bad4d94b59700f12c3de3eb1bd8"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"655473cdd61cd5fad99c445b738b2f13076c5a9e","unresolved":false,"context_lines":[{"line_number":6,"context_line":"This topic document serves to provide guidance on how to work with"},{"line_number":7,"context_line":"microversion in OpenStack REST APIs."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Microversion enable a way to introduce changes to the REST API to both"},{"line_number":10,"context_line":"fix bugs and add new features. And those changes can be backwards"},{"line_number":11,"context_line":"incompatible, and there is no way of doing this without microversion"},{"line_number":12,"context_line":"before."}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_3635ddf6","line":9,"updated":"2015-06-08 05:23:25.000000000","message":"nit: s/enable/enables/","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a161df203d408695130a6cd0bbace3b9d201df83","unresolved":false,"context_lines":[{"line_number":6,"context_line":"This topic document serves to provide guidance on how to work with"},{"line_number":7,"context_line":"microversion in OpenStack REST APIs."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Microversion enable a way to introduce changes to the REST API to both"},{"line_number":10,"context_line":"fix bugs and add new features. And those changes can be backwards"},{"line_number":11,"context_line":"incompatible, and there is no way of doing this without microversion"},{"line_number":12,"context_line":"before."}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_cad0b9f8","line":9,"in_reply_to":"3afb71cf_3635ddf6","updated":"2015-06-10 00:44:33.000000000","message":"Done","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"655473cdd61cd5fad99c445b738b2f13076c5a9e","unresolved":false,"context_lines":[{"line_number":28,"context_line":"  documentation as to what is a backwards compatible change and what"},{"line_number":29,"context_line":"  is a backwards incompatible one."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"There are min and max version which are used to describe what the server"},{"line_number":32,"context_line":"can understand. The min and max versions are the oldest and most recent"},{"line_number":33,"context_line":"versions supported. The minimum version can be increased when supporting"},{"line_number":34,"context_line":"old clients is too great a burden."}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_16130168","line":31,"updated":"2015-06-08 05:23:25.000000000","message":"nit:\n s/min/minimum/\n s/max/maximum/\n\nfor consistent doc","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a161df203d408695130a6cd0bbace3b9d201df83","unresolved":false,"context_lines":[{"line_number":28,"context_line":"  documentation as to what is a backwards compatible change and what"},{"line_number":29,"context_line":"  is a backwards incompatible one."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"There are min and max version which are used to describe what the server"},{"line_number":32,"context_line":"can understand. The min and max versions are the oldest and most recent"},{"line_number":33,"context_line":"versions supported. The minimum version can be increased when supporting"},{"line_number":34,"context_line":"old clients is too great a burden."}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_6a066587","line":31,"in_reply_to":"3afb71cf_16130168","updated":"2015-06-10 00:44:33.000000000","message":"ok, got it, thanks","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"655473cdd61cd5fad99c445b738b2f13076c5a9e","unresolved":false,"context_lines":[{"line_number":29,"context_line":"  is a backwards incompatible one."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"There are min and max version which are used to describe what the server"},{"line_number":32,"context_line":"can understand. The min and max versions are the oldest and most recent"},{"line_number":33,"context_line":"versions supported. The minimum version can be increased when supporting"},{"line_number":34,"context_line":"old clients is too great a burden."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_f6150549","line":32,"updated":"2015-06-08 05:23:25.000000000","message":"ditto","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a161df203d408695130a6cd0bbace3b9d201df83","unresolved":false,"context_lines":[{"line_number":29,"context_line":"  is a backwards incompatible one."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"There are min and max version which are used to describe what the server"},{"line_number":32,"context_line":"can understand. The min and max versions are the oldest and most recent"},{"line_number":33,"context_line":"versions supported. The minimum version can be increased when supporting"},{"line_number":34,"context_line":"old clients is too great a burden."},{"line_number":35,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_4a0ba98e","line":32,"in_reply_to":"3afb71cf_f6150549","updated":"2015-06-10 00:44:33.000000000","message":"Done","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"655473cdd61cd5fad99c445b738b2f13076c5a9e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"There are min and max version which are used to describe what the server"},{"line_number":32,"context_line":"can understand. The min and max versions are the oldest and most recent"},{"line_number":33,"context_line":"versions supported. The minimum version can be increased when supporting"},{"line_number":34,"context_line":"old clients is too great a burden."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Each version includes all the changes since min_version was introduced."},{"line_number":37,"context_line":"It is not possible to request the feature introduced at Microversion X"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_b608ad2e","line":34,"updated":"2015-06-08 05:23:25.000000000","message":"nit: /great a burden/a great burden/","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"fa1c52a509d637921ea78709bc47d61cc98f701e","unresolved":false,"context_lines":[{"line_number":31,"context_line":"There are min and max version which are used to describe what the server"},{"line_number":32,"context_line":"can understand. The min and max versions are the oldest and most recent"},{"line_number":33,"context_line":"versions supported. The minimum version can be increased when supporting"},{"line_number":34,"context_line":"old clients is too great a burden."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Each version includes all the changes since min_version was introduced."},{"line_number":37,"context_line":"It is not possible to request the feature introduced at Microversion X"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_d2856a59","line":34,"in_reply_to":"3afb71cf_b608ad2e","updated":"2015-06-08 10:47:54.000000000","message":"This is OK as it is:\n\n  \"too (adj) a (noun)\" \u003d\u003d \"a (noun) which is too (adj)\".","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a161df203d408695130a6cd0bbace3b9d201df83","unresolved":false,"context_lines":[{"line_number":31,"context_line":"There are min and max version which are used to describe what the server"},{"line_number":32,"context_line":"can understand. The min and max versions are the oldest and most recent"},{"line_number":33,"context_line":"versions supported. The minimum version can be increased when supporting"},{"line_number":34,"context_line":"old clients is too great a burden."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Each version includes all the changes since min_version was introduced."},{"line_number":37,"context_line":"It is not possible to request the feature introduced at Microversion X"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_8a1be1c9","line":34,"in_reply_to":"3afb71cf_d2856a59","updated":"2015-06-10 00:44:33.000000000","message":"Learned, thanks","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"655473cdd61cd5fad99c445b738b2f13076c5a9e","unresolved":false,"context_lines":[{"line_number":33,"context_line":"versions supported. The minimum version can be increased when supporting"},{"line_number":34,"context_line":"old clients is too great a burden."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Each version includes all the changes since min_version was introduced."},{"line_number":37,"context_line":"It is not possible to request the feature introduced at Microversion X"},{"line_number":38,"context_line":"without accepting all the changes before X in the same request."},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_2903420f","line":36,"updated":"2015-06-08 05:23:25.000000000","message":"nit: s/min_version/minimum version/","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a161df203d408695130a6cd0bbace3b9d201df83","unresolved":false,"context_lines":[{"line_number":33,"context_line":"versions supported. The minimum version can be increased when supporting"},{"line_number":34,"context_line":"old clients is too great a burden."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Each version includes all the changes since min_version was introduced."},{"line_number":37,"context_line":"It is not possible to request the feature introduced at Microversion X"},{"line_number":38,"context_line":"without accepting all the changes before X in the same request."},{"line_number":39,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_6a7b05f6","line":36,"in_reply_to":"3afb71cf_2903420f","updated":"2015-06-10 00:44:33.000000000","message":"Done","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"655473cdd61cd5fad99c445b738b2f13076c5a9e","unresolved":false,"context_lines":[{"line_number":67,"context_line":"  return 406 Not Acceptable, and response body includes the server supported"},{"line_number":68,"context_line":"  min and max version."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* If X-OpenStack-[PROJECT]-API-Version: latest (special keyword) return"},{"line_number":71,"context_line":"  max_version of the API."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"This means out of the box, the old client without any Microversion knowledge"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_69301ae9","line":70,"updated":"2015-06-08 05:23:25.000000000","message":"nit: s/\"keyword) return\"/\"keyword), return)\"/\n\nby just adding ,","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a161df203d408695130a6cd0bbace3b9d201df83","unresolved":false,"context_lines":[{"line_number":67,"context_line":"  return 406 Not Acceptable, and response body includes the server supported"},{"line_number":68,"context_line":"  min and max version."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* If X-OpenStack-[PROJECT]-API-Version: latest (special keyword) return"},{"line_number":71,"context_line":"  max_version of the API."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"This means out of the box, the old client without any Microversion knowledge"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_0a86d1da","line":70,"in_reply_to":"3afb71cf_69301ae9","updated":"2015-06-10 00:44:33.000000000","message":"Done","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"655473cdd61cd5fad99c445b738b2f13076c5a9e","unresolved":false,"context_lines":[{"line_number":82,"context_line":"* X-OpenStack-[PROJECT]-API-Version: version_number, experimental"},{"line_number":83,"context_line":"* Vary: X-OpenStack-[PROJECT]-API-Version"},{"line_number":84,"context_line":"* X-Openstack-[PROJECT]-API-Minimum-Version: max_version_number"},{"line_number":85,"context_line":"* X-Openstack-[PROJECT]-API-Maximum-Version: min_version_number"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"The first header specifies the version number of the API which was"},{"line_number":88,"context_line":"executed. Experimental is only returned if the operator has made a"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_49755e96","line":85,"updated":"2015-06-08 05:23:25.000000000","message":"The above values are opposite.\n\n * X-Openstack-[PROJECT]-API-Minimum-Version: minimum version number\n * X-Openstack-[PROJECT]-API-Maximum-Version: maximum version number","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"fa1c52a509d637921ea78709bc47d61cc98f701e","unresolved":false,"context_lines":[{"line_number":82,"context_line":"* X-OpenStack-[PROJECT]-API-Version: version_number, experimental"},{"line_number":83,"context_line":"* Vary: X-OpenStack-[PROJECT]-API-Version"},{"line_number":84,"context_line":"* X-Openstack-[PROJECT]-API-Minimum-Version: max_version_number"},{"line_number":85,"context_line":"* X-Openstack-[PROJECT]-API-Maximum-Version: min_version_number"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"The first header specifies the version number of the API which was"},{"line_number":88,"context_line":"executed. Experimental is only returned if the operator has made a"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_724c7642","line":85,"in_reply_to":"3afb71cf_49755e96","updated":"2015-06-08 10:47:54.000000000","message":"+1","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a161df203d408695130a6cd0bbace3b9d201df83","unresolved":false,"context_lines":[{"line_number":82,"context_line":"* X-OpenStack-[PROJECT]-API-Version: version_number, experimental"},{"line_number":83,"context_line":"* Vary: X-OpenStack-[PROJECT]-API-Version"},{"line_number":84,"context_line":"* X-Openstack-[PROJECT]-API-Minimum-Version: max_version_number"},{"line_number":85,"context_line":"* X-Openstack-[PROJECT]-API-Maximum-Version: min_version_number"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"The first header specifies the version number of the API which was"},{"line_number":88,"context_line":"executed. Experimental is only returned if the operator has made a"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_6a62e53f","line":85,"in_reply_to":"3afb71cf_724c7642","updated":"2015-06-10 00:44:33.000000000","message":"Oops, will update","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"655473cdd61cd5fad99c445b738b2f13076c5a9e","unresolved":false,"context_lines":[{"line_number":85,"context_line":"* X-Openstack-[PROJECT]-API-Maximum-Version: min_version_number"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"The first header specifies the version number of the API which was"},{"line_number":88,"context_line":"executed. Experimental is only returned if the operator has made a"},{"line_number":89,"context_line":"modification to the API behaviour that is non standard. This is only"},{"line_number":90,"context_line":"intended to be a transitional mechanism while some functionality used"},{"line_number":91,"context_line":"by cloud operators is upstreamed and it will be removed within a small"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_299fc2b5","line":88,"updated":"2015-06-08 05:23:25.000000000","message":"This doc doesn\u0027t contain experimental thing except here.\nWhat is the different from maximum version?\n\nI feel API is always experimental and that is one reason why we need microversions for changing API itself many times.","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"fa1c52a509d637921ea78709bc47d61cc98f701e","unresolved":false,"context_lines":[{"line_number":85,"context_line":"* X-Openstack-[PROJECT]-API-Maximum-Version: min_version_number"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"The first header specifies the version number of the API which was"},{"line_number":88,"context_line":"executed. Experimental is only returned if the operator has made a"},{"line_number":89,"context_line":"modification to the API behaviour that is non standard. This is only"},{"line_number":90,"context_line":"intended to be a transitional mechanism while some functionality used"},{"line_number":91,"context_line":"by cloud operators is upstreamed and it will be removed within a small"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_b241ce0d","line":88,"in_reply_to":"3afb71cf_299fc2b5","updated":"2015-06-08 10:47:54.000000000","message":"\"experimental\" is a signal that there\u0027s a vendor-specific api extension here. It\u0027s intended to be temporary - and AFAICT it\u0027s not actually implemented in code and doesn\u0027t work.","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2db8fd7dbb04ee5618fb3f0418a17cc4c32f6c56","unresolved":false,"context_lines":[{"line_number":85,"context_line":"* X-Openstack-[PROJECT]-API-Maximum-Version: min_version_number"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"The first header specifies the version number of the API which was"},{"line_number":88,"context_line":"executed. Experimental is only returned if the operator has made a"},{"line_number":89,"context_line":"modification to the API behaviour that is non standard. This is only"},{"line_number":90,"context_line":"intended to be a transitional mechanism while some functionality used"},{"line_number":91,"context_line":"by cloud operators is upstreamed and it will be removed within a small"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_ad56b727","line":88,"in_reply_to":"3afb71cf_2acf4d2a","updated":"2015-06-10 01:56:41.000000000","message":"IMO, guidelines should not suggest the \u0027experimental\u0027 flag as vendor specific thing should not be acknowledge by standard OpenStack API. (I think same we discussed during Nova microversion)","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a161df203d408695130a6cd0bbace3b9d201df83","unresolved":false,"context_lines":[{"line_number":85,"context_line":"* X-Openstack-[PROJECT]-API-Maximum-Version: min_version_number"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"The first header specifies the version number of the API which was"},{"line_number":88,"context_line":"executed. Experimental is only returned if the operator has made a"},{"line_number":89,"context_line":"modification to the API behaviour that is non standard. This is only"},{"line_number":90,"context_line":"intended to be a transitional mechanism while some functionality used"},{"line_number":91,"context_line":"by cloud operators is upstreamed and it will be removed within a small"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_2acf4d2a","line":88,"in_reply_to":"3afb71cf_b241ce0d","updated":"2015-06-10 00:44:33.000000000","message":"Yea, this is copy from nova specs.\n\nI\u0027m thinking whether we still want this. If nobody implement this, we can remove it first.","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"2db8fd7dbb04ee5618fb3f0418a17cc4c32f6c56","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    }"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"\"version\" is max version, \"min_version\" is min version."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"We also have max and min version returned by header in every response, which"},{"line_number":132,"context_line":"mentioned in previous section."},{"line_number":133,"context_line":""}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_d0950687","line":130,"updated":"2015-06-10 01:56:41.000000000","message":"Can we have some guidelines about way to return all supported microversion range?\n-either through some API (i prefer this way)\n-or some API documentation about each microversion and its changes\n\nFor example - in above case (min - 2.1, max-5.2) how client will get to know whether 3.5 is supported or not.","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"655473cdd61cd5fad99c445b738b2f13076c5a9e","unresolved":false,"context_lines":[{"line_number":132,"context_line":"mentioned in previous section."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"* X-Openstack-[PROJECT]-API-Minimum-Version: max_version_number"},{"line_number":135,"context_line":"* X-Openstack-[PROJECT]-API-Maximum-Version: min_version_number"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"When the requested version doesn\u0027t support by server, the server returns"},{"line_number":138,"context_line":"status code **406 Not Acceptable**, and the response body includes the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_09a64610","line":135,"updated":"2015-06-08 05:23:25.000000000","message":"ditto","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a161df203d408695130a6cd0bbace3b9d201df83","unresolved":false,"context_lines":[{"line_number":132,"context_line":"mentioned in previous section."},{"line_number":133,"context_line":""},{"line_number":134,"context_line":"* X-Openstack-[PROJECT]-API-Minimum-Version: max_version_number"},{"line_number":135,"context_line":"* X-Openstack-[PROJECT]-API-Maximum-Version: min_version_number"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"When the requested version doesn\u0027t support by server, the server returns"},{"line_number":138,"context_line":"status code **406 Not Acceptable**, and the response body includes the"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3afb71cf_eaddb5e0","line":135,"in_reply_to":"3afb71cf_09a64610","updated":"2015-06-10 00:44:33.000000000","message":"Done","commit_id":"c9e662064e6cd108114712a175a58518d5bdf0bd"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"0b01796a095c471c9a7394de7568d1cdbeae8e3c","unresolved":false,"context_lines":[{"line_number":4,"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"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"This topic document serves to provide guidance on how to work with"},{"line_number":7,"context_line":"microversion in OpenStack REST APIs."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Microversion enables a way to introduce changes to the REST API to both"},{"line_number":10,"context_line":"fix bugs and add new features. And those changes can be backwards"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_436706e9","line":7,"updated":"2015-06-23 17:42:25.000000000","message":"s/microversion/microversions/","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"0b01796a095c471c9a7394de7568d1cdbeae8e3c","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Microversion enables a way to introduce changes to the REST API to both"},{"line_number":10,"context_line":"fix bugs and add new features. And those changes can be backwards"},{"line_number":11,"context_line":"incompatible, and there is no way of doing this without microversion"},{"line_number":12,"context_line":"before."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Versioning"},{"line_number":15,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_a061283b","line":12,"updated":"2015-06-23 17:42:25.000000000","message":"i think microversions enable more than a way to introduce backward incompatible changes. i mean, you could always do that by just breaking the api.\n\ni thought the real power of microversions is the ability to introduce backward incompatible changes while being able to allow client apps the ability to detect the localized server version and adjust their behavior accordingly, or alternatively in some cases request specific microversion behavior from the server.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"07a647f7a20ca14032b12a82fe59bd8c1bb45f09","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Microversion enables a way to introduce changes to the REST API to both"},{"line_number":10,"context_line":"fix bugs and add new features. And those changes can be backwards"},{"line_number":11,"context_line":"incompatible, and there is no way of doing this without microversion"},{"line_number":12,"context_line":"before."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Versioning"},{"line_number":15,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da20952f_19b95979","line":12,"in_reply_to":"fa32b979_a061283b","updated":"2015-08-31 06:48:07.000000000","message":"yea, Michael, you are totally right.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"02e9666d1a85ad39fc5bb9a88dbc240888f8d5a0","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"* X will only be changed if a significant backwards incompatible"},{"line_number":21,"context_line":"  API change is made which affects the API as whole. That is, something"},{"line_number":22,"context_line":"  that is only very very rarely incremented."},{"line_number":23,"context_line":"* Y when you make any change to the API. Note that this includes"},{"line_number":24,"context_line":"  semantic changes which may not affect the input or output formats or"},{"line_number":25,"context_line":"  even originate in the API code layer. We are not distinguishing"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_e94d34c5","line":22,"updated":"2015-06-22 08:06:50.000000000","message":"To avoid confusion like in the comment below, maybe it\u0027s worth mentioning that X is increased if a change requires actually rebuilding API routes?","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"07a647f7a20ca14032b12a82fe59bd8c1bb45f09","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"* X will only be changed if a significant backwards incompatible"},{"line_number":21,"context_line":"  API change is made which affects the API as whole. That is, something"},{"line_number":22,"context_line":"  that is only very very rarely incremented."},{"line_number":23,"context_line":"* Y when you make any change to the API. Note that this includes"},{"line_number":24,"context_line":"  semantic changes which may not affect the input or output formats or"},{"line_number":25,"context_line":"  even originate in the API code layer. We are not distinguishing"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da20952f_9309cb86","line":22,"in_reply_to":"fa32b979_e94d34c5","updated":"2015-08-31 06:48:07.000000000","message":"Emm...I guess when we bump X just because \u0027a\u0027 change. That\u0027s pretty like totally new API","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f5936275a8cc049ca170f40f07fb4c299f980753","unresolved":false,"context_lines":[{"line_number":26,"context_line":"  between backwards compatible and backwards incompatible changes in"},{"line_number":27,"context_line":"  the versioning system. It will however be made clear in the"},{"line_number":28,"context_line":"  documentation as to what is a backwards compatible change and what"},{"line_number":29,"context_line":"  is a backwards incompatible one."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"There are minimum and maximum version which are used to describe what the"},{"line_number":32,"context_line":"server can understand. The minimum and maximum versions are the oldest and"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_8ab2fa04","line":29,"updated":"2015-06-17 11:04:57.000000000","message":"I tried to re-consider this version counter.\nThis version counter is different from generic versioning[1].\n\nThat makes many people confused.\nWhen explaining microversions to neutron core, and his concern is how to use newer features without backwards incompatible changes. that means many end users would want to use newer features without re-writing their own applications as possible.\n\nIf X.Y means just\n\n X: backwards incompatible changes\n Y: backwards compatible changes like new features\n\nlike [1], end users can use this easily.\nI proposed this kind of thing on nova-spec, but I could not understand the reason of the denied to be honest.\n\nAnyways, I\u0027d like to know feedback from wider people about this.\n\n[1]: http://semver.org/","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"02e9666d1a85ad39fc5bb9a88dbc240888f8d5a0","unresolved":false,"context_lines":[{"line_number":26,"context_line":"  between backwards compatible and backwards incompatible changes in"},{"line_number":27,"context_line":"  the versioning system. It will however be made clear in the"},{"line_number":28,"context_line":"  documentation as to what is a backwards compatible change and what"},{"line_number":29,"context_line":"  is a backwards incompatible one."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"There are minimum and maximum version which are used to describe what the"},{"line_number":32,"context_line":"server can understand. The minimum and maximum versions are the oldest and"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_0c5f460f","line":29,"in_reply_to":"fa32b979_8ab2fa04","updated":"2015-06-22 08:06:50.000000000","message":"\u003e  that means many end users would want to use newer features without re-writing their own applications as possible.\n\njust don\u0027t do such a stupid thing like hiding new features by microversions, and you\u0027re done with this problem.\n\nanyway, your suggestion won\u0027t work because the devs won\u0027t backport features. so if 2.1 introduces a new feature, you can\u0027t use it my staying on a 1.x \"branch\".\n\nthe only sane way to solve this problem is not to do insane things, however :) you don\u0027t need to hide backward compatible features.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"02e9666d1a85ad39fc5bb9a88dbc240888f8d5a0","unresolved":false,"context_lines":[{"line_number":31,"context_line":"There are minimum and maximum version which are used to describe what the"},{"line_number":32,"context_line":"server can understand. The minimum and maximum versions are the oldest and"},{"line_number":33,"context_line":"most recent versions supported. The minimum version can be increased when"},{"line_number":34,"context_line":"supporting old clients is too great a burden."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Each version includes all the changes since minimum version was introduced."},{"line_number":37,"context_line":"It is not possible to request the feature introduced at Microversion X"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_69e7e4ac","line":34,"updated":"2015-06-22 08:06:50.000000000","message":"That\u0027s a can of worms. The good idea of microversions was that people write their tooling requesting some version, and then the response they get stays compatible with what it was when they tested. Dropping minimum version will break their tooling, and is ONLY justified if we completely break the flow that these people rely on.\n\nOtherwise this versioning will make people\u0027s life harder, not easier.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"07a647f7a20ca14032b12a82fe59bd8c1bb45f09","unresolved":false,"context_lines":[{"line_number":31,"context_line":"There are minimum and maximum version which are used to describe what the"},{"line_number":32,"context_line":"server can understand. The minimum and maximum versions are the oldest and"},{"line_number":33,"context_line":"most recent versions supported. The minimum version can be increased when"},{"line_number":34,"context_line":"supporting old clients is too great a burden."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Each version includes all the changes since minimum version was introduced."},{"line_number":37,"context_line":"It is not possible to request the feature introduced at Microversion X"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da20952f_b35c0f7e","line":34,"in_reply_to":"fa32b979_69e7e4ac","updated":"2015-08-31 06:48:07.000000000","message":"yea, increase the minimum version will break the client. So maybe I should add more words about increasing the minimal version happened rarely also","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"02e9666d1a85ad39fc5bb9a88dbc240888f8d5a0","unresolved":false,"context_lines":[{"line_number":36,"context_line":"Each version includes all the changes since minimum version was introduced."},{"line_number":37,"context_line":"It is not possible to request the feature introduced at Microversion X"},{"line_number":38,"context_line":"without accepting all the changes before X in the same request."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Client Interaction"},{"line_number":41,"context_line":"------------------"},{"line_number":42,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_69b5a47c","line":39,"updated":"2015-06-22 08:06:50.000000000","message":"Now, it\u0027s not mentioned here, but some people assume that the server will hide features introduced by version X.Y+1, if X.Y was requested. We implemented it in Kilo, it was plainly bad, and I\u0027d like this spec explicitly ruled it out. Please see Devenanda\u0027s and my emails for details: http://lists.openstack.org/pipermail/openstack-dev/2015-June/067061.html and http://lists.openstack.org/pipermail/openstack-dev/2015-June/067570.html","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"eead687c1380100154ec715d0e1a2d7d353ce7bb","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"For example, Nova [0]_ will use header::"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  X-OpenStack-Nova-API-Version: 2.114"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This conceptually acts like the accept header. This is a global API"},{"line_number":53,"context_line":"version."}],"source_content_type":"text/x-rst","patch_set":10,"id":"3afb71cf_1517b355","line":50,"updated":"2015-06-11 18:47:22.000000000","message":"Should this be \u0027compute\u0027 instead of \u0027nova\u0027?","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5ea02f9cbb9aca39fffc8801d596b2aa9e28593d","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"For example, Nova [0]_ will use header::"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  X-OpenStack-Nova-API-Version: 2.114"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This conceptually acts like the accept header. This is a global API"},{"line_number":53,"context_line":"version."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_5c099c94","line":50,"in_reply_to":"1af86dd1_aceb02b0","updated":"2015-06-15 04:45:47.000000000","message":"Thanks to Gman\u0027s explain!","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"6aed066c297af0592af52e99ffe61df8ae9a8568","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"For example, Nova [0]_ will use header::"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  X-OpenStack-Nova-API-Version: 2.114"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This conceptually acts like the accept header. This is a global API"},{"line_number":53,"context_line":"version."}],"source_content_type":"text/x-rst","patch_set":10,"id":"1af86dd1_aceb02b0","line":50,"in_reply_to":"3afb71cf_1517b355","updated":"2015-06-12 02:18:53.000000000","message":"I think project name is fine instead program -as per https://review.openstack.org/#/c/145740/14\n\nNova had \u0027compute\u0027 previously which has been changed to \u0027Nova\u0027 - https://review.openstack.org/#/c/155611/","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"24ad3ea90851d4d6b1f9a38389d6eb655ea8fbe2","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"For example, Nova [0]_ will use header::"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  X-OpenStack-Nova-API-Version: 2.114"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This conceptually acts like the accept header. This is a global API"},{"line_number":53,"context_line":"version."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_f0c66548","line":50,"in_reply_to":"fa32b979_07e39fa4","updated":"2015-06-16 00:07:19.000000000","message":"Hi Jay,\n\n \u003e I think the decision of the Ironic project to use Ironic\n \u003e instead of BareMetal was incorrect. The API is the\n \u003e \"OpenStack Compute API\". It\u0027s not \"The Nova API\".\n\nThe first draft was X-OpenStack-Compute-API-Version, not X-OpenStack-Nova-API-Version.\nbut I changed it to current X-OpenStack-Nova-API-Version with https://review.openstack.org/#/c/153183/ Because the patch Ida9f60d8cbd0dcf48669b82e619fc4016ee0bcb7 removed program\nterminology from the governance repo.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"09249a2d971189880e3fbd3e9651c8e4ae9612ed","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"For example, Nova [0]_ will use header::"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  X-OpenStack-Nova-API-Version: 2.114"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This conceptually acts like the accept header. This is a global API"},{"line_number":53,"context_line":"version."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_585748ca","line":50,"in_reply_to":"fa32b979_1d5e9245","updated":"2015-06-22 09:28:34.000000000","message":"Then what\u0027s the point in this \"OpenStack API Version\"? It just does not exist, why do we make users believe it does?","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"9d5e7e204a65104df7eb7e1ad75c17942be08bf5","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"For example, Nova [0]_ will use header::"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  X-OpenStack-Nova-API-Version: 2.114"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This conceptually acts like the accept header. This is a global API"},{"line_number":53,"context_line":"version."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_fd9bae70","line":50,"in_reply_to":"fa32b979_29779cd5","updated":"2015-06-22 09:15:07.000000000","message":"I think we almost build a consensus to use OpenStack-API-Version on openstack-dev ml discussion.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"66bc8524e006d427db409a1bcd9543b7e7e2a6ce","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"For example, Nova [0]_ will use header::"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  X-OpenStack-Nova-API-Version: 2.114"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This conceptually acts like the accept header. This is a global API"},{"line_number":53,"context_line":"version."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_ba63e9dc","line":50,"in_reply_to":"fa32b979_585748ca","updated":"2015-06-22 09:43:29.000000000","message":"Sorry, I cannot understand your point.\n\nWhen returning a response to clients, the working microversion is also returned in a response header.\nSo users can know which microversion works on the server side like line83.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"da79a097d16133034eb734c5ff4674f4a5f52457","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"For example, Nova [0]_ will use header::"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  X-OpenStack-Nova-API-Version: 2.114"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This conceptually acts like the accept header. This is a global API"},{"line_number":53,"context_line":"version."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_07e39fa4","line":50,"in_reply_to":"fa32b979_5c099c94","updated":"2015-06-15 16:54:44.000000000","message":"I think the decision of the Ironic project to use Ironic instead of BareMetal was incorrect. The API is the \"OpenStack Compute API\". It\u0027s not \"The Nova API\".\n\nGhanshyam above is mixing up two different concepts. The first concept, of the governance moving away from programs to projects, has nothing to do with the API itself.\n\nKeystone\u0027s service catalog returns \"compute\" for the service type, not \"nova\". Similarly, this should be \"X-OpenStack-Compute-API-Version\", not \"X-OpenStack-Nova-API-Version\".","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"7b84ec8f054f00b9b81c7f7b2cd53c40a4f75744","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"For example, Nova [0]_ will use header::"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  X-OpenStack-Nova-API-Version: 2.114"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This conceptually acts like the accept header. This is a global API"},{"line_number":53,"context_line":"version."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_c3d604c3","line":50,"in_reply_to":"fa32b979_634b785a","updated":"2015-06-22 11:11:30.000000000","message":"Project names are changed many times like Neutron, inspector, and something.\nSo do you really want to keep its name in the header?","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4d4506b42940f35a04ce4dd5f62a67f58f339f7a","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"For example, Nova [0]_ will use header::"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  X-OpenStack-Nova-API-Version: 2.114"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This conceptually acts like the accept header. This is a global API"},{"line_number":53,"context_line":"version."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_634b785a","line":50,"in_reply_to":"fa32b979_ba63e9dc","updated":"2015-06-22 10:57:43.000000000","message":"My point is mostly cosmetic: by using header called OpenStack-API-Version you\u0027re telling a user that there\u0027s a thing called \"OpenStack API\" that can be versioned. That\u0027s not really true.\n\nE.g. when you supply HTTP version (like GET HTTP/1.1) it always means the same thing for all compliant servers. OpenStack-API-Version will be something completely service-dependent. Again, a cosmetic issue, but IMO worth considering.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"06651cca052bae925bf022ea2f7226eca3ecd549","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"For example, Nova [0]_ will use header::"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  X-OpenStack-Nova-API-Version: 2.114"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This conceptually acts like the accept header. This is a global API"},{"line_number":53,"context_line":"version."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_1d5e9245","line":50,"in_reply_to":"fa32b979_bd7d26e9","updated":"2015-06-22 09:22:14.000000000","message":"\u003e just different services?\n\nYes. When sending a request, the target endpoint is already different.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"79cd062f5c29329d8c32f11850de944e29c6b79e","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"For example, Nova [0]_ will use header::"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  X-OpenStack-Nova-API-Version: 2.114"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This conceptually acts like the accept header. This is a global API"},{"line_number":53,"context_line":"version."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_2e26b7ba","line":50,"in_reply_to":"fa32b979_c3d604c3","updated":"2015-06-22 11:16:58.000000000","message":"That\u0027s a fair point as well...","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"91608af77dadf6cb8337e6725c761f8a7e31ec5c","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"For example, Nova [0]_ will use header::"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  X-OpenStack-Nova-API-Version: 2.114"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This conceptually acts like the accept header. This is a global API"},{"line_number":53,"context_line":"version."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_f20f3f86","line":50,"in_reply_to":"fa32b979_f0c66548","updated":"2015-06-16 08:16:08.000000000","message":"I don\u0027t think the answer here is well-defined, yet.  If I were creating an alternative to Nova, to fulfill the \"compute\" role in an OpenStack cloud, then would I have to implement microversions in my hypothetical service?\n\nI think I would, right? Other OpenStack services which call the \"compute\" service (Trove, Heat, etc) will expect to use them, and so will end-users. So I think this should be part of the definition of the \"Compute\" API - it\u0027s not Nova-specific, and shouldn\u0027t say that it is.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"02e9666d1a85ad39fc5bb9a88dbc240888f8d5a0","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"For example, Nova [0]_ will use header::"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  X-OpenStack-Nova-API-Version: 2.114"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This conceptually acts like the accept header. This is a global API"},{"line_number":53,"context_line":"version."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_29779cd5","line":50,"in_reply_to":"fa32b979_f20f3f86","updated":"2015-06-22 08:06:50.000000000","message":"-1 for using generic names for 2 reasons:\n\n1. we can call Ironic API \"the Baremetal API\" here and officially, but it will still be the Ironic API while it\u0027s solely Ironic team who decides how this API evolves\n\n2. Who is going to invent names for subprojects implementing microversions, e.g. Ironic Inspector?","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"70fab4bcb8d8a9e3b6d2461dcff2cf61a41fd30e","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":"For example, Nova [0]_ will use header::"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"  X-OpenStack-Nova-API-Version: 2.114"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"This conceptually acts like the accept header. This is a global API"},{"line_number":53,"context_line":"version."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_bd7d26e9","line":50,"in_reply_to":"fa32b979_fd9bae70","updated":"2015-06-22 09:19:32.000000000","message":"Did we? I saw a lot of valid objections to how confusing it is going to be to supply for example OpenStack-API-Version 2.1 to Nova, OpenStack-API-Version 1.6 to Ironic and OpenStack-API-Version 1.0 to Ironic Inspector. How to explain a user that these are not 3 versions of his/her OpenStack, just different services?","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"eead687c1380100154ec715d0e1a2d7d353ce7bb","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"In :rfc:`6648` the recommendation to prefix application-specific headers with"},{"line_number":56,"context_line":"``X-`` was retracted. But Nova [0]_ and Ironic [1]_\u0027s Microversion"},{"line_number":57,"context_line":"implementation is already released, we should keep Mircoversion backward"},{"line_number":58,"context_line":"compatible. We have no plans to drop ``X-`` prefix at any point."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Semantically this means:"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3afb71cf_5033f9f6","line":57,"updated":"2015-06-11 18:47:22.000000000","message":"spelling for \u0027Mircoversion\u0027","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5ea02f9cbb9aca39fffc8801d596b2aa9e28593d","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"In :rfc:`6648` the recommendation to prefix application-specific headers with"},{"line_number":56,"context_line":"``X-`` was retracted. But Nova [0]_ and Ironic [1]_\u0027s Microversion"},{"line_number":57,"context_line":"implementation is already released, we should keep Mircoversion backward"},{"line_number":58,"context_line":"compatible. We have no plans to drop ``X-`` prefix at any point."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Semantically this means:"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_fcfd106f","line":57,"in_reply_to":"3afb71cf_5033f9f6","updated":"2015-06-15 04:45:47.000000000","message":"Done","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"eead687c1380100154ec715d0e1a2d7d353ce7bb","unresolved":false,"context_lines":[{"line_number":55,"context_line":"In :rfc:`6648` the recommendation to prefix application-specific headers with"},{"line_number":56,"context_line":"``X-`` was retracted. But Nova [0]_ and Ironic [1]_\u0027s Microversion"},{"line_number":57,"context_line":"implementation is already released, we should keep Mircoversion backward"},{"line_number":58,"context_line":"compatible. We have no plans to drop ``X-`` prefix at any point."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Semantically this means:"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"3afb71cf_b00c6d3c","line":58,"updated":"2015-06-11 18:47:22.000000000","message":"Both could be supported in those projects and we could do it right in new projects.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5ea02f9cbb9aca39fffc8801d596b2aa9e28593d","unresolved":false,"context_lines":[{"line_number":55,"context_line":"In :rfc:`6648` the recommendation to prefix application-specific headers with"},{"line_number":56,"context_line":"``X-`` was retracted. But Nova [0]_ and Ironic [1]_\u0027s Microversion"},{"line_number":57,"context_line":"implementation is already released, we should keep Mircoversion backward"},{"line_number":58,"context_line":"compatible. We have no plans to drop ``X-`` prefix at any point."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Semantically this means:"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_9cef24b0","line":58,"in_reply_to":"3afb71cf_b00c6d3c","updated":"2015-06-15 04:45:47.000000000","message":"yes, we can, but will it looks like confuse we have multiple headers for same purpose?\n\nWe can use \u0027X-\u0027 for new headers. But keep this for existed implementation, as there isn\u0027t too much harm.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":9420,"name":"Matthew Gilliard","email":"matthew.gilliard@hp.com","username":"gilliard"},"change_message_id":"91608af77dadf6cb8337e6725c761f8a7e31ec5c","unresolved":false,"context_lines":[{"line_number":55,"context_line":"In :rfc:`6648` the recommendation to prefix application-specific headers with"},{"line_number":56,"context_line":"``X-`` was retracted. But Nova [0]_ and Ironic [1]_\u0027s Microversion"},{"line_number":57,"context_line":"implementation is already released, we should keep Mircoversion backward"},{"line_number":58,"context_line":"compatible. We have no plans to drop ``X-`` prefix at any point."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Semantically this means:"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_a56e4f94","line":58,"in_reply_to":"fa32b979_8159d15c","updated":"2015-06-16 08:16:08.000000000","message":"The problem that this RFC is trying to address is the convention of \u0027X-\u0027 meaning \u0027unstandardized\u0027, and the confusion caused by dropping the \u0027X-\u0027 later on. As long as we are clear about our intentions then we\u0027re RFC compliant with or without the prefix (§1.4).  That said, it\u0027s hard to argue against something which is \"no cost\"...","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"09597e8466c03c2637b3bc498e98d9b85d424675","unresolved":false,"context_lines":[{"line_number":55,"context_line":"In :rfc:`6648` the recommendation to prefix application-specific headers with"},{"line_number":56,"context_line":"``X-`` was retracted. But Nova [0]_ and Ironic [1]_\u0027s Microversion"},{"line_number":57,"context_line":"implementation is already released, we should keep Mircoversion backward"},{"line_number":58,"context_line":"compatible. We have no plans to drop ``X-`` prefix at any point."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Semantically this means:"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_8159d15c","line":58,"in_reply_to":"fa32b979_9cef24b0","updated":"2015-06-15 21:47:47.000000000","message":"I think if we\u0027re going to make changes in this space anyway (i.e. nova -\u003e compute etc) we should consider deprecating the use of \u0027X-\u0027 as well so as to be RFC compliant.\n\nIf these changes are made, Nova and Ironic will need to support multiple concurrent versions of the header with Nova/Compute and Ironic/Baremetal anyway, so removing \"X-\" at the same time is essentially no cost.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a3fc9f1b231c577151726dfe5a5d4d1e7c9ac525","unresolved":false,"context_lines":[{"line_number":55,"context_line":"In :rfc:`6648` the recommendation to prefix application-specific headers with"},{"line_number":56,"context_line":"``X-`` was retracted. But Nova [0]_ and Ironic [1]_\u0027s Microversion"},{"line_number":57,"context_line":"implementation is already released, we should keep Mircoversion backward"},{"line_number":58,"context_line":"compatible. We have no plans to drop ``X-`` prefix at any point."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Semantically this means:"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_fd491261","line":58,"in_reply_to":"fa32b979_a56e4f94","updated":"2015-07-03 02:14:51.000000000","message":"yea, as the discussion at ML, most people agree to remove project...then we can remove \u0027X-\u0027 also.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"29e09faa562752fd803c7fb90e548b16317106c0","unresolved":false,"context_lines":[{"line_number":55,"context_line":"In :rfc:`6648` the recommendation to prefix application-specific headers with"},{"line_number":56,"context_line":"``X-`` was retracted. But Nova [0]_ and Ironic [1]_\u0027s Microversion"},{"line_number":57,"context_line":"implementation is already released, we should keep Mircoversion backward"},{"line_number":58,"context_line":"compatible. We have no plans to drop ``X-`` prefix at any point."},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Semantically this means:"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"ba3cc151_4df4c559","line":58,"in_reply_to":"fa32b979_fd491261","updated":"2015-07-03 03:09:56.000000000","message":"+1 for removing \"X-\" as a guideline.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a007b48496927e6d159e98456bb2d7b9acf9a84d","unresolved":false,"context_lines":[{"line_number":60,"context_line":"Semantically this means:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"* If X-OpenStack-[PROJECT]-API-Version is not provided, act as if minimum"},{"line_number":63,"context_line":"  version was sent."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* If X-OpenStack-[PROJECT]-API-Version is sent, respond with the API at that"},{"line_number":66,"context_line":"  version. If that\u0027s outside of the range of versions supported,"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_2d11fd52","line":63,"updated":"2015-06-15 13:34:48.000000000","message":"s/sent/specified/","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"09597e8466c03c2637b3bc498e98d9b85d424675","unresolved":false,"context_lines":[{"line_number":60,"context_line":"Semantically this means:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"* If X-OpenStack-[PROJECT]-API-Version is not provided, act as if minimum"},{"line_number":63,"context_line":"  version was sent."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* If X-OpenStack-[PROJECT]-API-Version is sent, respond with the API at that"},{"line_number":66,"context_line":"  version. If that\u0027s outside of the range of versions supported,"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_c43b67d0","line":63,"in_reply_to":"fa32b979_2d11fd52","updated":"2015-06-15 21:47:47.000000000","message":"Should this be minimum _supported_ version?\n\nWhat Ironic has done here is to use the minimum supported version here (i.e. 1.1 where this was essentially the \u0027Kilo\u0027 interface).  If, in some future universe, Ironic drops supports for the \"Kilo\" interface, the minimum version returned might be some later version.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"07a647f7a20ca14032b12a82fe59bd8c1bb45f09","unresolved":false,"context_lines":[{"line_number":60,"context_line":"Semantically this means:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"* If X-OpenStack-[PROJECT]-API-Version is not provided, act as if minimum"},{"line_number":63,"context_line":"  version was sent."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* If X-OpenStack-[PROJECT]-API-Version is sent, respond with the API at that"},{"line_number":66,"context_line":"  version. If that\u0027s outside of the range of versions supported,"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da20952f_79b7353a","line":63,"in_reply_to":"fa32b979_c43b67d0","updated":"2015-08-31 06:48:07.000000000","message":"@Michael, yes","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a007b48496927e6d159e98456bb2d7b9acf9a84d","unresolved":false,"context_lines":[{"line_number":67,"context_line":"  return 406 Not Acceptable, and response body includes the server supported"},{"line_number":68,"context_line":"  minimum and maximum version."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* If X-OpenStack-[PROJECT]-API-Version: latest (special keyword), return"},{"line_number":71,"context_line":"  maximum version of the API."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"This means out of the box, the old client without any Microversion knowledge"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_6d0e2536","line":70,"updated":"2015-06-15 13:34:48.000000000","message":"s/return maximum version of the API/act as if maximum version was specified/\n\nlike line 62.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"07a647f7a20ca14032b12a82fe59bd8c1bb45f09","unresolved":false,"context_lines":[{"line_number":67,"context_line":"  return 406 Not Acceptable, and response body includes the server supported"},{"line_number":68,"context_line":"  minimum and maximum version."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"* If X-OpenStack-[PROJECT]-API-Version: latest (special keyword), return"},{"line_number":71,"context_line":"  maximum version of the API."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"This means out of the box, the old client without any Microversion knowledge"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da20952f_798e557a","line":70,"in_reply_to":"fa32b979_6d0e2536","updated":"2015-08-31 06:48:07.000000000","message":"Done","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"eead687c1380100154ec715d0e1a2d7d353ce7bb","unresolved":false,"context_lines":[{"line_number":71,"context_line":"  maximum version of the API."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"This means out of the box, the old client without any Microversion knowledge"},{"line_number":74,"context_line":"can work with an new Openstack installation with Mircoversion support."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Although the minimum version can be raised in the future, but in the beginning"},{"line_number":77,"context_line":"of Microversion support, this can be used to compatible with old client. The"}],"source_content_type":"text/x-rst","patch_set":10,"id":"3afb71cf_70ab95d7","line":74,"updated":"2015-06-11 18:47:22.000000000","message":"spelling.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"5ea02f9cbb9aca39fffc8801d596b2aa9e28593d","unresolved":false,"context_lines":[{"line_number":71,"context_line":"  maximum version of the API."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"This means out of the box, the old client without any Microversion knowledge"},{"line_number":74,"context_line":"can work with an new Openstack installation with Mircoversion support."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Although the minimum version can be raised in the future, but in the beginning"},{"line_number":77,"context_line":"of Microversion support, this can be used to compatible with old client. The"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_1c3a3437","line":74,"in_reply_to":"3afb71cf_70ab95d7","updated":"2015-06-15 04:45:47.000000000","message":"Done","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"0b01796a095c471c9a7394de7568d1cdbeae8e3c","unresolved":false,"context_lines":[{"line_number":73,"context_line":"This means out of the box, the old client without any Microversion knowledge"},{"line_number":74,"context_line":"can work with an new Openstack installation with Mircoversion support."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Although the minimum version can be raised in the future, but in the beginning"},{"line_number":77,"context_line":"of Microversion support, this can be used to compatible with old client. The"},{"line_number":78,"context_line":"user or SDK will have to ask for something different in order to get new"},{"line_number":79,"context_line":"features."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_8343ce12","line":76,"updated":"2015-06-23 17:42:25.000000000","message":"remove \"but\"","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"07a647f7a20ca14032b12a82fe59bd8c1bb45f09","unresolved":false,"context_lines":[{"line_number":73,"context_line":"This means out of the box, the old client without any Microversion knowledge"},{"line_number":74,"context_line":"can work with an new Openstack installation with Mircoversion support."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Although the minimum version can be raised in the future, but in the beginning"},{"line_number":77,"context_line":"of Microversion support, this can be used to compatible with old client. The"},{"line_number":78,"context_line":"user or SDK will have to ask for something different in order to get new"},{"line_number":79,"context_line":"features."}],"source_content_type":"text/x-rst","patch_set":10,"id":"da20952f_d9f8c1c5","line":76,"in_reply_to":"fa32b979_8343ce12","updated":"2015-08-31 06:48:07.000000000","message":"Done","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"0b01796a095c471c9a7394de7568d1cdbeae8e3c","unresolved":false,"context_lines":[{"line_number":74,"context_line":"can work with an new Openstack installation with Mircoversion support."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Although the minimum version can be raised in the future, but in the beginning"},{"line_number":77,"context_line":"of Microversion support, this can be used to compatible with old client. The"},{"line_number":78,"context_line":"user or SDK will have to ask for something different in order to get new"},{"line_number":79,"context_line":"features."},{"line_number":80,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_03b9fe14","line":77,"updated":"2015-06-23 17:42:25.000000000","message":"remove the comma after support\n\ns/used to compatible/used to be compatible/\n\ns/client/clients/","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"07a647f7a20ca14032b12a82fe59bd8c1bb45f09","unresolved":false,"context_lines":[{"line_number":74,"context_line":"can work with an new Openstack installation with Mircoversion support."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Although the minimum version can be raised in the future, but in the beginning"},{"line_number":77,"context_line":"of Microversion support, this can be used to compatible with old client. The"},{"line_number":78,"context_line":"user or SDK will have to ask for something different in order to get new"},{"line_number":79,"context_line":"features."},{"line_number":80,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da20952f_790175ae","line":77,"in_reply_to":"fa32b979_03b9fe14","updated":"2015-08-31 06:48:07.000000000","message":"Done","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"02e9666d1a85ad39fc5bb9a88dbc240888f8d5a0","unresolved":false,"context_lines":[{"line_number":76,"context_line":"Although the minimum version can be raised in the future, but in the beginning"},{"line_number":77,"context_line":"of Microversion support, this can be used to compatible with old client. The"},{"line_number":78,"context_line":"user or SDK will have to ask for something different in order to get new"},{"line_number":79,"context_line":"features."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Four extra headers are always returned in the response:"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_4909c030","line":79,"updated":"2015-06-22 08:06:50.000000000","message":"s/will have to/should/\n\nas I said above, hiding features makes 0 sense, so the only motivation for users is not breaking an API contract.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"02e9666d1a85ad39fc5bb9a88dbc240888f8d5a0","unresolved":false,"context_lines":[{"line_number":83,"context_line":"* X-OpenStack-[PROJECT]-API-Version: version_number"},{"line_number":84,"context_line":"* Vary: X-OpenStack-[PROJECT]-API-Version"},{"line_number":85,"context_line":"* X-Openstack-[PROJECT]-API-Minimum-Version: min_version_number"},{"line_number":86,"context_line":"* X-Openstack-[PROJECT]-API-Maximum-Version: max_version_number"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"The first header specifies the version number of the API which was"},{"line_number":89,"context_line":"executed."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_0903b810","line":86,"updated":"2015-06-22 08:06:50.000000000","message":"please also consider Devananda\u0027s proposal: http://lists.openstack.org/pipermail/openstack-dev/2015-June/067570.html","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"0b01796a095c471c9a7394de7568d1cdbeae8e3c","unresolved":false,"context_lines":[{"line_number":93,"context_line":"body and query parameters. See :rfc:`2616` section 14.44 for details."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"The last two headers return the server supported maximum/minimum version."},{"line_number":96,"context_line":"This two headers is used by version negotiate of client/server."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Version Discovery"},{"line_number":99,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_a3a292ac","line":96,"updated":"2015-06-23 17:42:25.000000000","message":"this sentence should read:\n\n    These two headers are used by the version negotiation of the client and server.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"07a647f7a20ca14032b12a82fe59bd8c1bb45f09","unresolved":false,"context_lines":[{"line_number":93,"context_line":"body and query parameters. See :rfc:`2616` section 14.44 for details."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"The last two headers return the server supported maximum/minimum version."},{"line_number":96,"context_line":"This two headers is used by version negotiate of client/server."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Version Discovery"},{"line_number":99,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da20952f_d91f6106","line":96,"in_reply_to":"fa32b979_a3a292ac","updated":"2015-08-31 06:48:07.000000000","message":"Done","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"0b01796a095c471c9a7394de7568d1cdbeae8e3c","unresolved":false,"context_lines":[{"line_number":98,"context_line":"Version Discovery"},{"line_number":99,"context_line":"-----------------"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"The Version API for each service should returns the min and max version. Which"},{"line_number":102,"context_line":"used to client discovery the API supported version."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"A version response would look as follows in Nova [0]_:"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_a3893228","line":101,"updated":"2015-06-23 17:42:25.000000000","message":"s/returns/return/\n\ns/min/minimum/\n\ns/max/maximum/\n\ns/version/versions/","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"07a647f7a20ca14032b12a82fe59bd8c1bb45f09","unresolved":false,"context_lines":[{"line_number":98,"context_line":"Version Discovery"},{"line_number":99,"context_line":"-----------------"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"The Version API for each service should returns the min and max version. Which"},{"line_number":102,"context_line":"used to client discovery the API supported version."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"A version response would look as follows in Nova [0]_:"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da20952f_59c11153","line":101,"in_reply_to":"fa32b979_a3893228","updated":"2015-08-31 06:48:07.000000000","message":"Done","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"0b01796a095c471c9a7394de7568d1cdbeae8e3c","unresolved":false,"context_lines":[{"line_number":99,"context_line":"-----------------"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"The Version API for each service should returns the min and max version. Which"},{"line_number":102,"context_line":"used to client discovery the API supported version."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"A version response would look as follows in Nova [0]_:"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_237e8219","line":102,"updated":"2015-06-23 17:42:25.000000000","message":"last sentence should be\n\n    Which are used by the client to discover the supported versions.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"07a647f7a20ca14032b12a82fe59bd8c1bb45f09","unresolved":false,"context_lines":[{"line_number":99,"context_line":"-----------------"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"The Version API for each service should returns the min and max version. Which"},{"line_number":102,"context_line":"used to client discovery the API supported version."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"A version response would look as follows in Nova [0]_:"},{"line_number":105,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da20952f_39bc5ddb","line":102,"in_reply_to":"fa32b979_237e8219","updated":"2015-08-31 06:48:07.000000000","message":"Done","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"0b01796a095c471c9a7394de7568d1cdbeae8e3c","unresolved":false,"context_lines":[{"line_number":123,"context_line":"       ]"},{"line_number":124,"context_line":"    }"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"\"version\" is max version, \"min_version\" is min version."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"We also have max and min version returned by header in every response, which"},{"line_number":129,"context_line":"mentioned in previous section."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_a3905244","line":126,"updated":"2015-06-23 17:42:25.000000000","message":"replace max and min with full words","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"0b01796a095c471c9a7394de7568d1cdbeae8e3c","unresolved":false,"context_lines":[{"line_number":126,"context_line":"\"version\" is max version, \"min_version\" is min version."},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"We also have max and min version returned by header in every response, which"},{"line_number":129,"context_line":"mentioned in previous section."},{"line_number":130,"context_line":""},{"line_number":131,"context_line":"* X-Openstack-[PROJECT]-API-Minimum-Version: min_version_number"},{"line_number":132,"context_line":"* X-Openstack-[PROJECT]-API-Maximum-Version: max_version_number"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_03d6def0","line":129,"updated":"2015-06-23 17:42:25.000000000","message":"replace max and min\n\ns/version/versions/\n\ns/header/headers/\n\ns/which mentioned in previous/which are mentioned in the previous/","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"a007b48496927e6d159e98456bb2d7b9acf9a84d","unresolved":false,"context_lines":[{"line_number":135,"context_line":"status code **406 Not Acceptable**, and the response body includes the"},{"line_number":136,"context_line":"information about why the requested version can\u0027t be supported. Also includes"},{"line_number":137,"context_line":"the information about the version supported server which used by client find"},{"line_number":138,"context_line":"out appropraite version work with."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"The JSON-Schema of response is:"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_add50d44","line":138,"updated":"2015-06-15 13:34:48.000000000","message":"line 134-138 is already described at line 65, so better to remove here for reducing maintenance cost.","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":13997,"name":"SHIGEMATSU Mitsuhiro","email":"shigematsu.mitsuhiro@lab.ntt.co.jp","username":"pshige"},"change_message_id":"e7e8a3fa00d0b92efd72441742378fdddec5d02b","unresolved":false,"context_lines":[{"line_number":135,"context_line":"status code **406 Not Acceptable**, and the response body includes the"},{"line_number":136,"context_line":"information about why the requested version can\u0027t be supported. Also includes"},{"line_number":137,"context_line":"the information about the version supported server which used by client find"},{"line_number":138,"context_line":"out appropraite version work with."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"The JSON-Schema of response is:"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa1b9901_c71a41c6","line":138,"updated":"2015-08-25 16:26:03.000000000","message":"s/appropraite/appropriate/","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"0b01796a095c471c9a7394de7568d1cdbeae8e3c","unresolved":false,"context_lines":[{"line_number":135,"context_line":"status code **406 Not Acceptable**, and the response body includes the"},{"line_number":136,"context_line":"information about why the requested version can\u0027t be supported. Also includes"},{"line_number":137,"context_line":"the information about the version supported server which used by client find"},{"line_number":138,"context_line":"out appropraite version work with."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"The JSON-Schema of response is:"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_83850ed0","line":138,"in_reply_to":"fa32b979_add50d44","updated":"2015-06-23 17:42:25.000000000","message":"+1","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"07a647f7a20ca14032b12a82fe59bd8c1bb45f09","unresolved":false,"context_lines":[{"line_number":135,"context_line":"status code **406 Not Acceptable**, and the response body includes the"},{"line_number":136,"context_line":"information about why the requested version can\u0027t be supported. Also includes"},{"line_number":137,"context_line":"the information about the version supported server which used by client find"},{"line_number":138,"context_line":"out appropraite version work with."},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"The JSON-Schema of response is:"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"da20952f_79741535","line":138,"in_reply_to":"fa32b979_add50d44","updated":"2015-08-31 06:48:07.000000000","message":"Done","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"0b01796a095c471c9a7394de7568d1cdbeae8e3c","unresolved":false,"context_lines":[{"line_number":165,"context_line":"  }"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"There is example:"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"::"},{"line_number":171,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_2356825c","line":168,"updated":"2015-06-23 17:42:25.000000000","message":"this should read:\n\n    An example response:","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"09597e8466c03c2637b3bc498e98d9b85d424675","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    }"},{"line_number":179,"context_line":"  }"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"As Nova and Ironic\u0027s Microversion implementation is already release. Both of"},{"line_number":182,"context_line":"two projects have own format for fault response. For back compatible, the old"},{"line_number":183,"context_line":"fault response can be attend to the response also, but expect the old response"},{"line_number":184,"context_line":"deprecate in the future."}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_8491df9b","line":181,"updated":"2015-06-15 21:47:47.000000000","message":"s/is already release. Both/has already been released, both/","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"09597e8466c03c2637b3bc498e98d9b85d424675","unresolved":false,"context_lines":[{"line_number":179,"context_line":"  }"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"As Nova and Ironic\u0027s Microversion implementation is already release. Both of"},{"line_number":182,"context_line":"two projects have own format for fault response. For back compatible, the old"},{"line_number":183,"context_line":"fault response can be attend to the response also, but expect the old response"},{"line_number":184,"context_line":"deprecate in the future."},{"line_number":185,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_04f4efef","line":182,"updated":"2015-06-15 21:47:47.000000000","message":"s/back compatible/backward compatibility/","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"09597e8466c03c2637b3bc498e98d9b85d424675","unresolved":false,"context_lines":[{"line_number":182,"context_line":"two projects have own format for fault response. For back compatible, the old"},{"line_number":183,"context_line":"fault response can be attend to the response also, but expect the old response"},{"line_number":184,"context_line":"deprecate in the future."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"There is example for Nova:"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"::"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_440677cf","line":185,"updated":"2015-06-15 21:47:47.000000000","message":"How about we change this above paragraph to:\n\n\n\"As Nova and Ironic\u0027s microversion implementations have already been released, both projects have their own format for fault responses.  For backward compatibility, both the new and old fault responses can appear in the response, but you should consider the old fault responses deprecated and might be removed in the future\"","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"07a647f7a20ca14032b12a82fe59bd8c1bb45f09","unresolved":false,"context_lines":[{"line_number":182,"context_line":"two projects have own format for fault response. For back compatible, the old"},{"line_number":183,"context_line":"fault response can be attend to the response also, but expect the old response"},{"line_number":184,"context_line":"deprecate in the future."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"There is example for Nova:"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"::"}],"source_content_type":"text/x-rst","patch_set":10,"id":"da20952f_b9a5cda2","line":185,"in_reply_to":"fa32b979_238be2c4","updated":"2015-08-31 06:48:07.000000000","message":"thanks, will update","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"0b01796a095c471c9a7394de7568d1cdbeae8e3c","unresolved":false,"context_lines":[{"line_number":182,"context_line":"two projects have own format for fault response. For back compatible, the old"},{"line_number":183,"context_line":"fault response can be attend to the response also, but expect the old response"},{"line_number":184,"context_line":"deprecate in the future."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"There is example for Nova:"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"::"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa32b979_238be2c4","line":185,"in_reply_to":"fa32b979_440677cf","updated":"2015-06-23 17:42:25.000000000","message":"+1","commit_id":"fa00df9d3f54a5be3df88aa4cf97d62694752055"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"e626324600e36a4c291ea40b0c71a087e306fc08","unresolved":false,"context_lines":[{"line_number":4,"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"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"This topic document serves to provide guidance on how to work with"},{"line_number":7,"context_line":"Microversions in OpenStack REST APIs."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Microversions enables the ability to introduce API changes while being able to"},{"line_number":10,"context_line":"allow clients to discover those changes. According to negotiate with servers,"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_6d9e62ba","line":7,"updated":"2015-10-12 16:24:41.000000000","message":"i don\u0027t think we should capitalize \"Microversions\" throughout the guideline","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"39fe98f148522d968d2943071a4da9cf12508727","unresolved":false,"context_lines":[{"line_number":4,"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"},{"line_number":5,"context_line":""},{"line_number":6,"context_line":"This topic document serves to provide guidance on how to work with"},{"line_number":7,"context_line":"Microversions in OpenStack REST APIs."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Microversions enables the ability to introduce API changes while being able to"},{"line_number":10,"context_line":"allow clients to discover those changes. According to negotiate with servers,"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_8a36d601","line":7,"in_reply_to":"da20952f_6d9e62ba","updated":"2015-11-09 11:31:41.000000000","message":"Done","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"e626324600e36a4c291ea40b0c71a087e306fc08","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Microversions in OpenStack REST APIs."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Microversions enables the ability to introduce API changes while being able to"},{"line_number":10,"context_line":"allow clients to discover those changes. According to negotiate with servers,"},{"line_number":11,"context_line":"clients adjust their behavior to work with server correctly."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Versioning"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da20952f_3259ab8e","line":10,"updated":"2015-10-12 16:24:41.000000000","message":"s/negotiate/negotiations/","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1a0f390f07dc9a7d8b22a7a4d3d4e91dbdd09f27","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Microversions in OpenStack REST APIs."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Microversions enables the ability to introduce API changes while being able to"},{"line_number":10,"context_line":"allow clients to discover those changes. According to negotiate with servers,"},{"line_number":11,"context_line":"clients adjust their behavior to work with server correctly."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Versioning"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a2fa921_c36287ad","line":10,"in_reply_to":"da20952f_3259ab8e","updated":"2015-11-10 05:51:34.000000000","message":"Done","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"39fe98f148522d968d2943071a4da9cf12508727","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Microversions in OpenStack REST APIs."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Microversions enables the ability to introduce API changes while being able to"},{"line_number":10,"context_line":"allow clients to discover those changes. According to negotiate with servers,"},{"line_number":11,"context_line":"clients adjust their behavior to work with server correctly."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Versioning"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_4a40ee56","line":10,"in_reply_to":"da20952f_3259ab8e","updated":"2015-11-09 11:31:41.000000000","message":"Done","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5c578b66e6ea0bc74f8f0a99bd280330d49b0bef","unresolved":false,"context_lines":[{"line_number":25,"context_line":"  between backwards compatible and backwards incompatible changes in"},{"line_number":26,"context_line":"  the versioning system. It will however be made clear in the"},{"line_number":27,"context_line":"  documentation as to what is a backwards compatible change and what"},{"line_number":28,"context_line":"  is a backwards incompatible one."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"There are minimum and maximum versions which are used to describe what the"},{"line_number":31,"context_line":"server can understand. The minimum and maximum versions are the oldest and"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a29b11f_e524c00d","line":28,"updated":"2015-10-22 22:02:34.000000000","message":"One thing that is not clear to API developers (well at least one API developer...) is when a backward compatible change deserve an increment in X and Y.\n\nPersonally I believe increments in X should be used very sparingly. That is the case of a major overhaul of the API.\nFor instance:\n1) a number of endpoints get replaced by others\n2) paradigms shifts from synchronous to asynchronous or vice versa\n3) Drastic changes in API consumer workflow\n\nI reckon the guideline is the right place to provide this kind of clarification","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"ef26cec71ffd6805ed5b67704ea4dff4ef8e8c5b","unresolved":false,"context_lines":[{"line_number":25,"context_line":"  between backwards compatible and backwards incompatible changes in"},{"line_number":26,"context_line":"  the versioning system. It will however be made clear in the"},{"line_number":27,"context_line":"  documentation as to what is a backwards compatible change and what"},{"line_number":28,"context_line":"  is a backwards incompatible one."},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"There are minimum and maximum versions which are used to describe what the"},{"line_number":31,"context_line":"server can understand. The minimum and maximum versions are the oldest and"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_c5e2919f","line":28,"in_reply_to":"3a29b11f_e524c00d","updated":"2015-11-09 11:47:06.000000000","message":"Copied to https://review.openstack.org/#/c/243041/1/guidelines/microversion_specification.rst","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5c578b66e6ea0bc74f8f0a99bd280330d49b0bef","unresolved":false,"context_lines":[{"line_number":31,"context_line":"server can understand. The minimum and maximum versions are the oldest and"},{"line_number":32,"context_line":"most recent versions supported. The minimum version can be increased when"},{"line_number":33,"context_line":"supporting old clients is too great a burden. Increasing the minimum version"},{"line_number":34,"context_line":"means break the old clients, this happen very rarely also."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Each version includes all the changes since minimum version was introduced."},{"line_number":37,"context_line":"It is not possible to request the feature introduced at Microversion X"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a29b11f_05821cc8","line":34,"updated":"2015-10-22 22:02:34.000000000","message":"\"means break\" should probably be \"means breaking\"\n\ns/happen/happens/","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"ef26cec71ffd6805ed5b67704ea4dff4ef8e8c5b","unresolved":false,"context_lines":[{"line_number":31,"context_line":"server can understand. The minimum and maximum versions are the oldest and"},{"line_number":32,"context_line":"most recent versions supported. The minimum version can be increased when"},{"line_number":33,"context_line":"supporting old clients is too great a burden. Increasing the minimum version"},{"line_number":34,"context_line":"means break the old clients, this happen very rarely also."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"Each version includes all the changes since minimum version was introduced."},{"line_number":37,"context_line":"It is not possible to request the feature introduced at Microversion X"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_65ee458d","line":34,"in_reply_to":"3a29b11f_05821cc8","updated":"2015-11-09 11:47:06.000000000","message":"ditto","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5c578b66e6ea0bc74f8f0a99bd280330d49b0bef","unresolved":false,"context_lines":[{"line_number":36,"context_line":"Each version includes all the changes since minimum version was introduced."},{"line_number":37,"context_line":"It is not possible to request the feature introduced at Microversion X"},{"line_number":38,"context_line":"without accepting all the changes before X in the same request. The API changes"},{"line_number":39,"context_line":"in X+1 version will hide in the X and early version. That also means specific"},{"line_number":40,"context_line":"version keeps all the same always since it\u0027s introduced."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Client Interaction"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a29b11f_85fb8c46","line":39,"updated":"2015-10-22 22:02:34.000000000","message":"It\u0027s not just hiding. Also all the behavioural changes introduced by version X+1 should not be available in X.\n\nImagine, for instance, that version X+1 introduces a behaviour where by omitting network_id in a POST to \u003cneutron\u003e/v2.0/subnets triggers auto-generation of a network. In version X that same payload would result in a 400 instead, and the same behaviour should be preserved for version X even after X+1 is introduced.","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"ef26cec71ffd6805ed5b67704ea4dff4ef8e8c5b","unresolved":false,"context_lines":[{"line_number":36,"context_line":"Each version includes all the changes since minimum version was introduced."},{"line_number":37,"context_line":"It is not possible to request the feature introduced at Microversion X"},{"line_number":38,"context_line":"without accepting all the changes before X in the same request. The API changes"},{"line_number":39,"context_line":"in X+1 version will hide in the X and early version. That also means specific"},{"line_number":40,"context_line":"version keeps all the same always since it\u0027s introduced."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Client Interaction"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_25e83d7c","line":39,"in_reply_to":"3a29b11f_85fb8c46","updated":"2015-11-09 11:47:06.000000000","message":"ditto","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5c578b66e6ea0bc74f8f0a99bd280330d49b0bef","unresolved":false,"context_lines":[{"line_number":37,"context_line":"It is not possible to request the feature introduced at Microversion X"},{"line_number":38,"context_line":"without accepting all the changes before X in the same request. The API changes"},{"line_number":39,"context_line":"in X+1 version will hide in the X and early version. That also means specific"},{"line_number":40,"context_line":"version keeps all the same always since it\u0027s introduced."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Client Interaction"},{"line_number":43,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a29b11f_c5574456","line":40,"updated":"2015-10-22 22:02:34.000000000","message":"I am not able to understand the meaning of the last sentence.","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"ef26cec71ffd6805ed5b67704ea4dff4ef8e8c5b","unresolved":false,"context_lines":[{"line_number":37,"context_line":"It is not possible to request the feature introduced at Microversion X"},{"line_number":38,"context_line":"without accepting all the changes before X in the same request. The API changes"},{"line_number":39,"context_line":"in X+1 version will hide in the X and early version. That also means specific"},{"line_number":40,"context_line":"version keeps all the same always since it\u0027s introduced."},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"Client Interaction"},{"line_number":43,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_45ed418a","line":40,"in_reply_to":"3a29b11f_c5574456","updated":"2015-11-09 11:47:06.000000000","message":"ditto","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5c578b66e6ea0bc74f8f0a99bd280330d49b0bef","unresolved":false,"context_lines":[{"line_number":52,"context_line":"  X-OpenStack-Identity-API-Version: 2.114"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"This conceptually acts like the accept header. This is a global API"},{"line_number":55,"context_line":"version."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"In the Microversions early implementation, the Nova [0]_ and Ironic [1]_"},{"line_number":58,"context_line":"already use project name in the header. As the API is already released, so the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a29b11f_25a15846","line":55,"updated":"2015-10-22 22:02:34.000000000","message":"just out of curiosity, what do you mean by \"global\" here?","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1a0f390f07dc9a7d8b22a7a4d3d4e91dbdd09f27","unresolved":false,"context_lines":[{"line_number":52,"context_line":"  X-OpenStack-Identity-API-Version: 2.114"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"This conceptually acts like the accept header. This is a global API"},{"line_number":55,"context_line":"version."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"In the Microversions early implementation, the Nova [0]_ and Ironic [1]_"},{"line_number":58,"context_line":"already use project name in the header. As the API is already released, so the"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_39635cde","line":55,"in_reply_to":"3a29b11f_25a15846","updated":"2015-11-10 05:51:34.000000000","message":"For example, we should say the Nova API 2.114. We can\u0027t see the server create is 2.115 and delete server is 2.225. The version is point to the whole APIs, not individual","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"e626324600e36a4c291ea40b0c71a087e306fc08","unresolved":false,"context_lines":[{"line_number":57,"context_line":"In the Microversions early implementation, the Nova [0]_ and Ironic [1]_"},{"line_number":58,"context_line":"already use project name in the header. As the API is already released, so the"},{"line_number":59,"context_line":"existed header won\u0027t be changed in Nova and Ironic for keep backward"},{"line_number":60,"context_line":"compatible."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"In :rfc:`6648` the recommendation to prefix application-specific headers with"},{"line_number":63,"context_line":"``X-`` was retracted. But Nova [0]_ and Ironic [1]_\u0027s Microversion"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a2fa921_bfaea2e5","line":60,"updated":"2015-10-12 16:24:41.000000000","message":"this paragraph should be refactored slightly, as follows:\n\n\"In the early implementations of microversions, some projects, such as nova [0]_ and ironic [1]_, are already using their names in the headers. As these APIs have already been released, the existing headers should not be changed in those projects to ensure backward compatibility.\"\n\nalso, project names should not be capitalized as per the OpenStack documentation conventions. https://wiki.openstack.org/wiki/Documentation/Conventions","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1a0f390f07dc9a7d8b22a7a4d3d4e91dbdd09f27","unresolved":false,"context_lines":[{"line_number":57,"context_line":"In the Microversions early implementation, the Nova [0]_ and Ironic [1]_"},{"line_number":58,"context_line":"already use project name in the header. As the API is already released, so the"},{"line_number":59,"context_line":"existed header won\u0027t be changed in Nova and Ironic for keep backward"},{"line_number":60,"context_line":"compatible."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"In :rfc:`6648` the recommendation to prefix application-specific headers with"},{"line_number":63,"context_line":"``X-`` was retracted. But Nova [0]_ and Ironic [1]_\u0027s Microversion"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_39ba7c24","line":60,"in_reply_to":"7a2fa921_bfaea2e5","updated":"2015-11-10 05:51:34.000000000","message":"as Everett pointed out, so let nova and ironic enable the new header, and keep the old header for period to keep backward-compatible","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"e626324600e36a4c291ea40b0c71a087e306fc08","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"In :rfc:`6648` the recommendation to prefix application-specific headers with"},{"line_number":63,"context_line":"``X-`` was retracted. But Nova [0]_ and Ironic [1]_\u0027s Microversion"},{"line_number":64,"context_line":"implementation is already released, and in the API-WG guidelines"},{"line_number":65,"context_line":":ref:`headers` isn\u0027t recommended to replace existing uses of ``X-`` also. So"},{"line_number":66,"context_line":"we should keep Mircoversion backward compatible, have no plans to drop ``X-``"},{"line_number":67,"context_line":"prefix at any point. For keeping consistent across all the projects, the header"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a2fa921_dfc03e7f","line":64,"updated":"2015-10-12 16:24:41.000000000","message":"s/is already/are already/","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1a0f390f07dc9a7d8b22a7a4d3d4e91dbdd09f27","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"In :rfc:`6648` the recommendation to prefix application-specific headers with"},{"line_number":63,"context_line":"``X-`` was retracted. But Nova [0]_ and Ironic [1]_\u0027s Microversion"},{"line_number":64,"context_line":"implementation is already released, and in the API-WG guidelines"},{"line_number":65,"context_line":":ref:`headers` isn\u0027t recommended to replace existing uses of ``X-`` also. So"},{"line_number":66,"context_line":"we should keep Mircoversion backward compatible, have no plans to drop ``X-``"},{"line_number":67,"context_line":"prefix at any point. For keeping consistent across all the projects, the header"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_d9f6d0f8","line":64,"in_reply_to":"7a2fa921_dfc03e7f","updated":"2015-11-10 05:51:34.000000000","message":"let me remove this paragraph","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"e626324600e36a4c291ea40b0c71a087e306fc08","unresolved":false,"context_lines":[{"line_number":62,"context_line":"In :rfc:`6648` the recommendation to prefix application-specific headers with"},{"line_number":63,"context_line":"``X-`` was retracted. But Nova [0]_ and Ironic [1]_\u0027s Microversion"},{"line_number":64,"context_line":"implementation is already released, and in the API-WG guidelines"},{"line_number":65,"context_line":":ref:`headers` isn\u0027t recommended to replace existing uses of ``X-`` also. So"},{"line_number":66,"context_line":"we should keep Mircoversion backward compatible, have no plans to drop ``X-``"},{"line_number":67,"context_line":"prefix at any point. For keeping consistent across all the projects, the header"},{"line_number":68,"context_line":"keep the ``X-`` prefix."}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a2fa921_3fb932ed","line":65,"updated":"2015-10-12 16:24:41.000000000","message":"s/API-WG guidelines :ref:`headers` isn\u0027t/API-WG :ref:`headers` guideline it is not/\n\ns/also././","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1a0f390f07dc9a7d8b22a7a4d3d4e91dbdd09f27","unresolved":false,"context_lines":[{"line_number":62,"context_line":"In :rfc:`6648` the recommendation to prefix application-specific headers with"},{"line_number":63,"context_line":"``X-`` was retracted. But Nova [0]_ and Ironic [1]_\u0027s Microversion"},{"line_number":64,"context_line":"implementation is already released, and in the API-WG guidelines"},{"line_number":65,"context_line":":ref:`headers` isn\u0027t recommended to replace existing uses of ``X-`` also. So"},{"line_number":66,"context_line":"we should keep Mircoversion backward compatible, have no plans to drop ``X-``"},{"line_number":67,"context_line":"prefix at any point. For keeping consistent across all the projects, the header"},{"line_number":68,"context_line":"keep the ``X-`` prefix."}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_99d92886","line":65,"in_reply_to":"7a2fa921_3fb932ed","updated":"2015-11-10 05:51:34.000000000","message":"let me remove this paragraph","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"e626324600e36a4c291ea40b0c71a087e306fc08","unresolved":false,"context_lines":[{"line_number":65,"context_line":":ref:`headers` isn\u0027t recommended to replace existing uses of ``X-`` also. So"},{"line_number":66,"context_line":"we should keep Mircoversion backward compatible, have no plans to drop ``X-``"},{"line_number":67,"context_line":"prefix at any point. For keeping consistent across all the projects, the header"},{"line_number":68,"context_line":"keep the ``X-`` prefix."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Semantically this means:"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a2fa921_3fbb7277","line":68,"updated":"2015-10-12 16:24:41.000000000","message":"i think these last 2 sentences should be condensed into a single sentence. something along the lines of:\n\n\"We recommend keeping microversions backward compatible, and as such, do not advise dropping the ``X-`` prefix for projects which already use these headers.\"","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5c578b66e6ea0bc74f8f0a99bd280330d49b0bef","unresolved":false,"context_lines":[{"line_number":65,"context_line":":ref:`headers` isn\u0027t recommended to replace existing uses of ``X-`` also. So"},{"line_number":66,"context_line":"we should keep Mircoversion backward compatible, have no plans to drop ``X-``"},{"line_number":67,"context_line":"prefix at any point. For keeping consistent across all the projects, the header"},{"line_number":68,"context_line":"keep the ``X-`` prefix."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"Semantically this means:"},{"line_number":71,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a29b11f_97165f4a","line":68,"in_reply_to":"7a2fa921_3fbb7277","updated":"2015-10-22 22:02:34.000000000","message":"this is more readable indeed.","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5c578b66e6ea0bc74f8f0a99bd280330d49b0bef","unresolved":false,"context_lines":[{"line_number":70,"context_line":"Semantically this means:"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"* If X-OpenStack-[SERVICE_TYPE]-API-Version is not provided, act as if minimum"},{"line_number":73,"context_line":"  supported version was specified."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"* If X-OpenStack-[SERVICE_TYPE]-API-Version is sent, respond with the API at"},{"line_number":76,"context_line":"  that version. If that\u0027s outside of the range of versions supported, return"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a29b11f_5733e7f5","line":73,"updated":"2015-10-22 22:02:34.000000000","message":"I don\u0027t know if this point has been already agreed upon (I\u0027m late to this party), but I reckon the serve should have the ability to specify a default API version in the [minimum, maximum] range. If no default is specified, then the minimum API version will be picked when the client does not specify one.","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1a0f390f07dc9a7d8b22a7a4d3d4e91dbdd09f27","unresolved":false,"context_lines":[{"line_number":70,"context_line":"Semantically this means:"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"* If X-OpenStack-[SERVICE_TYPE]-API-Version is not provided, act as if minimum"},{"line_number":73,"context_line":"  supported version was specified."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"* If X-OpenStack-[SERVICE_TYPE]-API-Version is sent, respond with the API at"},{"line_number":76,"context_line":"  that version. If that\u0027s outside of the range of versions supported, return"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_591660f2","line":73,"in_reply_to":"3a29b11f_5733e7f5","updated":"2015-11-10 05:51:34.000000000","message":"In nova, we didn\u0027t have such thing. [minimum, maximum] range show the range server supported. And the client didn\u0027t specify a version, the minimum is always returned from server side. This is for backward compatible.\n\nif there is default is specified, that means we drop some old version. And for old client which didn\u0027t know anything about microversion yet, raise the default or raise the minimum means break their code.","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5c578b66e6ea0bc74f8f0a99bd280330d49b0bef","unresolved":false,"context_lines":[{"line_number":84,"context_line":"  would be dangerous to rely on in client code since Microversions are not"},{"line_number":85,"context_line":"  following semver and therefore backward compability is not guaranteed."},{"line_number":86,"context_line":"  Clients should always require a specific Microversions but limit what is"},{"line_number":87,"context_line":"  acceptable to the version range that it understands at the time."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"This means out of the box, the old client without any Microversions knowledge"},{"line_number":90,"context_line":"can work with an new Openstack installation with Microversions support."}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a29b11f_97b2df4a","line":87,"updated":"2015-10-22 22:02:34.000000000","message":"is this user documentation or an API guideline?\nI think this note is out of place here, but on the other hand I also agree it\u0027s not doing any harm.","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1a0f390f07dc9a7d8b22a7a4d3d4e91dbdd09f27","unresolved":false,"context_lines":[{"line_number":84,"context_line":"  would be dangerous to rely on in client code since Microversions are not"},{"line_number":85,"context_line":"  following semver and therefore backward compability is not guaranteed."},{"line_number":86,"context_line":"  Clients should always require a specific Microversions but limit what is"},{"line_number":87,"context_line":"  acceptable to the version range that it understands at the time."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"This means out of the box, the old client without any Microversions knowledge"},{"line_number":90,"context_line":"can work with an new Openstack installation with Microversions support."}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_f9bab4e0","line":87,"in_reply_to":"3a29b11f_97b2df4a","updated":"2015-11-10 05:51:34.000000000","message":"I think this is explain the concern about latest. Then let people know what is \u0027latest\u0027 purpose to. I prefer to keep at here.","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"e626324600e36a4c291ea40b0c71a087e306fc08","unresolved":false,"context_lines":[{"line_number":86,"context_line":"  Clients should always require a specific Microversions but limit what is"},{"line_number":87,"context_line":"  acceptable to the version range that it understands at the time."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"This means out of the box, the old client without any Microversions knowledge"},{"line_number":90,"context_line":"can work with an new Openstack installation with Microversions support."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Although the minimum version can be raised in the future, in the beginning"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a2fa921_3f305207","line":89,"updated":"2015-10-12 16:24:41.000000000","message":"s/means out/means that out/\n\ns/the old/an old/","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1a0f390f07dc9a7d8b22a7a4d3d4e91dbdd09f27","unresolved":false,"context_lines":[{"line_number":86,"context_line":"  Clients should always require a specific Microversions but limit what is"},{"line_number":87,"context_line":"  acceptable to the version range that it understands at the time."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"This means out of the box, the old client without any Microversions knowledge"},{"line_number":90,"context_line":"can work with an new Openstack installation with Microversions support."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Although the minimum version can be raised in the future, in the beginning"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_19be98d4","line":89,"in_reply_to":"7a2fa921_3f305207","updated":"2015-11-10 05:51:34.000000000","message":"thanks done.","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"e626324600e36a4c291ea40b0c71a087e306fc08","unresolved":false,"context_lines":[{"line_number":87,"context_line":"  acceptable to the version range that it understands at the time."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"This means out of the box, the old client without any Microversions knowledge"},{"line_number":90,"context_line":"can work with an new Openstack installation with Microversions support."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Although the minimum version can be raised in the future, in the beginning"},{"line_number":93,"context_line":"of Microversions support can be used to be compatible with old clients. The"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a2fa921_df211eb6","line":90,"updated":"2015-10-12 16:24:41.000000000","message":"s/an new/a new/","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1a0f390f07dc9a7d8b22a7a4d3d4e91dbdd09f27","unresolved":false,"context_lines":[{"line_number":87,"context_line":"  acceptable to the version range that it understands at the time."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"This means out of the box, the old client without any Microversions knowledge"},{"line_number":90,"context_line":"can work with an new Openstack installation with Microversions support."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Although the minimum version can be raised in the future, in the beginning"},{"line_number":93,"context_line":"of Microversions support can be used to be compatible with old clients. The"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_99912855","line":90,"in_reply_to":"3a29b11f_17856f58","updated":"2015-11-10 05:51:34.000000000","message":"emm....I choice \u0027an\u0027","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5c578b66e6ea0bc74f8f0a99bd280330d49b0bef","unresolved":false,"context_lines":[{"line_number":87,"context_line":"  acceptable to the version range that it understands at the time."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"This means out of the box, the old client without any Microversions knowledge"},{"line_number":90,"context_line":"can work with an new Openstack installation with Microversions support."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Although the minimum version can be raised in the future, in the beginning"},{"line_number":93,"context_line":"of Microversions support can be used to be compatible with old clients. The"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a29b11f_17856f58","line":90,"in_reply_to":"7a2fa921_df211eb6","updated":"2015-10-22 22:02:34.000000000","message":"I\u0027d say s/an new/an/","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"e626324600e36a4c291ea40b0c71a087e306fc08","unresolved":false,"context_lines":[{"line_number":90,"context_line":"can work with an new Openstack installation with Microversions support."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Although the minimum version can be raised in the future, in the beginning"},{"line_number":93,"context_line":"of Microversions support can be used to be compatible with old clients. The"},{"line_number":94,"context_line":"user or SDK should ask for something different in order to get new features."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Four extra headers are always returned in the response:"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a2fa921_5a2afc7f","line":93,"updated":"2015-10-12 16:24:41.000000000","message":"not sure i understand the first sentence. is this saying all microversions should default to the minimum version when beginning to use them?","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1a0f390f07dc9a7d8b22a7a4d3d4e91dbdd09f27","unresolved":false,"context_lines":[{"line_number":90,"context_line":"can work with an new Openstack installation with Microversions support."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Although the minimum version can be raised in the future, in the beginning"},{"line_number":93,"context_line":"of Microversions support can be used to be compatible with old clients. The"},{"line_number":94,"context_line":"user or SDK should ask for something different in order to get new features."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Four extra headers are always returned in the response:"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_5972e04a","line":93,"in_reply_to":"3a29b11f_57e68744","updated":"2015-11-10 05:51:34.000000000","message":"yea, this is advice for implementing. In the beginning we should support the old version, and we needn\u0027t worry about user won\u0027t upgrade their client because the old version is supported. The new feature in the higher version will attract user upgrade their client.","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"5c578b66e6ea0bc74f8f0a99bd280330d49b0bef","unresolved":false,"context_lines":[{"line_number":90,"context_line":"can work with an new Openstack installation with Microversions support."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Although the minimum version can be raised in the future, in the beginning"},{"line_number":93,"context_line":"of Microversions support can be used to be compatible with old clients. The"},{"line_number":94,"context_line":"user or SDK should ask for something different in order to get new features."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"Four extra headers are always returned in the response:"}],"source_content_type":"text/x-rst","patch_set":11,"id":"3a29b11f_57e68744","line":93,"in_reply_to":"7a2fa921_5a2afc7f","updated":"2015-10-22 22:02:34.000000000","message":"I think it simply means that as long as the non-microversioned API is not deprecated, the minimum version supported should be exactly that API, and clients will not be able to leverage any new features unless they explicitly ask for a different version.\n\nI think this probably need some rephrasing but is sensible advice for implementing an effective API strategy","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"e626324600e36a4c291ea40b0c71a087e306fc08","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"* X-OpenStack-[SERVICE_TYPE]-API-Version: version_number"},{"line_number":99,"context_line":"* Vary: X-OpenStack-[SERVICE_TYPE]-API-Version"},{"line_number":100,"context_line":"* X-Openstack-[SERVICE_TYPE]-API-Minimum-Version: min_version_number"},{"line_number":101,"context_line":"* X-Openstack-[SERVICE_TYPE]-API-Maximum-Version: max_version_number"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The first header specifies the version number of the API which was"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a2fa921_1ae1e4fe","line":100,"updated":"2015-10-12 16:24:41.000000000","message":"X-OpenStack-[SERVICE_TYPE]-API-Minumum-Version ?","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1a0f390f07dc9a7d8b22a7a4d3d4e91dbdd09f27","unresolved":false,"context_lines":[{"line_number":97,"context_line":""},{"line_number":98,"context_line":"* X-OpenStack-[SERVICE_TYPE]-API-Version: version_number"},{"line_number":99,"context_line":"* Vary: X-OpenStack-[SERVICE_TYPE]-API-Version"},{"line_number":100,"context_line":"* X-Openstack-[SERVICE_TYPE]-API-Minimum-Version: min_version_number"},{"line_number":101,"context_line":"* X-Openstack-[SERVICE_TYPE]-API-Maximum-Version: max_version_number"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The first header specifies the version number of the API which was"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_39c59c3b","line":100,"in_reply_to":"7a2fa921_1ae1e4fe","updated":"2015-11-10 05:51:34.000000000","message":"Done, thanks. For \u0027Minimum\u0027, I checked the ironic used it.","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"e626324600e36a4c291ea40b0c71a087e306fc08","unresolved":false,"context_lines":[{"line_number":98,"context_line":"* X-OpenStack-[SERVICE_TYPE]-API-Version: version_number"},{"line_number":99,"context_line":"* Vary: X-OpenStack-[SERVICE_TYPE]-API-Version"},{"line_number":100,"context_line":"* X-Openstack-[SERVICE_TYPE]-API-Minimum-Version: min_version_number"},{"line_number":101,"context_line":"* X-Openstack-[SERVICE_TYPE]-API-Maximum-Version: max_version_number"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The first header specifies the version number of the API which was"},{"line_number":104,"context_line":"executed."}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a2fa921_9aedf4f1","line":101,"updated":"2015-10-12 16:24:41.000000000","message":"X-OpenStack-[SERVICE_TYPE]-API-Maximum-Version ?","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1a0f390f07dc9a7d8b22a7a4d3d4e91dbdd09f27","unresolved":false,"context_lines":[{"line_number":98,"context_line":"* X-OpenStack-[SERVICE_TYPE]-API-Version: version_number"},{"line_number":99,"context_line":"* Vary: X-OpenStack-[SERVICE_TYPE]-API-Version"},{"line_number":100,"context_line":"* X-Openstack-[SERVICE_TYPE]-API-Minimum-Version: min_version_number"},{"line_number":101,"context_line":"* X-Openstack-[SERVICE_TYPE]-API-Maximum-Version: max_version_number"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The first header specifies the version number of the API which was"},{"line_number":104,"context_line":"executed."}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_1908d890","line":101,"in_reply_to":"7a2fa921_9aedf4f1","updated":"2015-11-10 05:51:34.000000000","message":"Done","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"e626324600e36a4c291ea40b0c71a087e306fc08","unresolved":false,"context_lines":[{"line_number":104,"context_line":"executed."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"The second header is used as a hint to caching proxies that the response"},{"line_number":107,"context_line":"is also dependent on the X-Openstack-Compute-API-Version and not just the"},{"line_number":108,"context_line":"body and query parameters. See :rfc:`2616` section 14.44 for details."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"The last two headers return the server supported maximum/minimum version."}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a2fa921_7a19f821","line":107,"updated":"2015-10-12 16:24:41.000000000","message":"should this be \"X-OpenStack-[SERVICE_TYPE]-API-Version\" instead of specifying Compute?","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1a0f390f07dc9a7d8b22a7a4d3d4e91dbdd09f27","unresolved":false,"context_lines":[{"line_number":104,"context_line":"executed."},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"The second header is used as a hint to caching proxies that the response"},{"line_number":107,"context_line":"is also dependent on the X-Openstack-Compute-API-Version and not just the"},{"line_number":108,"context_line":"body and query parameters. See :rfc:`2616` section 14.44 for details."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"The last two headers return the server supported maximum/minimum version."}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_d901f06b","line":107,"in_reply_to":"7a2fa921_7a19f821","updated":"2015-11-10 05:51:34.000000000","message":"yea, done","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"e626324600e36a4c291ea40b0c71a087e306fc08","unresolved":false,"context_lines":[{"line_number":107,"context_line":"is also dependent on the X-Openstack-Compute-API-Version and not just the"},{"line_number":108,"context_line":"body and query parameters. See :rfc:`2616` section 14.44 for details."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"The last two headers return the server supported maximum/minimum version."},{"line_number":111,"context_line":"Those two headers are used by version negotiation of the client and server."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"Version Discovery"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a2fa921_9ae1749d","line":110,"updated":"2015-10-12 16:24:41.000000000","message":"probably should say \"minimum and maximum versions.\" since they are in that order in the example.","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"1a0f390f07dc9a7d8b22a7a4d3d4e91dbdd09f27","unresolved":false,"context_lines":[{"line_number":107,"context_line":"is also dependent on the X-Openstack-Compute-API-Version and not just the"},{"line_number":108,"context_line":"body and query parameters. See :rfc:`2616` section 14.44 for details."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"The last two headers return the server supported maximum/minimum version."},{"line_number":111,"context_line":"Those two headers are used by version negotiation of the client and server."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"Version Discovery"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_192f78f7","line":110,"in_reply_to":"7a2fa921_9ae1749d","updated":"2015-11-10 05:51:34.000000000","message":"Done","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"e626324600e36a4c291ea40b0c71a087e306fc08","unresolved":false,"context_lines":[{"line_number":114,"context_line":"-----------------"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"The Version API for each service should return the minimum and maximum"},{"line_number":117,"context_line":"versions. Which are used by the client to discovery the API supported version."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"A version response would look as follows in Nova [0]_:"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a2fa921_da85acad","line":117,"updated":"2015-10-12 16:24:41.000000000","message":"s/Which are used by the client to discovery/These values are used by the client to discover/","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a613a8caabd66d961d85b7615873a5bf1a9fd005","unresolved":false,"context_lines":[{"line_number":114,"context_line":"-----------------"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"The Version API for each service should return the minimum and maximum"},{"line_number":117,"context_line":"versions. Which are used by the client to discovery the API supported version."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"A version response would look as follows in Nova [0]_:"},{"line_number":120,"context_line":""}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_d4d457be","line":117,"in_reply_to":"7a2fa921_da85acad","updated":"2015-11-10 06:59:53.000000000","message":"Done","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"e626324600e36a4c291ea40b0c71a087e306fc08","unresolved":false,"context_lines":[{"line_number":141,"context_line":"\"version\" is maximum version, \"min_version\" is minimum version."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"We also have maximum and minimum version returned by header in every response,"},{"line_number":144,"context_line":"which are mentioned in previous section."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"* X-Openstack-[SERVICE_TYPE]-API-Minimum-Version: min_version_number"},{"line_number":147,"context_line":"* X-Openstack-[SERVICE_TYPE]-API-Maximum-Version: max_version_number"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a2fa921_5a4e7c97","line":144,"updated":"2015-10-12 16:24:41.000000000","message":"i think this sentence would be clearer as:\n\n\"As mentioned in the previous section, the maximum and minimum supported versions are returned in the headers of every response.\"","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a613a8caabd66d961d85b7615873a5bf1a9fd005","unresolved":false,"context_lines":[{"line_number":141,"context_line":"\"version\" is maximum version, \"min_version\" is minimum version."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"We also have maximum and minimum version returned by header in every response,"},{"line_number":144,"context_line":"which are mentioned in previous section."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"* X-Openstack-[SERVICE_TYPE]-API-Minimum-Version: min_version_number"},{"line_number":147,"context_line":"* X-Openstack-[SERVICE_TYPE]-API-Maximum-Version: max_version_number"}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_14cbbf1f","line":144,"in_reply_to":"7a2fa921_5a4e7c97","updated":"2015-11-10 06:59:53.000000000","message":"Done","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"e626324600e36a4c291ea40b0c71a087e306fc08","unresolved":false,"context_lines":[{"line_number":144,"context_line":"which are mentioned in previous section."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"* X-Openstack-[SERVICE_TYPE]-API-Minimum-Version: min_version_number"},{"line_number":147,"context_line":"* X-Openstack-[SERVICE_TYPE]-API-Maximum-Version: max_version_number"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"When the requested version is out of range in server, the server returns status"},{"line_number":150,"context_line":"code **406 Not Acceptable** along with a response body."}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a2fa921_3a62a017","line":147,"updated":"2015-10-12 16:24:41.000000000","message":"should these be \"X-OpenStack-*\" ?","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a613a8caabd66d961d85b7615873a5bf1a9fd005","unresolved":false,"context_lines":[{"line_number":144,"context_line":"which are mentioned in previous section."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"* X-Openstack-[SERVICE_TYPE]-API-Minimum-Version: min_version_number"},{"line_number":147,"context_line":"* X-Openstack-[SERVICE_TYPE]-API-Maximum-Version: max_version_number"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"When the requested version is out of range in server, the server returns status"},{"line_number":150,"context_line":"code **406 Not Acceptable** along with a response body."}],"source_content_type":"text/x-rst","patch_set":11,"id":"da85f559_f4ee3b8a","line":147,"in_reply_to":"7a2fa921_3a62a017","updated":"2015-11-10 06:59:53.000000000","message":"Done","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"e626324600e36a4c291ea40b0c71a087e306fc08","unresolved":false,"context_lines":[{"line_number":146,"context_line":"* X-Openstack-[SERVICE_TYPE]-API-Minimum-Version: min_version_number"},{"line_number":147,"context_line":"* X-Openstack-[SERVICE_TYPE]-API-Maximum-Version: max_version_number"},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"When the requested version is out of range in server, the server returns status"},{"line_number":150,"context_line":"code **406 Not Acceptable** along with a response body."},{"line_number":151,"context_line":""},{"line_number":152,"context_line":"The JSON-Schema of response is:"}],"source_content_type":"text/x-rst","patch_set":11,"id":"7a2fa921_1a480487","line":149,"updated":"2015-10-12 16:24:41.000000000","message":"s/in server/for the server/","commit_id":"a4339d9e519317d21d21745d9caddb261de39e8c"}]}
