mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-22 07:53:39 +01:00
use PUT with a UID as id to update an existing resource or create it, if not existing
This commit is contained in:
parent
e640873fc0
commit
281e71ef71
@ -1108,6 +1108,11 @@ class addressbook_groupdav extends Api\CalDAV\Handler
|
|||||||
$keys['id'] = $id;
|
$keys['id'] = $id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// json with uid
|
||||||
|
elseif (empty(self::$path_extension) && (string)$id !== (string)(int)$id)
|
||||||
|
{
|
||||||
|
$keys['uid'] = $id;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$keys[self::$path_attr] = $id;
|
$keys[self::$path_attr] = $id;
|
||||||
|
@ -278,6 +278,60 @@ Location: https://example.org/egroupware/groupdav.php/<username>/addressbook/123
|
|||||||
|
|
||||||
* **PUT** requests with a ```Content-Type: application/json``` header allow modifying single resources (requires to specify all attributes!)
|
* **PUT** requests with a ```Content-Type: application/json``` header allow modifying single resources (requires to specify all attributes!)
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Example: PUT request to update a resource</summary>
|
||||||
|
|
||||||
|
```
|
||||||
|
cat <<EOF | curl -i 'https://example.org/egroupware/groupdav.php/<username>/addressbook/1234' -X PUT -d @- -H "Content-Type: application/json" --user <username>
|
||||||
|
{
|
||||||
|
"uid": "5638-8623c4830472a8ede9f9f8b30d435ea4",
|
||||||
|
"prodId": "EGroupware Addressbook 21.1.001",
|
||||||
|
"created": "2010-10-21T09:55:42Z",
|
||||||
|
"updated": "2014-06-02T14:45:24Z",
|
||||||
|
"name": [
|
||||||
|
{ "type": "@type": "NameComponent", "personal", "value": "Default" },
|
||||||
|
{ "type": "@type": "NameComponent", "surname", "value": "Tester" }
|
||||||
|
],
|
||||||
|
"fullName": { "value": "Default Tester" },
|
||||||
|
....
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
HTTP/1.1 204 No Content
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Example: PUT request with UID to update an existing resource or create it, if not exists</summary>
|
||||||
|
|
||||||
|
```
|
||||||
|
cat <<EOF | curl -i 'https://example.org/egroupware/groupdav.php/<username>/addressbook/5638-8623c4830472a8ede9f9f8b30d435ea4' -X PUT -d @- -H "Content-Type: application/json" --user <username>
|
||||||
|
{
|
||||||
|
"uid": "5638-8623c4830472a8ede9f9f8b30d435ea4",
|
||||||
|
"prodId": "EGroupware Addressbook 21.1.001",
|
||||||
|
"created": "2010-10-21T09:55:42Z",
|
||||||
|
"updated": "2014-06-02T14:45:24Z",
|
||||||
|
"name": [
|
||||||
|
{ "type": "@type": "NameComponent", "personal", "value": "Default" },
|
||||||
|
{ "type": "@type": "NameComponent", "surname", "value": "Tester" }
|
||||||
|
],
|
||||||
|
"fullName": { "value": "Default Tester" },
|
||||||
|
....
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
Update of an existing one:
|
||||||
|
```
|
||||||
|
HTTP/1.1 204 No Content
|
||||||
|
```
|
||||||
|
New contact:
|
||||||
|
```
|
||||||
|
HTTP/1.1 201 Created
|
||||||
|
Location: https://example.org/egroupware/groupdav.php/<username>/addressbook/1234
|
||||||
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
|
|
||||||
* **PATCH** request with a ```Content-Type: application/json``` header allow to modify a single resource by only specifying changed attributes as a [PatchObject](https://www.rfc-editor.org/rfc/rfc8984.html#type-PatchObject)
|
* **PATCH** request with a ```Content-Type: application/json``` header allow to modify a single resource by only specifying changed attributes as a [PatchObject](https://www.rfc-editor.org/rfc/rfc8984.html#type-PatchObject)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
Loading…
Reference in New Issue
Block a user