nextcloud/server · error · Forbidden
not implemented
Error message
not implemented
What it means
TrashbinHome::propPatch() throws Forbidden('not implemented'): the trashbin exposes only a fixed resourcetype (a DAV collection plus {http://nextcloud.org/ns}trash-bin) and accepts no property writes. Any PROPPATCH on the trashbin URL - for example setting {DAV:}displayname - fails with HTTP 403.
Source
Thrown at apps/dav/lib/CalDAV/Trashbin/TrashbinHome.php:129
#[\Override]
public function getName(): string {
return self::NAME;
}
#[\Override]
public function setName($name) {
throw new Forbidden('Permission denied to rename the trashbin');
}
#[\Override]
public function getLastModified(): int {
return 0;
}
#[\Override]
public function propPatch(PropPatch $propPatch): void {
throw new Forbidden('not implemented');
}
#[\Override]
public function getProperties($properties): array {
return [
'{DAV:}resourcetype' => new ResourceType([
'{DAV:}collection',
sprintf('{%s}trash-bin', \OCA\DAV\DAV\Sharing\Plugin::NS_NEXTCLOUD),
]),
];
}
}
View on GitHub (pinned to ecdeb153ff)
Solutions
- Skip PROPPATCH for the trashbin collection; it has no writable properties
- Apply displayname/color changes only to real calendars under the calendar home
- In bulk property-update loops, filter out the trashbin URL instead of parsing the 403 afterwards
Example fix
// before
PROPPATCH /remote.php/dav/calendars/alice/trashbin
set {DAV:}displayname = 'Trash'
-> 403 not implemented
// after
PROPPATCH /remote.php/dav/calendars/alice/personal/
set {DAV:}displayname = 'Personal'
-> 207 Multi-Status Defensive patterns
Strategy: validation
Validate before calling
if (str_ends_with(rtrim($propPatchUri, '/'), '/trashbin')) {
return; // trashbin has no writable properties: skip the PROPPATCH entirely
} Try / catch
try {
$client->propPatch($uri, $props);
} catch (\Sabre\HTTP\ClientHttpException $e) {
if ($e->getResponse()->getStatus() === 403 && str_ends_with(rtrim($uri, '/'), '/trashbin')) {
return; // 'not implemented' by design
}
throw $e;
} Prevention
- Send PROPPATCH only to real calendars under the calendar home
- Remember the trashbin exposes only its fixed resourcetype property
- Build bulk property-update loops that skip read-only system collections
When it happens
Trigger: PROPPATCH on /remote.php/dav/calendars/<user>/trashbin setting displayname, color, or sync metadata; clients that stamp displayname on every collection immediately after discovery.
Common situations: Calendar clients that 'tidy' all discovered collections by writing displayname/color; provisioning code applying a uniform property template to every node.
Related errors
- Read-only sharees cannot permanently delete trashbin entries
- Permission denied to create a directory in the trashbin
- Permission denied to delete the trashbin
- Permission denied to rename the trashbin
- Calendar limit reached
AI-assisted analysis of nextcloud/server@ecdeb153ff (2026-08-17).
Data as JSON: /api/errors/c43552417cc36c19.
Report an issue: GitHub.