---
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/en/llms.txt

# Publishing files and folders

Files and folders that are uploaded to Yandex Disk can be published by generating a link that makes them accessible to people other than the Yandex Disk owner.

Published files and folders can be reverted to private status, and the generated public links to the file will stop working.

Use the `PROPPATCH` method to set and change the "public" status. To publish a file or folder, assign any non-empty value to the `public_url` property in the `urn:yandex:disk:meta` namespace.

## Example of publishing a folder
>
> Publishing the ##/public_folder/## folder located in the root directory of the user's Disk.
>
> ```yaml
> 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>
> ```
>
> If the folder was published successfully, the server responds with:
>
> ```yaml
> 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"> http://yadi.sk/d/FTb3fLiI49Xt0 </public_url>
>       </d:prop>
>     </d:propstat>
>   </d:response>
> </d:multistatus>
> ```
>
> The link to the published folder is returned in the value of the `public_url` element. If you attempt to publish a folder that is already published, Yandex Disk returns the link that was generated during the first publication.

## Example of publishing a file
>
> Publishing the ##readme.txt## file located in the ##/public_folder/## directory on the user's Disk.
>
> ```yaml
> 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>
> ```
>
> If the file was published successfully, the server responds with:
>
> ```yaml
> 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"> http://yadi.sk/d/UDh3fLiI49Xt0 </public_url>
>       </d:prop>
>     </d:propstat>
>   </d:response>
> </d:multistatus>
> ```
>
> The link to the published file is returned in the value of the `public_url` element. If you attempt to publish a file that is already published, Yandex Disk returns the link that was generated during the first publication.

## Example of unpublishing a published file
>
> The ##readme.txt## file in the ##/public_folder/## catalog on the user's Disk is switched to “private” status - the `public_url` property is deleted.
>
> ```yaml
> 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>
> ```
>
> In the response, Yandex Disk confirms that the property value is now empty:
>
> ```yaml
> 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>
> ```
>
> If you attempt to unpublish a file that was not published, the server response is the same - Yandex Disk informs you that the property value is empty.

## Example of checking public status
>
> Checking whether the ##/public_folder/## directory is public: using the `PROPFIND` method, we request the value of the `public_url` property.
>
> ```yaml
> 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>
> ```
>
> If the folder is published, the server returns a public link in the property value:
>
> ```yaml
> 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">
>            http://yadi.sk/d/FTb3fLiI49Xt0
>         </public_url>
>       </d:prop>
>     </d:propstat>
>   </d:response>
> </d:multistatus>
> ```
>
> If the folder is not published, the server reports that the property value is empty:
>
> ```yaml
> 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>
> ```
