Page MenuHomePhabricator

Create/Add aliases in a given language for an item
Closed, ResolvedPublic8 Estimated Story Points

Description

POST /entities/items/{item_id}/aliases/{language_code}

request payload

{ 
  "aliases": [ "ALIAS_TEXT", ... ]
 ...
}

Acceptance criteria:

  • The respective successful responses should present the list of aliases in a given language -- similar to the responses of GET /entities/items/{item_id}/aliases/{language_code}.
  • If there was no aliases in the given language before the successful request the response should use 201 code, otherwise 200.- input alias is "appended" to the aliases list in a given language

Error cases to consider

HTTP response coderesponse payload
Invalid item ID 400"code": "invalid-item-id"
"message": "Not a valid item ID: {item_id}"
"context": { "item": "{item-id}" }
Invalid language code 400"code": "invalid-language-code"
"message": "Not a valid language code: {language_code}"
Alias is empty 400"code": "alias-empty"
"message": "Alias must not be empty"
Alias list is empty 400"code": "alias-list-empty"
"message": "Alias list must not be empty"
Alias too long 400"code": "alias-too-long"
"message": "Alias must be no more than {limit} characters long"
"context": {
"value": "{alias}",
"character-limit": "{limit}"
}
Alias contains invalid characters400"code": "invalid-alias"
"message": "Not a valid alias: '{alias}'"
"context": { "alias": "{alias}" }
Alias duplicate 400"code": "duplicate-alias"
"message": "Alias list contains a duplicate alias: '{alias}'"
"context": { "alias": "{alias}" }
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"
Item does not exist 404"code": "item-not-found"
"message": "Could not find an item with the ID: {item_id}"
Item redirect 409"code": "redirected-item"
"message": "Item {item_id} has been merged into {other_id}"

Notes

  • Edit summaries should be in the format: /* wbsetaliases-add:{number-of-new-aliases}|{language-code} */ {new-aliases-comma-separated}, {user-comment}
  • client can provide additional edit metadata: mediawiki tags, edit summary text to append to the automated summary, and a bot edit flag, like in GET /entities/items/{item_id}/alias/{language_code}
  • Handle HTTP conditional request headers as in PUT /entities/items/{item_id}/(labels or descriptions) /{language_code}
  • Handle user authentication/authorization like in PUT /entities/items/{item_id}/(labels or descriptions)/{language_code}

Task breakdown notes:

  • Add the new route to OAS.
  • happy path (with empty edit summary)
    • directly use the AliasesDeserializer for deserialization
    • ETag and Last-Modified
    • include difference between 200 OK and 201 CREATED cases
  • Create use case validation/deserialization
  • Create edit summary
  • Respond 404/409 if item not found/redirect
  • Authorization
  • Use the usual middlewares and add the route handler to RouteHandlersTest
  • Add spec tests.
  • Mark as production ready.

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes
Ifrahkhanyaree_WMDE renamed this task from Create/Add an alias in a given language for an item to Create/Add aliases in a given language for an item.Oct 11 2023, 12:22 PM
Ifrahkhanyaree_WMDE changed the task status from Stalled to Open.
Ifrahkhanyaree_WMDE updated the task description. (Show Details)

Change 966861 had a related patch set uploaded (by Silvan Heintze; author: Silvan Heintze):

[mediawiki/extensions/Wikibase@master] REST: Add 'POST item aliases in language' route to OAS

https://gerrit.wikimedia.org/r/966861

Change 966861 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] REST: Add 'POST item aliases in language' route to OAS

https://gerrit.wikimedia.org/r/966861

Change 967223 had a related patch set uploaded (by Silvan Heintze; author: Silvan Heintze):

[mediawiki/extensions/Wikibase@master] REST: Create AddItemAliases happy path

https://gerrit.wikimedia.org/r/967223

Change 967420 had a related patch set uploaded (by Silvan Heintze; author: Silvan Heintze):

[mediawiki/extensions/Wikibase@master] REST: Rename response for invalid 'POST item aliases' input

https://gerrit.wikimedia.org/r/967420

Change 967420 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] REST: Rename response for invalid 'POST item aliases' input

https://gerrit.wikimedia.org/r/967420

Change 968573 had a related patch set uploaded (by Silvan Heintze; author: Silvan Heintze):

[mediawiki/extensions/Wikibase@master] REST: Add deserialization/validation to AddItemAliases

https://gerrit.wikimedia.org/r/968573

Change 967223 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] REST: Create AddItemAliases happy path

https://gerrit.wikimedia.org/r/967223

Change 968805 had a related patch set uploaded (by Silvan Heintze; author: Silvan Heintze):

[mediawiki/extensions/Wikibase@master] REST: Create edit summary for AddItemAliases

https://gerrit.wikimedia.org/r/968805

Change 968573 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] REST: Add deserialization/validation to AddItemAliases

https://gerrit.wikimedia.org/r/968573

Change 969804 had a related patch set uploaded (by Jakob; author: Jakob):

[mediawiki/extensions/Wikibase@master] REST: Rename AddItemAliases to AddItemAliasesInLanguage

https://gerrit.wikimedia.org/r/969804

Change 969329 had a related patch set uploaded (by Jakob; author: Jakob):

[mediawiki/extensions/Wikibase@master] REST: Avoid reassigning variable

https://gerrit.wikimedia.org/r/969329

Change 969329 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] REST: Avoid reassigning variable

https://gerrit.wikimedia.org/r/969329

Change 969804 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] REST: Rename AddItemAliases to AddItemAliasesInLanguage

https://gerrit.wikimedia.org/r/969804

Change 970797 had a related patch set uploaded (by Jakob; author: Jakob):

[mediawiki/extensions/Wikibase@master] REST: Generate edit summary for AddItemAliasesInLanguage

https://gerrit.wikimedia.org/r/970797

Change 970797 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] REST: Generate edit summary for AddItemAliasesInLanguage

https://gerrit.wikimedia.org/r/970797

Change 971396 had a related patch set uploaded (by Jakob; author: Jakob):

[mediawiki/extensions/Wikibase@master] REST: Handle item not found and redirect in AddItemAliasesInLanguage

https://gerrit.wikimedia.org/r/971396

Change 971402 had a related patch set uploaded (by Jakob; author: Jakob):

[mediawiki/extensions/Wikibase@master] REST: Add authorization check to AddItemAliasesInLanguage

https://gerrit.wikimedia.org/r/971402

Change 971405 had a related patch set uploaded (by Jakob; author: Jakob):

[mediawiki/extensions/Wikibase@master] REST: Add middlewares to AddItemAliasesInLanguage

https://gerrit.wikimedia.org/r/971405

Change 971454 had a related patch set uploaded (by Jakob; author: Jakob):

[mediawiki/extensions/Wikibase@master] REST: Add AddItemAliasesInLanguage spec test

https://gerrit.wikimedia.org/r/971454

Change 971396 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] REST: Handle item not found and redirect in AddItemAliasesInLanguage

https://gerrit.wikimedia.org/r/971396

Change 971402 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] REST: Add authorization check to AddItemAliasesInLanguage

https://gerrit.wikimedia.org/r/971402

Change 968805 abandoned by Silvan Heintze:

[mediawiki/extensions/Wikibase@master] REST: Create edit summary for AddItemAliases

Reason:

done in I513d73fbbcee10b0cfa239a575563b5503897455

https://gerrit.wikimedia.org/r/968805

Change 971405 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] REST: Add middlewares to AddItemAliasesInLanguage

https://gerrit.wikimedia.org/r/971405

Change 971454 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] REST: Add AddItemAliasesInLanguage spec test

https://gerrit.wikimedia.org/r/971454

Everything looks good, I just wasn't sure how to test the item redirect (or how to find which items have redirects or how to create a redirect from an item). Otherwise, good to be marked as production ready

Change 973346 had a related patch set uploaded (by Jakob; author: Jakob):

[mediawiki/extensions/Wikibase@master] REST: Mark add item aliases production ready

https://gerrit.wikimedia.org/r/973346

Change 973346 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] REST: Mark add item aliases production ready

https://gerrit.wikimedia.org/r/973346

Change 977732 had a related patch set uploaded (by Jakob; author: Jakob):

[mediawiki/extensions/Wikibase@master] REST: List only new aliases in aliases edit summary

https://gerrit.wikimedia.org/r/977732

Change 977732 merged by jenkins-bot:

[mediawiki/extensions/Wikibase@master] REST: List only new aliases in aliases edit summary

https://gerrit.wikimedia.org/r/977732