)]}'
{"guidelines/experimental-apis.rst":[{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"d021077d8b0d8f9074078e22a9778f6b5848e195","unresolved":false,"context_lines":[{"line_number":15,"context_line":"--------"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To call an experimental API, clients must include a specific HTTP header,"},{"line_number":18,"context_line":"``Openstack-[SERVICE_TYPE]-Experimental``, with a value of ``True``."},{"line_number":19,"context_line":"If a user calls an experimental API without including the experimental"},{"line_number":20,"context_line":"header, the server would respond with ``HTTP/404``."},{"line_number":21,"context_line":"This forces the client to acknowledge the experimental status of the API and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a5de9d1_fc7a0d23","line":18,"range":{"start_line":18,"start_character":2,"end_line":18,"end_character":11},"updated":"2016-02-01 19:55:53.000000000","message":"To be consistent with the rest of this guideline:  s/Openstack/OpenStack","commit_id":"6751e63180686c760603affba773ddc64a577620"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"56bea4140ac79dc16e1ee046a8d20d730b1b6786","unresolved":false,"context_lines":[{"line_number":15,"context_line":"--------"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"To call an experimental API, clients must include a specific HTTP header,"},{"line_number":18,"context_line":"``Openstack-[SERVICE_TYPE]-Experimental``, with a value of ``True``."},{"line_number":19,"context_line":"If a user calls an experimental API without including the experimental"},{"line_number":20,"context_line":"header, the server would respond with ``HTTP/404``."},{"line_number":21,"context_line":"This forces the client to acknowledge the experimental status of the API and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a5de9d1_fc520d66","line":18,"range":{"start_line":18,"start_character":2,"end_line":18,"end_character":11},"in_reply_to":"7a5de9d1_fc7a0d23","updated":"2016-02-01 20:01:48.000000000","message":"Done","commit_id":"6751e63180686c760603affba773ddc64a577620"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"17bb695c5b8196d176eaaf85903920a1274e8c1e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"To call an experimental API, clients must include a specific HTTP header,"},{"line_number":18,"context_line":"``OpenStack-[SERVICE_TYPE]-Experimental``, with a value of ``True``."},{"line_number":19,"context_line":"If a user calls an experimental API without including the experimental"},{"line_number":20,"context_line":"header, the server would respond with ``HTTP/404``."},{"line_number":21,"context_line":"This forces the client to acknowledge the experimental status of the API and"},{"line_number":22,"context_line":"prevents anyone from building an application around a feature without"},{"line_number":23,"context_line":"realizing the feature could change significantly or even disappear."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a5de9d1_dc0f1135","line":20,"updated":"2016-02-01 20:13:56.000000000","message":"i wonder if a 400 would be more appropriate since the URL is correct it\u0027s just the headers that are preventing access?","commit_id":"af5f258c969b7a44d26d431fac418a35f2c76871"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"ffbaa9f7b99c0ed7bbe8985971cda6551abf6def","unresolved":false,"context_lines":[{"line_number":17,"context_line":"To call an experimental API, clients must include a specific HTTP header,"},{"line_number":18,"context_line":"``OpenStack-[SERVICE_TYPE]-Experimental``, with a value of ``True``."},{"line_number":19,"context_line":"If a user calls an experimental API without including the experimental"},{"line_number":20,"context_line":"header, the server would respond with ``HTTP/404``."},{"line_number":21,"context_line":"This forces the client to acknowledge the experimental status of the API and"},{"line_number":22,"context_line":"prevents anyone from building an application around a feature without"},{"line_number":23,"context_line":"realizing the feature could change significantly or even disappear."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a5de9d1_b492429e","line":20,"in_reply_to":"7a5de9d1_1757c2ca","updated":"2016-02-02 13:41:05.000000000","message":"I\u0027d agree that 400 is a much more appropriate response. The client has literally made a bad request (according to the semantics of the API).\n\nCan you link us to something that says 404 is the appropriate response status code?\n\nI would have expect to see it at https://review.openstack.org/#/c/243414/4/guidelines/microversion_specification.rst","commit_id":"af5f258c969b7a44d26d431fac418a35f2c76871"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"ce854df08d898b1aadbeb5a3fd7d93917e18bd3c","unresolved":false,"context_lines":[{"line_number":17,"context_line":"To call an experimental API, clients must include a specific HTTP header,"},{"line_number":18,"context_line":"``OpenStack-[SERVICE_TYPE]-Experimental``, with a value of ``True``."},{"line_number":19,"context_line":"If a user calls an experimental API without including the experimental"},{"line_number":20,"context_line":"header, the server would respond with ``HTTP/404``."},{"line_number":21,"context_line":"This forces the client to acknowledge the experimental status of the API and"},{"line_number":22,"context_line":"prevents anyone from building an application around a feature without"},{"line_number":23,"context_line":"realizing the feature could change significantly or even disappear."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a5de9d1_bd3d45bd","line":20,"in_reply_to":"7a5de9d1_3a7ddbe7","updated":"2016-02-02 14:28:25.000000000","message":"I agree, the nova spec has changed since: \n\nhttps://github.com/openstack/nova/blob/2b1d5a9b369d031e87fdab1c28806c0e6c88bf1d/api-guide/source/microversions.rst\n\n, and the proposed guidelines:\n\nhttps://review.openstack.org/#/c/243414/4/guidelines/microversion_specification.rst\n\nhttps://review.openstack.org/#/c/243429/3/guidelines/microversion_specification.rst\n\nare documenting the acceptable behavior; I think 400 is more appropriate:\n\n\"The request can succeed with the right request parameters\"","commit_id":"af5f258c969b7a44d26d431fac418a35f2c76871"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"6474243c32cc04d6d04ee077a638e0d3b91c10dc","unresolved":false,"context_lines":[{"line_number":17,"context_line":"To call an experimental API, clients must include a specific HTTP header,"},{"line_number":18,"context_line":"``OpenStack-[SERVICE_TYPE]-Experimental``, with a value of ``True``."},{"line_number":19,"context_line":"If a user calls an experimental API without including the experimental"},{"line_number":20,"context_line":"header, the server would respond with ``HTTP/404``."},{"line_number":21,"context_line":"This forces the client to acknowledge the experimental status of the API and"},{"line_number":22,"context_line":"prevents anyone from building an application around a feature without"},{"line_number":23,"context_line":"realizing the feature could change significantly or even disappear."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a5de9d1_3a7ddbe7","line":20,"in_reply_to":"7a5de9d1_b492429e","updated":"2016-02-02 14:22:10.000000000","message":"Here is the Nova spec that mentions 404 as the return code for an API called with a nonexistent microversion:  https://specs.openstack.org/openstack/nova-specs/specs/kilo/implemented/api-microversions.html\n\nThat was the spec I followed when porting microversions from Nova to Manila and designing the experimental API mechanism.\n\n404 doesn\u0027t bother me, since the API of the requested version is Not Found.  It may be more appropriate to return 400, and I don\u0027t have strong feelings about it.  But since experimental APIs are an extension to microversions, I *do* think that the same response code should apply to both scenarios we are discussing (API called with non-existent microversion, or experimental API called without the needed experimental header).","commit_id":"af5f258c969b7a44d26d431fac418a35f2c76871"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"5ed7a52b7ad2a20fd4f1284e40ad06f9aff97dfc","unresolved":false,"context_lines":[{"line_number":17,"context_line":"To call an experimental API, clients must include a specific HTTP header,"},{"line_number":18,"context_line":"``OpenStack-[SERVICE_TYPE]-Experimental``, with a value of ``True``."},{"line_number":19,"context_line":"If a user calls an experimental API without including the experimental"},{"line_number":20,"context_line":"header, the server would respond with ``HTTP/404``."},{"line_number":21,"context_line":"This forces the client to acknowledge the experimental status of the API and"},{"line_number":22,"context_line":"prevents anyone from building an application around a feature without"},{"line_number":23,"context_line":"realizing the feature could change significantly or even disappear."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a5de9d1_1757c2ca","line":20,"in_reply_to":"7a5de9d1_dc0f1135","updated":"2016-02-01 20:27:49.000000000","message":"The experimental API mechanism was designed as an extension to microversions.  A microversioned API returns a 404 if a valid API is called outside the supported version range, so for consistency it made sense to me that an experimental API called without the correct header should behave the same way.","commit_id":"af5f258c969b7a44d26d431fac418a35f2c76871"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"17bb695c5b8196d176eaaf85903920a1274e8c1e","unresolved":false,"context_lines":[{"line_number":69,"context_line":"``OpenStack-[SERVICE_TYPE]-Experimental: True``. If they had specified a"},{"line_number":70,"context_line":"lower version (or not specified it and received a lower default version),"},{"line_number":71,"context_line":"or if they had failed to include the experimental header, the server would"},{"line_number":72,"context_line":"respond with ``HTTP/404``."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7a5de9d1_5729ba88","line":72,"updated":"2016-02-01 20:13:56.000000000","message":"same question as above about 400","commit_id":"af5f258c969b7a44d26d431fac418a35f2c76871"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"7f4271d518a75de420e039315f23a4391ce2bd74","unresolved":false,"context_lines":[{"line_number":8,"context_line":"over time. However, microversions alone cannot solve the question of how to"},{"line_number":9,"context_line":"ship APIs that are experimental in nature, that are expected to change at any"},{"line_number":10,"context_line":"time, and could even be removed entirely without a typical deprecation"},{"line_number":11,"context_line":"period."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Proposal"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a57f1b5_2560b3a4","line":11,"updated":"2016-02-12 16:40:40.000000000","message":"You should address, here, why a project might like to release an experimental api. Presumably that is because they want active user feedback. Having those reasons listed explicitly will help give the guideline heft.\n\nThere are some reasons listed below but a summary here would be good.","commit_id":"9c7930069dd2dc5355dc3e608fcbce253dd9f68f"},{"author":{"_account_id":11865,"name":"Clinton Knight","email":"cknight@netapp.com","username":"cknight"},"change_message_id":"516c87738a9fd2e9c47eca4fc351390ab9cf5fd7","unresolved":false,"context_lines":[{"line_number":17,"context_line":"To call an experimental API, clients must include a specific HTTP header,"},{"line_number":18,"context_line":"``OpenStack-[SERVICE_TYPE]-Experimental``, with a value of ``True``."},{"line_number":19,"context_line":"If a user calls an experimental API without including the experimental"},{"line_number":20,"context_line":"header, the server would respond with ``HTTP/400``."},{"line_number":21,"context_line":"This forces the client to acknowledge the experimental status of the API and"},{"line_number":22,"context_line":"prevents anyone from building an application around a feature without"},{"line_number":23,"context_line":"realizing the feature could change significantly or even disappear."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a5de9d1_3be87a16","line":20,"range":{"start_line":20,"start_character":45,"end_line":20,"end_character":48},"updated":"2016-02-02 15:35:22.000000000","message":"\u0027Experimental\u0027 is an attribute of a microversioned API.  If microversions are using 406 for a request with a nonexistent version, why can\u0027t we be consistent and use 406 here?  We could even return a body describing the issue, similar to the microversion case.","commit_id":"9c7930069dd2dc5355dc3e608fcbce253dd9f68f"},{"author":{"_account_id":177,"name":"Alex Meade","email":"mr.alex.meade@gmail.com","username":"alex-meade"},"change_message_id":"2b811cef5cfca3a1a0682a91571c43186ee96115","unresolved":false,"context_lines":[{"line_number":17,"context_line":"To call an experimental API, clients must include a specific HTTP header,"},{"line_number":18,"context_line":"``OpenStack-[SERVICE_TYPE]-Experimental``, with a value of ``True``."},{"line_number":19,"context_line":"If a user calls an experimental API without including the experimental"},{"line_number":20,"context_line":"header, the server would respond with ``HTTP/400``."},{"line_number":21,"context_line":"This forces the client to acknowledge the experimental status of the API and"},{"line_number":22,"context_line":"prevents anyone from building an application around a feature without"},{"line_number":23,"context_line":"realizing the feature could change significantly or even disappear."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a5de9d1_7e8fc075","line":20,"range":{"start_line":20,"start_character":45,"end_line":20,"end_character":48},"in_reply_to":"7a5de9d1_3be87a16","updated":"2016-02-02 15:47:34.000000000","message":"+1 This makes sense to me. It also differentiates between me messing up my request to talk to the api versus forgetting the experimental header","commit_id":"9c7930069dd2dc5355dc3e608fcbce253dd9f68f"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"c385f680a32033642f2061ec7ec181f3e43303a3","unresolved":false,"context_lines":[{"line_number":17,"context_line":"To call an experimental API, clients must include a specific HTTP header,"},{"line_number":18,"context_line":"``OpenStack-[SERVICE_TYPE]-Experimental``, with a value of ``True``."},{"line_number":19,"context_line":"If a user calls an experimental API without including the experimental"},{"line_number":20,"context_line":"header, the server would respond with ``HTTP/400``."},{"line_number":21,"context_line":"This forces the client to acknowledge the experimental status of the API and"},{"line_number":22,"context_line":"prevents anyone from building an application around a feature without"},{"line_number":23,"context_line":"realizing the feature could change significantly or even disappear."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a5de9d1_de503461","line":20,"range":{"start_line":20,"start_character":45,"end_line":20,"end_character":48},"in_reply_to":"7a5de9d1_7e8fc075","updated":"2016-02-02 16:50:58.000000000","message":"Clinton/Alex: Interesting. I do support the consistency; but what do you suggest in the response?\n\nThe micro versions response gives you the min and max versions that the server can support; that\u0027s not specific to the API being called. If this response remains as HTTP 400, I wonder whether adding a response is necessary when the Experimental header only accepts boolean values. The client will know to expect this behavior and re-send the request with the header..","commit_id":"9c7930069dd2dc5355dc3e608fcbce253dd9f68f"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"3b3d4548d42d40851ad8773d634501e0ab8dcb4e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"To call an experimental API, clients must include a specific HTTP header,"},{"line_number":18,"context_line":"``OpenStack-[SERVICE_TYPE]-Experimental``, with a value of ``True``."},{"line_number":19,"context_line":"If a user calls an experimental API without including the experimental"},{"line_number":20,"context_line":"header, the server would respond with ``HTTP/400``."},{"line_number":21,"context_line":"This forces the client to acknowledge the experimental status of the API and"},{"line_number":22,"context_line":"prevents anyone from building an application around a feature without"},{"line_number":23,"context_line":"realizing the feature could change significantly or even disappear."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a5de9d1_cf363ce7","line":20,"range":{"start_line":20,"start_character":45,"end_line":20,"end_character":48},"in_reply_to":"7a5de9d1_7e8fc075","updated":"2016-02-02 16:25:28.000000000","message":"an interesting thought. looking at the wording for the rfc on 406[1], i can see why it makes sense for the microversions, the response will be a set of options about the versions you might choose.\n\nin the case of the experimental api header, there isn\u0027t really a choice to be made, it\u0027s just a matter of the boolean being forgotten or set to false. i think that fits in line with a 400 response of \"you failed to give the appropriate header\" instead of a 406 response \"please choose one of these appropriate options\".","commit_id":"9c7930069dd2dc5355dc3e608fcbce253dd9f68f"},{"author":{"_account_id":10670,"name":"Michael McCune","email":"elmiko@redhat.com","username":"mimccune"},"change_message_id":"27066a8e930abcd296108e41fb4cc574432f53de","unresolved":false,"context_lines":[{"line_number":17,"context_line":"To call an experimental API, clients must include a specific HTTP header,"},{"line_number":18,"context_line":"``OpenStack-[SERVICE_TYPE]-Experimental``, with a value of ``True``."},{"line_number":19,"context_line":"If a user calls an experimental API without including the experimental"},{"line_number":20,"context_line":"header, the server would respond with ``HTTP/400``."},{"line_number":21,"context_line":"This forces the client to acknowledge the experimental status of the API and"},{"line_number":22,"context_line":"prevents anyone from building an application around a feature without"},{"line_number":23,"context_line":"realizing the feature could change significantly or even disappear."}],"source_content_type":"text/x-rst","patch_set":5,"id":"7a5de9d1_2f81104e","line":20,"range":{"start_line":20,"start_character":45,"end_line":20,"end_character":48},"in_reply_to":"7a5de9d1_cf363ce7","updated":"2016-02-02 16:26:19.000000000","message":"oops, forgot this\n\n[1]: https://tools.ietf.org/html/rfc7231#section-6.5.6","commit_id":"9c7930069dd2dc5355dc3e608fcbce253dd9f68f"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"7f4271d518a75de420e039315f23a4391ce2bd74","unresolved":false,"context_lines":[{"line_number":27,"context_line":"as if the header had not been included.  This is a convenience mechanism, as"},{"line_number":28,"context_line":"it allows the client to specify both the requested API version as well as the"},{"line_number":29,"context_line":"experimental header (if desired) in one place instead of having to set the"},{"line_number":30,"context_line":"headers separately for each API call (although that would be fine, too)."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"When do I need to set an API experimental?"},{"line_number":33,"context_line":"------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a57f1b5_65d9cb21","line":30,"updated":"2016-02-12 16:40:40.000000000","message":"During the api-wg meeting this form of doing experimental was determined to be a bad idea. See the logs: http://eavesdrop.openstack.org/meetings/api_wg/2016/api_wg.2016-02-11-16.00.log.html#l-247\n\nThe preferred form is to put the experimental api on an entirely different service endpoint with a non-permanent service type identifier that does not overlap with existing endpoints.\n\nWhat this means is that users in the wild, to use the stuff, have to turn on a weird endpoint and go to an unusual URL to use this new thing.\n\nWhen it becomes non-experimental it moves to the correct service type and endpoint.\n\nThe concern with headers is twofold:\n\n* it will allow operations within an existing and permanent endpoint that people will expect to continue working henceforth _despite_ the headers\n* proliferation of headers is a bad idea (more to come on that in a future proposed guideline)\n\nAgain, see the logs for some additional discussion.","commit_id":"9c7930069dd2dc5355dc3e608fcbce253dd9f68f"},{"author":{"_account_id":261,"name":"Salvatore Orlando","email":"salv.orlando@gmail.com","username":"salvatore-orlando"},"change_message_id":"bcc848b49add9f777b33fbac21031616e3158ca8","unresolved":false,"context_lines":[{"line_number":27,"context_line":"as if the header had not been included.  This is a convenience mechanism, as"},{"line_number":28,"context_line":"it allows the client to specify both the requested API version as well as the"},{"line_number":29,"context_line":"experimental header (if desired) in one place instead of having to set the"},{"line_number":30,"context_line":"headers separately for each API call (although that would be fine, too)."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"When do I need to set an API experimental?"},{"line_number":33,"context_line":"------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"bae84128_266425b7","line":30,"in_reply_to":"3a57f1b5_65d9cb21","updated":"2016-02-24 10:11:26.000000000","message":"I guess that the point made here pretty much invalidates the while proposed guideline, doesn;t it?","commit_id":"9c7930069dd2dc5355dc3e608fcbce253dd9f68f"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"33c372aaca6f58779c778258c3e10f36607ca0b6","unresolved":false,"context_lines":[{"line_number":27,"context_line":"as if the header had not been included.  This is a convenience mechanism, as"},{"line_number":28,"context_line":"it allows the client to specify both the requested API version as well as the"},{"line_number":29,"context_line":"experimental header (if desired) in one place instead of having to set the"},{"line_number":30,"context_line":"headers separately for each API call (although that would be fine, too)."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"When do I need to set an API experimental?"},{"line_number":33,"context_line":"------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"7af24918_614efe3b","line":30,"in_reply_to":"bae84128_266425b7","updated":"2016-03-04 14:03:16.000000000","message":"I think having a guideline on how to properly do experimental apis is a good idea, as we want to encourage experimentation. What we want to do, though, is make sure that we limit the ways in which such experimental features persist. So a guideline that describes that would be great.","commit_id":"9c7930069dd2dc5355dc3e608fcbce253dd9f68f"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"7f4271d518a75de420e039315f23a4391ce2bd74","unresolved":false,"context_lines":[{"line_number":40,"context_line":""},{"line_number":41,"context_line":"- the API could be removed altogether if a feature is redesigned"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"- the API controls a feature that could change or be removed"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"When do I need to remove the experimental annotation from an API?"},{"line_number":46,"context_line":"-----------------------------------------------------------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a57f1b5_25f0b366","line":43,"updated":"2016-02-12 16:40:40.000000000","message":"2, 3, and 4 are all version of 1 aren\u0027t they?\n\nI think a better reasons is \"to get user feedback on an API being considered\".","commit_id":"9c7930069dd2dc5355dc3e608fcbce253dd9f68f"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"7f4271d518a75de420e039315f23a4391ce2bd74","unresolved":false,"context_lines":[{"line_number":43,"context_line":"- the API controls a feature that could change or be removed"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"When do I need to remove the experimental annotation from an API?"},{"line_number":46,"context_line":"-----------------------------------------------------------------"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"When the community is satisfied that an experimental feature and its APIs"},{"line_number":49,"context_line":"have had sufficient time to gather and incorporate user feedback to consider"}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a57f1b5_651eabbc","line":46,"updated":"2016-02-12 16:40:40.000000000","message":"My notes above have implications for this section.","commit_id":"9c7930069dd2dc5355dc3e608fcbce253dd9f68f"},{"author":{"_account_id":11564,"name":"Chris Dent","email":"cdent@anticdent.org","username":"chdent"},"change_message_id":"7f4271d518a75de420e039315f23a4391ce2bd74","unresolved":false,"context_lines":[{"line_number":69,"context_line":"``OpenStack-[SERVICE_TYPE]-Experimental: True``. If they had specified a"},{"line_number":70,"context_line":"lower version (or not specified it and received a lower default version),"},{"line_number":71,"context_line":"or if they had failed to include the experimental header, the server would"},{"line_number":72,"context_line":"respond with ``HTTP/400``."}],"source_content_type":"text/x-rst","patch_set":5,"id":"3a57f1b5_a5b26392","line":72,"updated":"2016-02-12 16:40:40.000000000","message":"I think it is probably a bad idea to use the mechanisms for experimental and microversioning in the same request.","commit_id":"9c7930069dd2dc5355dc3e608fcbce253dd9f68f"}]}
