)]}'
{"specs/mitaka/glare-public-api.rst":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"f237a3999613d3163098bc5c9d090f08647b744d","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This spec describes a proposed change to the experimental API of Glance"},{"line_number":14,"context_line":"Artifact Repository (aka Glare) to address the number of issues discovered by"},{"line_number":15,"context_line":"OpenStack API Working Group and DefCore committee."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_565436c9","line":15,"updated":"2015-12-09 17:31:04.000000000","message":"Just a quick note for now:\n\nI think this spec should depend on this: https://review.openstack.org/254163","commit_id":"010c7bdb3181173a451ce4eb39492a66eb483bb4"},{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"59ff9071e43d6bb73656f3cd021cea4f3a7b2108","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"This spec describes a proposed change to the experimental API of Glance"},{"line_number":14,"context_line":"Artifact Repository (aka Glare) to address the number of issues discovered by"},{"line_number":15,"context_line":"OpenStack API Working Group and DefCore committee."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a740942_8403ddb7","line":15,"in_reply_to":"7a740942_565436c9","updated":"2015-12-11 10:14:55.000000000","message":"Right. I\u0027ve made this patches depend on each other and added an explicit reference into the \"Dependencies\" section","commit_id":"010c7bdb3181173a451ce4eb39492a66eb483bb4"},{"author":{"_account_id":16658,"name":"Darja Shakhray","email":"damalyavkina@gmail.com","username":"dshakhray"},"change_message_id":"cca0f7453a0ae0a035d4a0d1e7dec457406a8b5a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3a7e1126_cbee238b","updated":"2015-12-17 11:41:35.000000000","message":"I think it is worth pointing error code when you use the wrong \"method type\", for example method type DELETE for /v0.2/artifact_types","commit_id":"bb0617cad5ef60a81bff5152386afd1847106de3"},{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"346529ba0a9f2c5f8dea80d3e8f794f23b91e5c5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"3a7e1126_383ff0b5","in_reply_to":"3a7e1126_cbee238b","updated":"2015-12-17 13:55:23.000000000","message":"Nope, IMO these ones should not be mentioned, since they are obvious and common for all the REST APIs just by the dfinition of appropriate error code: i..e any call to the location which is not present in this spec should lead to 404, and any wrong usage of unsupported http verb should lead to 415","commit_id":"bb0617cad5ef60a81bff5152386afd1847106de3"},{"author":{"_account_id":16658,"name":"Darja Shakhray","email":"damalyavkina@gmail.com","username":"dshakhray"},"change_message_id":"cca0f7453a0ae0a035d4a0d1e7dec457406a8b5a","unresolved":false,"context_lines":[{"line_number":167,"context_line":"      filtering. See filtering API guideline [3] for more details."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    * version - allows to filter artifacts by their version spec. The value"},{"line_number":170,"context_line":"      should either be a valid semver string (either a complete, eg \u00271.2.3\u0027 or"},{"line_number":171,"context_line":"      simplified, e.g. \u00271.0\u0027 which is coerced to \u00271.0.0\u0027 automatically) for"},{"line_number":172,"context_line":"      exact version match, or may include any operators for \"in\" checks or"},{"line_number":173,"context_line":"      inequality comparisons. Supported operators are: in, neq, gt, gte, lt and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_e5522e13","line":170,"range":{"start_line":170,"start_character":46,"end_line":170,"end_character":76},"updated":"2015-12-17 11:41:35.000000000","message":"Pre-release version will be available, such as \"1.0.0-alpha\"?","commit_id":"bb0617cad5ef60a81bff5152386afd1847106de3"},{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"346529ba0a9f2c5f8dea80d3e8f794f23b91e5c5","unresolved":false,"context_lines":[{"line_number":167,"context_line":"      filtering. See filtering API guideline [3] for more details."},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    * version - allows to filter artifacts by their version spec. The value"},{"line_number":170,"context_line":"      should either be a valid semver string (either a complete, eg \u00271.2.3\u0027 or"},{"line_number":171,"context_line":"      simplified, e.g. \u00271.0\u0027 which is coerced to \u00271.0.0\u0027 automatically) for"},{"line_number":172,"context_line":"      exact version match, or may include any operators for \"in\" checks or"},{"line_number":173,"context_line":"      inequality comparisons. Supported operators are: in, neq, gt, gte, lt and"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_d877cc00","line":170,"range":{"start_line":170,"start_character":46,"end_line":170,"end_character":76},"in_reply_to":"3a7e1126_e5522e13","updated":"2015-12-17 13:55:23.000000000","message":"Yes. Will mention that explicitly, thanks","commit_id":"bb0617cad5ef60a81bff5152386afd1847106de3"},{"author":{"_account_id":16658,"name":"Darja Shakhray","email":"damalyavkina@gmail.com","username":"dshakhray"},"change_message_id":"cca0f7453a0ae0a035d4a0d1e7dec457406a8b5a","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"  * Normal HTTP response code: 200"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"  * Expected HTTP error codes: 404 if the artifact with a given ID is not found"},{"line_number":216,"context_line":"    or the requesting user is not authorized to access it."},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"  * Resource URL: /v0.2/artifacts/all/%id%"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_abe2b701","line":215,"range":{"start_line":215,"start_character":4,"end_line":215,"end_character":29},"updated":"2015-12-17 11:41:35.000000000","message":"You need to add code 401 here and below each request","commit_id":"bb0617cad5ef60a81bff5152386afd1847106de3"},{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"346529ba0a9f2c5f8dea80d3e8f794f23b91e5c5","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"  * Normal HTTP response code: 200"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"  * Expected HTTP error codes: 404 if the artifact with a given ID is not found"},{"line_number":216,"context_line":"    or the requesting user is not authorized to access it."},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"  * Resource URL: /v0.2/artifacts/all/%id%"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_d31a4d17","line":215,"range":{"start_line":215,"start_character":4,"end_line":215,"end_character":29},"in_reply_to":"3a7e1126_abe2b701","updated":"2015-12-17 13:55:23.000000000","message":"Since all these methods require proper authentication. I\u0027ve mentioned 401 once at the beginning of the section.","commit_id":"bb0617cad5ef60a81bff5152386afd1847106de3"},{"author":{"_account_id":16658,"name":"Darja Shakhray","email":"damalyavkina@gmail.com","username":"dshakhray"},"change_message_id":"cca0f7453a0ae0a035d4a0d1e7dec457406a8b5a","unresolved":false,"context_lines":[{"line_number":213,"context_line":"  * Normal HTTP response code: 200"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"  * Expected HTTP error codes: 404 if the artifact with a given ID is not found"},{"line_number":216,"context_line":"    or the requesting user is not authorized to access it."},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"  * Resource URL: /v0.2/artifacts/all/%id%"},{"line_number":219,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_224cacc6","line":216,"range":{"start_line":216,"start_character":4,"end_line":216,"end_character":58},"updated":"2015-12-17 11:41:35.000000000","message":"Why not 403? That is, the user should not be aware of its existence?","commit_id":"bb0617cad5ef60a81bff5152386afd1847106de3"},{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"346529ba0a9f2c5f8dea80d3e8f794f23b91e5c5","unresolved":false,"context_lines":[{"line_number":213,"context_line":"  * Normal HTTP response code: 200"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"  * Expected HTTP error codes: 404 if the artifact with a given ID is not found"},{"line_number":216,"context_line":"    or the requesting user is not authorized to access it."},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"  * Resource URL: /v0.2/artifacts/all/%id%"},{"line_number":219,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_d3ad6d89","line":216,"range":{"start_line":216,"start_character":4,"end_line":216,"end_character":58},"in_reply_to":"3a7e1126_224cacc6","updated":"2015-12-17 13:55:23.000000000","message":"Yes, that\u0027s a common approach: there should be no way for potential attackers to guess the IDs of objects they don\u0027t have access to.","commit_id":"bb0617cad5ef60a81bff5152386afd1847106de3"},{"author":{"_account_id":16658,"name":"Darja Shakhray","email":"damalyavkina@gmail.com","username":"dshakhray"},"change_message_id":"cca0f7453a0ae0a035d4a0d1e7dec457406a8b5a","unresolved":false,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"  * No query parameters"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"  * Request body: a JSON-patch compliant object specified one or more \"add\","},{"line_number":306,"context_line":"    \"replace\" or \"remove\" operations targeting any of \"name\", \"version\","},{"line_number":307,"context_line":"    \"description\", \"tags\", \"visibility\", \"state\" or \"owner\" properties."},{"line_number":308,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_36dceae3","line":305,"range":{"start_line":305,"start_character":4,"end_line":305,"end_character":17},"updated":"2015-12-17 11:41:35.000000000","message":"I think we should give an example of the body","commit_id":"bb0617cad5ef60a81bff5152386afd1847106de3"},{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"346529ba0a9f2c5f8dea80d3e8f794f23b91e5c5","unresolved":false,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"  * No query parameters"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"  * Request body: a JSON-patch compliant object specified one or more \"add\","},{"line_number":306,"context_line":"    \"replace\" or \"remove\" operations targeting any of \"name\", \"version\","},{"line_number":307,"context_line":"    \"description\", \"tags\", \"visibility\", \"state\" or \"owner\" properties."},{"line_number":308,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_ee1a026e","line":305,"range":{"start_line":305,"start_character":4,"end_line":305,"end_character":17},"in_reply_to":"3a7e1126_36dceae3","updated":"2015-12-17 13:55:23.000000000","message":"Yes, thank you, will do.","commit_id":"bb0617cad5ef60a81bff5152386afd1847106de3"},{"author":{"_account_id":16658,"name":"Darja Shakhray","email":"damalyavkina@gmail.com","username":"dshakhray"},"change_message_id":"cca0f7453a0ae0a035d4a0d1e7dec457406a8b5a","unresolved":false,"context_lines":[{"line_number":305,"context_line":"  * Request body: a JSON-patch compliant object specified one or more \"add\","},{"line_number":306,"context_line":"    \"replace\" or \"remove\" operations targeting any of \"name\", \"version\","},{"line_number":307,"context_line":"    \"description\", \"tags\", \"visibility\", \"state\" or \"owner\" properties."},{"line_number":308,"context_line":""},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"* Get artifact tags"},{"line_number":311,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_3142b43f","line":308,"range":{"start_line":308,"start_character":0,"end_line":308,"end_character":0},"updated":"2015-12-17 11:41:35.000000000","message":"Response body?","commit_id":"bb0617cad5ef60a81bff5152386afd1847106de3"},{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"346529ba0a9f2c5f8dea80d3e8f794f23b91e5c5","unresolved":false,"context_lines":[{"line_number":305,"context_line":"  * Request body: a JSON-patch compliant object specified one or more \"add\","},{"line_number":306,"context_line":"    \"replace\" or \"remove\" operations targeting any of \"name\", \"version\","},{"line_number":307,"context_line":"    \"description\", \"tags\", \"visibility\", \"state\" or \"owner\" properties."},{"line_number":308,"context_line":""},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"* Get artifact tags"},{"line_number":311,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a7e1126_0ecbce54","line":308,"range":{"start_line":308,"start_character":0,"end_line":308,"end_character":0},"in_reply_to":"3a7e1126_3142b43f","updated":"2015-12-17 13:55:23.000000000","message":"Done","commit_id":"bb0617cad5ef60a81bff5152386afd1847106de3"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"4d5e027838714e871c1bcc31ca87a72efa297b09","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"  * Normal HTTP response code: 200"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"  * Expected HTTP error codes: 403 if the `usage` query parameter is passed"},{"line_number":155,"context_line":"    with the `admin` value while the user is not authorized to perform"},{"line_number":156,"context_line":"    administrative operations."},{"line_number":157,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a68dd71_7078142c","line":154,"range":{"start_line":154,"start_character":43,"end_line":154,"end_character":48},"updated":"2016-01-21 17:17:17.000000000","message":"Should be double `s here and below with admin for valid reStructuredText.","commit_id":"7024450e60fd5664c129f61a4acbbb3b8994f6ef"},{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"99522f84747852dc89852b24f8b226817a1f170f","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"  * Normal HTTP response code: 200"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"  * Expected HTTP error codes: 403 if the `usage` query parameter is passed"},{"line_number":155,"context_line":"    with the `admin` value while the user is not authorized to perform"},{"line_number":156,"context_line":"    administrative operations."},{"line_number":157,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a68dd71_1d17ec48","line":154,"range":{"start_line":154,"start_character":43,"end_line":154,"end_character":48},"in_reply_to":"9a68dd71_7078142c","updated":"2016-01-25 12:57:08.000000000","message":"Will do that.","commit_id":"7024450e60fd5664c129f61a4acbbb3b8994f6ef"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"4d5e027838714e871c1bcc31ca87a72efa297b09","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    with the `admin` value while the user is not authorized to perform"},{"line_number":156,"context_line":"    administrative operations."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"  * Resource URL: /v0.2/artifacts/all"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"  * Parameters:"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a68dd71_1b4c596f","line":158,"updated":"2016-01-21 17:17:17.000000000","message":"What does /v0.2/artifacts return and why can\u0027t we use that?","commit_id":"7024450e60fd5664c129f61a4acbbb3b8994f6ef"},{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"99522f84747852dc89852b24f8b226817a1f170f","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    with the `admin` value while the user is not authorized to perform"},{"line_number":156,"context_line":"    administrative operations."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"  * Resource URL: /v0.2/artifacts/all"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"  * Parameters:"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a68dd71_bd058011","line":158,"in_reply_to":"9a68dd71_1b4c596f","updated":"2016-01-25 12:57:08.000000000","message":"It will be a common root for this public API and all the internal, plugins specific APIs","commit_id":"7024450e60fd5664c129f61a4acbbb3b8994f6ef"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"50431bea17945d6fb4c3222deae599ed2e68819d","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    with the `admin` value while the user is not authorized to perform"},{"line_number":156,"context_line":"    administrative operations."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"  * Resource URL: /v0.2/artifacts/all"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"  * Parameters:"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a68dd71_49959430","line":158,"in_reply_to":"9a68dd71_bd058011","updated":"2016-01-25 20:14:57.000000000","message":"We could use `/v0.2/artifacts` then instead of `/v0.2/artifact_types` but that\u0027s splitting hairs.\n\nDoes /v0.2/artifacts/all return every artifact (across all plugin types) or just a specific generic type? If the latter, why is \"all\" used? That\u0027s a rather confusing name. Why not /v0.2/artifacts/generic Sure it\u0027s longer, but it\u0027s a better name.","commit_id":"7024450e60fd5664c129f61a4acbbb3b8994f6ef"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"4d5e027838714e871c1bcc31ca87a72efa297b09","unresolved":false,"context_lines":[{"line_number":216,"context_line":"  * Expected HTTP error codes: 404 if the artifact with a given ID is not found"},{"line_number":217,"context_line":"    or the requesting user is not authorized to access it."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"  * Resource URL: /v0.2/artifacts/all/%id%"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"  * URI parameters:"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a68dd71_9b6e09c8","line":219,"updated":"2016-01-21 17:17:17.000000000","message":"Why is /all in this? Why not /v0.2/artifacts/%(id)s?","commit_id":"7024450e60fd5664c129f61a4acbbb3b8994f6ef"},{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"99522f84747852dc89852b24f8b226817a1f170f","unresolved":false,"context_lines":[{"line_number":216,"context_line":"  * Expected HTTP error codes: 404 if the artifact with a given ID is not found"},{"line_number":217,"context_line":"    or the requesting user is not authorized to access it."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"  * Resource URL: /v0.2/artifacts/all/%id%"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"  * URI parameters:"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a68dd71_dd6154d4","line":219,"in_reply_to":"9a68dd71_9b6e09c8","updated":"2016-01-25 12:57:08.000000000","message":"To separate this from the internal API calls:\nimagine we have a heat artifact type plugin. It may have a\n\"GET /v0.2/artifacts/heat\" API call\nIf we don\u0027t explicitly separate these, It will be an ambiguous call, as we are unable to guess if \"heat\" is the name of the internal API or the id of the artifact in the public API","commit_id":"7024450e60fd5664c129f61a4acbbb3b8994f6ef"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"50431bea17945d6fb4c3222deae599ed2e68819d","unresolved":false,"context_lines":[{"line_number":216,"context_line":"  * Expected HTTP error codes: 404 if the artifact with a given ID is not found"},{"line_number":217,"context_line":"    or the requesting user is not authorized to access it."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"  * Resource URL: /v0.2/artifacts/all/%id%"},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"  * URI parameters:"},{"line_number":222,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a68dd71_e9e568db","line":219,"in_reply_to":"9a68dd71_dd6154d4","updated":"2016-01-25 20:14:57.000000000","message":"So each plugin will be able to have artifact IDs that are already used by another plugin? Why?","commit_id":"7024450e60fd5664c129f61a4acbbb3b8994f6ef"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"4d5e027838714e871c1bcc31ca87a72efa297b09","unresolved":false,"context_lines":[{"line_number":253,"context_line":"      custom plugin-defined logic indicates, that this artifact may not be"},{"line_number":254,"context_line":"      deleted."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"  * Resource URL: /v0.2/artifacts/all/%id%"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"  * URI parameters:"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a68dd71_1b63f9dd","line":256,"updated":"2016-01-21 17:17:17.000000000","message":"Same question as above, why is /all/ here?","commit_id":"7024450e60fd5664c129f61a4acbbb3b8994f6ef"},{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"99522f84747852dc89852b24f8b226817a1f170f","unresolved":false,"context_lines":[{"line_number":253,"context_line":"      custom plugin-defined logic indicates, that this artifact may not be"},{"line_number":254,"context_line":"      deleted."},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"  * Resource URL: /v0.2/artifacts/all/%id%"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"  * URI parameters:"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a68dd71_7da7080b","line":256,"in_reply_to":"9a68dd71_1b63f9dd","updated":"2016-01-25 12:57:08.000000000","message":"ditto","commit_id":"7024450e60fd5664c129f61a4acbbb3b8994f6ef"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"4d5e027838714e871c1bcc31ca87a72efa297b09","unresolved":false,"context_lines":[{"line_number":349,"context_line":"    of artifact tags"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"* Modify artifacts tags"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"  * Sets the list of tags for a given artifact. See tag guideline [4] for"},{"line_number":355,"context_line":"    more details"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a68dd71_9b09292f","line":352,"updated":"2016-01-21 17:17:17.000000000","message":"If calling PATCH for an artifact can update tags, why do we need these extra resources? I can see being able to list tags, but those could also just be returned as part of the artifact representation (GET /v0.2/artifacts/all/%(id)s/) and doesn\u0027t need a /tags resource for that.","commit_id":"7024450e60fd5664c129f61a4acbbb3b8994f6ef"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"50431bea17945d6fb4c3222deae599ed2e68819d","unresolved":false,"context_lines":[{"line_number":349,"context_line":"    of artifact tags"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"* Modify artifacts tags"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"  * Sets the list of tags for a given artifact. See tag guideline [4] for"},{"line_number":355,"context_line":"    more details"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a68dd71_a929b0e7","line":352,"in_reply_to":"9a68dd71_7d7e286b","updated":"2016-01-25 20:14:57.000000000","message":"The guideline does not require (or even propose) redundancy.","commit_id":"7024450e60fd5664c129f61a4acbbb3b8994f6ef"},{"author":{"_account_id":8127,"name":"Alexander Tivelkov","email":"locher@yandex.ru","username":"ativelkov"},"change_message_id":"99522f84747852dc89852b24f8b226817a1f170f","unresolved":false,"context_lines":[{"line_number":349,"context_line":"    of artifact tags"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"* Modify artifacts tags"},{"line_number":353,"context_line":""},{"line_number":354,"context_line":"  * Sets the list of tags for a given artifact. See tag guideline [4] for"},{"line_number":355,"context_line":"    more details"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a68dd71_7d7e286b","line":352,"in_reply_to":"9a68dd71_9b09292f","updated":"2016-01-25 12:57:08.000000000","message":"This follows API-WG guideline on tags:\nhttps://github.com/openstack/api-wg/blob/master/guidelines/tags.rst","commit_id":"7024450e60fd5664c129f61a4acbbb3b8994f6ef"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"4d5e027838714e871c1bcc31ca87a72efa297b09","unresolved":false,"context_lines":[{"line_number":381,"context_line":"    of updated artifact tags"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":""},{"line_number":384,"context_line":"* Delete artifacts tags"},{"line_number":385,"context_line":""},{"line_number":386,"context_line":"  * Clears the list of tags for a given artifact. See tag guideline [4] for"},{"line_number":387,"context_line":"    more details"}],"source_content_type":"text/x-rst","patch_set":4,"id":"9a68dd71_5b3bb1d1","line":384,"updated":"2016-01-21 17:17:17.000000000","message":"Again this feels redundant.","commit_id":"7024450e60fd5664c129f61a4acbbb3b8994f6ef"}]}
