)]}'
{"guidelines/http.rst":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"3d7957820a8f54969469c37939b6e29ac8fe2ace","unresolved":false,"context_lines":[{"line_number":229,"context_line":" +-------------+--------------+--------------------+--------------------+"},{"line_number":230,"context_line":" | METHOD      | URI          | ACTION             | HAS BODY?          |"},{"line_number":231,"context_line":" +-------------+--------------+--------------------+--------------------+"},{"line_number":232,"context_line":" | HEAD        | /foo/ID      | EXISTS             | NO                 |"},{"line_number":233,"context_line":" +-------------+--------------+--------------------+--------------------+"},{"line_number":234,"context_line":" | GET         | /foo/ID      | READ               | NO                 |"},{"line_number":235,"context_line":" +-------------+--------------+--------------------+--------------------+"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfeb2761_d57e0018","line":232,"range":{"start_line":232,"start_character":3,"end_line":232,"end_character":7},"updated":"2017-04-03 16:06:48.000000000","message":"It would be better to put \"GET/HEAD\" here and put a footnote to new lines 260-262 for easy understanding.","commit_id":"9feb085d55616c94355b7b5132d63dc064500a16"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"c262b19dbb1146eb5d022620486d65f4eb20c120","unresolved":false,"context_lines":[{"line_number":229,"context_line":" +-------------+--------------+--------------------+--------------------+"},{"line_number":230,"context_line":" | METHOD      | URI          | ACTION             | HAS BODY?          |"},{"line_number":231,"context_line":" +-------------+--------------+--------------------+--------------------+"},{"line_number":232,"context_line":" | HEAD        | /foo/ID      | EXISTS             | NO                 |"},{"line_number":233,"context_line":" +-------------+--------------+--------------------+--------------------+"},{"line_number":234,"context_line":" | GET         | /foo/ID      | READ               | NO                 |"},{"line_number":235,"context_line":" +-------------+--------------+--------------------+--------------------+"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfeb2761_72f97d4b","line":232,"range":{"start_line":232,"start_character":3,"end_line":232,"end_character":7},"in_reply_to":"dfeb2761_4f66d553","updated":"2017-04-03 21:35:43.000000000","message":"They can both be used *only in the tags case*. As this is the general HTTP guideline, we must cover all cases, where GET normally returns content. So that\u0027s why HEAD is preferred for simply checking existence.\n\nExample from nova:\n\n    GET /servers/uuid1 \u003d\u003e returns a body of over 1500 bytes\n\nvs.\n\n    HEAD /servers/uuid1 \u003d returns no body","commit_id":"9feb085d55616c94355b7b5132d63dc064500a16"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"dbe88be9bcd28b59b1370d87710e8b9f21b50fac","unresolved":false,"context_lines":[{"line_number":229,"context_line":" +-------------+--------------+--------------------+--------------------+"},{"line_number":230,"context_line":" | METHOD      | URI          | ACTION             | HAS BODY?          |"},{"line_number":231,"context_line":" +-------------+--------------+--------------------+--------------------+"},{"line_number":232,"context_line":" | HEAD        | /foo/ID      | EXISTS             | NO                 |"},{"line_number":233,"context_line":" +-------------+--------------+--------------------+--------------------+"},{"line_number":234,"context_line":" | GET         | /foo/ID      | READ               | NO                 |"},{"line_number":235,"context_line":" +-------------+--------------+--------------------+--------------------+"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfeb2761_fe70c1de","line":232,"range":{"start_line":232,"start_character":3,"end_line":232,"end_character":7},"in_reply_to":"dfeb2761_d57e0018","updated":"2017-04-03 17:16:29.000000000","message":"Putting both would imply that either can be used for \u0027exists\u0027, and I think we should only recommend one method. I was thinking of putting the statement on 262 right after line 225 above; would that make things clearer?","commit_id":"9feb085d55616c94355b7b5132d63dc064500a16"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"53dd8812cce32d98cc5f8d8713d19c859b4fef5b","unresolved":false,"context_lines":[{"line_number":229,"context_line":" +-------------+--------------+--------------------+--------------------+"},{"line_number":230,"context_line":" | METHOD      | URI          | ACTION             | HAS BODY?          |"},{"line_number":231,"context_line":" +-------------+--------------+--------------------+--------------------+"},{"line_number":232,"context_line":" | HEAD        | /foo/ID      | EXISTS             | NO                 |"},{"line_number":233,"context_line":" +-------------+--------------+--------------------+--------------------+"},{"line_number":234,"context_line":" | GET         | /foo/ID      | READ               | NO                 |"},{"line_number":235,"context_line":" +-------------+--------------+--------------------+--------------------+"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfeb2761_4f66d553","line":232,"range":{"start_line":232,"start_character":3,"end_line":232,"end_character":7},"in_reply_to":"dfeb2761_fe70c1de","updated":"2017-04-03 18:19:28.000000000","message":"Our original confuse came from this line (HEAD for EXISTS action). and now we see both GET and HEAD can be used for line 260+ condition. So it would be better to write both on this table with some footnote for linking the line 260, I feel.","commit_id":"9feb085d55616c94355b7b5132d63dc064500a16"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"b8f42754d52f9b6e2d5bca1103248520263a10b1","unresolved":false,"context_lines":[{"line_number":263,"context_line":""},{"line_number":264,"context_line":"**TODO**: HEAD is weird in a bunch of our wsgi frameworks and you"},{"line_number":265,"context_line":"don\u0027t have access to it. Figure out if there is anything useful"},{"line_number":266,"context_line":"there."},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"**TODO**: Provide guidance on what HTTP methods (PUT/POST/PATCH/DELETE, etc)"},{"line_number":269,"context_line":"should always be supported, and which should be preferred."}],"source_content_type":"text/x-rst","patch_set":3,"id":"bff0334d_31d4e847","line":266,"updated":"2017-04-10 11:45:18.000000000","message":"I wonder if this comment can be removed now or shortened to \"just implement GET\"","commit_id":"3ec748370d5bb28ccf2a509aa0e5af4e219bac00"}],"guidelines/tags.rst":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"728190407711191709c05059b005beea6545cab5","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    Location: http://example.com:8774/servers/1234567890/tags/qux"},{"line_number":183,"context_line":"    \u003cno body\u003e"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"To check if a tag exists or not, the client should send a HEAD request to the"},{"line_number":186,"context_line":"individual tag URL. If the tag exists, the server responds with a status code"},{"line_number":187,"context_line":"200 and no response body. If the tag does not exist, the server responds with"},{"line_number":188,"context_line":"a status code 404."}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfeb2761_87d1ca5a","line":185,"range":{"start_line":185,"start_character":58,"end_line":185,"end_character":62},"updated":"2017-03-30 17:56:42.000000000","message":"I tend to prefer HEAD here for consistent guideline, but GET also could be here because tag itself don\u0027t contain any entity and GET is more popular than HEAD.","commit_id":"394992652c422bc60467e602c90f50102c5b2c84"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"728190407711191709c05059b005beea6545cab5","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"To check if a tag exists or not, the client should send a HEAD request to the"},{"line_number":186,"context_line":"individual tag URL. If the tag exists, the server responds with a status code"},{"line_number":187,"context_line":"200 and no response body. If the tag does not exist, the server responds with"},{"line_number":188,"context_line":"a status code 404."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"To delete a single tag without affecting the remaining ones, a"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dfeb2761_e73c16c1","line":187,"range":{"start_line":187,"start_character":0,"end_line":187,"end_character":3},"updated":"2017-03-30 17:56:42.000000000","message":"204 could be still valid because of \"204 No Content\"","commit_id":"394992652c422bc60467e602c90f50102c5b2c84"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"01de624007645557a34041d8379a72c5b3697d94","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"To check if a tag exists or not, the client should send a HEAD request to the"},{"line_number":186,"context_line":"individual tag URL. If the tag exists, the server responds with a status code"},{"line_number":187,"context_line":"200 and no response body. If the tag does not exist, the server responds with"},{"line_number":188,"context_line":"a status code 404."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"To delete a single tag without affecting the remaining ones, a"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfeb2761_8dcaa06a","line":187,"range":{"start_line":187,"start_character":0,"end_line":187,"end_character":3},"updated":"2017-04-03 21:55:19.000000000","message":"This should be 204 anyways as my previous comment..","commit_id":"9feb085d55616c94355b7b5132d63dc064500a16"},{"author":{"_account_id":1063,"name":"Ed Leafe","email":"ed@leafe.com","username":"ed-leafe"},"change_message_id":"8d1bbb8275706b6a6b85de7fcb6a38ff39af3b50","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"To check if a tag exists or not, the client should send a HEAD request to the"},{"line_number":186,"context_line":"individual tag URL. If the tag exists, the server responds with a status code"},{"line_number":187,"context_line":"200 and no response body. If the tag does not exist, the server responds with"},{"line_number":188,"context_line":"a status code 404."},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"To delete a single tag without affecting the remaining ones, a"}],"source_content_type":"text/x-rst","patch_set":2,"id":"dfeb2761_fa61cdaa","line":187,"range":{"start_line":187,"start_character":0,"end_line":187,"end_character":3},"in_reply_to":"dfeb2761_8dcaa06a","updated":"2017-04-04 13:11:42.000000000","message":"Actually, upon reading the spec further, it should be the same code that the corresponding GET would return. Since the GET would return 204, this should also return 204.","commit_id":"9feb085d55616c94355b7b5132d63dc064500a16"}]}
