WIP
**Description**
PUT /entities/properties/{property_id}/labels/{language_code}
PUT /entities/properties/{property_id}/description/{language_code}
**Acceptance criteria:**
- The respective successful responses should present the relevant data as a string -- similar to the responses of GET /entities/properties/{property_id}/labels/{language_code}, and GET /entities/properties/{property_id}/descriptions/{language_code} respectively. If a label or a description in the given language didn't exist before the successful request the response should use 201 code. If the request changed the existing label or description, the response code should be 200.
-** Error cases to consider**:
<table>
<tr>
<th>
</th>
<th>HTTP response code</th>
<th>response payload</th>
</tr>
<tr>
<td>Property does not exist </td>
<td>404</td>
<td>
`"code": "property-not-found"`
`"message": "Could not find a property with the ID: {property_id}"`
</td>
</tr>
<tr>
<td>Invalid property ID </td>
<td>400</td>
<td>
`"code": "invalid-property-id"`
`"message": "Not a valid property ID: {property_id}"`
`"context": {"property": "{property-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>Label is empty </td>
<td>400</td>
<td>
`{ "code": "label-empty", "message": "Label must not be empty" }`
</td>
</tr>
<tr>
<td>Label too long </td>
<td>400</td>
<td>
`{ "code": "label-too-long", "message": "Label must be no more than {limit} characters long", "context": { "value": "{label}", "character-limit": "{limit}" } }`
</td>
</tr>
<tr>
<td>Label description same value </td>
<td>400</td>
<td>
`{ "code": "label-description-same-value", "message": "Label and description for language code '{language}' can not have the same value", "context": { "language": "{language}" } }`
</td>
</tr>
<tr>
<td>Label description same value </td>
<td>400</td>
<td>
`{ "code": "item-label-description-duplicate", "message": "Item '{duplicate_item_id}' already has label '{label}' associated with language code '{language}', using the same description text", "context": {
"language": "{language}", "label": "{label}", "description": "{description}","matching-item-id": "{duplicate_item_id}" }}`
</td>
</tr>
</table>
-
**Notes**
- Automated edit summaries similar as done for items: https://phabricator.wikimedia.org/T323813
- mul is a valid language code for a label but it is not allowed for descriptions
- Handle HTTP conditional request headers as in GET /entities/properties/{property_id}/labels/{language_code}
- Handle user authentication/authorization like in GET /entities/properties/{property_id}/labels/{language_code}