<!DOCTYPE html>
<html lang="en">

<!--

!!! WARNING !!!

This file was auto-generated from readme/spec/server_sharing.md and any manual change
made to it will be overwritten. To make a change to this file please modify
the source Markdown file:

https://github.com/laurent22/joplin/blob/dev/readme/spec/server_sharing.md

-->

	<head>
		<meta
			charset="utf-8"
			http-equiv="X-UA-Compatible"
			content="IE=edge,chrome=1"
		/>
		<link rel="icon" href="&#x2F;images/favicon.png" />
		<meta name="viewport" content="width=device-width, initial-scale=1" />
		<meta name="theme-color" content="#000000" />
		<meta name="description" content="Joplin website" />
		<link
			rel="stylesheet"
			href="&#x2F;css/bootstrap5.0.2.min.css"
			as="style"
		/>
		<link rel="stylesheet" href="&#x2F;css/fontawesome-all.min.css">
		<link
			href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;500;600;700&display=swap"
			rel="stylesheet"
			as="style"
			media="all"
			onload="this.media='all'; this.onload = null"
		/>
		<link rel="stylesheet" href="&#x2F;css/site.css" as="style" />
		<title>Joplin Server sharing feature | Joplin</title>
	</head>
	<body>
		<div class="container-fluid" id="main-container">
			<div class="with-profile white-bg" id="nav-section">
				<div class="container">
					<div class="row">
						<div class="col-3">
							<a href="https://joplinapp.org">
								<img
									src="&#x2F;images/logo-text-blue.svg"
									alt=""
									id="top-logo"
									width="180"
								>
							</a>
						</div>
						<div class="col-9 text-right d-none d-md-block">
							<!-- <a href="#" class="fw500">Help</a> -->

							<a href="https://joplinapp.org/gsoc2021/index/" class="fw500">GSoC 2021</a>
							<a href="https://discourse.joplinapp.org/" class="fw500">Forum</a>

							<!--
							<a href="#" class="fw500">Joplin Cloud</a>

							<a class="button-link btn-blue ml-20" href="#">
								<img src="&#x2F;images/download-icon.svg" alt="" />&nbsp;
								Download</a
							>
							-->
						</div>
						<div class="col-9 text-right d-block d-md-none">
							<!--
							<span class="pointer"
								><img src="&#x2F;images/profile-black-icon.png" alt=""
							/></span>
							&nbsp;&nbsp;
							-->
							<span class="pointer"
								><img
									src="&#x2F;images/mobile-menu-black-open-icon.png"
									id="open-menu-mobile"
									alt=""
							/></span>
							&nbsp;&nbsp;

							<div id="menu-mobile">

								<div class="text-right">
									<img
										src="&#x2F;images/close-icon.png"
										alt=""
										class="pointer"
										id="close-menu-mobile"
									/>
								</div>

								<!--
								<div class="text-center">
									<img src="&#x2F;images/logo-text-blue.svg" alt="" />
									<a href="#" class="fw500 mobile-menu-link">Contacts</a>
									<a href="https://discourse.joplinapp.org/" class="fw500 mobile-menu-link">Forum</a>
									<a href="#" class="fw500 mobile-menu-link">Help</a>
								</div>
								-->

								<div id="toc-mobile"><div><ul>
<li>
<p>Applications</p>
<ul>
<li><a href="https://joplinapp.org/desktop/">Desktop application</a></li>
<li><a href="https://joplinapp.org/mobile/">Mobile applications</a></li>
<li><a href="https://joplinapp.org/terminal/">Terminal application</a></li>
<li><a href="https://joplinapp.org/clipper/">Web Clipper</a></li>
</ul>
</li>
<li>
<p>Support</p>
<ul>
<li><a href="https://discourse.joplinapp.org">Joplin Forum</a></li>
<li><a href="https://joplinapp.org/markdown/">Markdown Guide</a></li>
<li><a href="https://joplinapp.org/e2ee/">How to enable end-to-end encryption</a></li>
<li><a href="https://joplinapp.org/conflict/">What is a conflict?</a></li>
<li><a href="https://joplinapp.org/debugging/">How to enable debug mode</a></li>
<li><a href="https://joplinapp.org/rich_text_editor/">About the Rich Text editor limitations</a></li>
<li><a href="https://joplinapp.org/faq/">FAQ</a></li>
</ul>
</li>
<li>
<p>Joplin API - Get Started</p>
<ul>
<li><a href="https://joplinapp.org/api/overview/">Joplin API Overview</a></li>
<li><a href="https://joplinapp.org/api/get_started/plugins/">Plugin development</a></li>
<li><a href="https://joplinapp.org/api/tutorials/toc_plugin/">Plugin tutorial</a></li>
</ul>
</li>
<li>
<p>Joplin API - References</p>
<ul>
<li><a href="https://joplinapp.org/api/references/plugin_api/classes/joplin.html">Plugin API</a></li>
<li><a href="https://joplinapp.org/api/references/rest_api/">Data API</a></li>
<li><a href="https://joplinapp.org/api/references/plugin_manifest/">Plugin manifest</a></li>
<li><a href="https://joplinapp.org/api/references/plugin_loading_rules/">Plugin loading rules</a></li>
<li><a href="https://joplinapp.org/api/references/plugin_theming/">Plugin theming</a></li>
</ul>
</li>
<li>
<p>Development</p>
<ul>
<li><a href="https://github.com/laurent22/joplin/blob/dev/BUILD.md">How to build the apps</a></li>
<li><a href="https://joplinapp.org/spec/e2ee/">End-to-end encryption spec</a></li>
<li><a href="https://joplinapp.org/spec/history/">Note History spec</a></li>
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
<li><a href="https://joplinapp.org/spec/server_sharing/">Server: Sharing</a></li>
</ul>
</li>
<li>
<p>Google Summer of Code 2021</p>
<ul>
<li><a href="https://joplinapp.org/gsoc2021/index/">Google Summer of Code 2021</a></li>
<li><a href="https://joplinapp.org/gsoc2021/pull_request_guidelines/">How to submit a GSoC pull request</a></li>
<li><a href="https://joplinapp.org/gsoc2021/ideas/">Project Ideas</a></li>
</ul>
</li>
<li>
<p>About</p>
<ul>
<li><a href="https://joplinapp.org/changelog/">Changelog (Desktop App)</a></li>
<li><a href="https://joplinapp.org/changelog_cli/">Changelog (CLI App)</a></li>
<li><a href="https://joplinapp.org/changelog_server/">Changelog (Server)</a></li>
<li><a href="https://joplinapp.org/stats/">Stats</a></li>
<li><a href="https://joplinapp.org/donate/">Donate</a></li>
</ul>
</li>
</ul>
</div></div>

								<!--
								<br />
								<br />
								<br />
								<br />
								<a class="button-link btn-blue" href="#">
									<img src="&#x2F;images/download-icon.svg" alt="" />
									Download</a
								>
								<br />
								<p class="light-blue mobile-menu-link-bottom text-center">
									JoplinΒ© 2021, All rights reserved
									<br />
									<a href="#" class="fw500">Terms & Conditions</a>
									<br />
									<a href="#" class="fw500">Privacy Policy</a>
								</p>
								-->
							</div>
						</div>
					</div>
				</div>
			</div>

			<div class="page-container page-server_sharing">
				<div class="container">
					<!--
					<div class="row">
						<div class="col-12">
							<h1 class="text-center">
								Page <span class="frame-bg frame-bg-yellow">title</span>
							</h1>
							<p class="text-center">Hello word</p>
						</div>
					</div>
					-->

					<br />
					<div class="row content-wrapper">
						<div id="toc"><div><ul>
<li>
<p>Applications</p>
<ul>
<li><a href="https://joplinapp.org/desktop/">Desktop application</a></li>
<li><a href="https://joplinapp.org/mobile/">Mobile applications</a></li>
<li><a href="https://joplinapp.org/terminal/">Terminal application</a></li>
<li><a href="https://joplinapp.org/clipper/">Web Clipper</a></li>
</ul>
</li>
<li>
<p>Support</p>
<ul>
<li><a href="https://discourse.joplinapp.org">Joplin Forum</a></li>
<li><a href="https://joplinapp.org/markdown/">Markdown Guide</a></li>
<li><a href="https://joplinapp.org/e2ee/">How to enable end-to-end encryption</a></li>
<li><a href="https://joplinapp.org/conflict/">What is a conflict?</a></li>
<li><a href="https://joplinapp.org/debugging/">How to enable debug mode</a></li>
<li><a href="https://joplinapp.org/rich_text_editor/">About the Rich Text editor limitations</a></li>
<li><a href="https://joplinapp.org/faq/">FAQ</a></li>
</ul>
</li>
<li>
<p>Joplin API - Get Started</p>
<ul>
<li><a href="https://joplinapp.org/api/overview/">Joplin API Overview</a></li>
<li><a href="https://joplinapp.org/api/get_started/plugins/">Plugin development</a></li>
<li><a href="https://joplinapp.org/api/tutorials/toc_plugin/">Plugin tutorial</a></li>
</ul>
</li>
<li>
<p>Joplin API - References</p>
<ul>
<li><a href="https://joplinapp.org/api/references/plugin_api/classes/joplin.html">Plugin API</a></li>
<li><a href="https://joplinapp.org/api/references/rest_api/">Data API</a></li>
<li><a href="https://joplinapp.org/api/references/plugin_manifest/">Plugin manifest</a></li>
<li><a href="https://joplinapp.org/api/references/plugin_loading_rules/">Plugin loading rules</a></li>
<li><a href="https://joplinapp.org/api/references/plugin_theming/">Plugin theming</a></li>
</ul>
</li>
<li>
<p>Development</p>
<ul>
<li><a href="https://github.com/laurent22/joplin/blob/dev/BUILD.md">How to build the apps</a></li>
<li><a href="https://joplinapp.org/spec/e2ee/">End-to-end encryption spec</a></li>
<li><a href="https://joplinapp.org/spec/history/">Note History spec</a></li>
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
<li><a href="https://joplinapp.org/spec/server_sharing/">Server: Sharing</a></li>
</ul>
</li>
<li>
<p>Google Summer of Code 2021</p>
<ul>
<li><a href="https://joplinapp.org/gsoc2021/index/">Google Summer of Code 2021</a></li>
<li><a href="https://joplinapp.org/gsoc2021/pull_request_guidelines/">How to submit a GSoC pull request</a></li>
<li><a href="https://joplinapp.org/gsoc2021/ideas/">Project Ideas</a></li>
</ul>
</li>
<li>
<p>About</p>
<ul>
<li><a href="https://joplinapp.org/changelog/">Changelog (Desktop App)</a></li>
<li><a href="https://joplinapp.org/changelog_cli/">Changelog (CLI App)</a></li>
<li><a href="https://joplinapp.org/changelog_server/">Changelog (Server)</a></li>
<li><a href="https://joplinapp.org/stats/">Stats</a></li>
<li><a href="https://joplinapp.org/donate/">Donate</a></li>
</ul>
</li>
</ul>
</div></div>

						<div class="main-content">
							<p><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&amp;business=E8JMYD2LQ8MMA&amp;lc=GB&amp;item_name=Joplin+Development&amp;currency_code=EUR&amp;bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted"><img src="https://joplinapp.org/images/badges/Donate-PayPal-green.svg" alt="Donate using PayPal"></a> <a href="https://github.com/sponsors/laurent22/"><img src="https://joplinapp.org/images/badges/GitHub-Badge.svg" alt="Sponsor on GitHub"></a> <a href="https://www.patreon.com/joplin"><img src="https://joplinapp.org/images/badges/Patreon-Badge.svg" alt="Become a patron"></a> <a href="https://joplinapp.org/donate/#donations"><img src="https://joplinapp.org/images/badges/Donate-IBAN.svg" alt="Donate using IBAN"></a></p>
<hr>
<h1>Joplin Server sharing feature<a name="joplin-server-sharing-feature" href="#joplin-server-sharing-feature" class="heading-anchor">πŸ”—</a></h1>
<h2>Sharing a file via a public URL<a name="sharing-a-file-via-a-public-url" href="#sharing-a-file-via-a-public-url" class="heading-anchor">πŸ”—</a></h2>
<p>Joplin Server is essentially a file hosting service and it allows sharing files via public URLs. To do so, an API call is made to <code>/api/shares</code> with the ID or path of the file that needs to be shared. This call returns a SHAREID that is then used to access the file via URL. When viewing the file, it will display it according to its mime type. Thus by default a Markdown file will be displayed as plain text.</p>
<h2>Sharing a note via a public URL<a name="sharing-a-note-via-a-public-url" href="#sharing-a-note-via-a-public-url" class="heading-anchor">πŸ”—</a></h2>
<p>It is built on top of the file sharing feature. The file corresponding to the note is shared via the above API. Then a separate application, specific to Joplin, read and parse the Markdown file, and display it as note.</p>
<p>That application works as a viewer - instead of displaying the Markdown file as plain text (by default), it renders it and displays it as HTML.</p>
<p>The rendering engine is the same as the main applications, which allows us to use the same plugins and settings.</p>
<h3>Attached resources<a name="attached-resources" href="#attached-resources" class="heading-anchor">πŸ”—</a></h3>
<p>Any resource attached to the note is also shared - so for example images will be displayed, and it will be possible to open any attached PDF. This</p>
<h3>Linked note<a name="linked-note" href="#linked-note" class="heading-anchor">πŸ”—</a></h3>
<p>Any linked note will <strong>not</strong> be shared, due to the following reasons:</p>
<ul>
<li>
<p>Privacy issue - you don't want to accidentally share a note just because it was linked to another note.</p>
</li>
<li>
<p>Even if the linked note has been shared separately, we still don't give access to it. We don't know who that link has been shared with - it could be a different recipient.</p>
</li>
</ul>
<h3>Multiple share links for a given note<a name="multiple-share-links-for-a-given-note" href="#multiple-share-links-for-a-given-note" class="heading-anchor">πŸ”—</a></h3>
<p>It should be possible to have multiple share links for a given note. For example: I share a note with one person, then the same note with a different person. I revoke the share for one person, but I sill want the other person to access the note.</p>
<p>So when a share link is created for a note, the API always return a new link.</p>
<h2>Sharing a note with a user<a name="sharing-a-note-with-a-user" href="#sharing-a-note-with-a-user" class="heading-anchor">πŸ”—</a></h2>
<p>TBD</p>

							<div class="bottom-links">
								<a href="https://github.com/laurent22/joplin/blob/dev/readme/spec/server_sharing.md">
									<i class="fab fa-github"></i> Improve this doc
								</a>
							</div>
						</div>
					</div>
				</div>
			</div>

			<footer class="darkblue-bg">
				<div class="container">
					<div class="row">
						<div class="col-3 d-none d-md-block">
							<img src="&#x2F;images/logo-text.svg" alt="" width="150" />
						</div>
						<!--
						<div class="col-12 col-md-6">
							<p class="text-center">
								<a href="#">Help</a>
								&nbsp;&nbsp;&nbsp;
								<a href="https://discourse.joplinapp.org/">Forum</a>
								&nbsp;&nbsp;&nbsp;
								<a href="#">Contacts</a>
							</p>
						</div>
						<div class="col-12 col-md-3">
							<br class="d-block d-md-none" />
							<div class="text-right">
								<a href="#" class="button-link btn-blue"
									><img src="&#x2F;images/download-icon.svg" alt="" />&nbsp;
									Download</a
								>
							</div>
						</div>
						-->
					</div>
					<div class="row">
						<div class="col-12">
							<hr />
						</div>
					</div>
					<div class="row">
						<div class="col-12 col-md-6">
							<img
								src="&#x2F;images/logo-text.svg"
								width="120"
								class="img-center d-block d-md-none"
								alt=""
							/>
							<br class="d-block d-md-none" />
							<p class="text-center-sm">Copyright (C) 2016-2021 Laurent Cozic, all rights reserved</p>
						</div>
						<div class="col-12 col-md-6 right-links">
							<p class="text-right text-center-sm">
								<!--
								<a href="#">Terms & Conditions</a>
								<span class="d-none d-md-inline">&nbsp;&nbsp;&nbsp;</span>
								<br class="d-block d-md-none" />
								<br class="d-block d-md-none" />
								-->
								<a href="https://github.com/laurent22/joplin/" class="github-link"><i class="fab fa-github"></i> GitHub Repository</a>
								<a href="/privacy/">Privacy Policy</a>
							</p>
						</div>
					</div>
				</div>
			</footer>
		</div>

		<script
			src="&#x2F;js/jquery-3.6.0.min.js"
			rel="preload"
			as="script"
		></script>
		<script src="&#x2F;js/script.js"></script>

		<script>
			function stickyHeader() { 
				return; // Disabled

				if ($(window).scrollTop() > 179) {
					$('.nav').addClass('sticky'); 
				} else {
					$('.nav').removeClass('sticky');
				}
			}

			$(window).scroll(function() {
				stickyHeader();
			});

			(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
			(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
			m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
			})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
			ga('create', 'UA-103586105-1', 'auto');
			ga('send', 'pageview');
		</script>
	</body>
</html>