Page MenuHomePhabricator

❄️ Remove item's label in a specific language
Closed, ResolvedPublic5 Estimated Story Points

Description

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 coderesponse payload
Item does not exist404"code": "item-not-found"
"message": "Could not find an item with the ID: {item_id}"
Invalid item ID400"code": "invalid-item-id"
"message": "Not a valid item ID: <ITEM_ID>"
Invalid language code400"code": "invalid-language-code"
"message": "Not a valid language code : <language code>"
Item does not have label in given language404"code": "label-not-defined"
"message": "Item with the ID <ITEM_ID> does not have a label in the language: <LANGUAGE CODE>"
Invalid edit tag400{ "code": "invalid-edit-tag", "message": "Invalid MediaWiki tag: {tag}" }
Comment too long400{"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.

Event Timeline

Silvan_WMDE renamed this task from Remove item's label in a specific label to Remove item's label in a specific language.May 3 2023, 9:56 AM
Jakob_WMDE set the point value for this task to 8.
Muhammad_Yasser_Jazirahly_WMDE renamed this task from Remove item's label in a specific language to ❄️ Remove item's label in a specific language.Nov 16 2023, 9:26 AM