As a tool developer I want to be able to remove old or wrong information in a given language on a item's label
DELETE /entities/items/{item_id}/labels/{lang_code}
Acceptance criteria:
- On the successful removal, API should respond with 200 and "label deleted" as a response body.
- 200 response should also contain Content-Language header with "en" as a value
- Following error cases have to be considered:
HTTP response code | response payload | |
---|---|---|
Item does not exist | 404 | "code": "item-not-found" "message": "Could not find an item with the ID: {item_id}" |
Invalid item ID | 400 | "code": "invalid-item-id" "message": "Not a valid item ID: <ITEM_ID>" |
Invalid language code | 400 | "code": "invalid-language-code" "message": "Not a valid language code : <language code>" |
Item does not have label in given language | 404 | "code": "label-not-defined" "message": "Item with the ID <ITEM_ID> does not have a label in the language: <LANGUAGE CODE>" |
Invalid edit tag | 400 | { "code": "invalid-edit-tag", "message": "Invalid MediaWiki tag: {tag}" } |
Comment too long | 400 | {"code": "comment-too-long", "message": "Comment must not be longer than {limit} characters"} |
Notes:
- "Automated edit summary" related to the edit to be of form: /* wbsetlabel-remove:1|{language_code} */ LABEL-TEXT
- client can provide additional edit metadata: mediawiki tags, edit summary text to append to the automated summary, and a bot edit flag, like in DELETE /entities/items/{item_id}/statements/{statement_id}
- Allow empty request body.
- Handle HTTP conditional request headers as in DELETE /entities/item/{item_id}/statements/{statement_id}
- Handle user authentication/authorization like in DELETE /entities/items/{item_id}/statements/{statement_id}
Task breakdown notes:
- Add the new route to OAS.
- happy path (with empty edit summary)
- ETag and Last-Modified
- Implement use case validation and deserialization
- Add the "remove label" edit summary
- Respond 404/409 if item not found/redirect or item does not have a label in the requested language
- Authorization
- Use the usual middlewares and add the route handler to RouteHandlersTest
- Add spec tests.
- Mark as production ready.