{"number":149,"title":"Close and reopen a proposal through the API and oh (#140)","body":"Closes #140. PATCH /proposals/{n} takes {\"state\": \"closed\" | \"open\"} (author or triage), with `oh proposal close N [-m MSG]` and `oh proposal reopen N`. Test: a_proposal_is_closed_and_reopened_through_the_api. Gate green. Built as main's heads plus the change.","author":"andymccall","state":"landed","target":"main","source":{"kind":"bookmark","bookmark":"close-proposal-140"},"changes":[{"hash":"71e65fcf95ab37246392ea0013ba4b53be8a9b804b5887bd555b5cecb10a41fa","message":"Close and reopen a proposal through the API and oh\n\nPATCH /proposals/{n} takes {\"state\": \"closed\"} or {\"state\": \"open\"},\nby the proposal's author or anyone with triage access, as the page's Close\nand Reopen buttons do; oh proposal close N [-m MSG] and oh proposal\nreopen N use it. Proposals whose work reaches the target by a push are\nalready marked landed (#141).\n\ncloses #140","author":{"name":"Andy McCall","email":"mailme@andymccall.co.uk","key":"8bc05e0a32a86508708a7dffa1fdccee1f6601e8c8395275244a6c48a9684c8c","account":null,"note":"signed by a key not linked to any account; its owner links it under Settings → Keys (/settings/keys)"},"when_ms":1791874976488,"deps":["1f1eb06a9009cd6fd9d9b15fa690885eb50e15636ce49b078e5e1d908a82e25d","2291f8cc9c9678aa1529be16a0e644cf466f14fb3602765d902993fcff467014","4d2e44d79b03ab939a3b69c02fa7115265089c072018123c18fba764865fe298","5c6e92fd8d71f940f4769a1bc71d9461eb4f7f3b3cf118374a62f3b53eab4d09","62ceb2eec18c7f2e8a3742def34765ce1c158d57ad3284f508a47ac34f2220d7","739a763a558c04cb6e59e66ed47efa071fa5e97b75c38648dfd040da6c249098","76f262e1a6663e5a3e9f10e04826b7dca067762ff045ce96948162b228a2c4f1","7d2eb590051f51c5d696dc8ff46634b4ca1ac390313a554d3efacbb8a6bab663","93be9ce4653e32704c445475b3b3df34b72e8ca28723cb602770522bb7f71bf6","ac713df7b38be8185f1def38b082813f9ba0e41a436a2958698802fa3b8fcbba","b64e2537d7028806bc3d1da95b489e1071f40abda62dfbe43d1d038a65115d13","bf1ab3458db1c2cfdacecf34f981ef54baa28f8d6a453cc7b24bd2c53530a904","d23464c0ac60f60775ae362f92fa08a4b1413e8b1d89e146c1699944bc109c19","de505df5cf8d527f25f81c64938d8e4ec9a6a631b9eefdf2c335abf7204f8046","ef20fdc14e8b65290f49367c71f7ee730c287e5ae61513eaf82616dd5329b1ed"],"head":false,"signature":{"status":"valid","key":"8bc05e0a32a86508708a7dffa1fdccee1f6601e8c8395275244a6c48a9684c8c","sealed":false,"revoked":false}}],"projected_heads":["045f967db8f21b2aa9376e88e4e66ac266c50aa63685fa1bca479ffbe8cb8bf6","19355e2283aba765a8a52394216f332db76663c2c0f5c31719803c2a72ad2b55","1b3a00986a5af27d50714ac69a47297eb1eea88fa1017ee53bbc8d963d723859","1b770a1fecf00ba25f4dec05fffd399e8805234618e48ded335d64c955bb5374","1d9702887eee79babadd1a7aa8314ef4500def25217c5137a4ee5587f8be3db0","1e23d0105921f536b1cf0483972849e0255efeb89b7f53656e36d2a8839ca14d","1f8a37d351abb70f0859612ff821a4083a9b45697ff86920af2057c91f668988","20c36ed92b6b052a02ef585998dc7e42b857a014d92920c913f3507ba345a620","260c33b4b6c4d8d23000b3d146fed71ec748a95dc6fc058119ed2a7c1627d31f","2d58f17e728b4125bbd7b5d2be9c692536e336f53bd3b34dc56f0361b38b50df","3e5cd2eba62654482a1214b1c387ffce03fa802047622660d17878689e42007f","56a786aa42f1e2a8c6da70e1acbc76edc81a8c746294d06d9c1be6fa6725e2bf","67b24adbf35ad837aba115aadba8fac7993f2ccb4e7362d60505d2cc28b7cbee","6978fd76a0666e56bc28171db3f8add9e346ebe90497646c92b8ab10c99a28dc","6ff755541a622b944b170f3a83dfb95ecf972a4387dd77ff481a34df28e05e82","71e65fcf95ab37246392ea0013ba4b53be8a9b804b5887bd555b5cecb10a41fa","72cde3da4176aff69eecc9cc4a625aa277dc22cd4cd5728ab1e18d0646135100","73beb84b202a8785d9caf0bb65e04c2feb6ae60cea0d5779133cba332a033cb8","750579ecc7217759272630f8d070c7965c6ddaf939f1a42371162c96297e0b2e","7829b7c7bb59af96323959718722bbba411100c09f667e3bc3ce85110d822c18","883c77eaf2c9645cf8a634948c37c5b94942a4756d7810494c5d8998ba62eac1","8a2dbcb56246f568de32a5360d2f8be66bb9704909ce1b5cebb1f3051863f33b","92cea629fdf6614fe819c850b117a530402d079bc5dfc690ddacb0fe044fd336","967ef74f6fd9847b2d48a7a20b27bade903fe122f34d4eab7e48efb5242a0020","9991530b4beee381b95233964971965ad66ac833968f4c8f1fdbf4f1c2fb1713","9bc6b4720fc12185874a9710b310ddb36d2625cd86d653d23783b960915ef19d","a0dd06b0094eb52d4347f6bde0572de667a0d2cbac5878d9e6928ec3bba09947","a7c05940ebc4ba5c73eb14afcc7579680e1cdb53995e464db10d617e055c5d57","ad01845c4bf86859c3072a48277436580de78bbfe6ea6bc85de9b350522bf92b","ae138eea7a71055eed1bdb63b016828e6bbe2de7ff2b8b06a741ebeaa759e950","b20ddaf961670b0cddfbc107a9e99a68e251fb32439dfcd26ccfce625e15ba8e","b210727578e88cb6d475b2ade065de6cbba939321382c491ea36e361a305d246","bd630386001ed3d0fc0d03c01548c193a2297f90b6fedb00b5883259f9ca1ad0","c0fac31d36fdfab3f7af0bcfc213767a973f016769e353538c30bfab90edd7fb","c21ef37dd4a0641cafb7fe4cf430093934e416d10b582d4183d9c30f722f42e5","c2732e07323b52f2491200ad8989352bc6fc6834c4d97a21e550b3abbe0acafb","c33dbd9a0d38f03313995c1259c16adbd34571f06efe1a71438b51783f1d7b36","c4e432da4bc94bfb6be107039abe3f6aac1678c279a5395c905022ab9b2b899c","c95446a17fddd892eaaa5513071c20ea4d154b748a7e0df5116d8e067ef834b2","c96b32865000b248ff1a38c6fd459d2f7e2bf4171f29e0e2cb3a9b988f0abbc1","cefb0ea24511445166d0db129929255276092d452c7832e877235b49fcdc5881","d336629ffa906b6783adf44337015e3c3d9d4437a6a4f97734367f903674db51","d94449e42718409b41ab98335c6641b2b4429332e8a1cab535e76467509986b4","db72849cd22e82e6160e21528548f9766cf4b10867415ce1b2fe177bfa05e71f","e1078e99c5604bb12c431c02dacb6fba8ea2a0515abe39b3accedd23c78af9ac","edcef27575a73e6acece529d1c0d3bb9f3509123de1a2c049ef4c0dd28b38bba","efb51b39db1c38e7b881f05a1ce1c46d09dc3317349df6ebfd24a2c6d12279db","ff656953017324d89ff345da2edecab2eec2f200d4f87bd01d485294f33b8b36"],"projected_state":"855912c142d9be4dfee9a5141b03adcc6ef382c2f13f52379473163fedab824b","conflicted":false,"approvals":[],"landable":false,"blockers":[],"created_ms":1791874986891,"updated_ms":1791883339984,"url":"https://oxygenhub.io/andymccall/oxygenhub/proposal/149","repository_url":"https://oxygenhub.io/andymccall/oxygenhub","source_url":null,"landed":{"by":"andymccall","via":"web","when_ms":1791883339984},"auto_land":null,"requested_reviewers":[],"labels":[{"name":"feature","colour":"#0064e0","description":"Something new"},{"name":"gap","colour":"#8592ad","description":"Found by using the platform for real"}]}