POST /entities/items/{item_id}/aliases/{lang_code}
Notes:**Acceptance criteria:**
- The respective successful responses should present the relevant data as a string -- similar to the responses of GET /entities/items/{item_id}/aliases/{language_code}.
- If an alias in the given language didn't exist before the successful request the response should use 201 code.
- If the request changed the existing alias, the response code should be 200.
- input alias is "appended" to the aliases list in a given language
- do not allow creating duplicate aliasesthe response body should include the list of aliases in the requested language (DOUBLE CHECK)
**Error cases to consider**
<table>
- the response body should include the list of aliases in the requested language; TODO @WMDE-leszek check whether RFCs make any recommendations about list vs individual alias<tr>
- include etag and last-modified header<th>
- edit summary TODO @WMDE-leszek
- validation: item id, language code, alias text</th>
<th>HTTP response code</th>
<th>response payload</th>
</tr>
<tr>
<td>Item does not exist </td>
<td>404</td>
<td>
`"code": "item-not-found"`
`"message": "Could not find an item with the ID: {item_id}"`
</td>
</tr>
<tr>
<td>Invalid item ID </td>
<td>400</td>
<td>
`"code": "invalid-item-id"`
`"message": "Not a valid item ID: {item_id}"`
`"context": {"item": "{item-id}"}`
</td>
</tr>
<tr>
<td>Item redirect </td>
<td>409</td>
<td>
`"code": "redirected-item"`
`"message": "Item {item_id} has been merged into {other_id}" `
</td>
</tr>
<tr>
<td>Invalid language code </td>
<td>400</td>
<td>
`{ "code": "invalid-language-code", "message": "Not a valid language code: {language_code}"}`
</td>
</tr>
<tr>
<td>Alias is empty </td>
<td>400</td>
<td>
`{ "code": "alias-empty", "message": "Alias must not be empty" }`
</td>
</tr>
<tr>
<td>Alias too long </td>
<td>400</td>
<td>
`{ "code": "alias-too-long", "message": "Alias must be no more than {limit} characters long", "context": { "value": "{alias}", "character-limit": "{limit}" } }`
</td>
</tr>
<tr>
<td>Alias duplicate </td>
<td>400</td>
<td>
`{ "code": "item-alias-duplicate", "message": "Item' {item_id}' already has alias '{alias}' associated with language code '{language}'", "context": { "language": "{language}", "alias": "{alias}" }}`
</td>
</tr>
<tr>
<td>Invalid edit tag</td>
<td>400</td>
<td>
`{ "code": "invalid-edit-tag", "message": "Invalid MediaWiki tag: {tag}" }`
</td>
</tr>
<tr>
<td>Comment too long</td>
<td>400</td>
<td>
`{"code": "comment-too-long", "message": "Comment must not be longer than {limit} characters"}`
</td>
</tr>
</table>
**Notes**
- Automated edit summaries similar as done for items: https://phabricator.wikimedia.org/T348150
- respond 409 if the item is a redirectclient 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}
- respond 404 if the - Handle HTTP conditional request headers as in PUT /entities/items/{item does not exist_id}/aliases (or labels or descriptions) /{language_code}
- precondition checks are applied as usualHandle user authentication/authorization like in PUT /entities/items/{item_id}/aliases (or labels or descriptions)/{language_code}