> For the complete documentation index, see [llms.txt](https://docs.fylr.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fylr.io/for-developers/api/endpoints/api-webdav.md).

# /api/v1/WebDAV

The **read/write** [WebDAV](http://www.webdav.org/specs/rfc4918.html) (RFC 4918) interface to **fylr**'s collections, mounted at `/api/v1/WebDAV`. Each WebDAV directory maps to a **fylr** collection; each WebDAV file maps to a file linked from that collection — so you can browse, download, upload, rename and delete a collection's files live. For the separate **drop-only** ingest share, see `/api/v1/hotfolder` below; the two are independent mounts with independent enable flags.

Must be enabled in the base config (`webdav.read_write_access = true`), otherwise every request returns 503 with `code: WebdavNotEnabled`. The same flag gates both reading and writing.

This endpoint performs **no client authentication** — the route is registered with no token check. Knowledge of the collection's UUID, which forms the path, is the only access capability: anyone who can reach the URL with a valid collection UUID can mount it. Clients must connect **as guest** and send no credentials — for example, in macOS Finder's *Connect to Server* dialog, choose *Connect As: Guest*. There is no Bearer-token, `X-Fylr-Authorization`, `access_token` or HTTP Basic authentication here; the only gate is whether WebDAV is enabled (above). Server-side, the operation acts as the owner of the target collection.

**WebDAV methods.** `GET`, `HEAD`, `OPTIONS`, `POST`, `PUT` and `DELETE` are documented as operations below. The collection-specific WebDAV verbs — which the OpenAPI renderer cannot list as operations — behave as follows:

* `PROPFIND` — the WebDAV directory listing: list a collection's contents. The `Depth` header must be `0` or `1` (`400` otherwise); the response is a `207` multistatus XML body.
* `PROPPATCH` — accepted for client compatibility only; no properties are stored. It behaves like `PROPFIND` and echoes the current property values.
* `MKCOL` — create a collection (`201`; idempotent — also `201` if the collection already exists). `409` when a parent in the path is missing or the path already exists as a file.
* `MOVE` — rename a collection within its parent (`201`). `409` for a missing source, an existing destination, a non-collection target, or a cross-parent move; files cannot be moved.
* `LOCK` / `UNLOCK` — WebDAV write locks. `LOCK` returns `200` (refresh) or `201` (new) with a `Lock-Token` header and an XML lock-discovery body; `UNLOCK` returns `204`. A token mismatch returns `423`.

`COPY` is not supported and returns `405`. As with the operations below, every verb returns `503` with `code: WebdavNotEnabled` when WebDAV is disabled, and writes return `400` `ReadOnlyMode` in read-only mode.

### `GET /WebDAV/{collectionUuid}/{path}` — Download a file (or list a collection — depending on path).

{% openapi src="/files/kfiDjhyZfEICNBmt5f49" path="/WebDAV/{collectionUuid}/{path}" method="get" %}
[fylr-openapi.yml](https://4100607288-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAdRFzQASDY2Elfdm3wXW%2Fuploads%2Fgit-blob-d5aceac1c99d5aa0b623bea061400efbac147a8d%2Ffylr-openapi.yml?alt=media)
{% endopenapi %}

### `POST /WebDAV/{collectionUuid}/{path}` — WebDAV POST — handled by the same code path as GET/HEAD. fylr

{% openapi src="/files/kfiDjhyZfEICNBmt5f49" path="/WebDAV/{collectionUuid}/{path}" method="post" %}
[fylr-openapi.yml](https://4100607288-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAdRFzQASDY2Elfdm3wXW%2Fuploads%2Fgit-blob-d5aceac1c99d5aa0b623bea061400efbac147a8d%2Ffylr-openapi.yml?alt=media)
{% endopenapi %}

### `PUT /WebDAV/{collectionUuid}/{path}` — Upload a file and link it to the collection.

{% openapi src="/files/kfiDjhyZfEICNBmt5f49" path="/WebDAV/{collectionUuid}/{path}" method="put" %}
[fylr-openapi.yml](https://4100607288-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAdRFzQASDY2Elfdm3wXW%2Fuploads%2Fgit-blob-d5aceac1c99d5aa0b623bea061400efbac147a8d%2Ffylr-openapi.yml?alt=media)
{% endopenapi %}

### `DELETE /WebDAV/{collectionUuid}/{path}` — Delete a file.

{% openapi src="/files/kfiDjhyZfEICNBmt5f49" path="/WebDAV/{collectionUuid}/{path}" method="delete" %}
[fylr-openapi.yml](https://4100607288-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAdRFzQASDY2Elfdm3wXW%2Fuploads%2Fgit-blob-d5aceac1c99d5aa0b623bea061400efbac147a8d%2Ffylr-openapi.yml?alt=media)
{% endopenapi %}

### `HEAD /WebDAV/{collectionUuid}/{path}` — Probe a file's existence and metadata.

{% openapi src="/files/kfiDjhyZfEICNBmt5f49" path="/WebDAV/{collectionUuid}/{path}" method="head" %}
[fylr-openapi.yml](https://4100607288-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAdRFzQASDY2Elfdm3wXW%2Fuploads%2Fgit-blob-d5aceac1c99d5aa0b623bea061400efbac147a8d%2Ffylr-openapi.yml?alt=media)
{% endopenapi %}

### `OPTIONS /WebDAV/{collectionUuid}/{path}` — Advertise the supported WebDAV methods for this resource.

{% openapi src="/files/kfiDjhyZfEICNBmt5f49" path="/WebDAV/{collectionUuid}/{path}" method="options" %}
[fylr-openapi.yml](https://4100607288-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAdRFzQASDY2Elfdm3wXW%2Fuploads%2Fgit-blob-d5aceac1c99d5aa0b623bea061400efbac147a8d%2Ffylr-openapi.yml?alt=media)
{% endopenapi %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.fylr.io/for-developers/api/endpoints/api-webdav.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
