mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-21 23:43:17 +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;
|
||||
}
|
||||
}
|
||||
// json with uid
|
||||
elseif (empty(self::$path_extension) && (string)$id !== (string)(int)$id)
|
||||
{
|
||||
$keys['uid'] = $id;
|
||||
}
|
||||
else
|
||||
{
|
||||
$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!)
|
||||
|
||||
<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)
|
||||
|
||||
<details>
|
||||
|
Loading…
Reference in New Issue
Block a user