# EGroupware REST API for Links and attachments * linking application entries to other application entries * attaching files to application entries * listing, creating and deleting links and attachments Authentication is via Basic Auth with username and a password, or a token valid for: - either just the given user or all users - CalDAV/CardDAV Sync (REST API) - application the link or attachment is created for ### Following schema is used for JSON encoding of links and attachments * @type: `Link` * href: string URI to linked entry or attachments * title: string title of link * contentType: string `application/json` for links, content-type of attachments * size: size of attachments * egroupware.org-remark: string * egroupware.org-app: string application name of the linked entry * egroupware.org-id: string application ID of the linked entry * rel: string `egroupware.org-primary` to mark a primary link for InfoLog entries ### Supported request methods and examples * **GET** to application entry collections to return all links and attachments
Example: Getting all links and attachments of a given application entry ``` curl https://example.org/egroupware/groupdav.php////links/ -H "Accept: application/pretty+json" --user HTTP/1.1 200 Ok Content-Type: application/json { "responses": { "////links/": { "@type": "Link", "href": "https://example.org/egroupware/groupdav.php/ralf/addressbook/46", "contentType": "application/json", "title": "EGroupware GmbH: Becker, Ralf", "egroupware.org-app": "addressbook", "egroupware.org-id": "46", "egroupware.org-remark": "Testing ;)" }, "////links/": { "@type": "Link", "href": "https://example.org/egroupware/groupdav.php/ralf/infolog/1161", "contentType": "application/json", "title": "Test mit primärem Link (#1161)", "egroupware.org-app": "infolog", "egroupware.org-id": "1161" }, "////links/": { "@type": "Link", "href": "https://example.org/egroupware/webdav.php/apps/timesheet/199/image.svg", "contentType": "image/svg+xml", "size": 17167, "title": "image.svg" } } } ```
* **POST** request to upload an attachment or link with another application entry
Example: Adding a PDF as attachment to an application entry ``` curl -i 'https://example.org/egroupware/groupdav.php////links/' -H "Content-Type: application/pdf" --data-binary @ --user HTTP/1.1 204 Created Location: https://example.org/egroupware/groupdav.php////links/ ```
Example: Creating a link from one application entry to another ``` curl -i 'https://example.org/egroupware/groupdav.php////links/' -H "Content-Type: application/json" --data-binary @- --user <<","id":<2nd-app-id>,"remark":"This is a test ;)"} EOF HTTP/1.1 204 Created Location: https://example.org/egroupware/groupdav.php////links/ ```
Example: Creating the primary link for an InfoLog entry ``` curl -i 'https://example.org/egroupware/groupdav.php//infolog//links/' -H "Content-Type: application/json" --data-binary @- --user <<","id":<2nd-app-id>,"rel":"egroupware.org-primary"} EOF HTTP/1.1 204 Created Location: https://example.org/egroupware/groupdav.php//infolog//links/ ```
* **DELETE** request to remove a link or attachment
Example: deleting an attachment or link ``` curl -X DELETE 'https://example.org/egroupware/groupdav.php///links/' --user HTTP/1.1 201 No Content ```
> one can use ```Accept: application/pretty+json``` to receive pretty-printed JSON eg. for debugging and exploring the API