---
metadata:
  - name: generator
    content: Diplodoc Platform v5.44.0
alternate:
  - https://yandex.com/dev/disk/doc/en/reference/publish.md
  - https://yandex.com/dev/disk/doc/ru/reference/publish.md
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com/dev/disk/doc/ru/llms.txt

# Публикация файлов и папок

Файлы и папки, загруженные на Яндекс Диск, можно опубликовать: сгенерировать ссылку, по которой они будут доступны не только владельцу Диска.

Опубликованным файлам и папкам можно вернуть статус личных — сгенерированные публичные ссылки перестанут работать.

Признак публичности устанавливается и редактируется с помощью метода `PROPPATCH`. Чтобы опубликовать файл или папку, свойству `public_url` в пространстве имен `urn:yandex:disk:meta` следует присвоить любое непустое значение.

## Публикация папки
>
> Публикуется папка ##/public_folder/##, расположенная в корневой папке Диска пользователя.
>
> ```xml
> PROPPATCH /public_folder/ HTTP/1.1
> User-Agent: my_application/0.0.1
> Host: webdav.yandex.ru
> Authorization: OAuth 0c4182a7c2cf4521964a72ff57a34a07
> Content-Length: 158
>
> <propertyupdate xmlns="DAV:">
>   <set>
>     <prop>
>       <public_url xmlns="urn:yandex:disk:meta">true</public_url>
>     </prop>
>   </set>
> </propertyupdate>
> ```
>
> Если папка опубликована успешно, сервер отвечает следующим образом:
>
> ```xml
> HTTP/1.1 207 Multi-Status
> Content-Type: application/xml; charset="utf-8"
> Content-Length: 390
>
> <?xml version="1.0" encoding="utf-8"?>
> <d:multistatus xmlns:d="DAV:">
>   <d:response>
>     <d:href>/public_folder/</d:href>
>     <d:propstat>
>       <d:status>HTTP/1.1 200 OK</d:status>
>       <d:prop>
>         <public_url xmlns="urn:yandex:disk:meta"> https://yadi.sk/d/AaaBbb1122Ccc </public_url>
>       </d:prop>
>     </d:propstat>
>   </d:response>
> </d:multistatus>
> ```
>
> Ссылка на опубликованную папку возвращается в значении элемента `public_url`. Если вы пытаетесь опубликовать уже опубликованную папку, Яндекс Диск возвращает ссылку, сгенерированную при изначальной публикации.

## Публикация файла
>
> Публикуется файл ##readme.txt##, расположенный в папке ##/public_folder/## Диска пользователя.
>
> ```xml
> PROPPATCH /public_folder/readme.txt HTTP/1.1
> User-Agent: my_application/0.0.1
> Host: webdav.yandex.ru
> Authorization: OAuth 0c4182a7c2cf4521964a72ff57a34a07
> Content-Length: 158
>
> <propertyupdate xmlns="DAV:">
>   <set>
>     <prop>
>       <public_url xmlns="urn:yandex:disk:meta">true</public_url>
>     </prop>
>   </set>
> </propertyupdate>
> ```
>
> Если файл опубликован успешно, сервер отвечает следующим образом:
>
> ```xml
> HTTP/1.1 207 Multi-Status
> Content-Type: application/xml; charset="utf-8"
> Content-Length: 400
>
> <?xml version="1.0" encoding="utf-8"?>
> <d:multistatus xmlns:d="DAV:">
>   <d:response>
>     <d:href>/public_folder/readme.txt</d:href>
>     <d:propstat>
>       <d:status>HTTP/1.1 200 OK</d:status>
>       <d:prop>
>         <public_url xmlns="urn:yandex:disk:meta"> https://yadi.sk/d/AaaBbb1122Ccc </public_url>
>       </d:prop>
>     </d:propstat>
>   </d:response>
> </d:multistatus>
> ```
>
> Ссылка на опубликованный файл возвращается в значении элемента `public_url`. Если вы пытаетесь опубликовать уже опубликованный файл, Яндекс Диск возвращает ссылку, сгенерированную при изначальной публикации.

## Закрытие опубликованного файла
>
> Файл ##readme.txt##, расположенный в папке ##/public_folder/## Диска пользователя, переводится в статус «личный» — свойство `public_url` удаляется.
>
> ```xml
> PROPPATCH /public_folder/readme.txt HTTP/1.1
> User-Agent: my_application/0.0.1
> Host: webdav.yandex.ru
> Authorization: OAuth 0c4182a7c2cf4521964a72ff57a34a07
> Content-Length: 149
>
> <propertyupdate xmlns="DAV:">
>   <remove>
>     <prop>
>       <public_url xmlns="urn:yandex:disk:meta" />
>     </prop>
>   </remove>
> </propertyupdate>
> ```
>
> В ответ Яндекс Диск подтвердит, что значение свойства стало пустым:
>
> ```xml
> HTTP/1.1 207 Multi-Status
> Content-Type: application/xml; charset="utf-8"
> Content-Length: 336
>
> <?xml version="1.0" encoding="utf-8"?>
> <d:multistatus xmlns:d="DAV:">
>   <d:response>
>     <d:href>/public_folder/readme.txt</d:href>
>     <d:propstat>
>       <d:status>HTTP/1.1 200 OK</d:status>
>       <d:prop>
>         <public_url xmlns="urn:yandex:disk:meta" />
>       </d:prop>
>     </d:propstat>
>   </d:response>
> </d:multistatus>
> ```
>
> При попытке закрыть неопубликованный файл ответ сервера остается таким же: Яндекс Диск сообщает о пустом значении свойства.

## Проверка публичности
>
> Проверяется публичность папки ##/public_folder/##: с помощью метода `PROPFIND` запрашивается значение свойства `public_url`.
>
> ```xml
> PROPFIND /public_folder/ HTTP/1.1
> User-Agent: my_application/0.0.1
> Host: webdav.yandex.ru
> Authorization: OAuth 0c4182a7c2cf4521964a72ff57a34a07
> Depth: 0
> Content-Length: 105
>
> <propfind xmlns="DAV:">
>   <prop>
>     <public_url xmlns="urn:yandex:disk:meta"/>
>   </prop>
> </propfind>
> ```
>
> Если папка опубликована, сервер возвращает публичную ссылку в значении свойства:
>
> ```xml
> HTTP/1.1 207 Multi-Status
> Content-Type: application/xml; charset="utf-8"
> Content-Length: 390
>
> <?xml version="1.0" encoding="utf-8"?>
> <d:multistatus xmlns:d="DAV:">
>   <d:response>
>     <d:href>/public_folder/</d:href>
>     <d:propstat>
>       <d:status>HTTP/1.1 200 OK</d:status>
>       <d:prop>
>         <public_url xmlns="urn:yandex:disk:meta">
>            https://yadi.sk/d/AaaBbb1122Ccc
>         </public_url>
>       </d:prop>
>     </d:propstat>
>   </d:response>
> </d:multistatus>
> ```
>
> Если папка не опубликована, сервер сообщает о пустом значении свойства:
>
> ```xml
> HTTP/1.1 207 Multi-Status
> Content-Type: application/xml; charset="utf-8"
> Content-Length: 340
>
> <?xml version="1.0" encoding="utf-8"?>
> <d:multistatus xmlns:d="DAV:">
>   <d:response>
>     <d:href>/public_folder/</d:href>
>     <d:propstat>
>       <d:status>HTTP/1.1 404 Object Not Found</d:status>
>       <d:prop>
>         <public_url xmlns="urn:yandex:disk:meta" />
>       </d:prop>
>     </d:propstat>
>   </d:response>
> </d:multistatus>
> ```
